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:
- Estás usando la versión 4.18 o posterior de Red Hat OpenShift Container Platform.
- Implementaste un clúster de OpenShift en una o más instancias de procesamiento.
- Tu administrador te otorgó el rol de ClusterAdmin para tu clúster en Red Hat OpenShift Container Platform.
- Descargaste e instalaste Google Cloud CLI en tu terminal. Si usas Cloud Shell, puedes omitir este requisito previo.
- Instalaste la CLI de OpenShift (
oc) en tu clúster. Para obtener información sobre cómo instalar esta CLI, consulta el documento de Red Hat Instala la CLI de OpenShift. - Instalaste la utilidad del operador de credenciales de Cloud (
ccoctl). Para obtener información sobre cómo instalar esta utilidad, consulta el documento de Red Hat Cómo obtener la herramientaccoctlpara OpenShift 4. - Revisaste las regiones admitidas en las que puedes crear evaluaciones del Gestor de cargas de trabajo.
- Tu administrador te otorgó los roles de IAM necesarios para crear y ejecutar evaluaciones del Gestor de cargas de trabajo.
- Habilitaste el acceso a las APIs de Cloud.
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 kubeadminComo 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:
- (Recomendado) Autentica con la federación de identidades para cargas de trabajo
- Autentica con una clave de cuenta de servicio
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:
En la terminal, extrae el manifiesto
CredentialsRequestdel 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 --confirmReemplaza
VERSIONpor 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.Con la utilidad
ccoctl, procesa el manifiestoCredentialsRequestextraí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-filepara 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-filePara 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 utilidadccoctl. 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
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:
- Para recopilar métricas de la instancia de procesamiento:
Visualizador de Compute (
roles/compute.viewer) - Para escribir datos en el almacén de datos de Gestor de cargas de trabajo:
Escritor de estadísticas de Gestor de cargas de trabajo (
roles/workloadmanager.insightWriter) - Para enviar registros del operador a Cloud Logging:
Escritor de registros (
roles/logging.logWriter)
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:
En la terminal, extrae el manifiesto
CredentialsRequestdel 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 --confirmEn 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_IDReemplaza
PROJECT_IDpor el ID del proyecto deGoogle Cloud en el que se ejecuta tu clúster de OpenShift.Para permitir que la cuenta de servicio acceda a los recursos de Google Cloud , otórgale los roles de IAM definidos en el manifiesto de
CredentialsRequest. Este manifiesto incluye el siguiente conjunto mínimo de roles de IAM que necesita el operador:- Para recopilar métricas de la instancia de procesamiento:
Visualizador de Compute (
roles/compute.viewer) - Para escribir datos en el almacén de datos de Gestor de cargas de trabajo:
Escritor de estadísticas de Gestor de cargas de trabajo (
roles/workloadmanager.insightWriter) - Para enviar registros del operador a Cloud Logging:
Escritor de registros (
roles/logging.logWriter)
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_ROLEpor el rol de IAM que deseas otorgar a la cuenta de servicio.- Para recopilar métricas de la instancia de procesamiento:
Visualizador de Compute (
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_IDEn el espacio de nombres
openshift-operators, crea un Secret llamadotelemetry-agent-sapara 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:
- Accede a la consola web de Red Hat OpenShift.
- Verifica que estés en la perspectiva Administrator.
- En el panel de navegación izquierdo, expande la sección Operadores y haz clic en OperatorHub.
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.
Haz clic en la tarjeta llamada Cluster Services for OpenShift Telemetry.
En el panel Cluster Services for OpenShift Telemetry, haz clic en Instalar.
En la página Instalar operador, completa los siguientes pasos:
- En el campo Canal de actualización, selecciona estable.
- En el campo Modo de instalación, selecciona Un espacio de nombres específico en el clúster.
- En el campo Installed Namespace, selecciona el proyecto openshift-operators o crea un espacio de nombres de supervisión personalizado.
- En el campo Estrategia de aprobación, selecciona Automática o Manual.
- Haz clic en Instalar.
Para verificar que el operador se haya instalado correctamente, completa los siguientes pasos:
- Ve a Operadores > Operadores instalados.
- En la lista de operadores, busca y verifica que el operador Cluster Services for OpenShift Telemetry esté presente.
- Verifica que la columna Estado muestre el valor Correcto o Actualizado.
- 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:
Crea un manifiesto de recurso personalizado de
Subscriptionllamadosubscription.yamlcon 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-marketplaceAplica la suscripción a tu clúster:
oc apply -f subscription.yamlVerifica que el operador de telemetría esté instalado correctamente. Para ello, comprueba el estado de
ClusterServiceVersion:oc get csv -n openshift-operatorsEn el resultado, verifica que el valor de la columna
PHASEparacluster-services-for-openshift-telemetryseaSucceeded.
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:
Recupera el identificador único (
uid) de la cuenta de servicio de Kubernetes del operador de telemetría en el espacio de nombresopenshift-operators:KSA_UID=$(oc get serviceaccount google-cloud-cluster-services-telemetry-agent-workloadagent-service-account \ -n openshift-operators \ -o jsonpath='{.metadata.uid}')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 utilidadccoctl(coincide conNAMEdel comandoccoctl gcp create-all).POOL_ID: Es el ID del grupo de identidades para cargas de trabajo creado por la utilidadccoctl(coincide conNAMEdel comandoccoctl 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:
Crea un manifiesto de recurso personalizado
TelemetryConfigllamadotelemetryconfig.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: trueSi 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_PATHReemplaza
SERVICE_ACCOUNT_KEY_PATHpor 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
Aplica el recurso personalizado a tu clúster:
oc apply -f telemetryconfig.yamlVerifica que el estado del Pod del agente de telemetría sea Running:
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorTambié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:
En la consola de Google Cloud , accede a la página Explorador de registros.
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_IDpor 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_IDpor 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.
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:
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.
En la consola de Google Cloud , accede a la página Explorador de registros.
En el panel de consultas, ingresa la consulta requerida:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
Reemplaza
SEVERITY_LEVELpor un valor de nivel de gravedad admitido, que incluye:DEBUG,INFO,WARNINGyERROR. Te recomendamos que usesERRORo un valor de nivel de registro más alto.Haz clic en Ejecutar consulta para validarla.
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:
Crea un espacio de nombres
workloadmanager:oc create namespace workloadmanagerCrea un
ConfigMapen el espacio de nombresworkloadmanagercon 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=productionReemplaza
DEPLOYMENT_NAMEpor 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:
Abre la terminal.
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)Activa el operador para recopilar y enviar métricas:
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
¿Qué sigue?
- Crea y ejecuta una evaluación
- Obtén información sobre las prácticas recomendadas de Gestor de cargas de trabajo para OpenShift.