Deplwaman Canary lè l sèvi avèk Jenkins-X Istio Flagger
Deplwaman Canary
Nou espere ou li premye pati, kote nou te eksplike yon ti tan ki sa Canary Deployment yo ye. Nou te montre tou kijan pou aplike li lè l sèvi avèk resous estanda Kubernetes.
Argo déploiement
Argo Rollouts se yon kontwolè deplwaman natif natal Kubernetes. Li bay yon CRD (Definisyon Resous Custom) pou Kubernetes. Mèsi a li, nou ka itilize yon nouvo antite: Rollout, ki jere deplwaman ble-vèt ak Canary ak divès opsyon konfigirasyon.
Argo Rollouts kontwolè itilize pa yon resous koutim Rollout, Pèmèt estrateji deplwaman adisyonèl tankou ble-vèt ak Canary pou Kubernetes. Resous Rollout bay ekivalan fonksyonalite Deployment, sèlman ak estrateji deplwaman adisyonèl.
resous Deployments gen de estrateji pou deplwaman: RollingUpdate и Recreate. Malgre ke estrateji sa yo apwopriye pou pifò ka yo, pou deplwaman sou sèvè sou yon echèl trè gwo, yo itilize estrateji adisyonèl, tankou ble-vèt oswa Canary, ki pa disponib nan kontwolè Deplwaman an. Pou itilize estrateji sa yo nan Kubernetes, itilizatè yo te oblije ekri scripts sou Deplwaman yo. Argo Rollouts Controller la ekspoze estrateji sa yo kòm paramèt senp, deklaratif, configurable. https://argoproj.github.io/argo-rollouts
Genyen tou Argo CI, ki bay yon koòdone entènèt pratik pou itilize ak Rollouts, nou pral pran yon gade nan sa nan pwochen atik la.
Nan navèt enfrastrikti nou an (gade anba a) nou te deja ajoute install.yaml kòm i/k8s/argo-rollouts/install.yaml. Nan fason sa a GitlabCI pral enstale li nan gwoup la.
Sa a se yon trè senp Python + Flask API ki retounen yon repons kòm JSON. Nou pral konstwi pake a lè l sèvi avèk 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 dosye a JSON retounen. Nou itilize aplikasyon sa a pou wè pi fasil ke posib ak ki vèsyon n ap kominike.
Depo enfrastrikti
Nan depo sa a nou pral sèvi ak GitlabCI pou deplwaman nan Kubernetes, .gitlab-ci.yml sanble sa a:
Rollout travay menm jan ak Deplwaman. Si nou pa mete yon estrateji aktyalizasyon (tankou Canary isit la) li pral konpòte tankou Deplwaman defo rolling-update a.
Nou defini de etap nan yaml pou deplwaman Canary:
10% trafik pou Canary (tann manyèl OK)
50% trafik nan Canary (tann 2 minit epi kontinye a 100%)
Fè premye deplwaman
Apre premye deplwaman an, resous nou yo ap parèt tankou sa a:
Epi nou jwenn yon repons sèlman nan premye vèsyon aplikasyon an:
Fè deplwaman Canary
Etap 1: 10% trafik
Pou kòmanse yon deplwaman Canary, nou jis bezwen chanje vèsyon imaj la jan nou anjeneral fè ak deplwaman:
Mwen vrèman rekòmande videyo sa a, li montre kouman Argo Rollouts ak Argo CI travay ansanm:
Total
Mwen vrèman renmen lide pou sèvi ak CRD ki jere kreyasyon lòt kalite deplwaman oswa kopi, redireksyon trafik, elatriye. Travay ak yo ale san pwoblèm. Apre sa, mwen ta renmen teste entegrasyon an ak Argo CI.
Sepandan, sanble gen yon gwo fizyon Argo CI ak Flux CI ap vini, kidonk mwen ta ka tann jiskaske nouvo lage a soti: Argo Flux.
Èske w te gen eksperyans ak Argo Rollouts oswa Argo CI?