Configura el operador de Cluster Services for OpenShift Telemetry

En este documento, se describe cómo instalar el operador de Cluster Services for OpenShift Telemetry y configurarlo para que se conecte con un clúster de OpenShift que se ejecuta en una instancia de Compute Engine.

Después de instalarlo y configurarlo, este operador de telemetría implementa un daemon de telemetría de red de host que supervisa de forma continua el estado y la configuración del clúster. El operador envía las métricas recopiladas al Gestor de cargas de trabajo. Luego, puedes usar la evaluación de Gestor de cargas de trabajo para analizar las cargas de trabajo que se ejecutan en tu clúster en busca de desviaciones de las prácticas recomendadas para los clústeres de OpenShift.

Antes de comenzar

Antes de instalar y configurar el operador de telemetría, debes asegurarte de que se cumplan los siguientes requisitos:

Habilita el acceso a las API de Cloud

Compute Engine recomienda configurar las instancias para permitir los permisos de acceso completo a todas las API de Cloud y usar solo los permisos de IAM de la cuenta de servicio de la instancia para controlar el acceso a los recursos de Google Cloud . Para obtener más información, consulta Crea una VM que use una cuenta de servicio administrada por el usuario.

Si limitas el acceso a las API de Cloud, el operador de Cluster Services for OpenShift Telemetry requiere, como mínimo, los siguientes permisos de acceso a las API de Cloud en la instancia de procesamiento del host:

https://www.googleapis.com/auth/cloud-platform

Para obtener más información, consulta Prácticas recomendadas para los permisos.

Si ejecutas un clúster de OpenShift en una instancia de procesamiento que no tiene una dirección IP externa, debes habilitar el Acceso privado a Google en la subred de la instancia para que el operador de Cluster Services for OpenShift Telemetry pueda acceder a las APIs y los servicios de Google. Para obtener información sobre cómo habilitar el Acceso privado a Google, consulta Configura el Acceso privado a Google.

Autentica usuarios en el clúster de OpenShift

Para realizar acciones administrativas, tú o tus usuarios deben autenticarse en el clúster de OpenShift con la CLI de OpenShift. Para autenticar a los usuarios en tu clúster de OpenShift, puedes elegir entre las siguientes opciones:

  • Ejecuta el siguiente comando y sigue las instrucciones:

    oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin
    
  • Como alternativa, obtén un token de autenticación de sesión para usarlo con el objeto binario oc. Para obtener este token, abre la siguiente URL en un navegador web:

    https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
    

Reemplaza CLUSTER_DOMAIN por el dominio de tu clúster de OpenShift. Por ejemplo: mycluster.google.com.

Autentica al operador en Google Cloud

Para permitir que el operador de telemetría se autentique y acceda a los recursos de Google Cloud, debes crear una cuenta de servicio para él en tu proyecto de Google Cloud .

Puedes autenticar el operador de telemetría como la cuenta de servicio con las siguientes opciones:

Autentica al operador con la federación de identidades para cargas de trabajo

Para autenticar el operador de telemetría como la cuenta de servicio con la federación de identidades para cargas de trabajo, completa los siguientes pasos:

  1. En la terminal, extrae el manifiesto CredentialsRequest del paquete del operador de telemetría a un directorio local:

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    

    Reemplaza VERSION por el número de versión al que te suscribiste para el operador de telemetría en OperatorHub. Puedes ver la lista de números de versión certificados para el operador de telemetría en el catálogo del ecosistema de Red Hat.

  2. Con la utilidad ccoctl, procesa el manifiesto CredentialsRequest extraído y aprovisiona las vinculaciones y credenciales de Identity and Access Management (IAM) de Google Cloud :

    • (Recomendado) Para la versión 4.22 o posterior de OpenShift:

      Te recomendamos que uses la versión 4.22 o posterior de OpenShift con la marca --key-storage-method=pool-jwk-file para almacenar el conjunto de claves web JSON (JWKS) del clúster directamente en el proveedor del grupo de identidades para cargas de trabajo, lo que elimina la creación de un bucket de Cloud Storage:

      ccoctl gcp create-all \
        --name=NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --credentials-requests-dir=./credrequests \
        --output-dir=./ccoctl-out \
        --key-storage-method=pool-jwk-file
      
    • Para las versiones 4.18 a 4.21 de OpenShift:

      Después de instalar el operador de telemetría, también debes completar el paso obligatorio posterior a la instalación para restringir el proveedor de la federación de identidades para cargas de trabajo.

      ccoctl gcp create-all \
        --name=NAME \
        --region=REGION \
        --project=PROJECT_ID \
        --credentials-requests-dir=./credrequests \
        --output-dir=./ccoctl-out
      

    Reemplaza lo siguiente:

    • NAME: Es un nombre para las credenciales y los recursos que crea la utilidad ccoctl. Te recomendamos que especifiques un nombre único y muy aleatorio (como incluir un sufijo alfanumérico aleatorio) para tu clúster u organización.
    • REGION: Es la región de Compute Engine en la que se ejecuta tu clúster de OpenShift.
    • PROJECT_ID: el ID del proyecto de Google Cloud en el que se ejecuta tu clúster de OpenShift
  3. Aplica el proveedor de OpenID Connect (OIDC), los roles de IAM y los manifiestos de secretos generados al clúster:

    oc apply -f ./ccoctl-out/manifests/
    

