Enviar IBM Cloud Kubernetes Service datos de registro a IBM Cloud Logs

En este tutorial, se configura IBM Cloud® Kubernetes Service para enviar los registros directamente a IBM Cloud Logs. Estos registros le ayudan a solucionar problemas y a mejorar la salud y el rendimiento de sus clústeres y aplicaciones de Kubernetes.

Objetivos

En este tutorial aprenderás:

  • Despliegue el Agente de registro en un clúster IBM Cloud Kubernetes Service existente.

  • Compruebe que los datos de registro fluyen a su instancia IBM Cloud Logs.

Antes de empezar

Antes de empezar, asegúrate de cumplir los requisitos previos.

Una alternativa a la instalación de la IBM Cloud CLI, kubectl, jq, y yq sería utilizar el IBM Cloud Shell

Conéctese a su clúster

Conéctese a su clúster IBM Cloud Kubernetes Service. La conexión al clúster permite ejecutar comandos kubectl en el clúster.

  1. Inicie sesión en la cuenta de IBM Cloud. Incluya la opción --sso si utiliza un ID federado.

    ibmcloud login
    
  2. Instale el complemento IBM Cloud Kubernetes Service CLI

    ibmcloud plugin install ks
    
  3. Enumere los clústeres disponibles y anote el clúster que debe conectarse.

    ibmcloud ks clusters
    
  4. Conéctese a su clúster. Sustituya <cluster_name> por el nombre de su clúster.

    ibmcloud ks cluster config --cluster <cluster_name>
    
  5. Verifique que está conectado a su clúster y que puede ejecutar comandos kubectl listando todos los pods que se están ejecutando en todos los espacios de nombres.

    kubectl get pods --all-namespaces
    

Creación de la clave de API

Antes de aprovisionar el Agente de registro como daemonset, necesita una clave de API de IAM y un punto final de ingestión de registro. La IBM Cloud CLI se utiliza para obtener esta información.

En primer lugar, cree un ID de servicio y obtenga una clave API.

  1. Crea un identificador de servicio ejecutando el siguiente comando.

    ibmcloud iam service-id-create kubernetes-logs-agent --description "Service ID for sending logs from IKS"
    
  2. Conceda el rol Sender para IBM Cloud Logs al ID de servicio creado ejecutando el siguiente comando.

    ibmcloud iam service-policy-create kubernetes-logs-agent --service-name logs --roles Sender
    
  3. Cree una clave API IAM ejecutando el siguiente comando. Puede personalizar el nombre de la clave (kubernetes-logs-agent-apikey) y la descripción (--d) si es necesario.

    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"
    

    La clave API se devuelve en la salida que sigue a 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:

  • Cada vez que se crea una clave API, se genera un nuevo secreto IAM.

  • Asegúrese de almacenar de forma segura la clave API, ya que contiene información sensible.

Determinar el punto final de registro

El segundo dato que se necesita es el punto final de ingestión para su instancia IBM Cloud Logs. Utilice este comando para recuperar la URL:

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

El punto final es similar a:

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

Creación del archivo YAML del agente

En este paso, cree el archivo YAML que se utiliza para configurar el conjunto de demonios del agente.

  1. Cree un archivo llamado logs-values.yaml con el siguiente contenido:

    Este archivo contiene las configuraciones específicas de su implantación.

    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. Actualice los campos del archivo yaml con los valores específicos de su entorno.

Despliegue del conjunto de demonios

Utilizando la clave API, la URL del punto final y el archivo YAML, despliegue el agente en su clúster.

  1. Acceda al registro Helm ejecutando el 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
    

    {: tag-windows}. Los usuarios [de Windows] PowerShell deben usar este comando en su lugar:

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

    Para más información, consulte Uso de gráficos Helm en el Container Registry: Obtención de gráficos desde otro registro o repositorio Helm.

  2. Despliegue el agente.

    Si está utilizando una clave API de ID de servicio (iamMode=IAMAPIKey), ejecute el siguiente 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>
    

    donde:

    • <install-name> es el nombre de la instalación de Helm (logs-agent)
    • <chart-version> es la versión del gráfico del timón. La versión del gráfico de Helm debe coincidir con la versión de la imagen del agente. Para más información, consulte las versiones de los gráficos deHelm.
    • <PATH> es la ruta del directorio donde se encuentra el archivo ' logs-values.yaml '.
    • <APIKey-value> es el apikey IAM asociado con el ServiceID configurado en el Paso 1

    También puede desplegar el agente utilizando un perfil de confianza. Para obtener más información, consulte Despliegue del agente de registro para clústeres Kubernetes mediante un gráfico de Helm.

Compruebe que se envían los registros

Para asegurarse de que los registros IBM Cloud® Kubernetes Service fluyen correctamente a IBM Cloud Logs, siga estos pasos:

  1. Accede a la IBM Cloud Logs UI y haz clic en Icono de Livetail Livetail.

  2. Haga clic en Start para ver los registros a medida que llegan en tiempo real.

Debería verse un flujo continuo de datos de registro de la aplicación kube-system. Estos registros provienen de su clúster.