Configurer l'opérateur Cluster Services for OpenShift Telemetry

Ce document explique comment installer l'opérateur Cluster Services for OpenShift Telemetry et le configurer pour qu'il se connecte à un cluster OpenShift exécuté sur une instance Compute Engine.

Une fois installé et configuré, cet opérateur de télémétrie déploie un démon de télémétrie du réseau hôte qui surveille en permanence l'état et la configuration du cluster. L'opérateur envoie les métriques collectées à Workload Manager. Vous pouvez ensuite utiliser l'évaluation Workload Manager pour analyser les charges de travail exécutées dans votre cluster et détecter les écarts par rapport aux bonnes pratiques pour les clusters OpenShift.

Avant de commencer

Avant d'installer et de configurer l'opérateur de télémétrie, vous devez vous assurer que les conditions préalables suivantes sont remplies :

Activer l'accès aux APIs Cloud

Compute Engine recommande de configurer vos instances de façon à accorder un niveau d'accès complet à toutes les APIs Cloud et à n'utiliser que les autorisations IAM du compte de service de l'instance pour contrôler les accès aux ressourcesGoogle Cloud . Pour en savoir plus, consultez Créer une VM qui utilise un compte de service géré par l'utilisateur.

Si vous limitez l'accès aux APIs Cloud, l'opérateur Cluster Services for OpenShift Telemetry nécessite au minimum les niveaux d'accès suivants aux APIs Cloud sur l'instance de calcul hôte :

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

Pour en savoir plus, consultez les bonnes pratiques concernant les niveaux d'accès.

Si vous exécutez un cluster OpenShift sur une instance de calcul qui ne possède pas d'adresse IP externe, vous devez activer l'accès privé à Google sur le sous-réseau de l'instance afin que l'opérateur Cluster Services for OpenShift Telemetry puisse accéder aux API et services Google. Pour savoir comment activer l'accès privé à Google, consultez Configurer l'accès privé à Google.

Authentifier les utilisateurs auprès du cluster OpenShift

Pour effectuer des actions administratives, vous ou vos utilisateurs devez être authentifiés auprès de votre cluster OpenShift à l'aide de la CLI OpenShift. Pour authentifier les utilisateurs auprès de votre cluster OpenShift, vous pouvez choisir l'une des options suivantes :

  • Exécutez la commande suivante et suivez les instructions :

    oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin
    
  • Vous pouvez également obtenir un jeton d'authentification de session à utiliser avec le binaire oc. Pour obtenir ce jeton, ouvrez l'URL suivante dans un navigateur Web :

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

Remplacez CLUSTER_DOMAIN par le domaine de votre cluster OpenShift. Exemple : mycluster.google.com.

Authentifier l'opérateur auprès de Google Cloud

Pour permettre à l'opérateur de télémétrie de s'authentifier et d'accéder aux ressources Google Cloud, vous devez créer un compte de service pour lui dans votre projet Google Cloud .

Vous pouvez authentifier l'opérateur de télémétrie en tant que compte de service à l'aide des options suivantes :

Authentifier l'opérateur à l'aide de la fédération d'identité de charge de travail

Pour authentifier l'opérateur de télémétrie en tant que compte de service à l'aide de la fédération d'identité de charge de travail, procédez comme suit :

  1. Dans votre terminal, extrayez le fichier manifeste CredentialsRequest du bundle de l'opérateur de télémétrie dans un répertoire 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
    

    Remplacez VERSION par le numéro de version de l'opérateur de télémétrie auquel vous vous êtes abonné dans OperatorHub. Vous pouvez consulter la liste des numéros de version certifiés pour l'opérateur de télémétrie dans le catalogue Red Hat Ecosystem.

  2. À l'aide de l'utilitaire ccoctl, traitez le fichier manifeste CredentialsRequest extrait et provisionnez Google Cloud les liaisons et les identifiants Identity and Access Management (IAM)  :

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

    Remplacez les éléments suivants :

    • REGION : région Compute Engine dans laquelle votre cluster OpenShift est exécuté
    • PROJECT_ID : ID du projet du Google Cloud projet dans lequel votre cluster OpenShift s'exécute
  3. Appliquez les fichiers manifeste du fournisseur OpenID Connect (OIDC), des rôles IAM et des secrets générés au cluster :

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

Les étapes précédentes créent un compte de service dans votre projet Google Cloud et lui attribuent les rôles IAM suivants :

Authentifier l'opérateur à l'aide d'une clé de compte de service

Si votre organisation n'autorise pas l'utilisation de la fédération d'identité de charge de travail à des fins d'authentification, vous pouvez authentifier l'opérateur de télémétrie à l'aide d'une clé de compte de service.

