Benutzerdefinierte Analyse definieren

Cloud Deploy unterstützt Analysejobs, die Warnungen verwenden, die von Google Cloud Observability basierend auf Messwerten und anderen Daten aus Google Cloud Observability generiert werden. Sie können Cloud Deploy jedoch auch so erweitern, dass andere Messwertanbieter verwendet werden. In diesem Dokument wird beschrieben, wie Sie einen Analysejob konfigurieren und verwenden. Außerdem werden die Anforderungen an einen benutzerdefinierten Container erläutert, der die Logik zum Analysieren von Messwerten des Anbieters Ihrer Wahl enthält.

Hinweis

  1. Melden Sie sich in Ihrem Google-Konto an.

    Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.

  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Prüfen Sie, ob Sie die Berechtigungen haben, die für diese Anleitung erforderlich sind.

  6. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  7. Aktivieren Sie die Compute Engine API und die Cloud Deploy API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com
  8. Installieren Sie die Google Cloud CLI.

  9. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  10. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  11. Prüfen Sie, ob Sie die Berechtigungen haben, die für diese Anleitung erforderlich sind.

  12. Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.

  13. Aktivieren Sie die Compute Engine API und die Cloud Deploy API:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen

    gcloud services enable clouddeploy.googleapis.com  compute.googleapis.com

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Konto für Ihr Projekt zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen und Verwenden von Analysejobs benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Damit das Cloud Deploy-Dienstkonto die erforderlichen Berechtigungen zum Erstellen und Verwenden von Analysejobs hat, bitten Sie Ihren Administrator, dem Cloud Deploy-Dienstkonto die folgenden IAM-Rollen für Ihr Projekt zuzuweisen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Ihr Administrator kann dem Cloud Deploy-Dienstkonto möglicherweise auch die erforderlichen Berechtigungen über benutzerdefinierte Rollen oder andere vordefinierte Rollen erteilen.

Benutzerdefinierten Analysejob konfigurieren

Ein benutzerdefinierter Analysejob entspricht einem Analysejob, bei dem Benachrichtigungen aus Google Cloud Observability verwendet werden. Beim benutzerdefinierten Job werden jedoch ein oder mehrere Tasks verwendet, die auf benutzerdefinierte Container und die Befehle verweisen, die in diesen Containern ausgeführt werden sollen, um Daten von Ihrem Messwertanbieter zu verarbeiten.

In diesem Abschnitt wird beschrieben, wie Sie einen Cloud Deploy-Analysejob konfigurieren, der einen anderen Monitoring-Anbieter alsGoogle Cloud verwendet.

Die analysis-Stanza kann direkt in einer Konfiguration für die Bereitstellungsstrategie (strategy.standard.analysis für eine Standardstrategie) verwendet werden. Wenn Sie die Analyse pro Phase konfigurieren möchten, verwenden Sie eine benutzerdefinierte Canary-Konfiguration (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis).

strategy:
  standard:
    analysis:
      duration: DURATION
      customChecks:
      - id: CHECK_ID
        frequency: FREQUENCY
        task:
          type: container
          image: IMAGE_NAME
          command: COMMAND
          args: [ARGS]
          env:
            [VAR_NAME: VALUE]

Wobei:

  • DURATION

    Gibt an, wie lange der Analysejob ausgeführt werden soll (in Sekunden). Nach Ablauf der Dauer ist der Job abgeschlossen. Wenn die Analyse fehlschlägt (der Container gibt einen Exit-Code ungleich null zurück), wird der Job vor Ablauf der Dauer beendet (FAILED).

  • CHECK_ID

    Eine ID für die individuelle Prüfung. Diese ID muss innerhalb dieses Analysejobs eindeutig sein.

  • FREQUENCY

    Gibt an, wie oft die einzelne Prüfung in Sekunden ausgeführt werden soll.

  • IMAGE_NAME

    Ist der Pfad und Name, der Ihr Container-Image identifiziert.

  • COMMAND

    Ist der Befehl, der für diesen Container ausgeführt werden soll, z. B. ein Shell-Script (/bin/bash).

  • ARGS

    Eine Liste der Argumente für diesen Befehl. Dies ist eine durch Kommas getrennte Liste. Wenn COMMAND_TO_RUN „/bin/sh“ ist, wäre eines der Argumente hier -c und ein anderes Argument wäre der gesamte Befehl, den Sie in der aufgerufenen Shell ausführen möchten.

  • VAR_NAME

    Ist der Name einer Umgebungsvariablen, die an den Container übergeben werden soll. Sie verwenden Umgebungsvariablen, um das Verhalten des Containers zu konfigurieren. Die Variablen und ihre Werte geben also an, was genau im Messwertanbieter überwacht werden soll.

    Sie können hier Systemparameter als Umgebungsvariablen verwenden.

  • VALUE

    Ist der Wert der jeweiligen Umgebungsvariablen. Cloud Deploy führt keine Aktionen mit diesen Umgebungsvariablen aus, sondern übergibt sie nur mit ihren Werten an Ihren Container. Es liegt an Ihrem Container, die Werte in Ihrer Analyselogik zu verwenden.

