Deployment prüfen

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

In diesem Dokument wird beschrieben, wie Sie eine Google Cloud Deploy-Bereitstellung prüfen.

Sie können Google Cloud Deploy und Skaffold konfigurieren, um zu prüfen, ob eine Anwendung, die Sie für ein beliebiges Ziel bereitgestellt haben, ordnungsgemäß funktioniert. Die Überprüfung erfolgt mit Ihrem eigenen Test-Image. Sie konfigurieren Google Cloud Deploy und Skaffold, um diese Tests nach Abschluss der Bereitstellung auszuführen.

Wie funktioniert die Bestätigung der Bereitstellung?

  1. Sie konfigurieren Skaffold für die Überprüfung.

    Diese Konfiguration gibt die Container-Images an, die für Tests verwendet werden sollen, sowie die spezifischen Befehle (z. B. Skript), die von diesem Container-Image ausgeführt werden sollen.

  2. Sie konfigurieren ein oder mehrere Ziele in Ihrer Bereitstellungspipeline für die Bereitstellungsüberprüfung.

    Mit dieser Konfiguration wird die Bestätigung für dieses Ziel aktiviert.

  3. Nach der Bereitstellung (skaffold apply) führt Google Cloud Deploy den Befehl skaffold verify in seiner eigenen Ausführungsumgebung aus.

  4. Skaffold ruft die in der verify-Stanza von skaffold.yaml angegebenen Tests für die bereitgestellte Anwendung auf.

  5. Wenn einer der Tests fehlschlägt, schlägt die Überprüfung fehl.

    • Da die Überprüfung fehlgeschlagen ist, schlägt auch die Einführung fehl.

    • Wenn ein Deployment während der Überprüfung fehlschlägt, können Sie es mithilfe des Roll-outs prüfen:

      Details zur Einführung in der Google Cloud Console, einschließlich Bestätigungsstatus

  6. Sie können die fehlgeschlagene Bestätigung noch einmal versuchen.

Komponenten für die Überprüfung

Die Ressource rollout enthält die folgenden Objekte, die die Überprüfung der Bereitstellung unterstützen:

  • Phase

    Die Sammlung von Vorgängen (Jobs) in einem Roll-out, die logisch zusammen gruppiert sind, z. B. eine Bereitstellung oder eine Bereitstellung und Überprüfung.

  • Job

    Der spezifische Vorgang für ein Roll-out, z. B. Bereitstellung oder Überprüfung.

  • Jobausführung

    Der Jobausführung ist eine untergeordnete Instanz der Rollout-Ressource. Sie ist eine Instanz eines Jobs, z. B. ein Bereitstellungsversuch.

Weitere Informationen zu Google Cloud Deploy-Ressourcen finden Sie unter Google Cloud Deploy-Dienstarchitektur

Durch die Bestätigung der Bereitstellung generierte Benachrichtigungen

Google Cloud Deploy generiert Pub/Sub-Nachrichten und veröffentlicht sie für die folgenden Ereignisse:

  • Jobausführung erstellen, aktualisieren und löschen

    Diese Benachrichtigungen werden im Thema clouddeploy-resources veröffentlicht und enthalten die folgenden Attribute:

    • Resource
    • ResourceType (JobRun)
    • Action (Create, Update, Delete)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId

Im Folgenden finden Sie ein Beispiel für eine Pub/Sub-Nachricht für eine Jobausführungserstellung, die im Thema clouddeploy-resources veröffentlicht wurde:

{
    "ackId": "UAYWLF1GSFE3GQhoUQ5PXiM_NSAoRRAGAE8CKF15MFcrQVh9Dz4NGXJ9YXRiWRIJBkUHeF9cEQ1iXE5EB0nq0KDVV1dKXxYGAExQeVhbHQVoWVh0Bnn7h5nK-8HjYwk9OqKarPdtO4PY2fNHZiI9XhJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FU0Q",
    "message": {
      "attributes": {
        "Action": "Create",
        "DeliveryPipelineId": "dv-pipeline",
        "JobRunId": "634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
        "Location": "us-central1",
        "ProjectNumber": "253401481285",
        "ReleaseId": "test-release-100",
        "Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-100/rollouts/test-release-100-to-dev-0001/jobRuns/634f8c6f-30c3-49ca-af80-68dc24d4cc5d",
        "ResourceType": "JobRun",
        "RolloutId": "test-release-100-to-dev-0001"
      },
      "messageId": "5572937706805411",
      "publishTime": "2022-09-07T14:00:46.040Z"
    }
  },
  • Start, Erfolg und Fehlschlag der Jobausführung

    Diese Benachrichtigungen werden im Thema clouddeploy-operations veröffentlicht und enthalten die folgenden Attribute:

    • Resource
    • ResourceType (JobRun)
    • Action (Start, Succeed, Failure)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId
    • PhaseId
    • JobId
    • JobType (Deploy oder Verify)

Das folgende Beispiel zeigt eine Pub/Sub-Nachricht für eine fehlgeschlagene Jobausführung, die im Thema clouddeploy-operations veröffentlicht wurde:

