Questo documento descrive come verificare un deployment di Cloud Deploy.
Puoi configurare Cloud Deploy per verificare che un'applicazione di cui hai eseguito il deployment in qualsiasi destinazione funzioni correttamente. La verifica viene eseguita utilizzando una o più immagini di test personalizzate e configuri Cloud Deploy per eseguire questi test al termine del deployment.
Come funziona la verifica del deployment?
Configura uno o più target nella pipeline di distribuzione per la verifica del deployment definendo le attività da eseguire.
Dopo il deployment di un'applicazione, Cloud Deploy esegue le attività di verifica nell'ambiente di esecuzione di Cloud Deploy.
L'esito positivo o negativo dei test eseguiti indica l'esito positivo o negativo della verifica:
L'esito positivo della verifica è determinato dal codice di uscita generato dal container.
0indica che l'operazione è riuscita. Un codice di uscita diverso da zero indica un errore. Per generare il risultato di verifica previsto, assicurati che il contenitore esca con il codice di uscita appropriato. Se durante la verifica vengono eseguiti più contenitori, tutti devono avere esito positivo affinché la verifica riesca.Se la verifica non va a buon fine, anche l'implementazione non va a buon fine.
Se un deployment non riesce durante la verifica, puoi verificarlo esaminando l'implementazione:

