Deployment canary personalizzati

Questo documento descrive come configurare e utilizzare i deployment canary personalizzati per eseguire il deployment delle applicazioni in tutti i tipi di target utilizzando Cloud Deploy.

Come funzionano i deployment canary personalizzati

Quando esegui il deployment utilizzando una strategia di deployment canary personalizzata, Cloud Deploy non modifica i manifest per facilitare la configurazione di bilanciamento del traffico scelta. Invece, sei responsabile della fornitura di manifest che vengono applicati al runtime di destinazione per ogni fase canary.

Assicurati di disporre delle autorizzazioni necessarie

Oltre alle altre autorizzazioni Identity and Access Management necessarie per utilizzare Cloud Deploy, devi disporre delle seguenti autorizzazioni per eseguire azioni aggiuntive che potrebbero essere necessarie per un deployment canary:

  • clouddeploy.rollouts.advance
  • clouddeploy.rollouts.ignoreJob
  • clouddeploy.rollouts.cancel
  • clouddeploy.rollouts.retryJob
  • clouddeploy.jobRuns.get
  • clouddeploy.jobRuns.list
  • clouddeploy.jobRuns.terminate

Per ulteriori informazioni sui ruoli disponibili che includono queste autorizzazioni, consulta Ruoli e autorizzazioni IAM.

Prepara il tuo skaffold.yaml

Il file skaffold.yaml definisce la modalità di rendering e deployment dei manifest. Per un deployment canary personalizzato, devi definire i profili associati a ogni fase canary per facilitare la configurazione di bilanciamento del traffico scelta. Questi profili sono mappati alle fasi nella configurazione della strategia della pipeline di distribuzione.

Di seguito è riportata una configurazione skaffold.yaml di esempio utilizzata da un canary personalizzato:

apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: canary-25
  manifests:
    rawYaml:
    - canary-25-resources.yaml
- name: canary-50
  manifests:
    rawYaml:
    - canary-50-resources.yaml
- name: stable
  manifests:
    rawYaml:
    - stable-resources.yaml

Configura un canary personalizzato

Con la configurazione canary personalizzata, specifica quanto segue nella definizione della pipeline di distribuzione:

  • Nomi delle fasi di implementazione

    In un canary completamente automatizzato, Cloud Deploy assegna i nomi alle fasi (ad esempio canary-25, canary-75, stable). Con un canary personalizzato, tuttavia, puoi assegnare a ogni fase un nome qualsiasi, purché sia univoco tra tutte le fasi di questa fase canary e rispetti le limitazioni dell'ID risorsa. ma il nome della fase finale (100%) deve essere stable.

  • Obiettivi percentuali per ogni fase

    Specifica le percentuali separatamente, per fase.

  • Profili Skaffold da utilizzare per la fase

    Puoi utilizzare un profilo Skaffold separato per ogni fase o lo stesso profilo oppure qualsiasi combinazione. e ogni profilo può utilizzare una definizione di servizio Cloud Run diversa. Puoi anche utilizzare più di un profilo per una determinata fase. Cloud Deploy li combina.

  • Indica se esiste un job di verifica per la fase

    Ricorda che se attivi la verifica, devi configurare anche il tuo skaffold.yaml per la verifica.

  • Se sono presenti job pre-deployment o post-deployment per la fase

    Se abiliti i job pre-deploy o post-deploy, devi configurare il tuo skaffold.yaml per questi job.

Elementi di configurazione canary personalizzati

Il seguente codice YAML mostra la configurazione per le fasi del deployment canary completamente personalizzato:

strategy:
  canary:
    # Custom configuration for each canary phase
    customCanaryDeployment:
      phaseConfigs:
      - phaseId: "PHASE1_NAME"
        percentage: PERCENTAGE1
        profiles: [ "PROFILE_NAME" ]
        verify: true | false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify: true|false
        predeploy:
          actions: "PREDEPLOY_ACTION"
        postdeploy:
          actions: "POSTDEPLOY_ACTION"

In questo YAML

  • PHASE1_NAME

    È il nome della fase. Ogni nome di fase deve essere univoco.

  • [ "PROFILE_NAME" ]

    È il nome del profilo da utilizzare per la fase. Puoi utilizzare lo stesso profilo per ogni fase o uno diverso per ciascuna o qualsiasi combinazione. Inoltre, puoi specificare più di un profilo. Cloud Deploy utilizza tutti i profili specificati, più il profilo o il manifest utilizzato dalla fase complessiva.

  • stable

    La fase finale deve essere denominata stable.

  • PERCENTAGE1

    È la percentuale di deployment per la prima fase. Ogni fase deve avere una percentuale univoca, che deve essere un numero intero (non 10.5, ad esempio) e le fasi devono essere in ordine crescente.

  • verify: true|false

    Indica a Cloud Deploy se includere un job di verifica per la fase. Tieni presente che per ogni fase da utilizzare per la verifica, Skaffold utilizza lo stesso profilo per la verifica specificata per il rendering e il deployment per quella fase.

  • PREDEPLOY_ACTION

    È uguale al ACTION_NAME che hai utilizzato in skaffold.yaml per definire l'azione personalizzata che vuoi eseguire prima del deployment.

  • POSTDEPLOY_ACTION

    È uguale a ACTION_NAME che hai utilizzato in skaffold.yaml per definire l'azione personalizzata che vuoi eseguire dopo il deployment.

La percentuale per l'ultima fase deve essere 100. Le fasi vengono eseguite nell'ordine in cui le configuri in questa sezione customCanaryDeployment, ma se i valori percentuali non sono in ordine crescente, il comando per registrare la pipeline di distribuzione non va a buon fine e viene visualizzato un errore.

Tieni presente che la configurazione di un canary personalizzato non include una sezione runtimeConfig. Se includi runtimeConfig, viene considerato un canary automatizzato personalizzato.

Passaggi successivi