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 Telemetrie-Daemon für das Hostnetzwerk bereit, der kontinuierlich den Clusterstatus und die Clusterkonfiguration überwacht. Der Operator sendet die erfassten Messwerte an Workload Manager. Anschließend können Sie mit der Workload Manager-Bewertung die Arbeitslasten, die in Ihrem Cluster ausgeführt werden, auf Abweichungen von den Best Practices für OpenShift-Cluster 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 auf Google 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 Zugriffsbereiche für Cloud APIs 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

Um administrative Aktionen auszuführen, müssen Sie oder Ihre Nutzer sich mit der OpenShift CLI beim OpenShift-Cluster authentifizieren. Sie haben folgende Möglichkeiten, Nutzer bei Ihrem OpenShift-Cluster zu authentifizieren:

  • Führen Sie den folgenden Befehl aus und folgen Sie der Anleitung:

    oc login "https://api.CLUSTER_DOMAIN:6443" -u kubeadmin
    
  • Alternativ können Sie ein Sitzungsauthentifizierungstoken für die Verwendung mit der oc-Binärdatei abrufen. Öffnen Sie dazu 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.

Operator bei authentifizieren Google Cloud

Damit sich der Telemetrie-Operator authentifizieren und auf Google Cloud Ressourcen zugreifen kann, müssen Sie in Ihrem Google Cloud Projekt ein Dienstkonto dafür 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 mit der Identitätsföderation von Arbeitslasten als Dienstkonto 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
    

    Ersetzen Sie VERSION durch die Versionsnummer, für die Sie sich im OperatorHub für den Telemetrie-Operator registriert haben. Die Liste der zertifizierten Versionsnummern für den Telemetrie-Operator finden Sie im Red Hat Ecosystem Catalog.

  2. Verarbeiten Sie mit dem ccoctl Dienstprogramm das extrahierte CredentialsRequest Manifest und stellen Sie Google Cloud Identity and Access Management-Bindungen (IAM) 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 die generierten OpenID Connect-Manifeste (OIDC), IAM-Rollen und Secret-Manifeste auf den Cluster an:

    oc apply -f ./ccoctl-out/manifests/
    

Mit den vorherigen Schritten wird in Ihrem Google Cloud Projekt ein Dienstkonto erstellt und ihm werden die folgenden IAM-Rollen zugewiesen:

Operator mit einem Dienstkontoschlüssel authentifizieren

Wenn Ihre Organisation die Identitätsföderation von Arbeitslasten 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 Telemetrie-Operator mit einem Dienstkontoschlüssel als Dienstkonto 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 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 des Google 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 IAM-Mindestrollen, die der Operator benötigt:

    Führen Sie für jede im 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 und laden Sie einen privaten Schlüssel für das Dienstkonto 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 erstellten Dienstkontoschlüssel:

    oc create secret generic telemetry-agent-sa \
      --from-file=workload_agent_sa_key.json=./sa_key.json \
      -n openshift-operators
    

Cluster Services for OpenShift Telemetry-Operator installieren

Sie können den Cluster Services for OpenShift Telemetry-Operator entweder über die Red Hat OpenShift Container Platform-Webkonsole oder die deklarativen YAML-Manifeste für das Abo installieren. Weitere Informationen zu diesen Optionen finden Sie im Red Hat-Dokument Operatoren zu einem Cluster hinzufügen.

OpenShift-Webkonsole

Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator mit der OpenShift Container Platform-Webkonsole in Ihrem OpenShift-Cluster zu installieren:

  1. Melden Sie sich in der Red Hat OpenShift-Webkonsole an.
  2. Prüfen Sie, ob Sie sich in der Perspektive Administrator befinden.
  3. Maximieren Sie in der linken Navigationsleiste den Bereich 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 nach Google suchen. Dadurch werden die von Google bereitgestellten Operatoren gefiltert, einschließlich des Cluster Services for OpenShift Telemetry-Operators.

  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-Kanal die Option stable 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 Operatoren > Installierte Operatoren.
    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 CLI

Führen Sie die folgenden Schritte aus, um den Telemetrie-Operator mit der OpenShift CLI und einem deklarativen Subscription-YAML-Manifest in Ihrem OpenShift-Cluster zu installieren:

  1. Erstellen Sie ein Subscription-Manifest für benutzerdefinierte Ressourcen 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 anhand des Status von ClusterServiceVersion, ob der Telemetrie-Operator erfolgreich installiert wurde:

    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 Agent for Compute Workloads bereitgestellt.

Führen Sie die folgenden Schritte aus, damit der Operator Messwerte aus Ihrem OpenShift-Cluster erfassen kann:

  1. Erstellen Sie ein TelemetryConfig-Manifest für benutzerdefinierte Ressourcen mit dem Namen telemetryconfig.yaml:

    • Wenn Sie die Authentifizierung für den Telemetrie-Operator mit der Identitätsföderation von Arbeitslasten eingerichtet haben, verwenden Sie die folgende benutzerdefinierte Mindestressource. 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 eingebunden haben. Der Name der Einbindung 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 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\"

Operatorlogs in Cloud Logging ansehen

Standardmäßig werden Logs vom Cluster Services for OpenShift Telemetry-Operator an Cloud Logging gesendet. Sie können diese Logs in Logging ansehen. Führen Sie die folgenden Schritte aus, um die Operatorlogs in Logging anzusehen:

  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 des Google 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 Ermitteln 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-Operatorlogs 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 Telemetrie-Operator generierten Logs zu konfigurieren:

  1. Prüfen Sie, ob die unter Vorbereitung im Abschnitt Logbasierte Benachrichtigungsrichtlinien konfigurierenbeschriebenen 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 Wert für die Schweregradstufe, z. B. DEBUG, INFO, WARNING und 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. Erstellen Sie eine Logbenachrichtigung.

    Informationen zum Erstellen dieser Benachrichtigung finden Sie unter Logbasierte Benachrichtigungsrichtlinie mit dem Log-Explorer erstellen im dritten Schritt der Anleitung, die in beschrieben ist .

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, Ihre Bereitstellung oder Ihren Pod auf das Label environment prüft. Wenn der Wert, der mit diesem Label verknüpft ist, production ist, betrachtet Workload Manager diese Ressource als Produktionsressource.

Führen Sie die folgenden Schritte aus, um Workload Manager mitzuteilen, 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 eine 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 eine Bereitstellung oder ein 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 den folgenden Befehl aus:

    oc label --overwrite deployments DEPLOYMENT_NAME environment=production
    

    Ersetzen Sie DEPLOYMENT_NAME durch den Namen Ihrer Bereitstellung.

Wenn Sie das Label environment sowohl auf Ihren OpenShift-Cluster als auch auf eine Bereitstellung oder einen Pod anwenden, der im Cluster ausgeführt wird, hat der für die Bereitstellung oder den Pod festgelegte Labelwert Vorrang vor dem für den Cluster festgelegten Labelwert.

Optional: Messwerterfassung auslösen

Nachdem Sie den Cluster Services for OpenShift Telemetry-Operator erfolgreich in Ihrem OpenShift-Cluster eingerichtet haben, erfasst der Operator alle 30 Minuten Messwerte aus dem Cluster und sendet sie an Workload Manager.

Optional können Sie die geplante Erfassung von Messwerten überspringen und den Operator manuell auslösen, um Messwerte zu erfassen und an Workload Manager zu senden.

Führen Sie die folgenden Schritte aus, um den Operator manuell zur Messwerterfassung auszulösen:

  1. Öffnen Sie Ihr 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