{
    "ackId": "RFAGFixdRkhRNxkIaFEOT14jPzUgKEUUBAgUBXx9cEFPdVhec2hRDRlyfWB9aVsbCAUXU3cJURsHaE5tdR-6xcvaS0NVb18UAgRFWndfXhMEblhfcy-fkK3HwvT9U0AvOemNgdZpe6jHiulvZiM9XxJLLD5-My5FQV5AEkw4G0RJUytDCypYEU4EISE-MD5FUw",
    "message": {
      "attributes": {
        "Action": "Failure",
        "DeliveryPipelineId": "dv-pipeline",
        "JobId": "verify",
        "JobRunId": "b389224a-c259-4a00-ab75-c22e48bc3136",
        "JobType": "Verify",
        "Location": "us-central1",
        "PhaseId": "stable",
        "ProjectNumber": "253401481285",
        "ReleaseId": "test-release-101",
        "Resource": "projects/253401481285/locations/us-central1/deliveryPipelines/dv-pipeline/releases/test-release-101/rollouts/test-release-101-to-dev-0001/jobRuns/b389224a-c259-4a00-ab75-c22e48bc3136",
        "ResourceType": "JobRun",
        "RolloutId": "test-release-101-to-dev-0001",
        "TargetId": "dev"
      },
      "messageId": "5573609905896436",
      "publishTime": "2022-09-07T15:35:37.906Z"
    }
  },

Überprüfung von Google Cloud Deploy für die Bereitstellung konfigurieren

Das Aktivieren der Bereitstellungsüberprüfung für ein Google Cloud Deploy-Ziel besteht aus dem Hinzufügen eines verify: true-Attributs zu einem bestimmten Ziel (oder mehreren Zielen) in einem Bereitstellungspipeline-Fortschritt, wie in diesem Beispiel gezeigt:

apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name: my-demo-app
description: main application pipeline
serialPipeline:
 stages:
 - targetId: dev
   profiles: []
   strategy:
     standard:
       verify: true
 - targetId: prod
   profiles: []
   strategy:
     standard:
       verify: false

In dieser Konfiguration ist die Bereitstellungsüberprüfung für das Ziel dev, aber nicht für das Ziel prod aktiviert. verify: false entspricht dem Weglassen des Attributs verify oder der gesamten strategy-Stanza.

Der Überprüfungsvorgang wird innerhalb der eigenen Ausführungsumgebung ausgeführt. Diese Ausführungsumgebung kann für VERIFY genauso konfiguriert werden wie für RENDER und DEPLOY.

Skaffold für die Bereitstellungsprüfung konfigurieren

Für die Aktivierung der Bereitstellungsüberprüfung für ein Ziel ist eine verify-Stanza in der Konfigurationsdatei skaffold.yaml für Ihre Bereitstellung erforderlich. Diese Konfiguration kann für ein bestimmtes Skaffold-Profil gelten, wenn Sie separate Profile pro Ziel verwenden.

Diese verify-Stanza identifiziert einen Container, der für die Überprüfung ausgeführt werden soll, z. B. einen Integrationstest.

Im Folgenden finden Sie ein Beispiel für skaffold.yaml, das eine verify-Stanza enthält:

apiVersion: skaffold/v3alpha1
kind: Config
build:
  artifacts:
    - image: integration-test
      context: integration-test
manifests:
  rawYaml:
  - kubernetes.yaml
deploy:
  kubectl: {}
verify:
- name: verify-integration-test
  container:
    name: integration-test
    image: integration-test
    command: ["./test-systems.sh"]
- name: verify-endpoint-test
  container:
    name: alpine
    image: alpine
    command: ["/bin/sh"]
    args: ["-c", "wget #ENDPOINT_URL"]

Dieses einfache Beispiel zeigt eine verify-Stanza, die einen zu verwendenden Container und ein Testskript zur Ausführung in diesem Container identifiziert. $ENDPOINT_URL ist in diesem Beispiel nur ein Platzhalter für Ihre Anwendungs-URL und keine verfügbare Google Cloud Deploy-Umgebungsvariable.

Bestätigung wiederholen

Wenn ein Überprüfungsjob fehlschlägt, können Sie die Bestätigung noch einmal ausführen und eine neue Jobausführung erstellen:

gcloud deploy rollouts retry-job ROLLOUT_NAME \
             --job-id=JOB_ID --phase-id=PHASE_ID \
             --delivery-pipeline=PIPELINE_NAME --release=RELEASE_NAME \
             --region=REGION

Wenn Sie die Bestätigung noch einmal ausführen, wird der Status des Roll-outs von FAILED in IN_PROGRESS geändert.

Sie können die Bestätigung nur für ein Roll-out wiederholen, dessen Überprüfungsjob fehlgeschlagen ist.

Verfügbare Umgebungsvariablen

Google Cloud Deploy bietet und füllt die folgenden Umgebungsvariablen in der Ausführungsumgebung VERIFY, die Sie für Ihre Tests verwenden können:

  • TARGET_TYPE

    Der spezifische Laufzeittyp des Ziels. Entweder GKE, ANTHOS oder RUN.

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

  • ANTHOS_MITGLIEDSCHAFT

    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_PROJEKT

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

  • CLOUD_RUN_SERVICE_URLS

    Bei Zielen vom Typ RUN die URL oder URLs (durch Kommas getrennte Liste), die Endnutzer für den Zugriff auf Ihren Dienst verwenden. Sie finden diese in der Google Cloud Console in den Details des Cloud Run-Dienstes für Ihren Dienst.