Neste tutorial, você verá como personalizar a geração de registros do Fluentd (em inglês) em um cluster do Google Kubernetes Engine. Você aprenderá a hospedar seu próprio daemonset do Fluentd configurável para enviar registros ao Stackdriver em vez de selecionar a opção de registro na nuvem ao criar o cluster do Google Kubernetes Engine (GKE), que não permite a configuração do daemon do Fluentd.
Objetivos
- Implantar o próprio daemonset do Fluentd em um cluster do Google Kubernetes Engine, configurado para registrar dados no Stackdriver. Supomos que você já tenha familiaridade com o Kubernetes.
- Personalizar a geração de registros do GKE para remover dados confidenciais dos registros do Stackdriver.
- Personalizar a geração de registros do GKE para adicionar eventos no nível do nó aos registros do Stackdriver
Custos
Neste tutorial, são usados componentes do Cloud Platform que podem ser cobrados, incluindo:
- um cluster do Google Kubernetes Engine com três nós.
A Calculadora de preços estima o custo desse ambiente em cerca de US$ 1,14 por 8 horas.
Antes de começar
-
Faça login na sua Conta do Google.
Se você ainda não tiver uma, inscreva-se.
-
Selecione ou crie um projeto do Google Cloud Platform.
-
Verifique se o faturamento foi ativado no projeto do Google Cloud Platform.
- Ativar Google Kubernetes Engine, Compute Engine APIs.
Como inicializar variáveis comuns
É preciso definir diversas variáveis que controlam onde os elementos da infraestrutura serão implantados.
Em um editor de texto, edite o script a seguir, substituindo
[YOUR_PROJECT_ID]
pelo o código do projeto. O script define a região comous-east-1
. Se você fizer alguma alteração no script, verifique se os valores de zona referenciam a região especificada.region=us-east1 zone=${region}-b project_id=[YOUR_PROJECT_ID]
Acesse o Cloud Shell.
Copie o script na janela do Cloud Shell e execute-o.
Execute os seguintes comandos para definir a zona padrão e o ID do projeto. Dessa maneira, você não precisa especificar esses valores em cada comando subsequente:
gcloud config set compute/zone ${zone} gcloud config set project ${project_id}
Como criar o cluster do GKE
A menos que seja observado o contrário, você insere todos os comandos deste tutorial na linha de comando do computador ou no Cloud Shell.
Clone o repositório de amostra. O repositório de amostra inclui os manifestos do Kubernetes referentes ao demonset do Fluentd e um programa de geração de registros de teste que você implantará:
git clone https://github.com/GoogleCloudPlatform/kubernetes-engine-customize-fluentd
Altere o diretório de trabalho para o repositório clonado:
cd kubernetes-engine-customize-fluentd
Crie o cluster do GKE sem ativar a geração de registros em nuvem:
gcloud beta container clusters create gke-with-custom-fluentd \ --zone us-east1-b \ --no-enable-cloud-logging \ --tags=gke-cluster-with-customized-fluentd \ --scopes=logging-write
Como implantar o aplicativo de teste que gera registros
Por padrão, o aplicativo de amostra que você implanta continuamente emite log statements aleatórios. O contêiner do Docker que ele usa está disponível em gcr.io/cloud-solutions-images/test-logger
, e o código-fonte está incluído no subdiretório test-logger
.
Implante o aplicativo
test-logger
no cluster do GKE:kubectl apply -f kubernetes/test-logger.yaml
Veja o status dos pods
test-logger
:kubectl get pods
Repita esse comando até a saída ser semelhante à saída a seguir, com todos os três pods
test-logger
em execução:
Como implantar o daemonset do Fluentd no cluster
Em seguida, você configurará e implantará o daemonset do Fluentd.
Implante a configuração do Fluentd:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Implante o daemonset do Fluentd:
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Verifique se os pods do Fluentd foram iniciados:
kubectl get pods --namespace=kube-system
Se eles estiverem funcionando, você verá uma saída como a seguinte:
Verifique se você está vendo registros no Stackdriver. No console, no menu à esquerda, clique em Stackdriver > Geração de registros > Registros e selecione Kubernetes Container na lista.
Como filtrar informações do arquivo de registro
A próxima etapa é especificar que o Fluentd precisa filtrar determinados dados, de maneira que eles não sejam registrados. Para este tutorial, você filtra os CPFs ou os CNPJs, os números de cartão de crédito e os endereços de e-mail. Para fazer essa atualização, você altera o daemonset para usar um ConfigMap diferente que contém esses filtros. Você usa o recurso de atualizações contínuas do Kubernetes e preserva a versão anterior do ConfigMap.
Abra o arquivo
kubernetes/fluentd-configmap.yaml
em um editor.Remova os comentários entre as linhas e não inclua as linhas
### sample log scrubbing filters
e### end sample log scrubbing filters
:Altere o nome do ConfigMap de
fluentd-gcp-config
parafluentd-gcp-config-filtered
editando o campometadata.name
:Salve e feche o arquivo.
Como atualizar o daemonset do Fluentd para usar a nova configuração
Agora, altere kubernetes/fluentd-daemonset.yaml
para ativar o ConfigMap fluentd-gcp-config-filtered
em vez do fluentd-gcp-config
.
Abra o arquivo
kubernetes/fluentd-daemonset.yaml
em um editor.Altere o nome do ConfigMap de
fluentd-gcp-config
parafluentd-gcp-config-filtered
editando o campoconfigMap.name
:Implante a nova versão do ConfigMap no cluster:
kubectl apply -f kubernetes/fluentd-configmap.yaml
Implante a nova versão do daemonset:
kubectl apply -f kubernetes/fluentd-daemonset.yaml
Implante a atualização e aguarde a conclusão:
kubectl rollout status ds/fluentd-gcp-v3.2.0 --namespace=kube-system
Quando a implantação estiver completa, atualize os registros do Stackdriver e verifique se o CPF ou o CNPJ, o número do cartão de crédito e o endereço de e-mail foram filtrados.
Como registrar eventos no nível do nó
Se você quiser que os eventos que acontecem nos seus nós do GKE também sejam exibidos no Stackdriver, adicione as seguintes linhas ao ConfigMap e siga as instruções descritas na última seção:
<source> type systemd filters [{ "SYSLOG_IDENTIFIER": "sshd" }] pos_file /var/log/journal/gcp-journald-ssh.pos read_from_head true tag sshd </source> <source> type systemd filters [{ "SYSLOG_IDENTIFIER": "sudo" }] pos_file /var/log/journal/gcp-journald-sudo.pos read_from_head true tag sudo </source>
Limpeza
Depois que tiver terminado o tutorial, você poderá limpar os recursos criados no GCP para não haver faturamento deles no futuro.
Como excluir o projeto
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto:
- No Console do GCP, acesse a página Projetos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir delete.
- Na caixa de diálogo, digite o código do projeto e clique em Encerrar para excluí-lo.
Como excluir o cluster do GKE
Se você não quiser excluir o projeto todo, execute o seguinte comando para excluir o cluster do GKE:
gcloud container clusters delete gke-with-custom-fluentd --zone us-east1-b
A seguir
- Analise a documentação do Fluentd mais detalhadamente.
- Analise a documentação do Google Kubernetes Engine mais detalhadamente.
- Teste outros recursos do Google Cloud Platform. Veja os tutoriais.