Despliegue del Agente de registro para Kubernetes mediante un Helm

Puede utilizar un gráfico Helm para desplegar la instancia Agente de registro v1.6.x para recopilar y enrutar registros de infraestructura y aplicaciones desde un clúster Kubernetes a una instancia IBM Cloud Logs.

También puede utilizar Terraform IBM Modules (TIM) para Agente de registro para desplegar y configurar el agente de logs en los clústeres compatibles de Kubernetes. Este módulo automatiza el despliegue basado en Helm y los ajustes de configuración clave utilizando la automatización de la Infraestructura como Código ( IaC ).

Complete los siguientes pasos para desplegar un agente en un clúster Kubernetes:

Antes de empezar

  • Asegúrate de tener acceso al clúster Kubernetes con permisos para crear namespaces y desplegar el agente.

  • Instalación de las CLI siguientes:

    • La IBM Cloud CLI para iniciar sesión en el IBM Cloud y gestionar IBM Cloud servicios como la creación de una clave API.

    • La CLI de Kubernetes para gestionar el clúster mediante mandatos kubectl. Más información.

  • Lea sobre el Agente de registro.

  • Compruebe las versiones de agente disponibles. Para obtener más información, consulte Comprobar las versiones de agente disponibles. Tenga en cuenta que la versión del gráfico Helm coincidirá con la versión del agente - por ejemplo, si está usando la versión 1.3.0 del agente hay un gráfico Helm con la versión 1.3.0 que acompaña a esa versión.

Paso 1. Definir el método de autenticación para el agente

Elija el tipo de identidad y el método de autenticación para el agente. A continuación, cree un perfil de confianza o una clave API. El rol que se requiere para enviar logs a IBM Cloud Logs es Sender.

Puede utilizar un ID de servicio o un perfil de confianza como la identidad que utiliza el agente para autenticarse con el servicio IBM® Cloud Logs. Para obtener más información, consulte Concesión de permisos IAM para la ingestión.

Elija una de estas opciones:

Opción 1: Autenticación mediante un perfil de confianza

Cree un perfil de confianza. Para obtener más información, consulte Generación de un perfil de confianza para la ingestión.

Opción 2: Autenticación mediante una clave API de ID de servicio

Generar una clave de API para la autenticación de ID de servicio. Para obtener más información, consulte Generación de una clave de API para la ingestión.

Paso 2. Configuración del archivo de valores del gráfico Helm para el Agente de registro

Complete los pasossiguientes:

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

    Parámetros necesarios del cuadro deHelm
    Nombre de campo Descripción
    image.version La versión del agente que se implementará, véase el paso 1
    clusterName El nombre del clúster: esto introducirá la etiqueta kubernetes.cluster_name en todas las líneas de registro
    env.ingestionHost El punto de entrada público o privado para que la instancia de IBM Cloud Logs reciba los registros
    env.ingestionPort El puerto de punto final de entrada
    Punto final de entrada público = 443
    Punto final de entrada privado (VPE) = 443
    Punto final de entrada privado (CSE) = 3443
    env.iamMode TrustedProfile o IAMAPIKey en función del método de autenticación elegido en Paso 1
    env.trustedProfileID Si iamMode es TrustedProfile, proporcione el ID de perfil de confianza; de lo contrario, no es necesario (por ejemplo: Profile-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ).
    env.iamEnvironment Determina el punto final de autenticación IAM correcto. Los valores válidos son Production, PrivateProduction o Custom. Si se omite, el valor predeterminado es Production.
    env.iamHost Si iamEnvironment es Custom, proporcione el host IAM (por ejemplo: private.eu-de.iam.cloud.ibm.com), de lo contrario, esto no es necesario.

Paso 3. Instale la carta Helm

Si utiliza iamMode como IAMAPIKey, el apikey debe estar presente en un Kubernetes secreto llamado logs-agent con el nombre de clave IAM_API_KEY. El secreto puede crearse utilizando la carta Helm incluyendo la opción --set secret.iamAPIKey=<your iamAPIKey> al ejecutar la instalación del timón. Si el secreto se ha creado manualmente o si está utilizando iamMode=TrustedProfile entonces no incluya esta opción.

