Deplwaman Canary lè l sèvi avèk Jenkins-X Istio Flagger
Nou pral fè deplwaman Canary manyèlman atravè GitOps ak kreye/modifye resous prensipal Kubernetes yo. Atik sa a gen entansyon prensipalman pou entwodiksyon ak ki jan deplwaman travay nan Kubernetes Canary, depi gen metòd pi efikas nan automatisation, ke nou pral konsidere nan atik sa yo.
Avèk estrateji Canary, mizajou yo premye aplike nan sèlman yon ti gwoup itilizatè yo. Atravè siveyans, done boutèy demi lit, tès manyèl, oswa lòt chanèl fidbak, yo teste liberasyon an anvan li lage bay tout itilizatè yo.
Deplwaman Kubernetes (aktyalizasyon woule)
Estrateji default pou Kubernetes Deployment se aktyalizasyon woule, kote yon sèten kantite gous yo lanse ak nouvo vèsyon imaj yo. Si yo te kreye san pwoblèm, gous ak ansyen vèsyon imaj yo sispann, epi nouvo gous yo kreye an paralèl.
GitOps
Nou itilize GitOps nan egzanp sa a paske nou:
lè l sèvi avèk Git kòm yon sèl sous verite
nou itilize Git Operations pou konstwi ak deplwaman (pa gen okenn kòmandman ki pa bezwen git tag/fusion)
Egzanp
Ann pran yon bon pratik - pou gen yon sèl depo pou kòd aplikasyon ak youn pou enfrastrikti.
Repozitwa aplikasyon
Sa a se yon trè senp Python + Flask API ki retounen yon repons kòm JSON. Nou pral bati pake a atravè GitlabCI epi pouse rezilta a nan Rejis Gitlab la. Nan rejis la nou gen de vèsyon lage diferan:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Sèl diferans ki genyen ant yo se chanjman nan dosye JSON retounen an. Nou itilize aplikasyon sa a pou wè pi fasil ke posib ak ki vèsyon n ap kominike.
Depo enfrastrikti
Nan Navèt sa a nou pral deplwaye atravè GitlabCI nan Kubernetes, .gitlab-ci.yml sanble tankou sa a:
Nou pouse chanjman sa yo nan depo a ki soti nan ki deplwaman an pral kòmanse (via GitlabCI) epi wè kòm yon rezilta:
Sèvis nou an pral lonje dwèt sou tou de deplwaman yo, paske tou de gen seleksyon aplikasyon an. Akòz owaza default Kubernetes, nou ta dwe wè repons diferan pou ~ 10% demann:
Eta aktyèl aplikasyon nou an (GitOps, pran nan Git kòm yon sèl sous verite) se prezans de deplwaman ak kopi aktif, youn pou chak vèsyon.
~ 10% itilizatè yo vin abitye ak yon nouvo vèsyon epi teste li san entansyon. Kounye a se tan pou tcheke pou erè nan mòso bwa yo ak done siveyans pou jwenn pwoblèm.
Etap 2: Lage nouvo vèsyon an bay tout itilizatè yo
Nou deside ke tout bagay ale byen e kounye a, nou bezwen woule nouvo vèsyon an bay tout itilizatè yo. Pou fè sa nou tou senpleman mete ajou deploy.yaml enstale yon nouvo vèsyon imaj la ak kantite kopi ki egal a 10. Nan deploy-canary.yaml nou mete kantite kopi tounen nan 0. Apre deplwaman, rezilta a pral jan sa a:
Adisyon moute
Pou m ', kouri deplwaman an manyèlman fason sa a ede konprann ki jan fasil li ka configuré lè l sèvi avèk k8s. Depi Kubernetes pèmèt ou mete ajou tout bagay atravè yon API, etap sa yo ka otomatize atravè scripts.
Yon lòt bagay ki bezwen aplike se yon pwen antre tèsteur (LoadBalancer oswa atravè Ingress) atravè ki sèlman nouvo vèsyon an ka jwenn aksè. Li ka itilize pou Navigasyon manyèl.
Nan pwochen atik, nou pral tcheke lòt solisyon otomatik ki aplike pi fò nan sa nou te fè.