Miaraka amin'ny paikadin'ny Canary, ny fanavaozam-baovao dia ampiharina amin'ny ampahany amin'ny mpampiasa ihany. Amin'ny alàlan'ny fanaraha-maso, ny angon-drakitra, ny fitsapana amin'ny tanana, na ny fantsona fanehoan-kevitra hafa, ny famoahana dia andrana alohan'ny hamoahana azy amin'ny mpampiasa rehetra.
Kubernetes Deployment (fanavaozana mihodinkodina)
Ny paikadin'ny default ho an'ny Kubernetes Deployment dia fanavaozana mihodinkodina, izay misy pod maromaro atomboka miaraka amin'ny dikan-tsary vaovao. Raha noforonina tsy misy olana izy ireo, dia tapaka ny pods misy sary efa tranainy, ary ny pods vaovao dia noforonina mifanitsy.
mampiasa Git Operations izahay amin'ny fananganana sy fametrahana (tsy misy baiko hafa ankoatra ny git tag/merge)
ohatra
Andao hanao fanao tsara - mba hanana tahiry iray ho an'ny kaody fampiharana ary iray ho an'ny fotodrafitrasa.
Fitehirizam-boky fampiharana
Ity dia Python + Flask API tena tsotra izay mamerina valiny ho JSON. Hanamboatra ny fonosana amin'ny alàlan'ny GitlabCI izahay ary hanosika ny valiny mankany amin'ny Rejistra Gitlab. Ao amin'ny rejisitra dia manana dikan-teny roa samihafa izahay:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Ny hany mahasamihafa azy ireo dia ny fiovan'ny rakitra JSON naverina. Ampiasainay ity fampiharana ity mba hijerena mora foana ny dikan-teny ifampiresahanay.
Fitehirizana fotodrafitrasa
Amin'ity turnip ity dia haparitaka amin'ny alàlan'ny GitlabCI mankany Kubernetes izahay, .gitlab-ci.yml toy izao ity:
Mariho fa tsy mbola misy dika mitovy voafaritra ny app-deploy.
Manatanteraka ny fametrahana voalohany
Mba hanombohana ny fametrahana voalohany dia azonao atao ny manomboka ny fantsona GitlabCI amin'ny tanana amin'ny sampana master. Aorian'izay kubectl dia tokony hamoaka ireto manaraka ireto:
Hitantsika app deployment misy kopia 10 sy app-canary misy 0. Misy ihany koa ny LoadBalancer izay ahafahantsika miditra amin'ny curl amin'ny alàlan'ny IP ivelany:
while true; do curl -s 35.198.149.232 | grep label; sleep 0.1; done
Hitanay fa "v1" ihany no miverina amin'ny fampiharana fitsapana anay.
Manatanteraka ny fametrahana Canary
Dingana 1: mamoaka kinova vaovao ho an'ny mpampiasa sasany
Nametraka ny isan'ny kopia ho 1 ao amin'ny rakitra deploy-canary.yaml sy ny sary kinova vaovao:
Izahay dia manosika ireo fanovana ireo amin'ny tahiry izay hanombohan'ny fametrahana (amin'ny alàlan'ny GitlabCI) ary mahita ny vokatr'izany:
Ny Serivisy dia hanondro ireo fametrahana roa ireo, satria samy manana ny mpifidy fampiharana. Noho ny fanararaotana mahazatra nataon'i Kubernetes dia tokony hahita valiny samihafa isika amin'ny ~10% amin'ny fangatahana:
Ny toetry ny fampiharana ankehitriny (GitOps, nalaina tao amin'ny Git ho loharano tokana amin'ny fahamarinana) dia ny fisian'ny fametrahana roa misy kopia mavitrika, iray isaky ny dikan-teny.
~10% n'ny mpampiasa no lasa zatra kinova vaovao ary nanandrana izany tsy nahy. Fotoana izao hijerena ny lesoka ao amin'ny diary sy ny angona fanaraha-maso hahitana olana.
Dingana 2: Alefaso ny kinova vaovao ho an'ny mpampiasa rehetra
Nanapa-kevitra izahay fa nandeha tsara ny zava-drehetra ary ankehitriny dia mila mamoaka ny kinova vaovao ho an'ny mpampiasa rehetra. Mba hanaovana izany dia manavao fotsiny izahay deploy.yaml fametrahana dika vaovao amin'ny sary sy ny isan'ny replicas mitovy amin'ny 10. In deploy-canary.yaml averinay amin'ny 0 ny isan'ny dika mitovy. Aorian'ny fametrahana dia ho toy izao ny valiny:
To summarize
Ho ahy, ny fampandehanana ny fametrahana amin'ny tanana amin'ity fomba ity dia manampy amin'ny fahazoana ny fomba mora azo ampiasaina amin'ny fampiasana k8s. Koa satria mamela anao hanavao ny zava-drehetra amin'ny alàlan'ny API ny Kubernetes, dia azo atao ho azy amin'ny alàlan'ny script ireo dingana ireo.
Ny zavatra iray hafa tokony hampiharina dia ny fidirana amin'ny tester (LoadBalancer na amin'ny alàlan'ny Ingress) izay ny dikan-teny vaovao ihany no azo idirana. Azo ampiasaina amin'ny fitetezana tanana izy io.
Amin'ny lahatsoratra ho avy dia hijery vahaolana mandeha ho azy hafa izay mampihatra ny ankamaroan'ny zavatra vitantsika isika.
Vakio ihany koa lahatsoratra hafa ao amin'ny bilaoginay: