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 esserestable
.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
Prova la guida rapida al deployment canary.
Scopri come gestire il ciclo di vita dei rollout canary.
Scopri di più sul deployment parallelo.
Scopri di più sulle strategie di deployment di Cloud Deploy.