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 saperne di più sui ruoli disponibili che includono queste autorizzazioni, consulta Ruoli e autorizzazioni IAM.

Preparare skaffold.yaml

Il file skaffold.yaml definisce il rendering e il 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. Tuttavia, 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.

  • Se esiste un job di verifica per la fase

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

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:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]
      - 
      - phaseId: "stable"
        percentage: 100
        profiles: [ "LAST_PROFILE_NAME" ]
        verify:
          tasks: [TASKS]
        predeploy:
          tasks: [TASKS]
        postdeploy:
          tasks: [TASKS]

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 (ad esempio, non 10.5) e le fasi devono essere in ordine crescente.

  • Puoi abilitare la verifica del deployment configurando la sezione verify. Se lo fai, alla fase viene aggiunto un job verify.

  • Puoi abilitare gli hook di pre-deployment configurando la sezione predeploy. Se lo fai, alla fase viene aggiunto un lavoro predeploy.

  • Puoi attivare gli hook post-deployment configurando la stanza postdeploy. Se lo fai, alla fase viene aggiunto un lavoro postdeploy.

  • La proprietà tasks in verify, predeploy e postdeploy è costituita da una o più attività da eseguire nell'ambito del job. Tutte le attività configurate vengono eseguite in sequenza nell'ordine in cui sono definite.

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 riesce 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