Complete los pasossiguientes:

  1. Inicie una sesión en el clúster. Para más información, consulte Acceda a su clúster.

  2. Realice una Helm para ver los recursos que creará el gráfico Helm.

    Si está utilizando el iamMode=TrustedProfile entonces el comando completo es:

    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
    

    Si está utilizando el iamMode=IAMAPIKey entonces el comando completo es:

    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
    

    donde:

    • <install-name> es el nombre de la instalación de Helm (logs-agent)
    • <chart-version> es la versión de la carta del timón. La versión del gráfico Helm debe coincidir con la versión de la imagen del agente. Para más información, consulte Helm.
    • <PATH> es la ruta del directorio donde se encuentra el archivo logs-values.yaml.
    • <APIKey-value> es el apikey IAM asociado al ServiceID configurado en el paso 1
    • Añade --hide-secret para ocultar la clave API y que no se muestre en los datos de salida tras la ejecución del comando.

    Si desea inspeccionar el contenido de la carta del timón localmente, puede descargar la carta del timón a su ordenador utilizando el comando: helm pull oci://icr.io/ibm-observe/logs-agent-helm --version <chart-version>. El archivo tgz descargado contiene el contenido del gráfico.

    Por ejemplo, puede ejecutar el siguiente comando desde el directorio donde esté disponible el archivo logs-values.yaml:

    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. Una vez verificados los recursos a crear, ejecute la instalación de Helm sin la opción --dry-run

    Si está utilizando el iamMode=TrustedProfile entonces el comando completo es:

    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
    

    Si está utilizando el iamMode=IAMAPIKey entonces el comando completo es:

    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 de la carta del timón. La versión del gráfico Helm debe coincidir con la versión de la imagen del agente. Para más información, consulte Helm.
    • <PATH> es la ruta del directorio donde se encuentra el archivo logs-values.yaml.
    • <APIKey-value> es el apikey IAM asociado al ServiceID configurado en el paso 1

Paso 4. Compruebe que el agente se ha desplegado correctamente

Cuando se despliega el agente, compruebe que se crean los siguientes recursos:

  • El espacio de nombres ibm-observe.

    Ejecuta el siguiente comando para listar los namespaces del cluster y comprueba que el logger-agent aparece con estado activo.

    kubectl get namespace
    
  • Un mapa de configuración logs-agent en el espacio de nombres ibm-observe.

    Ejecute el siguiente comando para ver los detalles de configuración del agente.

    kubectl get configmap logs-agent -n ibm-observe
    

    También puedes usar:

    kubectl describe configmaps logs-agent -n ibm-observe
    
  • Un daemonset logs-agent en el espacio de nombres ibm-observe.

    Ejecute el siguiente comando para ver el conjunto de demonios.

    kubectl get ds -n ibm-observe
    
  • Compruebe que los agentes están iniciados:

    kubectl -n ibm-observe get ds logs-agent
    
  • Recupere la lista de pods de agentes utilizando el siguiente 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>
    

    La columna READY muestra 1/1 para todas las vainas, con un STATUS de Running. Compruebe que hay un pod de agente listo para cada nodo de su clúster.

    Para comprobar cuántos trabajadores están disponibles en su clúster, puede ejecutar el siguiente 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
    

    El número de elementos de cada una de estas dos listas tiene que ser el mismo, y puede hacer coincidir las direcciones IP de los nombres de nodo con los valores de la columna NODE del listado de pods.

    Si sus nodos no se nombran por su IP, puede añadir la opción -o wide y comparar los valores en la columna INTERNAL-IP en su lugar.

    Para ver los registros de un pod, ejecute kubectl logs <POD_NAME>> -n ibm-observe

    Para comprobar el mapa del timón desplegado, ejecute helm list -n ibm-observe

Paso 5. Compruebe que los registros se envían al destino deseado

Complete los pasossiguientes:

  1. Vaya a la interfaz de usuario web de su instancia IBM Cloud Logs..

  2. Cuando su agente esté correctamente configurado, podrá ver los registros a través de la vista predeterminada del panel de control. El Agente de registro etiqueta los registros de log con un objeto kubernetes que incluye el nombre del clúster.

    kubernetes.cluster_name:<CLUSTER_NAME>
    

    Puede ejecutar la consulta kubernetes.cluster_name:<YOUR_CLUSTER_NAME> en su instancia IBM Cloud Logs para buscar registros generados por su clúster.