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 :
- Vous utilisez la version 4.18 ou une version ultérieure de Red Hat OpenShift Container Platform.
- Vous avez déployé un cluster OpenShift sur une ou plusieurs instances de calcul.
- Votre administrateur vous a attribué le rôle ClusterAdmin pour votre cluster dans Red Hat OpenShift Container Platform.
- Vous avez téléchargé et installé la Google Cloud CLI dans votre terminal. Si vous utilisez Cloud Shell, vous pouvez ignorer cette condition préalable.
- Vous avez installé la CLI OpenShift (
oc) dans votre cluster. Pour savoir comment installer cette CLI, consultez le document Red Hat Installer la CLI OpenShift. - Vous avez installé l'utilitaire Cloud Credentials Operator (
ccoctl). Pour savoir comment installer cet utilitaire, consultez le document Red Hat Comment obtenir l'outilccoctlpour OpenShift 4. - Vous avez examiné les régions compatibles dans lesquelles vous pouvez créer des évaluations Workload Manager.
- Votre administrateur vous a attribué les rôles IAM requis pour créer et exécuter des évaluations Workload Manager.
- Vous avez activé l'accès aux APIs Cloud.
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 kubeadminVous 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 :
- (Recommandé) S'authentifier à l'aide de la fédération d'identité de charge de travail
- S'authentifier à l'aide d'une clé de compte de service
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 :
Dans votre terminal, extrayez le fichier manifeste
CredentialsRequestdu 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 --confirmRemplacez
VERSIONpar 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.À l'aide de l'utilitaire
ccoctl, traitez le fichier manifesteCredentialsRequestextrait 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-outRemplacez les éléments suivants :
REGION: région Compute Engine dans laquelle votre cluster OpenShift est exécutéPROJECT_ID: ID du projet dans lequel votre cluster OpenShift est exécuté Google Cloud
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 :
- Pour collecter des métriques à partir de l'instance de calcul :
lecteur Compute (
roles/compute.viewer) - Pour écrire des données dans l'entrepôt de données Workload Manager :
rédacteur d'insights Workload Manager (
roles/workloadmanager.insightWriter) - Pour envoyer des journaux d'opérateur à Cloud Logging:
rédacteur de journaux (
roles/logging.logWriter)
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 :
Dans votre terminal, extrayez le fichier manifeste
CredentialsRequestdu 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 --confirmDans 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_IDRemplacez
PROJECT_IDpar l'ID du Google Cloud projet dans lequel votre cluster OpenShift est exécuté.Pour permettre au compte de service d'accéder aux Google Cloud ressources, attribuez-lui les rôles IAM définis dans le
CredentialsRequestfichier manifeste. Ce fichier manifeste inclut l'ensemble minimal de rôles IAM dont l'opérateur a besoin :- Pour collecter des métriques à partir de l'instance de calcul :
lecteur Compute (
roles/compute.viewer) - Pour écrire des données dans l'entrepôt de données Workload Manager :
rédacteur d'insights Workload Manager (
roles/workloadmanager.insightWriter) - Pour envoyer des journaux d'opérateur à Cloud Logging:
rédacteur de journaux (
roles/logging.logWriter)
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_ROLEpar le rôle IAM que vous souhaitez attribuer au compte de service.- Pour collecter des métriques à partir de l'instance de calcul :
lecteur Compute (
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_IDDans l'espace de noms
openshift-operators, créez un secret nommételemetry-agent-sapour 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 :
- Connectez-vous à la console Web Red Hat OpenShift.
- Vérifiez que vous êtes dans la perspective Administrator (Administrateur).
- Dans le volet de navigation de gauche, développez la section Operators (Opérateurs), puis cliquez sur OperatorHub.
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.
Cliquez sur la fiche nommée Cluster Services for OpenShift Telemetry.
Dans le volet Cluster Services for OpenShift Telemetry, cliquez sur Install (Installer).
Sur la page Install Operator (Installer l'opérateur), procédez comme suit :
- Dans le champ Update channel (Canal de mise à jour), sélectionnez stable.
- 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).
- 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é.
- Dans le champ Approval Strategy (Stratégie d'approbation), sélectionnez Automatic (Automatique) ou Manual (Manuel).
- Cliquez sur Install (Installer).
Pour vérifier que l'opérateur est installé, procédez comme suit :
- Accédez à Operators > Installed Operators (Opérateurs > Opérateurs installés).
- Dans la liste des opérateurs, recherchez et vérifiez que l'opérateur Cluster Services for OpenShift Telemetry est présent.
- Vérifiez que la colonne Status (État) affiche la valeur Succeeded (Réussi) ou Up to date (À jour).
- 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 :
Créez un fichier manifeste de ressource personnalisée
Subscriptionnommésubscription.yamlavec 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-marketplaceAppliquez l'abonnement à votre cluster :
oc apply -f subscription.yamlVérifiez que l'opérateur de télémétrie est installé en vérifiant l'état de
ClusterServiceVersion:oc get csv -n openshift-operatorsDans le résultat, vérifiez que la valeur de la colonne
PHASEpourcluster-services-for-openshift-telemetryestSucceeded.
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 :
Créez un fichier manifeste de ressource personnalisée
TelemetryConfignommé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: trueSi 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_PATHRemplacez
SERVICE_ACCOUNT_KEY_PATHpar 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.
Appliquez la ressource personnalisée à votre cluster :
oc apply -f telemetryconfig.yamlVé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-operatorVous 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 :
Dans la Google Cloud console, accédez à la page Explorateur de journaux.
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_IDpar 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_IDpar 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.
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 :
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.
Dans la Google Cloud console, accédez à la page Explorateur de journaux.
Dans le volet Requête, saisissez la requête requise :
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
Remplacez
SEVERITY_LEVELpar une valeur de niveau de gravité compatible, y compris :DEBUG,INFO,WARNINGetERROR. Nous vous recommandons d'utiliserERRORou une valeur de niveau de journalisation plus élevée.Cliquez sur Exécuter la requête pour valider la requête.
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 :
Créez un espace de noms
workloadmanager:oc create namespace workloadmanagerCréez un
ConfigMapdans l'espace de nomsworkloadmanagerà 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=productionRemplacez
DEPLOYMENT_NAMEpar 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 :
Ouvrez votre terminal.
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)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
- Créer et exécuter une évaluation
- En savoir plus sur les bonnes pratiques Workload Manager pour OpenShift