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.advanceclouddeploy.rollouts.ignoreJobclouddeploy.rollouts.cancelclouddeploy.rollouts.retryJobclouddeploy.jobRuns.getclouddeploy.jobRuns.listclouddeploy.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 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.
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.
stableLa 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 jobverify.Puoi abilitare gli hook di pre-deployment configurando la sezione
predeploy. Se lo fai, alla fase viene aggiunto un lavoropredeploy.Puoi attivare gli hook post-deployment configurando la stanza
postdeploy. Se lo fai, alla fase viene aggiunto un lavoropostdeploy.La proprietà
tasksinverify,predeployepostdeployè 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
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.