En los pasos anteriores, se crea una cuenta de servicio en tu proyecto de Google Cloud y se le asignan los siguientes roles de IAM:

Autentica al operador con una clave de cuenta de servicio

Si tu organización no admite el uso de la federación de identidades para cargas de trabajo con fines de autenticación, puedes autenticar el operador de telemetría con una clave de cuenta de servicio.

Para autenticar el operador de telemetría como la cuenta de servicio con una clave de cuenta de servicio, completa los siguientes pasos:

  1. En la terminal, extrae el manifiesto CredentialsRequest del paquete del operador de telemetría a un directorio local:

    mkdir -p credrequests
    oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirm
    
  2. En tu proyecto de Google Cloud , crea una cuenta de servicio para el operador de telemetría:

    gcloud iam service-accounts create cso-telemetry-agent \
      --description="Service account for OpenShift Telemetry Operator" \
      --display-name="CSO Telemetry Agent" \
      --project=PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto deGoogle Cloud en el que se ejecuta tu clúster de OpenShift.

  3. Para permitir que la cuenta de servicio acceda a los recursos de Google Cloud , otórgale los roles de IAM definidos en el manifiesto deCredentialsRequest. Este manifiesto incluye el siguiente conjunto mínimo de roles de IAM que necesita el operador:

    Para cada rol de IAM definido en este manifiesto, ejecuta el siguiente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \
      --role="IAM_ROLE"
    

    Reemplaza IAM_ROLE por el rol de IAM que deseas otorgar a la cuenta de servicio.

  4. Crea y descarga una clave privada para la cuenta de servicio:

    gcloud iam service-accounts keys create ./sa_key.json \
      --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \
      --project=PROJECT_ID
    
  5. En el espacio de nombres openshift-operators, crea un Secret llamado telemetry-agent-sa para la clave de la cuenta de servicio que creaste:

    oc create secret generic telemetry-agent-sa \
      --from-file=workload_agent_sa_key.json=./sa_key.json \
      -n openshift-operators
    

Instala el operador de Cluster Services for OpenShift Telemetry

Puedes instalar el operador de Cluster Services for OpenShift Telemetry con la consola web de Red Hat OpenShift Container Platform o los manifiestos YAML de suscripción declarativa. Para obtener información sobre estas opciones, consulta el documento de Red Hat Agrega operadores a un clúster.

Consola web de OpenShift

Para instalar el operador de telemetría en tu clúster de OpenShift con la consola web de OpenShift Container Platform, completa los siguientes pasos:

  1. Accede a la consola web de Red Hat OpenShift.
  2. Verifica que estés en la perspectiva Administrator.
  3. En el panel de navegación izquierdo, expande la sección Operadores y haz clic en OperatorHub.
  4. En la barra de búsqueda que se encuentra en Todos los elementos, ingresa Cluster Services for OpenShift Telemetry.

    También puedes buscar ingresando Google. Esto filtra los operadores que proporciona Google, lo que incluye el operador de Cluster Services for OpenShift Telemetry.

  5. Haz clic en la tarjeta llamada Cluster Services for OpenShift Telemetry.

  6. En el panel Cluster Services for OpenShift Telemetry, haz clic en Instalar.

  7. En la página Instalar operador, completa los siguientes pasos:

    1. En el campo Canal de actualización, selecciona estable.
    2. En el campo Modo de instalación, selecciona Un espacio de nombres específico en el clúster.
    3. En el campo Installed Namespace, selecciona el proyecto openshift-operators o crea un espacio de nombres de supervisión personalizado.
    4. En el campo Estrategia de aprobación, selecciona Automática o Manual.
    5. Haz clic en Instalar.
  8. Para verificar que el operador se haya instalado correctamente, completa los siguientes pasos:

    1. Ve a Operadores > Operadores instalados.
    2. En la lista de operadores, busca y verifica que el operador Cluster Services for OpenShift Telemetry esté presente.
    3. Verifica que la columna Estado muestre el valor Correcto o Actualizado.
    4. De manera opcional, haz clic en el operador para ver sus detalles.

CLI de OpenShift

