Operator „Cluster Services for OpenShift Telemetry“ einrichten

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:

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

Operator mit Workload Identity-Föderation authentifizieren

So authentifizieren Sie den Telemetrie-Operator als Dienstkonto mithilfe der Workload Identity-Föderation:

  1. 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 --confirm
    

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

  2. Verarbeiten Sie das extrahierte CredentialsRequest-Manifest mit dem ccoctl-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-out
    

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

  1. 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 --confirm
    
  2. Erstellen 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_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 ihm die im CredentialsRequest-Manifest definierten IAM-Rollen zu. Dieses Manifest enthält die folgenden Mindestanforderungen an IAM-Rollen, 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 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:

  1. Melden Sie sich in der Red Hat OpenShift-Webkonsole an.
  2. Prüfen Sie, ob Sie sich in der Administratoransicht befinden.
  3. Maximieren Sie in der linken Navigationsleiste den Bereich Operators (Operatoren) und klicken Sie auf OperatorHub.
  4. 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“.

  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 Update-Channel 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. Rufen Sie Operatoren > Installierte Operatoren auf.
    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. 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:

  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, indem Sie den Status von ClusterServiceVersion prüfen:

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

  1. Erstellen Sie ein Manifest für eine benutzerdefinierte TelemetryConfig-Ressource mit dem Namen telemetryconfig.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-secret gespeichert sind.

      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 des Mounts 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 Running ist:

    oc get pods -n openshift-operators -l app.kubernetes.io/name=workloadagent-operator
    

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

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

    Zum Log-Explorer

  2. 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_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 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_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 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:

  1. Prüfen Sie, ob die unter Benachrichtigungsrichtlinien auf Grundlage von Logs konfigurieren im Abschnitt „Vorbereitung“ beschriebenen Voraussetzungen erfüllt sind.

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

    Zum Log-Explorer

  3. Geben Sie im Bereich „Abfrage“ 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 oder ERROR. Wir empfehlen, ERROR oder einen höheren Log-Level-Wert 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 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:

  1. Namespace workloadmanager erstellen:

    oc create namespace workloadmanager
    
  2. Erstellen Sie mit der folgenden Konfiguration ein 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 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=production
    

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

  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