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 daemon de télémétrie de 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 afin de 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 parmi les options suivantes :

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

    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 Google Cloud ressources, vous devez créer un compte de service pour celui-ci dans votre Google Cloud projet.

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 auquel vous vous êtes abonné pour l'opérateur de télémétrie dans l'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 :

  3. Appliquez les fichiers manifestes générés du fournisseur OpenID Connect (OIDC), des rôles IAM et des secrets au cluster :

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

Les étapes précédentes créent un compte de service dans votre Google Cloud projet et 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 Google Cloud projet, 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 Google Cloud projet dans lequel votre cluster OpenShift est exécuté.

  3. Pour permettre au compte de service d'accéder aux Google Cloud ressources, attribuez-lui les rôles IAM définis dans le CredentialsRequest fichier manifeste. 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 fichiers 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 Administrator (Administrateur).
  3. Dans le volet de navigation de gauche, développez la section Operators (Opérateurs), puis cliquez sur OperatorHub.
  4. Dans la barre de recherche sous All items (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 nommée Cluster Services for OpenShift Telemetry.

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

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

    1. Dans le champ Update channel (Canal de mise à jour), sélectionnez stable.
    2. Dans le champ Installation mode (Mode d'installation), sélectionnez A specific namespace on the cluster (Un espace de noms spécifique sur le cluster).
    3. Dans le champ Installed Namespace (Espace de noms installé), sélectionnez le projet openshift-operators ou créez un espace de noms de surveillance personnalisé.
    4. Dans le champ Approval Strategy (Stratégie d'approbation), sélectionnez Automatic (Automatique) ou Manual (Manuel).
    5. Cliquez sur Install (Installer).
  8. Pour vérifier que l'opérateur est installé, procédez comme suit :

    1. Accédez à Operators > Installed Operators (Opérateurs > Opérateurs installés).
    2. Dans la liste des opérateurs, recherchez et vérifiez que l'opérateur Cluster Services for OpenShift Telemetry est présent.
    3. Vérifiez que la colonne Status (État) affiche la valeur Succeeded (Réussi) ou Up to date (À 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 la CLI OpenShift et d'un fichier manifeste YAML Subscription déclaratif, 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 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 daemon sur les nœuds de votre cluster pour l'agent 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 monté la clé de compte de service. Le nom du point de montage doit correspondre au fichier JSON de la clé de 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 (En cours d'exécution) :

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

    Vous pouvez également vérifier la collecte des 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 de l'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 Google Cloud console, 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 Google Cloud projet, utilisez la requête suivante :

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

      Remplacez PROJECT_ID par l'ID du Google Cloud projet dans lequel votre cluster OpenShift est exécuté.

    • Si vous exécutez plusieurs clusters dans votre Google Cloud projet 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 Google Cloud console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  3. Dans le volet 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é compatible, y compris : DEBUG, INFO, WARNING et ERROR. Nous vous recommandons d'utiliser ERROR ou une valeur de niveau de journalisation plus élevée.

  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 votre cluster, votre déploiement ou votre pod comporte le libellé environment. 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 à l'aide de 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 de libellé définie pour le déploiement ou le pod par rapport à la valeur de libellé définie pour le cluster.

Facultatif : Déclencher la collecte des 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.

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

Pour déclencher manuellement l'opérateur pour la collecte des 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 qu'il collecte et envoie des métriques :

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

Étape suivante