Para instalar el operador de telemetría en tu clúster de OpenShift con la CLI de OpenShift y un manifiesto YAML declarativo de Subscription, completa los siguientes pasos:

  1. Crea un manifiesto de recurso personalizado de Subscription llamado subscription.yaml con la siguiente configuración:

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: google-cloud-cluster-services-for-openshift-telemetry
      namespace: openshift-operators
    spec:
      channel: stable
      installPlanApproval: Automatic
      name: google-cloud-cluster-services-for-openshift-telemetry
      source: certified-operators
      sourceNamespace: openshift-marketplace
    
  2. Aplica la suscripción a tu clúster:

    oc apply -f subscription.yaml
    
  3. Verifica que el operador de telemetría esté instalado correctamente. Para ello, comprueba el estado de ClusterServiceVersion:

    oc get csv -n openshift-operators
    

    En el resultado, verifica que el valor de la columna PHASE para cluster-services-for-openshift-telemetry sea Succeeded.

Restringe el proveedor de la federación de identidades para cargas de trabajo

Si configuraste la federación de identidades para cargas de trabajo en OpenShift de la versión 4.18 a la 4.21 sin la marca --key-storage-method=pool-jwk-file, tu clúster usa un bucket de Cloud Storage para alojar su configuración de OIDC. Después de instalar el operador de Cluster Services for OpenShift Telemetry, completa los siguientes pasos obligatorios posteriores a la instalación para restringir el proveedor de grupos de identidades para cargas de trabajo al UID de la cuenta de servicio específica de tu clúster:

  1. Recupera el identificador único (uid) de la cuenta de servicio de Kubernetes del operador de telemetría en el espacio de nombres openshift-operators:

    KSA_UID=$(oc get serviceaccount google-cloud-cluster-services-telemetry-agent-workloadagent-service-account \
      -n openshift-operators \
      -o jsonpath='{.metadata.uid}')
    
  2. Actualiza el proveedor de grupos de identidades para cargas de trabajo con una condición de atributo que fije el intercambio de tokens al UID de la cuenta de servicio recuperada:

    gcloud iam workload-identity-pools providers update-oidc PROVIDER_ID \
      --location="global" \
      --workload-identity-pool="POOL_ID" \
      --project="PROJECT_ID" \
      --attribute-condition="assertion['kubernetes.io']['serviceaccount']['uid']=='${KSA_UID}'"
    

    Reemplaza lo siguiente:

    • PROVIDER_ID: Es el ID del proveedor de grupos de identidades para cargas de trabajo creado por la utilidad ccoctl (coincide con NAME del comando ccoctl gcp create-all).
    • POOL_ID: Es el ID del grupo de identidades para cargas de trabajo creado por la utilidad ccoctl (coincide con NAME del comando ccoctl gcp create-all).
    • PROJECT_ID: el ID del proyecto de Google Cloud en el que se ejecuta tu clúster de OpenShift

Si la cuenta de servicio de google-cloud-cluster-services-telemetry-agent-workloadagent-service-account o el operador se borran y se vuelven a crear en el clúster, se genera un UID nuevo y debes volver a ejecutar el comando update-oidc con el UID nuevo.

Habilitar la recopilación de métricas

Para permitir que el operador recopile métricas de tu clúster de OpenShift, debes aplicar un recurso personalizado TelemetryConfig. Este recurso implementa Pods de daemon en los nodos del clúster para el agente de cargas de trabajo de procesamiento.

Para habilitar el operador de modo que recopile métricas de tu clúster de OpenShift, completa los siguientes pasos:

  1. Crea un manifiesto de recurso personalizado TelemetryConfig llamado telemetryconfig.yaml:

    • Si configuraste la autenticación para el operador de telemetría con la federación de identidades para cargas de trabajo, usa el siguiente recurso personalizado mínimo. Este recurso personalizado recupera automáticamente las credenciales almacenadas en el secreto google-cloud-cluster-services-telemetry-agent-wif-secret.

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
      
    • Si configuraste la autenticación para el operador de telemetría con una clave de cuenta de servicio, usa el siguiente recurso personalizado:

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
        serviceAccountCredentialsSecretName: telemetry-agent-sa
        serviceAccountCredentialsPath: SERVICE_ACCOUNT_KEY_PATH
      

      Reemplaza SERVICE_ACCOUNT_KEY_PATH por la ruta de acceso en la que montaste la clave de la cuenta de servicio. El nombre de la activación debe coincidir con el archivo JSON de la clave de la cuenta de servicio. Por ejemplo: /var/run/secrets/google/workload_agent_sa_key.json

  2. Aplica el recurso personalizado a tu clúster:

    oc apply -f telemetryconfig.yaml
    
  3. Verifica que el estado del Pod del agente de telemetría sea Running:

    oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operator
    

    También puedes verificar la recopilación de métricas inspeccionando los registros del Pod:

    "openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"

Visualiza los registros del operador en Cloud Logging