Puoi ignorare o riprovare una verifica non riuscita.
Puoi anche terminare un job di verifica in corso.
Componenti utilizzati per la verifica
La risorsa rollout include i seguenti oggetti, che supportano la verifica del deployment:
Fase
L'insieme di operazioni (job) in un rollout raggruppate logicamente, ad esempio un deployment o un deployment e una verifica.
Job
L'operazione specifica da eseguire su un'implementazione, ad esempio deploy o verifica.
Esecuzione job
Un elemento figlio della risorsa di implementazione, l'esecuzione del job è un'istanza di un job, ad esempio un tentativo di deployment.
Per saperne di più sulle risorse Cloud Deploy, consulta Architettura del servizio Cloud Deploy.
Configura Cloud Deploy per la verifica del deployment
L'attivazione della verifica del deployment per un target Cloud Deploy consiste
nell'aggiunta di una sezione verify a un determinato target (o 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:
tasks:
- type: container
image: "VERIFY_IMAGE"
command: [COMMANDS_TO_RUN]
args: [LIST_OF_ARGS]
env: {VERIFY_TASK_ENV_MAP}
In questo YAML:
VERIFY_IMAGE
È il nome dell'immagine che vuoi eseguire per il job di verifica. Ad esempio,
us-central1-docker.pkg.dev/gcp-project-id-12345/my-repository/my-app:v1.2per un'immagine Artifact Registry.COMMANDS_TO_RUN
È un elenco di punti di ingresso da eseguire sul container.
"/bin/sh"è un comando tipico da specificare qui per richiamare una shell.LIST_OF_ARGS
È un elenco di argomenti da fornire al comando. Si tratta di un elenco separato da virgole, con ogni argomento tra virgolette. Se il tuo COMMAND_TO_RUN è
"/bin/sh", uno degli argomenti qui sarebbe"-c"e un altro argomento sarebbe l'intero comando che vuoi eseguire nella shell che stai richiamando.Ecco un esempio:
command: ["/bin/sh"] args: ["-c", `echo "This command ran!"`]VERIFY_TASK_ENV_MAP
È una mappa delle variabili di ambiente passate al container, nel formato
KEY:VAL.
L'operazione di verifica viene eseguita nel proprio ambiente di esecuzione. Questo ambiente di esecuzione può
essere configurato per VERIFY come per RENDER e DEPLOY.
Esegui la verifica sul cluster di applicazioni
Per impostazione predefinita, la verifica del deployment viene eseguita nell'ambiente di esecuzione di Cloud Deploy. Puoi anche configurare Skaffold per eseguire la verifica sullo stesso cluster in cui è in esecuzione la tua applicazione.
Per eseguire i container di verifica sul cluster, devi configurare i container di verifica nella sezione verify del file skaffold.yaml. Per ogni contenitore
definito, devi impostare anche executionMode.kubernetesCluster.
verify:
- name:
container:
name:
image:
command:
args:
executionMode:
kubernetesCluster:
Di seguito è riportato un esempio di sezione di verifica che include executionMode per richiamare il container di verifica sul cluster dell'applicazione:
verify:
- name: integration-test-container
container:
name: integration-test-container
image: integration-test-container
executionMode:
kubernetesCluster: {}
Inoltre, devi impostare la sezione verify su true all'interno della configurazione della pipeline di distribuzione.
Di seguito è riportato un esempio di definizione della pipeline di pubblicazione in cui la verifica è attivata per la destinazione dev.
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
Questa funzionalità è disponibile solo per i deployment su GKE, non per Cloud Run. I deployment su Cloud Run possono eseguire la verifica solo nell'ambiente di esecuzione di Cloud Deploy.
Per i deployment paralleli, la verifica viene configurata sul target multiplo e i contenitori di verifica vengono eseguiti su ogni target secondario.
Puoi anche includere le proprietà jobManifestPath e overrides,
in kubernetesCluster, per indicare un manifest per il contenitore di verifica e
qualsiasi valore che vuoi sostituire. (overrides accetta JSON in linea di Kubernetes con
i valori che vuoi sostituire.) Scopri di più.
La sezione executionMode è facoltativa e, se la ometti, Skaffold esegue
i container di verifica nell'ambiente di esecuzione di Cloud Deploy.
Riprova 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
Se riprovi la verifica, lo stato dell'implementazione cambia da FAILED a
IN_PROGRESS.
Puoi riprovare una verifica solo per un'implementazione il cui job di verifica non è riuscito.
Variabili di ambiente disponibili
Cloud Deploy fornisce e popola anche le seguenti variabili di ambiente nell'ambiente di esecuzione. Puoi utilizzare queste variabili di ambiente come parte del deploy hook, del verify job, o del rendering o del deployment del target personalizzato.
ANTHOS_MEMBERSHIPPer i target di tipo
ANTHOS, il nome della risorsa completamente specificato dell'appartenenza Anthos.CLOUD_RUN_LOCATIONPer i target di tipo
RUN, la regione in cui è stato eseguito il deployment del servizio Cloud Run.CLOUD_RUN_PROJECTPer le destinazioni di tipo
RUN, il progetto in cui è stato creato il servizio Cloud Run.CLOUD_RUN_SERVICEPer le destinazioni di tipo
RUN, il nome del servizio Cloud Run di cui è stato eseguito il deployment.CLOUD_RUN_SERVICE_URLSPer i target di tipo
RUN, l'URL o gli URL (elenco separato da virgole) che gli utenti finali utilizzeranno per accedere al tuo servizio. Puoi trovarli nei dettagli del servizio Cloud Run per il tuo servizio, nella consoleGoogle Cloud . Gli URL vengono generati da Cloud Run dopo il deployment riuscito del servizio o dei servizi Cloud Run. Pertanto, questa variabile di ambiente è disponibile solo negli hook post-deployment e nei job di verifica.CLOUD_RUN_REVISIONPer i target di tipo
RUN, la revisione specifica del servizio Cloud Run.GKE_CLUSTERPer le destinazioni di tipo
GKE, il nome della risorsa completamente specificato del cluster Google Kubernetes Engine, ad esempioprojects/p/locations/us-central1/clusters/dev.TARGET_TYPEIl tipo di runtime specifico della destinazione.
GKE,ANTHOSoRUN. Per i target personalizzati, questo valore non verrà impostato.CLOUD_DEPLOY_LOCATIONLa regione contenente le risorse Cloud Deploy.
CLOUD_DEPLOY_DELIVERY_PIPELINEL'ID della pipeline di distribuzione.
CLOUD_DEPLOY_TARGETL'ID del target.
CLOUD_DEPLOY_PROJECTIl numero di progetto Google Cloud per il progetto contenente le risorse Cloud Deploy.
CLOUD_DEPLOY_PROJECT_IDL'ID progetto Google Cloud del progetto.
CLOUD_DEPLOY_RELEASEL'ID della release in cui verranno eseguiti gli hook.
CLOUD_DEPLOY_ROLLOUTL'ID del rollout che contiene i job per gli hook.
CLOUD_DEPLOY_JOB_RUNL'ID dell'esecuzione del job che rappresenta l'esecuzione corrente del job.
CLOUD_DEPLOY_PHASELa fase del lancio che contiene il job per l'hook di deployment, il job di verifica o il rendering o il deployment personalizzato.
Passaggi successivi
- Scopri di più sulle attività
- Prova la guida rapida: verifica il deployment