In diesem Dokument wird beschrieben, wie Sie den Cluster Services for OpenShift Telemetry-Operator installieren und für die Verbindung mit einem OpenShift-Cluster konfigurieren, der auf einer Compute Engine-Instanz ausgeführt wird.
Nach der Installation und Konfiguration stellt dieser Telemetrie-Operator einen Hostnetzwerk-Telemetrie-Daemon bereit, der den Clusterzustand und die Clusterkonfiguration kontinuierlich überwacht. Der Operator sendet die erfassten Messwerte an Workload Manager. Anschließend können Sie die Workload Manager-Bewertung verwenden, um die in Ihrem Cluster ausgeführten Arbeitslasten auf Abweichungen von den Best Practices für OpenShift-Cluster zu prüfen.
Hinweis
Bevor Sie den Telemetrie-Operator installieren und konfigurieren, müssen die folgenden Voraussetzungen erfüllt sein:
- Sie verwenden Version 4.18 oder höher der Red Hat OpenShift Container Platform.
- Sie haben einen OpenShift-Cluster auf einer oder mehreren Compute-Instanzen bereitgestellt.
- Ihr Administrator hat Ihnen die Rolle ClusterAdmin für Ihren Cluster in der Red Hat OpenShift Container Platform zugewiesen.
- Sie haben die Google Cloud CLI heruntergeladen und in Ihrem Terminal installiert. Wenn Sie Cloud Shell verwenden, können Sie diese Voraussetzung überspringen.
- Sie haben die OpenShift-Befehlszeile (
oc) in Ihrem Cluster installiert. Informationen zur Installation dieser Befehlszeile finden Sie im Red Hat-Dokument OpenShift-Befehlszeile installieren. - Sie haben das Dienstprogramm Cloud Credentials Operator (
ccoctl) installiert. Informationen zur Installation dieses Dienstprogramms finden Sie im Red Hat-Dokument How to obtain theccoctltool for OpenShift 4. - Sie haben die unterstützten Regionen geprüft, in denen Sie Workload Manager-Bewertungen erstellen können.
- Ihr Administrator hat Ihnen die IAM-Rollen zugewiesen, die zum Erstellen und Ausführen von Workload Manager-Bewertungen erforderlich sind.
- Sie haben den Zugriff auf Cloud APIs aktiviert.
Zugriff auf Cloud APIs aktivieren
Compute Engine empfiehlt, Ihre Instanzen so zu konfigurieren, dass sie allen Cloud APIs alle Zugriffsbereiche gewähren und dass Sie nur die IAM-Berechtigungen des Instanzdienstkontos verwenden, um den Zugriff aufGoogle Cloud -Ressourcen zu steuern. Weitere Informationen finden Sie unter VM mit vom Nutzer verwalteten Dienstkonto erstellen.
Wenn Sie den Zugriff auf die Cloud APIs beschränken, benötigt der Cluster Services for OpenShift Telemetry-Operator mindestens die folgenden Cloud API-Zugriffsbereiche auf der Host-Compute-Instanz:
https://www.googleapis.com/auth/cloud-platform
Weitere Informationen finden Sie unter Best Practices für Bereiche.
Wenn Sie einen OpenShift-Cluster auf einer Compute-Instanz ausführen, die keine externe IP-Adresse hat, müssen Sie den privaten Google-Zugriff im Subnetz der Instanz aktivieren, damit der Cluster Services for OpenShift Telemetry-Operator auf die Google APIs und -Dienste zugreifen kann. Informationen zum Aktivieren des privater Google-Zugriff finden Sie unter Privaten Google-Zugriff konfigurieren.
Nutzer beim OpenShift-Cluster authentifizieren
Wenn Sie oder Ihre Nutzer administrative Aktionen ausführen möchten, müssen Sie sich über die OpenShift-Befehlszeile bei Ihrem OpenShift-Cluster authentifizieren. Sie können aus den folgenden Optionen auswählen, um Nutzer bei Ihrem OpenShift-Cluster zu authentifizieren:
Führen Sie den folgenden Befehl aus und folgen Sie den Eingabeaufforderungen:
oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadminAlternativ können Sie ein Sitzungsauthentifizierungstoken für die Verwendung mit der Binärdatei
ocabrufen. Öffnen Sie die folgende URL in einem Webbrowser, um dieses Token abzurufen:https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
Ersetzen Sie CLUSTER_DOMAIN durch die Domain Ihres OpenShift-Clusters. Beispiel: mycluster.google.com
Authentifizieren Sie den Operator bei Google Cloud
Damit sich der Telemetrie-Operator authentifizieren und auf Ressourcen von Google Cloudzugreifen kann, müssen Sie in Ihrem Projekt von Google Cloud ein Dienstkonto für ihn erstellen.
Sie können den Telemetrie-Operator mit den folgenden Optionen als Dienstkonto authentifizieren:
- (Empfohlen) Mit der Identitätsföderation von Arbeitslasten authentifizieren
- Mit einem Dienstkontoschlüssel authentifizieren
Operator mit der Identitätsföderation von Arbeitslasten authentifizieren
Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator mithilfe der Identitätsföderation von Arbeitslasten als Dienstkonto zu authentifizieren:
Extrahieren Sie im Terminal das Manifest
CredentialsRequestaus dem Telemetrie-Operator-Bundle in ein lokales Verzeichnis:mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmErsetzen Sie
VERSIONdurch die Versionsnummer, die Sie für den Telemetrie-Operator im OperatorHub abonniert haben. Die Liste der zertifizierten Versionsnummern für den Telemetrie-Operator finden Sie im Red Hat Ecosystem Catalog.Verarbeiten Sie mit dem Dienstprogramm
ccoctldas extrahierteCredentialsRequest-Manifest und stellen Sie die IAM-Bindungen (Identity and Access Management) und Anmeldedaten von Google Cloud bereit:(Empfohlen) Für OpenShift-Version 4.22 oder höher:
Wir empfehlen dringend, OpenShift Version 4.22 oder höher mit dem Flag
--key-storage-method=pool-jwk-filezu verwenden, um das JSON Web Key Set (JWKS) des Clusters direkt im Workload Identity-Poolanbieter zu speichern. Dadurch entfällt die Erstellung eines Cloud Storage-Bucket:ccoctl gcp create-all \ --name=NAME \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-out \ --key-storage-method=pool-jwk-fileFür OpenShift-Versionen 4.18 bis 4.21:
ccoctl gcp create-all \ --name=NAME \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-out
Ersetzen Sie Folgendes:
NAME: ein Name für die Anmeldedaten und Ressourcen, die vomccoctl-Dienstprogramm erstellt werden. Wir empfehlen dringend, einen eindeutigen, stark zufälligen Namen (z. B. mit einem zufälligen alphanumerischen Suffix) für Ihren Cluster oder Ihre Organisation anzugeben.REGION: die Compute Engine-Region, in der Ihr OpenShift-Cluster ausgeführt wirdPROJECT_ID: die Projekt-ID des Google Cloud -Projekts, in dem Ihr OpenShift-Cluster ausgeführt wird
Wenden Sie den generierten OpenID Connect-Anbieter (OIDC), die IAM-Rollen und die Secret-Manifeste auf den Cluster an:
oc apply -f ./ccoctl-out/manifests/
Mit den vorherigen Schritten wird ein Dienstkonto in Ihrem Google Cloud -Projekt erstellt und ihm werden die folgenden IAM-Rollen zugewiesen:
- Zum Erfassen von Messwerten aus der Compute-Instanz:
Compute-Betrachter (
roles/compute.viewer) - Zum Schreiben von Daten in das Workload Manager-Data-Warehouse: Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - Zum Senden von Operator-Logs an Cloud Logging: Log-Autor (
roles/logging.logWriter)
Operator mit einem Dienstkontoschlüssel authentifizieren
Wenn Ihre Organisation die Verwendung der Workload Identity-Föderation für Authentifizierungszwecke nicht unterstützt, können Sie den Telemetrie-Operator mit einem Dienstkontoschlüssel authentifizieren.
Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator mithilfe eines Dienstkontoschlüssels als Dienstkonto zu authentifizieren:
Extrahieren Sie im Terminal das Manifest
CredentialsRequestaus dem Telemetrie-Operator-Bundle in ein lokales Verzeichnis:mkdir -p credrequests oc image extract us-docker.pkg.dev/workload-agent-products/cluster-services-for-openshift-telemetry/bundle:VERSION --path /manifests/:./credrequests --confirmErstellen Sie in Ihrem Projekt Google Cloud ein Dienstkonto für den Telemetrie-Operator:
gcloud iam service-accounts create cso-telemetry-agent \ --description="Service account for OpenShift Telemetry Operator" \ --display-name="CSO Telemetry Agent" \ --project=PROJECT_IDErsetzen Sie
PROJECT_IDdurch die ID desGoogle Cloud -Projekts, in dem Ihr OpenShift-Cluster ausgeführt wird.Damit das Dienstkonto auf Google Cloud -Ressourcen zugreifen kann, weisen Sie dem Dienstkonto die im Manifest
CredentialsRequestdefinierten IAM-Rollen zu. Dieses Manifest enthält die folgenden IAM-Mindestrollen, die der Operator benötigt:- Zum Erfassen von Messwerten aus der Compute-Instanz:
Compute-Betrachter (
roles/compute.viewer) - Zum Schreiben von Daten in das Workload Manager-Data-Warehouse: Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - Zum Senden von Operator-Logs an Cloud Logging: Log-Autor (
roles/logging.logWriter)
Führen Sie für jede in diesem Manifest definierte IAM-Rolle den folgenden Befehl aus:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com" \ --role="IAM_ROLE"Ersetzen Sie
IAM_ROLEdurch die IAM-Rolle, die Sie dem Dienstkonto zuweisen möchten.- Zum Erfassen von Messwerten aus der Compute-Instanz:
Compute-Betrachter (
Erstellen Sie einen privaten Schlüssel für das Dienstkonto und laden Sie ihn herunter:
gcloud iam service-accounts keys create ./sa_key.json \ --iam-account=cso-telemetry-agent@PROJECT_ID.iam.gserviceaccount.com \ --project=PROJECT_IDErstellen Sie im Namespace
openshift-operatorsein Secret mit dem Namentelemetry-agent-safür den von Ihnen erstellten Dienstkontoschlüssel:oc create secret generic telemetry-agent-sa \ --from-file=workload_agent_sa_key.json=./sa_key.json \ -n openshift-operators
Operator „Cluster Services for OpenShift Telemetry“ installieren
Sie können den Cluster Services for OpenShift Telemetry-Operator entweder über die Webkonsole der Red Hat OpenShift Container Platform oder über die deklarativen YAML-Manifeste für Abos installieren. Informationen zu diesen Optionen finden Sie im Red Hat-Dokument Operatoren zu einem Cluster hinzufügen.
OpenShift-Webkonsole
So installieren Sie den Telemetrie-Operator in Ihrem OpenShift-Cluster über die Webkonsole der OpenShift Container Platform:
- Melden Sie sich in der Red Hat OpenShift-Webkonsole an.
- Prüfen Sie, ob Sie sich in der Ansicht Administrator befinden.
- Maximieren Sie im linken Navigationsbereich den Abschnitt Operatoren und klicken Sie auf OperatorHub.
Geben Sie in der Suchleiste unter Alle Elemente den Suchbegriff Cluster Services for OpenShift Telemetry ein.
Alternativ können Sie auch nach Google suchen. Dadurch werden die von Google bereitgestellten Operatoren gefiltert, einschließlich des Operators „Cluster Services for OpenShift Telemetry“.
Klicken Sie auf die Karte Cluster Services for OpenShift Telemetry.
Klicken Sie im Bereich Cluster Services for OpenShift Telemetry auf Installieren.
Führen Sie auf der Seite Operator installieren die folgenden Schritte aus:
- Wählen Sie im Feld Updatekanal die Option Stabil aus.
- Wählen Sie im Feld Installationsmodus die Option Ein bestimmter Namespace im Cluster aus.
- Wählen Sie im Feld Installierter Namespace das Projekt openshift-operators aus oder erstellen Sie einen benutzerdefinierten Monitoring-Namespace.
- Wählen Sie im Feld Genehmigungsstrategie die Option Automatisch oder Manuell aus.
- Klicken Sie auf Installieren.
So prüfen Sie, ob der Operator erfolgreich installiert wurde:
- Gehen Sie zu Operators > Installed Operators.
- Suchen Sie in der Liste der Operatoren nach dem Operator Cluster Services for OpenShift Telemetry und prüfen Sie, ob er vorhanden ist.
- Prüfen Sie, ob in der Spalte Status der Wert Erfolgreich oder Aktuell angezeigt wird.
- Optional können Sie auf den Operator klicken, um die Details aufzurufen.
OpenShift-Befehlszeile
Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator in Ihrem OpenShift-Cluster mithilfe der OpenShift-Befehlszeile und eines deklarativen Subscription-YAML-Manifests zu installieren:
Erstellen Sie ein Manifest für die benutzerdefinierte Ressource
Subscriptionmit dem Namensubscription.yamlund der folgenden Konfiguration: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-marketplaceWenden Sie das Abo auf Ihren Cluster an:
oc apply -f subscription.yamlPrüfen Sie, ob der Telemetrie-Operator erfolgreich installiert wurde. Dazu rufen Sie den Status von
ClusterServiceVersionab:oc get csv -n openshift-operatorsPrüfen Sie in der Ausgabe, ob der Wert in der Spalte
PHASEfürcluster-services-for-openshift-telemetrySucceededist.
Messwerterfassung aktivieren
Damit der Operator Messwerte aus Ihrem OpenShift-Cluster erfassen kann, müssen Sie eine benutzerdefinierte TelemetryConfig-Ressource anwenden. Diese Ressource stellt Daemon-Pods auf Ihren Clusterknoten für den Agenten für Computing-Arbeitslasten bereit.
Führen Sie die folgenden Schritte aus, damit der Operator Messwerte aus Ihrem OpenShift-Cluster erfassen kann:
Erstellen Sie ein Manifest für die benutzerdefinierte Ressource
TelemetryConfigmit dem Namentelemetryconfig.yaml:Wenn Sie die Authentifizierung für den Telemetrie-Operator mithilfe der Identitätsföderation von Arbeitslasten eingerichtet haben, verwenden Sie die folgende benutzerdefinierte Ressource. Diese benutzerdefinierte Ressource ruft automatisch die im Secret
google-cloud-cluster-services-telemetry-agent-wif-secretgespeicherten Anmeldedaten ab.apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1 kind: TelemetryConfig metadata: name: telemetryconfig namespace: openshift-operators spec: enabled: trueWenn Sie die Authentifizierung für den Telemetrie-Operator mit einem Dienstkontoschlüssel eingerichtet haben, verwenden Sie die folgende benutzerdefinierte Ressource:
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_PATHErsetzen Sie
SERVICE_ACCOUNT_KEY_PATHdurch den Pfad, in dem Sie den Dienstkontoschlüssel bereitgestellt haben. Der Name der Bereitstellung muss mit der JSON-Datei des Dienstkontoschlüssels übereinstimmen. Beispiel:/var/run/secrets/google/workload_agent_sa_key.json.
Wenden Sie die benutzerdefinierte Ressource auf Ihren Cluster an:
oc apply -f telemetryconfig.yamlPrüfen Sie, ob der Status des Telemetrie-Agent-Pods Wird ausgeführt lautet:
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorSie können die Messwerterfassung auch prüfen, indem Sie die Logs des Pods untersuchen:
"openshiftmetrics/openshiftmetrics.go:126","msg":"Metric payload after collection","pid":5,"context":"OpenShiftMetricCollection","payload":"version:\"v0.1.0-pre\" agent_version:\"1.3\"
Operator-Logs in Cloud Logging ansehen
Standardmäßig werden Logs vom Operator „Cluster Services for OpenShift Telemetry“ an Cloud Logging gesendet. Sie können diese Logs in Logging aufrufen. So rufen Sie die Operator-Logs in Logging auf:
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Geben Sie im Abfragebereich eine Abfrage ein:
Verwenden Sie die folgende Abfrage, um die Logs für Ihr Google Cloud -Projekt zu filtern:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent"
Ersetzen Sie
PROJECT_IDdurch die Projekt-ID desGoogle Cloud -Projekts, in dem Ihr OpenShift-Cluster ausgeführt wird.Wenn Sie mehrere Cluster in Ihrem Google Cloud -Projekt ausführen und Logs von einem bestimmten Cluster filtern möchten, verwenden Sie die folgende Abfrage:
resource.labels.instance_id=("COMPUTE_INSTANCE_ID_1" OR "COMPUTE_INSTANCE_ID_2" OR "COMPUTE_INSTANCE_ID_3")Ersetzen Sie
COMPUTE_INSTANCE_IDdurch die Instanz-ID der Compute Engine-Instanzen, auf denen Ihr OpenShift-Cluster ausgeführt wird. Informationen zum Abrufen der Compute-Instanz-ID finden Sie unter Details einer VM ansehen.
Klicken Sie auf Abfrage ausführen.
Logbasierte Benachrichtigungsrichtlinien einrichten
Standardmäßig werden Logs vom Telemetrie-Operator an Cloud Logging gesendet. Wir empfehlen, Benachrichtigungsrichtlinien basierend auf den Telemetrie-Operator-Logs zu konfigurieren, die Sie benachrichtigen, wenn bestimmte Nachrichten in den Logs angezeigt werden. Diese Benachrichtigungen helfen Ihnen, die Funktion des Operators zu überwachen und Probleme zu beheben.
Führen Sie die folgenden Schritte aus, um eine Benachrichtigungsrichtlinie basierend auf den vom Telemetrieoperator generierten Logs zu konfigurieren:
Prüfen Sie, ob Sie die Voraussetzungen erfüllen, die im Abschnitt „Vorbereitung“ unter Logbasierte Benachrichtigungsrichtlinien konfigurieren beschrieben sind.
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Geben Sie im Abfragebereich die erforderliche Abfrage ein:
logName="projects/PROJECT_ID/logs/google-cloud-workload-agent" severity=SEVERITY_LEVEL
Ersetzen Sie
SEVERITY_LEVELdurch einen unterstützten Schweregradwert, z. B.DEBUG,INFO,WARNINGundERROR. Wir empfehlen,ERRORoder einen höheren Logebenenwert zu verwenden.Klicken Sie auf Abfrage ausführen, um die Abfrage zu validieren.
Logbenachrichtigung erstellen
Informationen zum Erstellen dieser Benachrichtigung finden Sie in Schritt 3 des Verfahrens, das unter Logbasierte Benachrichtigungsrichtlinie mit dem Log-Explorer erstellen beschrieben wird.
Optional: Produktionsspezifische Bewertungen aktivieren
Einige der Best Practices, die Workload Manager für OpenShift-Cluster unterstützt, werden nur auf Produktionsumgebungen angewendet.
Workload Manager unterscheidet dies, indem er Ihren Cluster, Ihr Deployment oder Ihren Pod auf das Label environment prüft. Wenn der mit diesem Label verknüpfte Wert production ist, betrachtet Workload Manager diese Ressource als Produktionsressource.
So informieren Sie Workload Manager, dass ein Cluster zu einer Produktionsumgebung gehört:
Erstellen Sie einen
workloadmanager-Namespace:oc create namespace workloadmanagerErstellen Sie mit der folgenden Konfiguration einen
ConfigMapim Namespaceworkloadmanager:apiVersion: v1 kind: ConfigMap metadata: name: wlm-cluster-environment namespace: workloadmanager data: # Options: "production" or "non-production" environment: "production"
Wenn Sie Workload Manager mitteilen möchten, dass ein Deployment oder Pod zu einer Produktionsumgebung gehört, fügen Sie der Ressourcendefinition mit einer der folgenden Optionen ein Label mit dem Namen environment hinzu:
Wenden Sie die folgende Konfiguration manuell an:
apiVersion: apps/v1 kind: Deployment metadata: name: my-app labels: # Options: "production" or "non-production" environment: "production" spec: ...Führen Sie dazu diesen Befehl aus:
oc label --overwrite deployments DEPLOYMENT_NAME environment=productionErsetzen Sie
DEPLOYMENT_NAMEdurch den Namen Ihres Deployments.
Wenn Sie das Label environment sowohl auf Ihren OpenShift-Cluster als auch auf ein Deployment oder einen Pod anwenden, der im Cluster ausgeführt wird, hat der für das Deployment oder den Pod festgelegte Labelwert Vorrang vor dem für den Cluster festgelegten Labelwert.
Optional: Messwerterfassung auslösen
Nachdem Sie den Operator „Cluster Services for OpenShift Telemetry“ in Ihrem OpenShift-Cluster eingerichtet haben, erfasst der Operator Messwerte aus dem Cluster und sendet sie alle 30 Minuten an Workload Manager.
Optional können Sie den Operator manuell auslösen, um Messwerte zu erfassen und an Workload Manager zu senden, anstatt 30 Minuten auf die geplante Erfassung von Messwerten zu warten.
So lösen Sie den Operator für die Messwerterfassung manuell aus:
Öffnen Sie das Terminal.
Suchen Sie den Namen des ausgeführten Pods:
POD_NAME=$(oc get pods -l app.kubernetes.io/name=workloadagent-operator --field-selector=status.phase=Running -o=name)Lösen Sie den Operator aus, um Messwerte zu erfassen und zu senden:
oc debug -t $POD_NAME -- /openshift-docker-entrypoint.sh