Verifica il deployment

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?

  1. Configura uno o più target nella pipeline di distribuzione per la verifica del deployment definendo le attività da eseguire.

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

      0 indica 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:

      Dettagli nella console Google Cloud per l'implementazione, incluso lo stato della verifica

  3. 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.2 per 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_MEMBERSHIP

    Per i target di tipo ANTHOS, il nome della risorsa completamente specificato dell'appartenenza Anthos.

  • CLOUD_RUN_LOCATION

    Per i target di tipo RUN, la regione in cui è stato eseguito il deployment del servizio Cloud Run.

  • CLOUD_RUN_PROJECT

    Per le destinazioni di tipo RUN, il progetto in cui è stato creato il servizio Cloud Run.

  • CLOUD_RUN_SERVICE

    Per le destinazioni di tipo RUN, il nome del servizio Cloud Run di cui è stato eseguito il deployment.

  • CLOUD_RUN_SERVICE_URLS

    Per 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_REVISION

    Per i target di tipo RUN, la revisione specifica del servizio Cloud Run.

  • GKE_CLUSTER

    Per le destinazioni di tipo GKE, il nome della risorsa completamente specificato del cluster Google Kubernetes Engine, ad esempio projects/p/locations/us-central1/clusters/dev.

  • TARGET_TYPE

    Il tipo di runtime specifico della destinazione. GKE, ANTHOS o RUN. Per i target personalizzati, questo valore non verrà impostato.

  • CLOUD_DEPLOY_LOCATION

    La regione contenente le risorse Cloud Deploy.

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    L'ID della pipeline di distribuzione.

  • CLOUD_DEPLOY_TARGET

    L'ID del target.

  • CLOUD_DEPLOY_PROJECT

    Il numero di progetto Google Cloud per il progetto contenente le risorse Cloud Deploy.

  • CLOUD_DEPLOY_PROJECT_ID

    L'ID progetto Google Cloud del progetto.

  • CLOUD_DEPLOY_RELEASE

    L'ID della release in cui verranno eseguiti gli hook.

  • CLOUD_DEPLOY_ROLLOUT

    L'ID del rollout che contiene i job per gli hook.

  • CLOUD_DEPLOY_JOB_RUN

    L'ID dell'esecuzione del job che rappresenta l'esecuzione corrente del job.

  • CLOUD_DEPLOY_PHASE

    La 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