Jede Prüfung in einer benutzerdefinierten Analysedefinition enthält eine Aufgabe, die auf einen Container verweist, die Befehle, die für diesen Container ausgeführt werden sollen, und alle anwendbaren Umgebungsvariablen, die an diesen Container übergeben werden sollen.

Der benutzerdefinierte Container

Bei der benutzerdefinierten Analyse ist der von Ihnen bereitgestellte Container für die Analyse der Telemetrie-, Log- oder anderer Daten des von Ihnen verwendeten Messwertanbieters verantwortlich. Der Cloud Deploy-Analysejob wartet auf den Rückgabecode des Containers.

Was der benutzerdefinierte Container tun muss

Der benutzerdefinierte Container ist dafür verantwortlich, Daten von Ihrem Metrikanbieter aufzunehmen, zu ermitteln, ob die Messwerte, Logs oder anderen Daten auf eine ordnungsgemäß funktionierende Anwendung hinweisen, und die Ergebnisse an Cloud Deploy zurückzugeben.

Was der benutzerdefinierte Container zurückgeben muss

Für den benutzerdefinierten Container ist in Cloud Deploy nichts erforderlich, außer dass er einen Exitcode von null oder ungleich null zurückgibt. Wenn der Container einen Exit-Code ungleich null zurückgibt, schlägt die Analyse fehl.

Der Container kann Ergebnisse in eine Datei mit dem Namen results.json (im JSON-Format) schreiben, die sich im von Cloud Deploy bereitgestellten Cloud Storage-Bucket befindet. Die Datei enthält die Metadaten in Form von Schlüssel/Wert-Paaren. Das ist nicht erforderlich.

Verfügbare Umgebungsvariablen

Cloud Deploy stellt außerdem die folgenden Umgebungsvariablen in der Ausführungsumgebung bereit und füllt sie aus. Sie können diese Umgebungsvariablen als Teil Ihres Bereitstellungshooks, Bestätigungsjobs oder benutzerdefinierten Zielrenders oder ‑bereitstellung verwenden.

  • ANTHOS_MEMBERSHIP

    Für Ziele vom Typ ANTHOS der vollständig angegebene Ressourcenname der Anthos-Mitgliedschaft.

  • CLOUD_RUN_LOCATION

    Für Ziele vom Typ RUN die Region, in der der Cloud Run-Dienst bereitgestellt wird.

  • CLOUD_RUN_PROJECT

    Für Ziele vom Typ RUN das Projekt, in dem der Cloud Run-Dienst erstellt wurde.

  • CLOUD_RUN_SERVICE

    Für Ziele vom Typ RUN der Name des bereitgestellten Cloud Run-Dienstes.

  • CLOUD_RUN_SERVICE_URLS

    Für Ziele vom Typ RUN die URL oder URLs (durch Kommas getrennte Liste), über die Endnutzer auf Ihren Dienst zugreifen. Sie finden diese in den Cloud Run-Dienstdetails für Ihren Dienst in derGoogle Cloud -Konsole. Die URLs werden von Cloud Run generiert, nachdem Ihr Cloud Run-Dienst oder Ihre Cloud Run-Dienste erfolgreich bereitgestellt wurden. Daher ist diese Umgebungsvariable nur in Post-Deploy-Hooks und Bestätigungsjobs verfügbar.

  • CLOUD_RUN_REVISION

    Für Ziele des Typs RUN die spezifische Revision des Cloud Run-Dienstes.

  • GKE_CLUSTER

    Für Ziele vom Typ GKE ist dies der vollständig angegebene Ressourcenname des Google Kubernetes Engine-Clusters, z. B. projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    Der spezifische Laufzeittyp des Ziels. Entweder GKE, ANTHOS oder RUN. Bei benutzerdefinierten Zielvorhaben wird dieser Wert nicht festgelegt.

  • CLOUD_DEPLOY_LOCATION

    Die Region, die die Cloud Deploy-Ressourcen enthält.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    Die ID der Bereitstellungspipeline.

  • CLOUD_DEPLOY_TARGET

    Die ID des Ziels.

  • CLOUD_DEPLOY_PROJECT

    Die Google Cloud Projektnummer für das Projekt, das die Cloud Deploy-Ressourcen enthält.

  • CLOUD_DEPLOY_PROJECT_ID

    Die Google Cloud Projekt-ID für das Projekt.

  • CLOUD_DEPLOY_RELEASE

    Die ID des Releases, in dem die Hooks ausgeführt werden.

  • CLOUD_DEPLOY_ROLLOUT

    Die ID des Roll-outs, der die Jobs für die Hooks enthält.

  • CLOUD_DEPLOY_JOB_RUN

    Die ID des Joblaufs, der die aktuelle Ausführung des Jobs darstellt.

  • CLOUD_DEPLOY_PHASE

    Die Phase im Rollout, die den Job für den Bereitstellungshook, den Bestätigungsjob oder das benutzerdefinierte Rendern oder Bereitstellen enthält.

Nächste Schritte