Operator „Cluster Services for OpenShift Telemetry“ einrichten

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:

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 kubeadmin
    
  • Alternativ können Sie ein Sitzungsauthentifizierungstoken für die Verwendung mit der Binärdatei oc abrufen. Ö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:

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:

  1. Extrahieren Sie im Terminal das Manifest CredentialsRequest 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 --confirm
    

    Ersetzen Sie VERSION durch 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.

  2. Verarbeiten Sie mit dem Dienstprogramm ccoctl das extrahierte CredentialsRequest-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-file zu 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-file
      
    • Fü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 vom ccoctl-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 wird
    • PROJECT_ID: die Projekt-ID des Google Cloud -Projekts, in dem Ihr OpenShift-Cluster ausgeführt wird
  3. 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:

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:

  1. Extrahieren Sie im Terminal das Manifest CredentialsRequest 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 --confirm
    
  2. Erstellen 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_ID
    

    Ersetzen Sie PROJECT_ID durch die ID desGoogle Cloud -Projekts, in dem Ihr OpenShift-Cluster ausgeführt wird.

  3. Damit das Dienstkonto auf Google Cloud -Ressourcen zugreifen kann, weisen Sie dem Dienstkonto die im Manifest CredentialsRequest definierten IAM-Rollen zu. Dieses Manifest enthält die folgenden IAM-Mindestrollen, die der Operator benötigt:

    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_ROLE durch die IAM-Rolle, die Sie dem Dienstkonto zuweisen möchten.

  4. 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_ID
    
  5. Erstellen Sie im Namespace openshift-operators ein Secret mit dem Namen telemetry-agent-sa fü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:

  1. Melden Sie sich in der Red Hat OpenShift-Webkonsole an.
  2. Prüfen Sie, ob Sie sich in der Ansicht Administrator befinden.
  3. Maximieren Sie im linken Navigationsbereich den Abschnitt Operatoren und klicken Sie auf OperatorHub.
  4. 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“.

  5. Klicken Sie auf die Karte Cluster Services for OpenShift Telemetry.

  6. Klicken Sie im Bereich Cluster Services for OpenShift Telemetry auf Installieren.

  7. Führen Sie auf der Seite Operator installieren die folgenden Schritte aus:

    1. Wählen Sie im Feld Updatekanal die Option Stabil aus.
    2. Wählen Sie im Feld Installationsmodus die Option Ein bestimmter Namespace im Cluster aus.
    3. Wählen Sie im Feld Installierter Namespace das Projekt openshift-operators aus oder erstellen Sie einen benutzerdefinierten Monitoring-Namespace.
    4. Wählen Sie im Feld Genehmigungsstrategie die Option Automatisch oder Manuell aus.
    5. Klicken Sie auf Installieren.
  8. So prüfen Sie, ob der Operator erfolgreich installiert wurde:

    1. Gehen Sie zu Operators > Installed Operators.
    2. Suchen Sie in der Liste der Operatoren nach dem Operator Cluster Services for OpenShift Telemetry und prüfen Sie, ob er vorhanden ist.
    3. Prüfen Sie, ob in der Spalte Status der Wert Erfolgreich oder Aktuell angezeigt wird.
    4. 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:

  1. Erstellen Sie ein Manifest für die benutzerdefinierte Ressource Subscription mit dem Namen subscription.yaml und 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-marketplace
    
  2. Wenden Sie das Abo auf Ihren Cluster an:

    oc apply -f subscription.yaml
    
  3. Prüfen Sie, ob der Telemetrie-Operator erfolgreich installiert wurde. Dazu rufen Sie den Status von ClusterServiceVersion ab:

    oc get csv -n openshift-operators
    

    Prüfen Sie in der Ausgabe, ob der Wert in der Spalte PHASE für cluster-services-for-openshift-telemetry Succeeded ist.

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:

  1. Erstellen Sie ein Manifest für die benutzerdefinierte Ressource TelemetryConfig mit dem Namen telemetryconfig.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-secret gespeicherten Anmeldedaten ab.

      apiVersion: cluster-services-openshift.cloud.google.com/v1alpha1
      kind: TelemetryConfig
      metadata:
        name: telemetryconfig
        namespace: openshift-operators
      spec:
        enabled: true
      
    • Wenn 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_PATH
      

      Ersetzen Sie SERVICE_ACCOUNT_KEY_PATH durch 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.

  2. Wenden Sie die benutzerdefinierte Ressource auf Ihren Cluster an:

    oc apply -f telemetryconfig.yaml
    
  3. Prü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-operator
    

    Sie 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:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. 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_ID durch 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_ID durch 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.

  3. 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:

  1. Prüfen Sie, ob Sie die Voraussetzungen erfüllen, die im Abschnitt „Vorbereitung“ unter Logbasierte Benachrichtigungsrichtlinien konfigurieren beschrieben sind.

  2. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  3. Geben Sie im Abfragebereich die erforderliche Abfrage ein:

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

    Ersetzen Sie SEVERITY_LEVEL durch einen unterstützten Schweregradwert, z. B. DEBUG, INFO, WARNING und ERROR. Wir empfehlen, ERROR oder einen höheren Logebenenwert zu verwenden.

  4. Klicken Sie auf Abfrage ausführen, um die Abfrage zu validieren.

  5. 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:

  1. Erstellen Sie einen workloadmanager-Namespace:

    oc create namespace workloadmanager
    
  2. Erstellen Sie mit der folgenden Konfiguration einen ConfigMap im Namespace workloadmanager:

    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=production
    

    Ersetzen Sie DEPLOYMENT_NAME durch 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:

  1. Öffnen Sie das Terminal.

  2. 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)
    
  3. Lösen Sie den Operator aus, um Messwerte zu erfassen und zu senden:

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

Nächste Schritte