Pour authentifier l'opérateur de télémétrie en tant que compte de service à l'aide d'une clé de compte de service, procédez comme suit :

  1. Dans votre terminal, extrayez le fichier manifeste CredentialsRequest du bundle de l'opérateur de télémétrie dans un répertoire 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. Dans votre projet Google Cloud , créez un compte de service pour l'opérateur de télémétrie :

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

    Remplacez PROJECT_ID par l'ID du projetGoogle Cloud dans lequel votre cluster OpenShift s'exécute.

  3. Pour permettre au compte de service d'accéder aux ressources Google Cloud , accordez-lui les rôles IAM définis dans le fichier manifesteCredentialsRequest. Ce fichier manifeste inclut l'ensemble minimal de rôles IAM dont l'opérateur a besoin :

    Pour chaque rôle IAM défini dans ce fichier manifeste, exécutez la commande suivante :

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

    Remplacez IAM_ROLE par le rôle IAM que vous souhaitez attribuer au compte de service.

  4. Créez et téléchargez une clé privée pour le compte de service :

    gcloud iam service-accounts keys create ./sa_key.json \
      --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \
      --project=PROJECT_ID
    
  5. Dans l'espace de noms openshift-operators, créez un secret nommé telemetry-agent-sa pour la clé de compte de service que vous avez créée :

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

Installer l'opérateur Cluster Services for OpenShift Telemetry

Vous pouvez installer l'opérateur Cluster Services for OpenShift Telemetry à l'aide de la console Web Red Hat OpenShift Container Platform ou des manifestes YAML d'abonnement déclaratif. Pour en savoir plus sur ces options, consultez le document Red Hat Ajouter des opérateurs à un cluster.

Console Web OpenShift

Pour installer l'opérateur de télémétrie dans votre cluster OpenShift à l'aide de la console Web OpenShift Container Platform, procédez comme suit :

  1. Connectez-vous à la console Web Red Hat OpenShift.
  2. Vérifiez que vous êtes dans la perspective Administrateur.
  3. Dans le panneau de navigation de gauche, développez la section Operators (Opérateurs), puis cliquez sur OperatorHub.
  4. Dans la barre de recherche sous Tous les éléments, saisissez Cluster Services for OpenShift Telemetry.

    Vous pouvez également effectuer une recherche en saisissant Google. Cela filtre les opérateurs fournis par Google, y compris l'opérateur Cluster Services for OpenShift Telemetry.

  5. Cliquez sur la fiche Cluster Services for OpenShift Telemetry.

  6. Dans le volet Cluster Services for OpenShift Telemetry, cliquez sur Install (Installer).

  7. Sur la page Installer l'opérateur, procédez comme suit :

    1. Dans le champ Canal de mise à jour, sélectionnez stable.
    2. Dans le champ Mode d'installation, sélectionnez Un espace de noms spécifique sur le cluster.
    3. Dans le champ Espace de noms installé, sélectionnez le projet openshift-operators ou créez un espace de noms de surveillance personnalisé.
    4. Dans le champ Stratégie d'approbation, sélectionnez Automatique ou Manuelle.
    5. Cliquez sur Installer.
  8. Pour vérifier que l'opérateur a bien été installé, procédez comme suit :

    1. Accédez à Opérateurs > Opérateurs installés.
    2. Dans la liste des opérateurs, recherchez l'opérateur Cluster Services for OpenShift Telemetry et vérifiez qu'il est présent.
    3. Vérifiez que la colonne État affiche la valeur Réussite ou À jour.
    4. Vous pouvez également cliquer sur l'opérateur pour afficher ses détails.

CLI OpenShift

Pour installer l'opérateur de télémétrie dans votre cluster OpenShift à l'aide de l'interface de ligne de commande OpenShift et d'un fichier manifeste YAML déclaratif Subscription, procédez comme suit :

  1. Créez un fichier manifeste de ressource personnalisée Subscription nommé subscription.yaml avec la configuration suivante :

    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. Appliquez l'abonnement à votre cluster :

    oc apply -f subscription.yaml
    
  3. Vérifiez que l'opérateur de télémétrie est bien installé en vérifiant l'état de ClusterServiceVersion :

    oc get csv -n openshift-operators
    

    Dans le résultat, vérifiez que la valeur de la colonne PHASE pour cluster-services-for-openshift-telemetry est Succeeded.

Activer la collecte des métriques

Pour permettre à l'opérateur de collecter des métriques à partir de votre cluster OpenShift, vous devez appliquer une ressource personnalisée TelemetryConfig. Cette ressource déploie des pods de démon sur les nœuds de votre cluster pour Agent for Compute Workloads.

Pour permettre à l'opérateur de collecter des métriques à partir de votre cluster OpenShift, procédez comme suit :

  1. Créez un fichier manifeste de ressource personnalisée TelemetryConfig nommé telemetryconfig.yaml :

    • Si vous avez configuré l'authentification pour l'opérateur de télémétrie à l'aide de la fédération d'identité de charge de travail, utilisez la ressource personnalisée minimale suivante. Cette ressource personnalisée récupère automatiquement les identifiants stockés dans le secret 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 vous avez configuré l'authentification pour l'opérateur de télémétrie à l'aide d'une clé de compte de service, utilisez la ressource personnalisée suivante :

      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
      

      Remplacez SERVICE_ACCOUNT_KEY_PATH par le chemin d'accès où vous avez installé la clé du compte de service. Le nom du point de montage doit correspondre au fichier JSON de clé du compte de service. Exemple : /var/run/secrets/google/workload_agent_sa_key.json.

  2. Appliquez la ressource personnalisée à votre cluster :

    oc apply -f telemetryconfig.yaml
    
  3. Vérifiez que l'état du pod de l'agent de télémétrie est Running :

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

    Vous pouvez également vérifier la collecte de métriques en inspectant les journaux du pod :

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

