Strategie di distribuzione per Kubernetes in Azure Pipelines

Azure DevOps Services

L'attività manifesto kubernetes attualmente supporta la strategia di distribuzione canary. Questo documento illustra le linee guida e le procedure consigliate per l'utilizzo di questa attività per la configurazione di distribuzioni canary in Kubernetes.

Panoramica della strategia di distribuzione canary

È possibile usare la strategia di distribuzione canary per distribuire parzialmente le nuove modifiche in modo che le nuove modifiche coesistano con le distribuzioni correnti prima di un'implementazione completa. In questa fase, in genere viene eseguito un controllo e un confronto finali delle due versioni. Durante questa fase, sono disponibili controlli di integrità delle applicazioni e monitoraggio delle prestazioni usando metriche originate da entrambe le versioni. Se il canary viene trovato almeno alla pari o superiore alla versione attualmente distribuita, viene avviata un'implementazione completa delle nuove modifiche. Se si verifica un peggioramento delle prestazioni del canary rispetto alle versioni attualmente distribuite, le nuove modifiche vengono rifiutate e viene evitata un'implementazione completa, che potrebbe causare la regressione.

Distribuzioni canary per Kubernetes

La relazione del selettore di etichette tra pod e servizi in Kubernetes consente di configurare le distribuzioni in modo che un singolo servizio instrada le richieste alle varianti stabili e canary. L'attività manifesto Kubernetes usa questa funzionalità per facilitare le distribuzioni canary.

  • Se all'attività vengono forniti gli input action: deploystrategy: canarydi e , per ogni carico di lavoro (Distribuzione, ReplicaSet, Pod, ...) definito nei file manifesto di input, -baseline-canary vengono creati un e una variante della distribuzione.
    • Si supponga che esista una sampleapp distribuzione denominata nel file manifesto di input e che dopo il completamento dell'esecuzione numero 22 della pipeline, sampleapp la variante stabile di questa distribuzione denominata viene distribuita nel cluster
    • Nell'esecuzione successiva (in questo caso numero di esecuzione 23), l'attività manifesto Kubernetes action: deploy con e strategy: canary comporta la creazione di distribuzioni sampleapp-baseline e sampleapp-canary il cui numero di repliche percentage è determinato dal prodotto dell'input dell'attività con il valore del numero desiderato di repliche sampleapp per la variante stabile finale di in base ai file manifesto di input
    • Escludendo il numero di repliche, la versione di base ha la stessa configurazione della variante stabile, mentre la versione canary include le nuove modifiche introdotte dall'esecuzione corrente (in questo caso, numero di esecuzione 23)
  • Se un intervento manuale viene configurato nella pipeline dopo il passaggio precedente, potrebbe essere possibile sospendere la pipeline in modo che l'amministratore della pipeline possa valutare le metriche chiave per le versioni di base e canary e prendere la decisione se le modifiche canary sono sicure e sufficientemente buone per un'implementazione completa.
  • action: promote e strategy: canary o action: reject e strategy: canary gli input delle attività del manifesto kubernetes possono essere usati rispettivamente per alzare di livello o rifiutare le modifiche canary. Si noti che in entrambi i casi, alla fine di questo passaggio, solo la variante stabile dei carichi di lavoro dichiarati nei file manifesto di input rimarrà distribuita nel cluster, mentre le versioni di base effimera e canary vengono pulite.

Nota

L'input percentuale indicato in precedenza non comporta la suddivisione del traffico in percentuale, ma si riferisce piuttosto alla percentuale usata per calcolare il numero di repliche per le varianti di base e canary. Le funzionalità di individuazione dei servizi e bilanciamento del carico di una mesh di servizi consentono di ottenere una vera suddivisione del traffico basata su richiesta. Il supporto per le distribuzioni canary che utilizzano service Mesh Interface è attualmente in fase di lavoro e verrà aggiunto all'attività manifesto Kubernetes a breve.

Confrontare canary con baseline e non con una variante stabile

Sebbene sia possibile confrontare una distribuzione canary con la distribuzione di produzione corrente, è meglio confrontare invece il canary con una baseline equivalente. La baseline usa la stessa versione e la stessa configurazione della versione attualmente distribuita. Le varianti canary e baseline sono candidati migliori per il confronto perché sono identiche in termini di:

  • Stesso momento della distribuzione
  • Stesse dimensioni della distribuzione
  • Stesso tipo e quantità di traffico

Questi fattori riducono al minimo gli effetti di altre variabili, ad esempio il tempo di riscaldamento della cache e le dimensioni dell'heap nella variante canary, che potrebbero influire negativamente sull'analisi.

Esempio end-to-end

È disponibile un esempio end-to-end di configurazione delle pipeline di compilazione e rilascio per eseguire distribuzioni canary nei cluster Kubernetes per ogni modifica apportata al codice dell'applicazione. Questo esempio illustra anche l'uso di Prometheus per confrontare le metriche di base e canary quando la pipeline viene sospesa usando un'attività di intervento manuale.