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?
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.
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.
Nach der Bereitstellung (
skaffold apply
) führt Google Cloud Deploy den Befehlskaffold verify
in seiner eigenen Ausführungsumgebung aus.Skaffold ruft die in der
verify
-Stanza vonskaffold.yaml
angegebenen Tests für die bereitgestellte Anwendung auf.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:
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
oderVerify
)
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
oderRUN
.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.