Afficher les journaux d'opérateur dans Cloud Logging

Par défaut, les journaux de l'opérateur Cluster Services for OpenShift Telemetry sont envoyés à Cloud Logging. Vous pouvez afficher ces journaux dans Logging. Pour afficher les journaux de l'opérateur dans Logging, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Dans le volet "Requête", saisissez une requête :

    • Pour filtrer les journaux de votre projet Google Cloud , utilisez la requête suivante :

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

      Remplacez PROJECT_ID par l'ID du projetGoogle Cloud dans lequel votre cluster OpenShift s'exécute.

    • Si vous exécutez plusieurs clusters dans votre projet Google Cloud et que vous souhaitez filtrer les journaux d'un cluster spécifique, utilisez la requête suivante :

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

      Remplacez COMPUTE_INSTANCE_ID par l'ID d'instance des instances Compute Engine qui exécutent votre cluster OpenShift. Pour savoir comment trouver l'ID de votre instance de calcul, consultez Afficher les détails d'une VM.

  3. Cliquez sur Exécuter la requête.

Configurer des règles d'alerte basées sur les journaux

Par défaut, les journaux de l'opérateur de télémétrie sont envoyés à Cloud Logging. Nous vous recommandons de configurer des règles d'alerte basées sur les journaux de l'opérateur de télémétrie, qui vous avertissent lorsque des messages spécifiques apparaissent dans les journaux. Ces alertes vous aident à surveiller le fonctionnement de l'opérateur et à résoudre les problèmes.

Pour configurer une règle d'alerte basée sur les journaux générés par l'opérateur de télémétrie, procédez comme suit :

  1. Vérifiez que vous remplissez les conditions préalables décrites dans la section "Avant de commencer " de Configurer des règles d'alerte basées sur les journaux.

  2. Dans la console Google Cloud , accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  3. Dans le volet de requête, saisissez la requête requise :

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

    Remplacez SEVERITY_LEVEL par une valeur de niveau de gravité acceptée, qui inclut DEBUG, INFO, WARNING et ERROR. Nous vous recommandons d'utiliser ERROR ou une valeur de niveau de journalisation supérieure.

  4. Cliquez sur Exécuter la requête pour valider la requête.

  5. Créez une alerte de journal.

    Pour savoir comment créer cette alerte, consultez l'étape 3 de la procédure décrite dans Créer une règle d'alerte basée sur les journaux à l'aide de l'explorateur de journaux.

Facultatif : Activer les évaluations spécifiques à la production

Parmi les bonnes pratiques compatibles avec Workload Manager pour les clusters OpenShift, certaines ne s'appliquent qu'aux environnements de production. Workload Manager fait cette distinction en vérifiant si le libellé environment est associé à votre cluster, votre déploiement ou votre pod. Si la valeur associée à ce libellé est production, Workload Manager considère cette ressource comme une ressource de production.

Pour indiquer à Workload Manager qu'un cluster appartient à un environnement de production, procédez comme suit :

  1. Créez un espace de noms workloadmanager :

    oc create namespace workloadmanager
    
  2. Créez un ConfigMap dans l'espace de noms workloadmanager à l'aide de la configuration suivante :

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

Pour indiquer à Workload Manager qu'un déploiement ou un pod appartient à un environnement de production, ajoutez un libellé nommé environment à la définition de la ressource en utilisant l'une des options suivantes :

  • Appliquez manuellement la configuration suivante :

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
      labels:
        # Options: "production" or "non-production"
        environment: "production"
    spec:
    ...
    
  • Exécutez la commande suivante :

    oc label --overwrite deployments DEPLOYMENT_NAME environment=production
    

    Remplacez DEPLOYMENT_NAME par le nom de votre déploiement.

Si vous appliquez le libellé environment à votre cluster OpenShift, ainsi qu'à un déploiement ou un pod exécuté sur le cluster, Workload Manager donne la priorité à la valeur du libellé définie pour le déploiement ou le pod par rapport à celle définie pour le cluster.

Facultatif : Déclencher la collecte de métriques

Une fois que vous avez configuré l'opérateur Cluster Services for OpenShift Telemetry dans votre cluster OpenShift, il collecte les métriques du cluster et les envoie à Workload Manager toutes les 30 minutes.

Si vous le souhaitez, au lieu d'attendre 30 minutes pour la collecte planifiée des métriques, vous pouvez déclencher manuellement l'opérateur pour qu'il collecte les métriques et les envoie à Workload Manager.

Pour déclencher manuellement l'opérateur pour la collecte de métriques, procédez comme suit :

  1. Ouvrez votre terminal.

  2. Recherchez le nom du pod en cours d'exécution :

    POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)
    
  3. Déclenchez l'opérateur pour collecter et envoyer des métriques :

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

Étapes suivantes