In diesem Dokument wird beschrieben, wie Sie eine Cloud Deploy-Bereitstellung prüfen.
Sie können Cloud Deploy und Skaffold konfigurieren, um zu prüfen, die Sie für ein beliebiges Ziel bereitgestellt haben, funktionieren wie vorgesehen. Die Überprüfung erfolgt mit Ihrem eigenen Test-Image und Sie konfigurieren Cloud Deploy und Skaffold zum Ausführen dieser Tests nach der Bereitstellung beendet.
Standardmäßig wird die Deployment-Überprüfung in Cloud Deploy ausgeführt Ausführungsumgebung, Sie können aber auch für die Ausführung im selben Cluster konfigurieren wo die Anwendung ausgeführt wird.
Wie funktioniert die Überprüfung der Bereitstellung?
Sie konfigurieren Skaffold für die Überprüfung.
Diese Konfiguration identifiziert das Container-Image oder die Container-Images, die zum Ausführen verwendet werden sollen Tests und den spezifischen Befehlen (z. B. Skript), die von dieser Container-Image.
Sie konfigurieren ein oder mehrere Ziele für die Auslieferung zur Überprüfung der Bereitstellung.
Diese Konfiguration ermöglicht die Überprüfung von Arbeitslasten, die dort bereitgestellt werden. Ziel.
Nachdem ein Roll-out bereitgestellt wurde (
skaffold apply
), wird Cloud Deploy ausgeführt Dasskaffold verify
in der Cloud Deploy-Ausführungsumgebung verwenden.Bei Bereitstellungen in Google Kubernetes Engine und GKE Enterprise können Sie optional Überprüfungscontainer im selben Cluster ausführen, in dem sich die Anwendung befindet Container ausgeführt wird.
Skaffold ruft den Test oder die Tests auf, die in der
verify
-Stanza Ihrerskaffold.yaml
, um für die bereitgestellte Anwendung auszuführen.Erfolg oder Misserfolg der ausgeführten Tests weist auf Erfolg oder Misserfolg der Überprüfung hin.
Der Erfolg der Bestätigung wird durch den Exit-Code des ausgeführten Containers bestimmt.
0
zeigt eine erfolgreiche Ausführung an. Ein Exit-Code ungleich null weist auf einen Fehler hin. Zum Generieren gewünschtes Bestätigungsergebnis erhalten, achten Sie darauf, dass der Container entsprechenden Exit-Code. Wenn im Rahmen der Überprüfung mehr als ein Container ausgeführt wird, müssen alle erfolgreich sein, damit die Überprüfung erfolgen kann.Wenn die Bestätigung fehlschlägt, schlägt auch die Einführung fehl.
Wenn eine Bereitstellung während der Überprüfung fehlschlägt, können Sie dies sehen, indem Sie die Einführung:
Sie können ignorieren. oder wiederholen Sie eine fehlgeschlagene Bestätigung.
Sie können auch beenden einen laufenden Überprüfungsjob.
Für die Überprüfung verwendete Komponenten
Die rollout-Ressource enthält die folgenden Objekten, die die Deployment-Überprüfung unterstützen:
Phase
Die Sammlung von Vorgängen (Jobs) in einem Roll-out, die logisch gruppiert sind z. B. Bereitstellung oder Bereitstellung und Überprüfung.
Job
Der spezifische Vorgang, der bei einem Roll-out ausgeführt werden soll, z. B. „Bereitstellen“ oder „Verifizieren“.
Jobausführung
Der Job ist der Roll-out-Ressource untergeordnet. Die Jobausführung ist eine Jobinstanz, für einen Bereitstellungsversuch.
Weitere Informationen zu Cloud Deploy-Ressourcen finden Sie unter Cloud Deploy Dienstarchitektur
Durch die Bereitstellungsüberprüfung generierte Benachrichtigungen
Cloud Deploy generiert Pub/Sub-Nachrichten und veröffentlicht sie für folgende Ereignisse:
Jobausführung erstellen, aktualisieren und löschen
Diese Benachrichtigungen werden im Thema
clouddeploy-resources
veröffentlicht und die folgenden Attribute enthalten:Resource
ResourceType
(JobRun
)Action
(Create
,Update
,Delete
)ProjectNumber
Location
TargetId
DeliveryPipelineId
ReleaseId
RolloutId
JobRunId
Das folgende Beispiel zeigt eine Pub/Sub-Nachricht für eine Jobausführung
erstellen, veröffentlicht im Thema clouddeploy-resources
:
{
"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"
}
},
Jobausführung starten, erfolgreich und fehlgeschlagen
Diese Benachrichtigungen werden im Thema
clouddeploy-operations
veröffentlicht und die folgenden Attribute enthalten: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 einen fehlgeschlagenen Job
ausgeführt, im Thema clouddeploy-operations
veröffentlicht:
{
"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"
}
},
Cloud Deploy für die Überprüfung der Bereitstellung konfigurieren
Das Aktivieren der Bereitstellungsprüfung für ein Cloud Deploy-Ziel besteht aus
beim Hinzufügen einer verify: true
-Property
an ein oder mehrere Ziele in der Entwicklung der Bereitstellungspipeline gesendet werden, wie in
dieses Beispiel:
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 Überprüfung der Bereitstellung für das Ziel dev
aktiviert,
aber nicht auf das Ziel prod
. verify: false
entspricht dem Weglassen von
verify
-Property oder die gesamte strategy
-Stanza.
Der Überprüfungsvorgang wird in seiner eigenen Ausführungsumgebung ausgeführt.
Diese Ausführungsumgebung kann für VERIFY
auf die gleiche Weise konfiguriert werden
für RENDER
und DEPLOY
.
Skaffold für die Deployment-Überprüfung konfigurieren
Zum Aktivieren der Deployment-Überprüfung für ein Ziel ist eine verify
-Stanza in
Die Konfigurationsdatei skaffold.yaml
für Ihre Bereitstellung. Diese Konfiguration
kann für ein bestimmtes Skaffold-Profil gelten, wenn Sie separate Profile pro
Ziel.
Diese verify
-Stanza identifiziert einen Container, der für die Überprüfung ausgeführt werden soll:
z. B. ein Integrationstest.
Das folgende Beispiel zeigt eine skaffold.yaml
-Datei mit einer verify
-Stanza:
apiVersion: skaffold/v4beta7
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.
Sie identifizieren einen zu verwendenden Container und ein Testskript, das in diesem Container ausgeführt werden soll.
#ENDPOINT_URL
ist in diesem Beispiel nur ein Platzhalter für Ihre Anwendungen.
URL und ist keine verfügbare Cloud Deploy-Umgebungsvariable.
Überprüfungscontainer im Anwendungscluster ausführen
Standardmäßig wird die Deployment-Überprüfung in Cloud Deploy ausgeführt
Ausführungsumgebung aus. Sie können auch
Skaffold so konfigurieren, dass der Überprüfungscontainer auf demselben Cluster ausgeführt wird, in dem
Ihre Anwendung ausgeführt wird. Wenn Sie die clusterinterne Überprüfung in
skaffold.yaml
und aktivieren Sie die Überprüfung für ein Ziel, wird sie automatisch im Cluster dieses Ziels ausgeführt.
Diese Funktion ist für Deployments in GKE und Nur GKE Enterprise, nicht für Cloud Run. Bereitstellungen in Cloud Run kann die Überprüfung nur in der Cloud Deploy-Ausführungsumgebung
Clusterinterne Überprüfung erfordert Skaffold-Version 2.3 oder höher.
Fügen Sie zum Ausführen des Überprüfungscontainers im Cluster Folgendes ein:
executionMode.kubernetesCluster
Stanza in Ihrer skaffold.yaml
-Konfiguration
-Datei in der verify
-Stanza für den jeweiligen Bestätigungscontainer an:
verify:
- name:
container:
name:
image:
command:
args:
executionMode:
kubernetesCluster:
Im Folgenden finden Sie ein Beispiel für eine Stanza, die executionMode
enthält, um
Rufen Sie den Verifizierungscontainer im Anwendungscluster auf:
verify:
- name: integration-test-container
container:
name: integration-test-container
image: integration-test-container
executionMode:
kubernetesCluster: {}
Die executionMode
-Stanza ist optional. Wenn Sie sie weglassen, führt Skaffold den
Überprüfungscontainer in der Cloud Deploy-Ausführungsumgebung
Bestätigung wiederholen
Wenn ein Überprüfungsjob fehlschlägt, können Sie die Überprüfung wiederholen 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
Durch Wiederholen der Bestätigung ändert sich der Status des Roll-outs von FAILED
zu
IN_PROGRESS
.
Sie können die Bestätigung nur für ein Roll-out wiederholen, dessen Prüfjob fehlgeschlagen ist.
Verfügbare Umgebungsvariablen
Cloud Deploy stellt die folgende Umgebung bereit und fügt sie ein
Variablen in der Ausführungsumgebung von VERIFY
die Sie für Ihre Tests verwenden können:
ANTHOS_MEMBERSHIP
Bei Zielen vom Typ
ANTHOS
ist der vollständig angegebene Ressourcenname der Anthos- Mitgliedschaft.CLOUD_RUN_LOCATION
Bei Zielen vom Typ
RUN
ist die Region, in der sich der Cloud Run-Dienst befindet. bereitgestellt wird.CLOUD_RUN_PROJECT
Für Ziele vom Typ
RUN
ist das Projekt, in dem Cloud Run Dienst erstellt wurde.CLOUD_RUN_SERVICE
Für Ziele vom Typ
RUN
ist der vollständig angegebene Ressourcenname der bereitgestellten Cloud Run-Dienst, z. B.projects/p/locations/us-central1/services/dev
.CLOUD_RUN_SERVICE_URLS
Bei Zielen vom Typ
RUN
die URL oder URLs (durch Kommas getrennte Liste), die enden die Nutzer verwenden, um auf Ihren Dienst zuzugreifen. Diese finden Sie in der Details zum Cloud Run-Dienst für Ihren Dienst im Google Cloud ConsoleCLOUD_RUN_REVISION
Für Ziele vom Typ
RUN
die spezifische Version von Cloud Run .GKE_CLUSTER
Bei Zielen vom Typ
GKE
ist der vollständig angegebene Ressourcenname der Google Kubernetes Engine-Cluster, z. B.projects/p/locations/us-central1/clusters/dev
.TARGET_TYPE
Der spezifische Laufzeittyp des Ziels.
GKE
,ANTHOS
oderRUN
.CLOUD_DEPLOY_LOCATION
Die Region, in der die Ausführungsumgebung ausgeführt wird.
CLOUD_DEPLOY_DELIVERY_PIPELINE
Die ID-Bereitstellungspipeline, die in der Ausführungsumgebung ausgeführt wird.
CLOUD_DEPLOY_TARGET
Die ID des Ziels, das von der Ausführungsumgebung ausgeführt wird.
CLOUD_DEPLOY_PROJECT
Die Projektnummer des Google Cloud-Projekts, in dem die Ausführungsumgebung ausgeführt wird.
CLOUD_DEPLOY_RELEASE
Die ID des Release, in dem die Überprüfung ausgeführt wird.
CLOUD_DEPLOY_ROLLOUT
Die ID des Roll-outs, das die zu überprüfenden Jobs enthält.
CLOUD_DEPLOY_JOB_RUN
Die ID der Jobausführung, die der aktuellen Ausführung der Job.
CLOUD_DEPLOY_PHASE
Die Phase im Roll-out, die den zu überprüfenden Job enthält.