De forma predeterminada, los registros del operador de Cluster Services for OpenShift Telemetry se envían a Cloud Logging. Puedes ver estos registros en Logging. Para ver los registros del operador en Logging, completa los siguientes pasos:

  1. En la consola de Google Cloud , accede a la página Explorador de registros.

    Ve al Explorador de registros

  2. En el panel de consultas, ingresa una consulta:

    • Para filtrar los registros de tu proyecto de Google Cloud , usa la siguiente consulta:

      logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"

      Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud en el que se ejecuta tu clúster de OpenShift.

    • Si ejecutas varios clústeres en tu proyecto de Google Cloud y quieres filtrar los registros de un clúster específico, usa la siguiente consulta:

      resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")

      Reemplaza COMPUTE_INSTANCE_ID por el ID de instancia de las instancias de Compute Engine que ejecutan tu clúster de OpenShift. Para obtener información sobre cómo encontrar el ID de tu instancia de procesamiento, consulta Visualiza los detalles de una VM.

  3. Haz clic en Ejecutar consulta.

Configura políticas de alertas basadas en registros

De forma predeterminada, los registros del operador de telemetría se envían a Cloud Logging. Te recomendamos que configures políticas de alertas basadas en los registros del operador de telemetría, que te notifican cuando aparecen mensajes específicos en los registros. Estas alertas te ayudan a supervisar el funcionamiento del operador y solucionar problemas.

Para configurar una política de alertas basada en los registros que genera el operador de telemetría, completa los siguientes pasos:

  1. Verifica que cumplas con los requisitos previos que se describen en la sección "Antes de comenzar" de Configura políticas de alertas basadas en registros.

  2. En la consola de Google Cloud , accede a la página Explorador de registros.

    Ve al Explorador de registros

  3. En el panel de consultas, ingresa la consulta requerida:

    logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
    severity=SEVERITY_LEVEL

    Reemplaza SEVERITY_LEVEL por un valor de nivel de gravedad admitido, que incluye: DEBUG, INFO, WARNING y ERROR. Te recomendamos que uses ERROR o un valor de nivel de registro más alto.

  4. Haz clic en Ejecutar consulta para validarla.

  5. Crear una alerta de registro

    Para aprender a crear esta alerta, consulta el paso tres del procedimiento que se describe en Crea una política de alertas basada en registros con el Explorador de registros.

Opcional: Habilita las evaluaciones específicas de producción

De las prácticas recomendadas que admite el Gestor de cargas de trabajo para los clústeres de OpenShift, algunas solo se aplican a los entornos de producción. El Gestor de cargas de trabajo hace esta distinción verificando si tu clúster, implementación o Pod tiene la etiqueta environment. Si el valor asociado con esta etiqueta es production, el Gestor de cargas de trabajo considera ese recurso como un recurso de producción.

Para informar al Gestor de cargas de trabajo que un clúster pertenece a un entorno de producción, completa los siguientes pasos:

  1. Crea un espacio de nombres workloadmanager:

    oc create namespace workloadmanager
    
  2. Crea un ConfigMap en el espacio de nombres workloadmanager con la siguiente configuración:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: wlm-cluster-environment
      namespace: workloadmanager
    data:
      # Options: "production" or "non-production"
      environment: "production"
    

Para informar al Gestor de cargas de trabajo que un Deployment o un Pod pertenecen a un entorno de producción, agrega una etiqueta llamada environment a la definición del recurso con una de las siguientes opciones:

  • Aplica manualmente la siguiente configuración:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
      labels:
        # Options: "production" or "non-production"
        environment: "production"
    spec:
    ...
    
  • Ejecuta el comando siguiente:

    oc label --overwrite deployments DEPLOYMENT_NAME environment=production
    

    Reemplaza DEPLOYMENT_NAME por el nombre de tu implementación.

Si aplicas la etiqueta environment en tu clúster de OpenShift, así como en una implementación o un Pod que se ejecuta en el clúster, el Gestor de cargas de trabajo prioriza el valor de la etiqueta establecido para la implementación o el Pod sobre el valor de la etiqueta establecido para el clúster.

Opcional: Activa la recopilación de métricas

Después de configurar correctamente el operador de Cluster Services for OpenShift Telemetry en tu clúster de OpenShift, el operador recopila métricas del clúster y las envía al Gestor de cargas de trabajo cada 30 minutos.

De manera opcional, en lugar de esperar 30 minutos para la recopilación programada de métricas, puedes activar de forma manual el operador para que recopile métricas y las envíe al Gestor de cargas de trabajo.

Para activar de forma manual el operador para la recopilación de métricas, completa los siguientes pasos:

  1. Abre la terminal.

  2. Busca el nombre del Pod en ejecución:

    POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)
    
  3. Activa el operador para recopilar y enviar métricas:

    oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
    

¿Qué sigue?