Verificare il deployment

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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?

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

  2. Configura una o più destinazioni nella pipeline di distribuzione per la verifica del deployment.

    Questa configurazione abilita la verifica su quel target.

  3. Dopo il deployment di un'implementazione (skaffold apply), Google Cloud Deploy esegue il comando skaffold verify nel proprio ambiente di esecuzione.

  4. Skaffold richiama il test o i test specificati nella intestazioni verify di skaffold.yaml per l'esecuzione sull'applicazione di cui è stato eseguito il deployment.

  5. 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:

      Dettagli in Google Cloud Console per il lancio, incluso lo stato della verifica

  6. Puoi riprovare una verifica non riuscita.

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 e Delete)
    • 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 e Failure)
    • ProjectNumber
    • Location
    • TargetId
    • DeliveryPipelineId
    • ReleaseId
    • RolloutId
    • JobRunId
    • PhaseId
    • JobId
    • JobType (Deploy o Verify)

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 o RUN.

  • Cluster_GKE

    Per le destinazioni di tipo GKE, il nome completo della risorsa del cluster Google Kubernetes Engine, ad esempio projects/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.