Implementação do Agente de criação de log para clusters Kubernetes usando um gráfico Helm

Você pode usar um gráfico Helm para implementar o Agente de criação de log v1.6.x para coletar e rotear logs de infraestrutura e de aplicativos de um cluster Kubernetes para uma instância IBM Cloud Logs.

Você também pode usar o Terraform IBM Modules (TIM) para Agente de criação de log para implantar e configurar o agente de logs em clusters Kubernetes compatíveis. Este módulo automatiza a implementação baseada em Helm e as principais definições de configuração usando a automação da Infraestrutura como Código ( IaC ).

Conclua as etapas a seguir para implantar um agente em um cluster Kubernetes:

Antes de Iniciar

  • Certifique-se de que você tenha acesso ao cluster Kubernetes com permissões para criar namespaces e implantar o agente.

  • Instale as CLIs a seguir:

    • A IBM Cloud CLI para fazer login no IBM Cloud e gerenciar IBM Cloud serviços, como a criação de uma chave de API.

    • A CLI do Kubernetes para gerenciar o cluster usando os comandos kubectl. Saiba mais.

  • Leia sobre o Agente de criação de log.

  • Verifique as versões do agente que estão disponíveis. Para obter mais informações, consulte Verificando as versões disponíveis do agente. Observe que a versão do gráfico Helm corresponderá à versão do agente - por exemplo, se você estiver usando a versão 1.3.0 do agente, haverá um gráfico Helm com a versão 1.3.0 que acompanha essa versão.

Etapa 1. Definir o método de autenticação para o agente

Escolha o tipo de identidade e o método de autenticação para o agente. Em seguida, crie um perfil confiável ou uma chave de API. A função necessária para enviar registros para IBM Cloud Logs é Sender.

Você pode usar uma ID de serviço ou um perfil confiável como a identidade usada pelo agente para autenticar com o serviço IBM® Cloud Logs. Para obter mais informações, consulte Concessão de permissões de IAM para ingestão.

Selecione uma das opções a seguir:

Opção 1: Autenticação usando um perfil confiável

Crie um perfil confiável. Para obter mais informações, consulte Geração de um perfil confiável para ingestão.

Opção 2: Autenticação usando uma chave de API de ID de serviço

Gerar uma chave de API para autenticação de ID de serviço. Para obter mais informações, consulte Geração de uma chave de API para ingestão.

Etapa 2. Configuração do arquivo de valores do gráfico Helm para o Agente de criação de log

Conclua as etapas a seguir:

  1. Crie um arquivo chamado logs-values.yaml com o seguinte conteúdo:

    Esse arquivo contém as configurações específicas de sua implementação.

    metadata:
      name: "logs-agent"
    image:
      version: "1.6.1"  # required
    
    clusterName: "ENTER_CLUSTER_NAME"     # Enter the name of your cluster. This information is used to improve the metadata and help with your filtering.
    
    env:
      # ingestionHost is a required field. For example:
      # ingestionHost: "<logs instance>.ingress.us-east.logs.cloud.ibm.com"
      ingestionHost: "" # required
    
      # If you are using private CSE proxy, then use port number "3443"
      # If you are using private VPE Gateway, then use port number "443"
      # If you are using the public endpoint, then use port number "443"
      ingestionPort: "" # required
    
      iamMode: "TrustedProfile"
      # trustedProfileID - trusted profile id - required for iam trusted profile mode
      trustedProfileID: "Profile-yyyyyyyy-xxxx-xxxx-yyyy-zzzzzzzzzzzz" # required if iamMode is set to TrustedProfile
    
  2. Atualize os campos no arquivo yaml com valores específicos para seu ambiente.

    Parâmetros necessários do gráficoHelm
    Nome do campo Descrição
    image.version A versão do agente a ser implantada , consulte a Etapa 1
    clusterName O nome do cluster - isso introduzirá a tag kubernetes.cluster_name em todas as linhas de registro
    env.ingestionHost O ponto de extremidade de entrada público ou privado da instância IBM Cloud Logs para receber os registros
    env.ingestionPort A porta do ponto de extremidade de entrada
    Ponto de extremidade de entrada público = 443
    Ponto de extremidade de entrada privado (VPE) = 443
    Ponto de extremidade de entrada privado (CSE) = 3443
    env.iamMode TrustedProfile ou IAMAPIKey com base no método de autenticação escolhido na Etapa 1
    env.trustedProfileID Se iamMode for TrustedProfile, forneça a ID do perfil confiável; caso contrário, isso não será necessário (por exemplo: Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ).
    env.iamEnvironment Determina o ponto de extremidade de autenticação IAM correto. Os valores válidos são Production, PrivateProduction, ou Custom. Se omitido, o valor padrão é Production.
    env.iamHost Se iamEnvironment for Custom, forneça o host do IAM (por exemplo: private.eu-de.iam.cloud.ibm.com); caso contrário, isso não será necessário.

Etapa 3. Instale o gráfico Helm

Se você estiver usando o iamMode como IAMAPIKey, a apikey precisará estar presente em um segredo Kubernetes chamado logs-agent com o nome de chave IAM_API_KEY. O segredo pode ser criado usando o gráfico Helm, incluindo a opção --set secret.iamAPIKey=<your iamAPIKey> ao executar a instalação do helm. Se o segredo tiver sido criado manualmente ou se você estiver usando iamMode=TrustedProfile, não inclua essa opção.

