Enviar IBM Cloud Kubernetes Service dados de registro para IBM Cloud Logs

Neste tutorial, você configurou IBM Cloud® Kubernetes Service para enviar os registros diretamente para IBM Cloud Logs. Esses logs o ajudam a solucionar problemas e a melhorar a integridade e o desempenho dos clusters e aplicativos do Kubernetes.

Objetivos

Neste tutorial, você aprenderá:

Antes de Iniciar

Antes de começar, verifique se você tem os pré-requisitos.

Uma alternativa para instalar a IBM Cloud CLI, kubectl, jq e yq seria usar o IBM Cloud Shell

Conecte-se ao seu cluster

Conecte-se ao seu cluster IBM Cloud Kubernetes Service. A conexão com o cluster permite que kubectl comandos sejam executados no cluster.

  1. Efetue login em sua conta do IBM Cloud. Inclua a opção --sso se estiver usando uma ID federada.

    ibmcloud login
    
  2. Instale o IBM Cloud Kubernetes Service plug-in CLI

    ibmcloud plugin install ks
    
  3. Liste os clusters disponíveis e anote o cluster a ser conectado.

    ibmcloud ks clusters
    
  4. Conecte-se ao seu cluster. Substitua <cluster_name> pelo nome do seu cluster.

    ibmcloud ks cluster config --cluster <cluster_name>
    
  5. Verifique se você está conectado ao cluster e se pode executar comandos kubectl listando todos os pods que estão em execução em todos os namespaces.

    kubectl get pods --all-namespaces
    

Criando sua chave de API

Antes de provisionar o Agente de criação de log como um daemonset, você precisa de uma chave de API do IAM e de um ponto de extremidade de ingestão de registro. A CLI IBM Cloud é usada para obter essas informações.

Primeiro, crie um ID de serviço e obtenha uma chave de API.

  1. Crie uma identificação de serviço executando o seguinte comando.

    ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS"
    
  2. Conceda a função Sender para IBM Cloud Logs à ID de serviço criada executando o seguinte comando.

    ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender
    
  3. Crie uma chave de API do IAM executando o seguinte comando. Você pode personalizar o nome da chave (kubernetes-logs-agent-apikey) e a descrição (--d), se necessário.

    ibmcloud iam service-api-key-create kubernetes-logs-agent-apikey kubernetes-logs-agent --description "API key for sending logs to the IBM Cloud Logs service"
    

    A chave da API é retornada na saída após API Key:

    ID            ApiKey-xxxxxxxx-b815-46c7-bc9f-516115bc31c6
    Name          kubernetes-logs-agent-apikey
    Description   API key for sending logs to the IBM Cloud Logs service
    Created At    2024-09-18T17:17+0000
    API Key       <apikey is displayed here>
    Locked        false
    

Nota:

  • Toda vez que você cria uma chave de API, um novo segredo de IAM é gerado.

  • Certifique-se de armazenar com segurança a chave da API, pois ela contém informações confidenciais.

Determinação do ponto de extremidade de registro

A segunda informação necessária é o ponto de extremidade de ingestão da sua instância IBM Cloud Logs. Use esse comando para recuperar o URL:

ibmcloud resource service-instances --service-name logs --long --output JSON | jq '[.[] | {name: .name, id: .id, region: .region_id, ingestion_endpoint: .extensions.external_ingress}]'

O ponto de extremidade é semelhante a:

ingestion_endpoint: 3a622101-7521-4002-bf91-8c26e17eedcf.ingress.eu-de.logs.cloud.ibm.com

Criação do arquivo YAML do agente

Nesta etapa, crie o arquivo YAML que é usado para configurar o conjunto de daemons do agente.

  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.4.0"  # required
    
    clusterName: ""     # 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.

Implementação do conjunto de daemons

Usando a chave da API, o URL do endpoint e o arquivo YAML, implante o agente em seu cluster.

  1. Faça login no registro Helm executando o comando helm registry login :

    helm registry login -u iambearer -p $(ibmcloud iam oauth-tokens --output json | jq -r .iam_token | cut -d " " -f2) icr.io
    

    Windows Os usuários do Windows PowerShell devem usar esse comando:

    helm registry login -u iambearer -p ((ibmcloud iam oauth-tokens --output json | ConvertFrom-Json).iam_token -replace 'Bearer ', '') icr.io
    

    Para obter mais informações, consulte Usando gráficos Helm no Container Registry: Extraindo gráficos de outro registro ou repositório Helm.

  2. Implantar o agente.

    Se você estiver usando uma chave de API de ID de serviço (iamMode=IAMAPIKey), execute o seguinte comando:

    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 do 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 ' versões do gráfico Helm.
    • <PATH> é o caminho do diretório em que o arquivo ' logs-values.yaml está localizado.
    • <APIKey-value> é a apikey do IAM associada ao ' ServiceID ' configuração na Etapa 1

    Você também pode implementar o agente usando um perfil confiável. Para obter mais informações, consulte Implantação do agente de registro para clusters Kubernetes usando um gráfico Helm.

Verifique se os registros estão sendo enviados

Para ajudar a garantir que seus IBM Cloud® Kubernetes Service registros estejam fluindo com êxito para IBM Cloud Logs, execute as seguintes etapas:

  1. Acesse a interface do usuário IBM Cloud Logs e clique no ícone Livetail Livetail.

  2. Clique em Start para ver os registros à medida que eles chegam em tempo real.

Deve ser visto um fluxo contínuo de dados de registro do aplicativo kube-system. Esses logs são provenientes do seu cluster.