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
-
Melden Sie sich in Ihrem Google-Konto an.
Wenn Sie noch kein Konto haben, melden Sie sich hier für ein neues Konto an.
-
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Prüfen Sie, ob Sie die Berechtigungen haben, die für diese Anleitung erforderlich sind.
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
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 Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud services enable clouddeploy.googleapis.com
compute.googleapis.com -
Installieren Sie die Google Cloud CLI.
-
Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.
-
Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:
gcloud init -
Prüfen Sie, ob Sie die Berechtigungen haben, die für diese Anleitung erforderlich sind.
-
Prüfen Sie, ob für Ihr Google Cloud Projekt die Abrechnung aktiviert ist.
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 Berechtigungserviceusage.services.enableenthält. Weitere Informationen zum Zuweisen von Rollengcloud 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:
-
Cloud Deploy Job Runner (
roles/clouddeploy.jobRunner) -
IAM Service Account User (
roles/iam.serviceAccountUser) -
Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
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:
-
IAM Service Account User (
roles/iam.serviceAccountUser) -
Cloud Deploy-Releaser (
roles/clouddeploy.releaser) -
Cloud Deploy-Operator (
roles/clouddeploy.operator)
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:
DURATIONGibt 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_IDEine ID für die individuelle Prüfung. Diese ID muss innerhalb dieses Analysejobs eindeutig sein.
FREQUENCYGibt an, wie oft die einzelne Prüfung in Sekunden ausgeführt werden soll.
IMAGE_NAMEIst der Pfad und Name, der Ihr Container-Image identifiziert.
COMMANDIst der Befehl, der für diesen Container ausgeführt werden soll, z. B. ein Shell-Script (
/bin/bash).ARGSEine 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
-cund ein anderes Argument wäre der gesamte Befehl, den Sie in der aufgerufenen Shell ausführen möchten.VAR_NAMEIst 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.
VALUEIst 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_MEMBERSHIPFür Ziele vom Typ
ANTHOSder vollständig angegebene Ressourcenname der Anthos-Mitgliedschaft.CLOUD_RUN_LOCATIONFür Ziele vom Typ
RUNdie Region, in der der Cloud Run-Dienst bereitgestellt wird.CLOUD_RUN_PROJECTFür Ziele vom Typ
RUNdas Projekt, in dem der Cloud Run-Dienst erstellt wurde.CLOUD_RUN_SERVICEFür Ziele vom Typ
RUNder Name des bereitgestellten Cloud Run-Dienstes.CLOUD_RUN_SERVICE_URLSFür Ziele vom Typ
RUNdie 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_REVISIONFür Ziele des Typs
RUNdie spezifische Revision des Cloud Run-Dienstes.GKE_CLUSTERFür Ziele vom Typ
GKEist dies der vollständig angegebene Ressourcenname des Google Kubernetes Engine-Clusters, z. B.projects/p/locations/us-central1/clusters/dev.TARGET_TYPEDer spezifische Laufzeittyp des Ziels. Entweder
GKE,ANTHOSoderRUN. Bei benutzerdefinierten Zielvorhaben wird dieser Wert nicht festgelegt.CLOUD_DEPLOY_LOCATIONDie Region, die die Cloud Deploy-Ressourcen enthält.
CLOUD_DEPLOY_DELIVERY_PIPELINEDie ID der Bereitstellungspipeline.
CLOUD_DEPLOY_TARGETDie ID des Ziels.
CLOUD_DEPLOY_PROJECTDie Google Cloud Projektnummer für das Projekt, das die Cloud Deploy-Ressourcen enthält.
CLOUD_DEPLOY_PROJECT_IDDie Google Cloud Projekt-ID für das Projekt.
CLOUD_DEPLOY_RELEASEDie ID des Releases, in dem die Hooks ausgeführt werden.
CLOUD_DEPLOY_ROLLOUTDie ID des Roll-outs, der die Jobs für die Hooks enthält.
CLOUD_DEPLOY_JOB_RUNDie ID des Joblaufs, der die aktuelle Ausführung des Jobs darstellt.
CLOUD_DEPLOY_PHASEDie Phase im Rollout, die den Job für den Bereitstellungshook, den Bestätigungsjob oder das benutzerdefinierte Rendern oder Bereitstellen enthält.
Nächste Schritte
Das Konfigurationsschema für die Analyse finden Sie in der Cloud Deploy-Konfigurationsreferenz.