Conclua as etapas a seguir:

  1. Efetue login no cluster. Para obter mais informações, consulte Acessar seu cluster.

  2. Execute uma Helm execução seca para ver os recursos que serão criados pelo gráfico Helm.

    Se você estiver usando iamMode=TrustedProfile, o comando completo será:

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    Se você estiver usando iamMode=IAMAPIKey, o comando completo será:

    helm install <install-name> --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value> --hide-secret
    

    em que:

    • <install-name> é o nome da instalação Helm (logs-agent)
    • <chart-version> é a versão do gráfico do leme. A versão do gráfico Helm deve corresponder à versão da imagem do agente. Para obter mais informações, consulte Helm versões de gráficos.
    • <PATH> é o caminho do diretório em que o arquivo logs-values.yaml está localizado.
    • <APIKey-value> é a apikey do IAM associada ao ServiceID configurado na Etapa 1
    • Adicione --hide-secret para ocultar a chave da API dos dados de saída após a execução do comando.

    Se quiser inspecionar o conteúdo do gráfico do leme localmente, você pode fazer o download do gráfico do leme para o seu computador usando o comando: helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>. O arquivo tgz baixado contém o conteúdo do gráfico.

    Por exemplo, você pode executar o seguinte comando no diretório em que o arquivo logs-values.yaml está disponível:

    helm install logs-agent --dry-run oci://icr.io/ibm-observe/logs-agent-helm --version 1.6.0 --values ./logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<secret> --hide-secret
    
  3. Depois que os recursos a serem criados forem verificados, execute a instalação do Helm sem a opção --dry-run

    Se você estiver usando iamMode=TrustedProfile, o comando completo será:

    helm install <install-name>  oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace
    

    Se você estiver usando iamMode=IAMAPIKey, o comando completo será:

    helm install <install-name> oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version> --values <PATH>/logs-values.yaml -n ibm-observe --create-namespace --set secret.iamAPIKey=<APIKey-value>
    

    em que:

    • <install-name> é o nome da instalação Helm (logs-agent)
    • <chart-version> é a versão do gráfico do leme. A versão do gráfico Helm deve corresponder à versão da imagem do agente. Para obter mais informações, consulte Helm versões de gráficos.
    • <PATH> é o caminho do diretório em que o arquivo logs-values.yaml está localizado.
    • <APIKey-value> é a apikey do IAM associada ao ServiceID configurado na Etapa 1

Etapa 4. Verifique se o agente foi implantado com sucesso

Quando o agente for implantado, verifique se os seguintes recursos foram criados:

  • O espaço de nomes ibm-observe.

    Execute o seguinte comando para listar os namespaces no cluster e verifique se o logger-agent aparece com o status ativo.

    kubectl get namespace
    
  • Um mapa de configuração logs-agent no namespace ibm-observe.

    Execute o seguinte comando para visualizar os detalhes de configuração do agente.

    kubectl get configmap logs-agent -n ibm-observe
    

    Você também pode usar:

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • Um conjunto de daemons logs-agent no namespace ibm-observe.

    Execute o seguinte comando para visualizar o conjunto de daemons.

    kubectl get ds -n ibm-observe
    
  • Verifique se os agentes foram iniciados:

    kubectl -n ibm-observe get ds logs-agent
    
  • Recupere a lista de pods de agente usando o seguinte comando:

    kubectl get pods -n ibm-observe -o wide
    
    NAME                  READY   STATUS    RESTARTS   AGE    IP              NODE           NOMINATED NODE   READINESS GATES
    logs-agent-4lwvt      1/1     Running   0          2d5h   172.17.61.181   192.168.16.4   <none>           <none>
    logs-agent-g7z87      1/1     Running   0          2d5h   172.17.0.48     192.168.32.4   <none>           <none>
    logs-agent-nw56s      1/1     Running   0          2d5h   172.17.32.232   192.168.0.10   <none>           <none>
    

    A coluna READY mostra 1/1 para todos os pods, com um STATUS de Running. Verifique se um pod de agente está pronto para cada nó em seu cluster.

    Para verificar quantos workers estão disponíveis em seu cluster, você pode executar o seguinte comando:

    kubectl get nodes
    
    NAME           STATUS   ROLES           AGE   VERSION
    192.168.0.10   Ready    master,worker   8d    v1.20.0+558d959
    192.168.32.4   Ready    master,worker   8d    v1.20.0+558d959
    192.168.16.4   Ready    master,worker   8d    v1.20.0+558d959
    

    O número de itens em cada uma dessas duas listas precisa ser o mesmo, e você pode combinar os endereços IP nos nomes dos nós com os valores na coluna NODE da listagem de pods.

    Se os nós não forem nomeados pelo IP, você poderá acrescentar a opção -o wide e, em vez disso, comparar os valores na coluna INTERNAL-IP.

    Para visualizar os registros de um pod, execute kubectl logs <POD_NAME>> -n ibm-observe

    Para verificar o gráfico do leme implantado, execute helm list -n ibm-observe

Etapa 5. Verificar se os registros estão sendo entregues ao seu destino de destino

Conclua as etapas a seguir:

  1. Acesse a interface do usuário da Web para sua instância IBM Cloud Logs..

  2. Quando o agente estiver configurado corretamente, você poderá ver os registros por meio da visualização padrão do painel. O Agente de criação de log marca os registros de log com um objeto kubernetes que inclui o nome do cluster.

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    Você pode executar a consulta kubernetes.cluster_name:<YOUR_CLUSTER_NAME> na sua instância IBM Cloud Logs para pesquisar os logs gerados pelo seu cluster.