In diesem Dokument wird beschrieben, wie Sie den Cluster Services for OpenShift Telemetry-Operator installieren und so konfigurieren, dass er eine Verbindung zu einem OpenShift-Cluster herstellt, der auf einer Compute Engine-Instanz ausgeführt wird.
Nach der Installation und Konfiguration stellt dieser Telemetrie-Operator einen Host-Netzwerk-Telemetrie-Daemon bereit, der kontinuierlich den Clusterstatus und die Clusterkonfiguration ü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 Red Hat OpenShift Container Platform gewährt.
- Sie haben die Google Cloud CLI in Ihrem Terminal heruntergeladen und installiert. Wenn Sie Cloud Shell verwenden, können Sie diese Voraussetzung überspringen.
- Sie haben die OpenShift-Befehlszeile (
oc) in Ihrem Cluster installiert. Informationen zum Installieren dieser CLI finden Sie im Red Hat-Dokument Installing the OpenShift CLI. - 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 erforderlichen IAM-Rollen zum Erstellen und Ausführen von Workload Manager-Bewertungen zugewiesen.
- 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 APIs-Zugriffsbereiche auf der Host-Compute-Instanz:
https://www.googleapis.com/auth/cloud-platform
Weitere Informationen finden Sie unter Best Practice 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 Operator „Cluster Services for OpenShift Telemetry“ 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
Damit Sie oder Ihre Nutzer Verwaltungsaktionen ausführen können, müssen Sie sich mit der OpenShift-Befehlszeile bei Ihrem OpenShift-Cluster authentifizieren. Sie haben folgende Möglichkeiten, Nutzer in 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. Um dieses Token zu erhalten, öffnen Sie die folgende URL in einem Webbrowser:https://oauth-openshift.apps.CLUSTER_DOMAIN/oauth/token/request
Ersetzen Sie CLUSTER_DOMAIN durch die Domain Ihres OpenShift-Clusters. Beispiel: mycluster.google.com
Betreiber bei Google Cloudauthentifizieren
Damit sich der Telemetrieoperator authentifizieren und auf Google Cloud-Ressourcen zugreifen kann, müssen Sie ein Dienstkonto dafür in Ihrem Google Cloud -Projekt erstellen.
Sie können den Telemetrie-Operator als Dienstkonto mit den folgenden Optionen authentifizieren:
- (Empfohlen) Mit der Identitätsföderation von Arbeitslasten authentifizieren
- Mit einem Dienstkontoschlüssel authentifizieren
Operator mit Workload Identity-Föderation authentifizieren
So authentifizieren Sie den Telemetrie-Operator als Dienstkonto mithilfe der Workload Identity-Föderation:
Extrahieren Sie in Ihrem Terminal das
CredentialsRequest-Manifest aus 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, für die Sie den Telemetrie-Operator im OperatorHub abonniert haben. Die Liste der zertifizierten Versionsnummern für den Telemetrieoperator finden Sie im Red Hat Ecosystem Catalog.Verarbeiten Sie das extrahierte
CredentialsRequest-Manifest mit demccoctl-Tool und stellen Sie Google Cloud IAM-Bindungen (Identity and Access Management) und Anmeldedaten bereit:ccoctl gcp create-all \ --name=cso-telemetry \ --region=REGION \ --project=PROJECT_ID \ --credentials-requests-dir=./credrequests \ --output-dir=./ccoctl-outErsetzen Sie Folgendes:
REGION: die Compute Engine-Region, in der Ihr OpenShift-Cluster ausgeführt wird.PROJECT_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:
- So erfassen Sie Messwerte von der Compute-Instanz:
Compute Viewer (
roles/compute.viewer) - So schreiben Sie Daten in das Workload Manager-Data Warehouse:
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - So senden Sie 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 die Authentifizierung nicht unterstützt, können Sie den Telemetrie-Operator mit einem Dienstkontoschlüssel authentifizieren.
Führen Sie die folgenden Schritte aus, um den Telemetrieoperator als Dienstkonto mithilfe eines Dienstkontoschlüssels zu authentifizieren:
Extrahieren Sie in Ihrem Terminal das
CredentialsRequest-Manifest aus 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 Google Cloud -Projekt ein Dienstkonto für den Telemetrieoperator:
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 ihm die im
CredentialsRequest-Manifest definierten IAM-Rollen zu. Dieses Manifest enthält die folgenden Mindestanforderungen an IAM-Rollen, die der Operator benötigt:- So erfassen Sie Messwerte von der Compute-Instanz:
Compute Viewer (
roles/compute.viewer) - So schreiben Sie Daten in das Workload Manager-Data Warehouse:
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter) - So senden Sie 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.- So erfassen Sie Messwerte von der Compute-Instanz:
Compute Viewer (
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 von Red Hat OpenShift Container Platform oder über die deklarativen Abonnement-YAML-Manifeste installieren. Informationen zu diesen Optionen finden Sie im Red Hat-Dokument Adding Operators to a cluster.
OpenShift-Webkonsole
Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator in Ihrem OpenShift-Cluster über die OpenShift Container Platform-Webkonsole zu installieren:
- Melden Sie sich in der Red Hat OpenShift-Webkonsole an.
- Prüfen Sie, ob Sie sich in der Administratoransicht befinden.
- Maximieren Sie in der linken Navigationsleiste den Bereich Operators (Operatoren) und klicken Sie auf OperatorHub.
Geben Sie in der Suchleiste unter Alle Elemente 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 Update-Channel 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:
- Rufen Sie Operatoren > Installierte Operatoren auf.
- 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.
- Klicken Sie optional auf den Operator, um die zugehörigen Details aufzurufen.
OpenShift CLI
Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator in Ihrem OpenShift-Cluster mit der OpenShift-CLI und einem deklarativen Subscription-YAML-Manifest 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, indem Sie den Status von
ClusterServiceVersionprüfen: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. Mit dieser Ressource werden Daemon-Pods auf Ihren Clusterknoten für den Agenten für Compute-Arbeitslasten bereitgestellt.
Führen Sie die folgenden Schritte aus, damit der Operator Messwerte aus Ihrem OpenShift-Cluster erfassen kann:
Erstellen Sie ein Manifest für eine benutzerdefinierte
TelemetryConfig-Ressource mit dem Namentelemetryconfig.yaml:Wenn Sie die Authentifizierung für den Telemetrie-Operator mithilfe der Workload Identity-Föderation eingerichtet haben, verwenden Sie die folgende benutzerdefinierte Mindestressource. Diese benutzerdefinierte Ressource ruft automatisch die Anmeldedaten ab, die im Secret
google-cloud-cluster-services-telemetry-agent-wif-secretgespeichert sind.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 des Mounts 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 Running ist:
oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operatorSie können die Erfassung von Messwerten auch überprüfen, indem Sie die Logs des Pods ansehen:
"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 Operatorlogs in Logging auf:
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Geben Sie im Bereich „Abfrage“ 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 aus 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 Telemetrieoperator an Cloud Logging gesendet. Wir empfehlen, Benachrichtigungsrichtlinien auf Grundlage der Telemetrie-Operator-Logs zu konfigurieren, damit Sie benachrichtigt werden, wenn bestimmte Nachrichten in den Logs angezeigt werden. Diese Benachrichtigungen helfen Ihnen, die Funktionsweise des Operators zu überwachen und Probleme zu beheben.
Führen Sie die folgenden Schritte aus, um eine Benachrichtigungsrichtlinie auf Grundlage der vom Telemetrieoperator generierten Logs zu konfigurieren:
Prüfen Sie, ob die unter Benachrichtigungsrichtlinien auf Grundlage von Logs konfigurieren im Abschnitt „Vorbereitung“ beschriebenen Voraussetzungen erfüllt sind.
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Geben Sie im Bereich „Abfrage“ 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,WARNINGoderERROR. Wir empfehlen,ERRORoder einen höheren Log-Level-Wert 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 der Anleitung unter Logbasierte Benachrichtigungsrichtlinie mit dem Log-Explorer erstellen.
Optional: Produktionsspezifische Bewertungen aktivieren
Einige der Best Practices, die Workload Manager für OpenShift-Cluster unterstützt, werden nur auf Produktionsumgebungen angewendet.
Workload Manager trifft diese Unterscheidung, indem er Ihren Cluster, Ihr Deployment oder Ihren Pod auf das Label environment prüft. Wenn der Wert, der diesem Label zugeordnet ist, production ist, betrachtet Workload Manager diese Ressource als Produktionsressource.
So teilen Sie Workload Manager mit, dass ein Cluster zu einer Produktionsumgebung gehört:
Namespace
workloadmanagererstellen:oc create namespace workloadmanagerErstellen Sie mit der folgenden Konfiguration ein
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 darüber informieren 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 des 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 in Workload Manager 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, werden alle 30 Minuten Messwerte aus dem Cluster erfasst und an Workload Manager gesendet.
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 manuell für die Erfassung von Messwerten 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