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 :
- Vous utilisez la version 4.18 ou 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é Google Cloud CLI dans votre terminal. Si vous utilisez Cloud Shell, vous pouvez ignorer ce prérequis.
- Vous avez installé la CLI OpenShift (
oc) dans votre cluster. Pour savoir comment installer cette CLI, consultez le document Red Hat Installation de la CLI OpenShift. - Vous avez installé l'utilitaire Cloud Credentials Operator (
ccoctl). Pour savoir comment installer cet utilitaire, consultez le document Red Hat How to obtain theccoctltool for OpenShift 4 (Comment obtenir l'outil pour OpenShift 4). - Vous avez consulté les régions compatibles dans lesquelles vous pouvez créer des évaluations Workload Manager.
- Votre administrateur vous a accordé 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 l'une des options suivantes :
Exécutez la commande suivante et suivez les instructions :
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 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 :
- (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 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.À 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 du Google Cloud projet dans lequel votre cluster OpenShift s'exécute
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 :
- 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 les journaux de l'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 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_IDRemplacez
PROJECT_IDpar l'ID du projetGoogle Cloud dans lequel votre cluster OpenShift s'exécute.Pour permettre au compte de service d'accéder aux ressources Google Cloud , accordez-lui les rôles IAM définis dans le fichier manifeste
CredentialsRequest. 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 les journaux de l'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 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 Administrateur.
- Dans le panneau de navigation de gauche, développez la section Operators (Opérateurs), puis cliquez sur OperatorHub.
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.
Cliquez sur la fiche Cluster Services for OpenShift Telemetry.
Dans le volet Cluster Services for OpenShift Telemetry, cliquez sur Install (Installer).
Sur la page Installer l'opérateur, procédez comme suit :
- Dans le champ Canal de mise à jour, sélectionnez stable.
- Dans le champ Mode d'installation, sélectionnez Un espace de noms spécifique sur le cluster.
- Dans le champ Espace de noms installé, sélectionnez le projet openshift-operators ou créez un espace de noms de surveillance personnalisé.
- Dans le champ Stratégie d'approbation, sélectionnez Automatique ou Manuelle.
- Cliquez sur Installer.
Pour vérifier que l'opérateur a bien été installé, procédez comme suit :
- Accédez à Opérateurs > Opérateurs installés.
- Dans la liste des opérateurs, recherchez l'opérateur Cluster Services for OpenShift Telemetry et vérifiez qu'il est présent.
- Vérifiez que la colonne État affiche la valeur Réussite ou À 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 l'interface de ligne de commande OpenShift et d'un fichier manifeste YAML déclaratif Subscription, 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 bien 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 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 :
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 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.
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 :
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorVous 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 :
Dans la console Google Cloud , accédez à la page Explorateur de journaux.
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_IDpar 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_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 console Google Cloud , accédez à la page Explorateur de journaux.
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_LEVELpar une valeur de niveau de gravité acceptée, qui inclutDEBUG,INFO,WARNINGetERROR. Nous vous recommandons d'utiliserERRORou une valeur de niveau de journalisation supérieure.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 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 :
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 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=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 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 :
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 collecter et envoyer des métriques :
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh
Étapes suivantes
- Créer et exécuter une évaluation
- En savoir plus sur les bonnes pratiques Workload Manager pour OpenShift