Questo documento descrive come verificare un deployment Google Cloud Deploy.
Puoi configurare Google Cloud Deploy e Skaffold per verificare che un'applicazione di cui hai eseguito il deployment in qualsiasi destinazione funzioni correttamente. La verifica viene effettuata utilizzando la tua immagine di test e configuri Google Cloud Deploy e Skaffold per eseguire questi test al termine del deployment.
Come funziona la verifica del deployment?
Devi configurare Skaffold per la verifica.
Questa configurazione identifica le immagini container da utilizzare per eseguire i test e i comandi specifici (ad esempio, script) per eseguirle.
Configura una o più destinazioni nella pipeline di distribuzione per la verifica del deployment.
Questa configurazione abilita la verifica su quel target.
Dopo il deployment di un'implementazione (
skaffold apply
), Google Cloud Deploy esegue il comandoskaffold verify
nel proprio ambiente di esecuzione.Skaffold richiama il test o i test specificati nella intestazioni
verify
diskaffold.yaml
per l'esecuzione sull'applicazione di cui è stato eseguito il deployment.Se uno o più test non vanno a buon fine, la verifica ha esito negativo.
Poiché la verifica non è andata a buon fine, anche l'implementazione ha esito negativo.
Se un deployment ha esito negativo durante la verifica, puoi controllare controllando l'implementazione:
Componenti utilizzati per la verifica
La risorsa rollout include i seguenti oggetti, che supportano la verifica del deployment:
Fase
La raccolta di operazioni (job) in un'implementazione che sono logicamente raggruppate, ad esempio un deployment o un deployment e verifica.
Job
L'operazione specifica da eseguire su un'implementazione, ad esempio il deployment o la verifica.
Esecuzione del job
Una risorsa secondaria della risorsa di implementazione: l'esecuzione del job è un'istanza di un job, ad esempio un tentativo di deployment.
Per ulteriori informazioni sulle risorse di Google Cloud Deploy, consulta l'architettura di servizio di Google Cloud Deploy
Notifiche generate dalla verifica del deployment
Google Cloud Deploy genera messaggi Pub/Sub e li pubblica per i seguenti eventi:
Creazione, aggiornamento ed eliminazione di un job
Queste notifiche vengono pubblicate nell'argomento
clouddeploy-resources
e contengono i seguenti attributi:Resource
ResourceType
(JobRun
)Action
(Create
,Update
eDelete
)ProjectNumber
Location
TargetId
DeliveryPipelineId
ReleaseId
RolloutId
JobRunId
Di seguito è riportato un messaggio Pub/Sub di esempio per una creazione di job eseguita, pubblicata nell'argomento 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"
}
},
Avvio, esecuzione e completamento del job non riusciti
Queste notifiche vengono pubblicate nell'argomento
clouddeploy-operations
e contengono i seguenti attributi:Resource
ResourceType
(JobRun
)Action
(Start
,Succeed
eFailure
)ProjectNumber
Location
TargetId
DeliveryPipelineId
ReleaseId
RolloutId
JobRunId
PhaseId
JobId
JobType
(Deploy
oVerify
)
Di seguito è riportato un messaggio Pub/Sub di esempio per un'esecuzione del job non riuscita, pubblicato nell'argomento clouddeploy-operations
:
{
"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"
}
},
Configura Google Cloud Deploy per la verifica del deployment
L'abilitazione della verifica del deployment per una destinazione di Google Cloud Deploy consiste
nell'aggiunta di una proprietà verify: true
a un determinato target (o più target) in una progressione della pipeline di distribuzione, come mostrato
in questo esempio:
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 questa configurazione, la verifica del deployment è abilitata sul target dev
, ma non sul target prod
. verify: false
equivale a omettere la proprietà verify
o l'intera intestazione strategy
.
L'operazione di verifica viene eseguita all'interno del proprio ambiente di esecuzione.
Questo ambiente di esecuzione può essere configurato per VERIFY
come può essere
per RENDER
e DEPLOY
.
Configura Skaffold per la verifica del deployment
L'abilitazione della verifica del deployment per una destinazione richiede una verify
riga nel file di configurazione skaffold.yaml
per il deployment. Questa configurazione può riferirsi a un profilo Skaffold specifico, se utilizzi profili separati per target.
Questa intestazione verify
identifica un container da eseguire per eseguire la verifica, ad esempio un test di integrazione.
Di seguito è riportato un esempio skaffold.yaml
che include una intestazione verify
:
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"]
Questo semplice esempio mostra una sfera verify
che identifica un container da utilizzare e uno script di test da eseguire in quel container.
$ENDPOINT_URL
in questo esempio è solo un segnaposto per l'URL della tua applicazione e non è una variabile di ambiente Google Cloud Deploy disponibile.
Riprova a eseguire la verifica
Quando un job di verifica non va a buon fine, puoi riprovare la verifica creando una nuova esecuzione del job:
gcloud deploy rollouts retry-job ROLLOUT_NAME \
--job-id=JOB_ID --phase-id=PHASE_ID \
--delivery-pipeline=PIPELINE_NAME --release=RELEASE_NAME \
--region=REGION
Riprovando la verifica cambierà lo stato dell'implementazione da FAILED
a IN_PROGRESS
.
Puoi riprovare a eseguire la verifica solo per un'implementazione il cui job di verifica non è andato a buon fine.
Variabili di ambiente disponibili
Google Cloud Deploy fornisce e completa le seguenti variabili di ambiente nell'ambiente di esecuzione VERIFY
, che puoi utilizzare per i test:
TARGET_TYPE
Il tipo di runtime specifico della destinazione.
GKE
,ANTHOS
oRUN
.Cluster_GKE
Per le destinazioni di tipo
GKE
, il nome completo della risorsa del cluster Google Kubernetes Engine, ad esempioprojects/p/locations/us-central1/clusters/dev
.ABBONAMENTO ANTHOS
Per le destinazioni di tipo
ANTHOS
, il nome completo della risorsa dell'appartenenza ad Anthos.POSIZIONE_CLOUD_RUN_LOCATION
Per le destinazioni di tipo
RUN
, la regione in cui viene eseguito il deployment del servizio Cloud Run.PROGETTO_CLOUD_RUN_RUN
Per le destinazioni di tipo
RUN
, il progetto in cui è stato creato il servizio Cloud Run.CLOUD_RUN_SERVICE_URLS
Per le destinazioni di tipo
RUN
, l'URL o gli URL (elenco separato da virgole) che gli utenti finali utilizzeranno per accedere al servizio. Puoi trovarli nei dettagli del servizio Cloud Run per il tuo servizio, nella console Google Cloud.