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 continuamente el estado y la configuración del clúster. El operador envía las métricas recopiladas a Workload Manager. Luego, puedes usar la evaluación de Workload Manager 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 previos:

Habilita el acceso a las API de Cloud

Compute Engine recomienda configurar tus instancias para permitir todos los permisos de acceso 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.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 los servicios y las APIs de Google. Para obtener información sobre cómo habilitar el Acceso privado a Google, consulta Configura el Acceso privado a Google.

Autentica a los usuarios en el clúster de OpenShift

Para realizar acciones administrativas, tú o tus usuarios deben autenticarse en tu 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 indicaciones:

    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 el operador en Google Cloud

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

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

Autentica el operador con la federación de Workload Identity

Para autenticar el operador de telemetría como la cuenta de servicio con la federación de Workload Identity, completa los siguientes pasos:

  1. En tu terminal, extrae el manifiesto CredentialsRequest del paquete del operador de telemetría en 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 Google Cloud de Identity and Access Management (IAM) y credenciales:

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

    Reemplaza lo siguiente:

    • REGION: La región de Compute Engine en la que se ejecuta tu clúster de OpenShift
    • PROJECT_ID: El ID del proyecto del Google Cloud proyecto en el que se ejecuta tu clúster de OpenShift
  3. Aplica al clúster el proveedor de OpenID Connect (OIDC) generado, los roles de IAM y los manifiestos secretos:

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

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

Autentica el operador con una clave de cuenta de servicio

Si tu organización no admite el uso de la federación de Workload Identity para 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 tu terminal, extrae el manifiesto CredentialsRequest del paquete del operador de telemetría en 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 Google Cloud proyecto, 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 Google Cloud proyecto en el que se ejecuta tu clúster de OpenShift.

  3. Para permitir que la cuenta de servicio acceda a los Google Cloud recursos, otórgale a la cuenta de servicio los roles de IAM definidos en el CredentialsRequest manifiesto. 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 secreto llamado telemetry-agent-sa para la clave de 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 Administrador.
  3. En la navegación de la izquierda, expande la sección Operadores y haz clic en OperatorHub.
  4. En la barra de búsqueda en Todos los elementos, ingresa Cluster Services for OpenShift Telemetry.

    Como alternativa, puedes buscar ingresando Google. Esto filtra los operadores proporcionados por Google, 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 Espacio de nombres instalado, 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ático o Manual.
    5. Haz clic en Instalar.
  8. Para verificar que el operador se instaló correctamente, completa los siguientes pasos:

    1. Ve a Operadores > Operadores instalados.
    2. En la lista de operadores, busca y verifica que esté presente el operador Cluster Services for OpenShift Telemetry.
    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 Subscription declarativo, completa los siguientes pasos:

  1. Crea un manifiesto de recurso personalizado 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 se haya instalado correctamente. Para ello, verifica 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.

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 de tu clúster para el Agente de Compute Workloads.

Para permitir que el operador 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 Workload Identity, 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 activaste la clave de cuenta de servicio. El nombre del punto de activación debe coincidir con el archivo JSON de claves de 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 En ejecución:

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

    También puedes verificar la recopilación de métricas si inspeccionas 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 Google Cloud consola de, accede a la página Explorador de registros.

    Ir al Explorador de registros

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

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

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

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

    • Si ejecutas varios clústeres en tu Google Cloud proyecto y deseas 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 notifiquen cuando aparezcan 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 generados por 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 Google Cloud consola de, accede a la página Explorador de registros.

    Ir 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 superior.

  4. Haz clic en Ejecutar consulta para validar la consulta.

  5. Crea una alerta de registro.

    Para obtener información sobre cómo 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 Workload Manager para los clústeres de OpenShift, algunas solo se aplican a los entornos de producción. Workload Manager hace esta distinción verificando tu clúster, implementación o pod en busca de la etiqueta environment. Si el valor asociado con esta etiqueta es production, Workload Manager considera ese recurso como un recurso de producción.

Para informar a Workload Manager 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 a Workload Manager que una implementación o un pod pertenece 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 siguiente comando:

    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, Workload Manager da prioridad al 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 a Workload Manager cada 30 minutos.

De manera opcional, en lugar de esperar 30 minutos para la recopilación programada de métricas, puedes activar manualmente el operador para que recopile métricas y las envíe a Workload Manager.

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

  1. Abre tu 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?