Benutzerdefinierte Analyse definieren

Cloud Deploy unterstützt Analysejobs, die Benachrichtigungen verwenden, die von Google Cloud Observability auf der Grundlage von Messwerten und anderen Daten generiert werden, die ebenfalls von Google Cloud Observability stammen. 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 und welche Anforderungen an einen benutzerdefinierten Container gestellt werden, der die Logik zum Analysieren von Messwerten des Anbieters Ihrer Wahl enthält.

Hinweis

  1. Melden Sie sich bei 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 die Abrechnung für Ihr Google Cloud Projekt 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. 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 die Abrechnung für Ihr Google Cloud Projekt 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. 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 Ihres Projekts 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 ist mit einem Analysejob identisch, der Benachrichtigungen von Google Cloud Observability verwendet. Der benutzerdefinierte Job verwendet jedoch eine oder mehrere Aufgaben, 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 Nicht-Google Cloud Monitoring-Anbieter verwendet.

Der Abschnitt analysis kann direkt in einer Konfiguration der Bereitstellungsstrategie verwendet werden (strategy.standard.analysis, für eine Standardstrategie). Wenn Sie die Analyse pro Phase konfigurieren möchten, verwenden Sie eine benutzerdefinierte Canary-Bereitstellung (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 in Sekunden ausgeführt werden soll. 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 beendet (FAILED), bevor die Dauer abläuft.

  • CHECK_ID

    Ist eine ID für die einzelne 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 Ihres Container-Images.

  • COMMAND

    Ist der Befehl, der in diesem Container ausgeführt werden soll, z. B. ein Shell-Skript (/bin/bash).

  • ARGS

    Ist eine Liste von Argumenten für diesen Befehl. Dies ist eine durch Kommas getrennte Liste. Wenn Ihr COMMAND_TO_RUN „/bin/sh“ ist, ist eines der Argumente hier -c und ein anderes Argument ist 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. Mit Umgebungsvariablen können Sie das Verhalten des Containers konfigurieren. Das heißt, die Variablen und ihre Werte geben an, was im Messwertanbieter genau überwacht werden soll.

    Sie können hier Systemparameter als Umgebungsvariablen verwenden.

  • VALUE

    Ist der Wert jeder Umgebungsvariablen. Cloud Deploy führt mit diesen Umgebungsvariablen nichts aus, außer sie mit ihren Werten an Ihren Container zu übergeben. 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, den oder die Befehle, die in diesem Container ausgeführt werden sollen, und alle anwendbaren Umgebungsvariablen verweist, die an diesen Container übergeben werden sollen.

Benutzerdefinierter Container

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

Aufgaben des benutzerdefinierten Containers

Der benutzerdefinierte Container ist für die Aufnahme von Daten von Ihrem Messwertanbieter, die Bestimmung, ob die Messwerte, Logs oder andere Daten auf eine ordnungsgemäß funktionierende Anwendung hinweisen, und die Rückgabe der Ergebnisse an Cloud Deploy verantwortlich.

Rückgabe des benutzerdefinierten Containers

Cloud Deploy erfordert vom benutzerdefinierten Container nichts anderes, als dass er einen Exit-Code 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. Dies ist nicht erforderlich.

Verfügbare Umgebungsvariablen

Cloud Deploy stellt auch die folgenden Umgebungsvariablen in der Ausführungsumgebung bereit und füllt sie aus. Sie können diese Umgebungsvariablen als Teil Ihres Bereitstellungshooks, Überprüfungsjobs, oder des benutzerdefinierten Ziels Renderings oder der 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), die Endnutzer verwenden, um auf Ihren Dienst zuzugreifen. Sie finden diese in den Cloud Run-Dienstdetails für Ihren Dienst in der Google Cloud Console. 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 Überprüfungsjobs verfügbar.

  • CLOUD_RUN_REVISION

    Für Ziele vom Typ RUN die spezifische Überarbeitung des Cloud Run-Dienstes.

  • GKE_CLUSTER

    Für Ziele vom Typ GKE 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. Für benutzerdefinierte Ziele wird dies 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 des Projekts, das die Cloud Deploy-Ressourcen enthält.

  • CLOUD_DEPLOY_PROJECT_ID

    Die Google Cloud Projekt-ID des Projekts.

  • CLOUD_DEPLOY_RELEASE

    Die ID des Release, 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 der Jobausführung, die die aktuelle Ausführung des Jobs darstellt.

  • CLOUD_DEPLOY_PHASE

    Die Phase im Roll-out, die den Job für den Bereitstellungshook, den Überprüfungsjob oder das benutzerdefinierte Rendering oder die benutzerdefinierte Bereitstellung enthält.

Nächste Schritte