Istaraatiijiyada Canary-ga, cusbooneysiinta waxaa marka hore lagu dabaqaa qayb-hoosaad isticmaalayaasha ah. Iyadoo loo marayo la socodka, xogta log, tijaabinta gacanta, ama kanaalada kale ee jawaab celinta, siideynta waa la tijaabiyaa ka hor inta aan loo sii deyn dhammaan isticmaalayaasha.
Kubernetes Deployment (cusboonaysiinta duubista)
Istaraatiijiyadda caadiga ah ee Kubernetes Deployment waa dib-u-cusbooneysiin, halkaas oo tiro go'an oo tufaax ah lagu bilaabay noocyo cusub oo sawirro ah. Haddii la abuuray dhibaato la'aan, galalka leh muuqaallo hore oo muuqaal ah ayaa la joojiyaa, iyo tufaaxyo cusub ayaa la abuuray si isku mid ah.
GitOps
Tusaalahan waxaan u isticmaalnaa GitOps sababtoo ah:
iyadoo la adeegsanayo Git sida isha kaliya ee runta
Waxaan u isticmaalnaa Git Operations dhisidda iyo geynta (wax amar ah oo aan ahayn git tag/mideynta looma baahna)
Tusaale:
Aynu qaadano dhaqan wanaagsan - in aan haysano hal kayd oo code code ah iyo mid kaabayaasha dhaqaalaha ah.
Kaydka codsiga
Kani waa Python+Flask API aad u fudud oo u soo celisa jawaabta JSON ahaan. Waxaan ku dhisi doonaa xirmada iyada oo loo sii marayo GitlabCI oo aan natiijada u riixno Diiwaanka Gitlab. Diiwaanka waxaan ku haynaa laba nooc oo sii dayn ah:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Farqiga keliya ee u dhexeeya waa isbeddelka faylka JSON ee la soo celiyay. Waxaan u isticmaalnaa arjigan si aan ugu sawirno sida ugu fudud ee suurtogalka ah nooca aan kula xiriireyno.
Ogsoonow in abka-deploy-ku aanu lahayn wax nuqul ah oo la qeexay weli.
Samaynta geynta bilowga ah
Si aad u bilowdo hawlgelinta bilowga ah, waxaad gacanta ku bilaabi kartaa dhuumaha GitlabCI ee laanta sare. Intaa ka dib kubectl waa inay soo saartaa kuwan soo socda:
Waan aragnaa app keenista 10 replicas iyo app-canary oo leh 0. Waxa kale oo jira LoadBalancer kaas oo aanu ka heli karno curl iyada oo loo marayo IP-ga Dibadda:
while true; do curl -s 35.198.149.232 | grep label; sleep 0.1; done
Waxaan aragnaa in codsigayaga imtixaanku uu kaliya soo celinayo "v1".
Fulinta hawlgalinta Canary
Talaabada 1: sii daayo version cusub ee isticmaalayaasha qaarkood
Waxaanu isbeddeladan ku riixaynaa bakhaarka ay ka bilaabmi doonto diritaanka (iyada oo loo marayo GitlabCI) oo aan aragno natiijada:
Adeegeena wuxuu tilmaami doonaa labada diritaan, maadaama labaduba ay leeyihiin xulashada abka. Sababo la xiriira kala soocida caadiga ah ee Kubernetes, waa inaan aragnaa jawaabo kala duwan ~ 10% codsiyada:
Xaaladda hadda ee codsigeena (GitOps, oo laga soo qaatay Git oo ah Isha Kaliya ee Runta) waa joogitaanka laba dirid oo wata nuqulo firfircoon, mid nooc kasta ah.
~ 10% isticmaalayaashu waxay barteen nooc cusub oo si ula kac ah ayey u tijaabiyaan. Hadda waa waqtigii la hubin lahaa khaladaadka ku jira diiwaanka iyo la socodka xogta si loo helo dhibaatooyinka.
Tallaabada 2: U sii daayo nooca cusub dhammaan isticmaalayaasha
Waxaan go'aansanay in wax walba si wanaagsan u dhaceen oo hadda waxaan u baahanahay inaan u soo saarno nooca cusub dhammaan isticmaalayaasha. Si tan loo sameeyo waxaan si fudud u cusbooneysiineynaa deploy.yaml rakibidda nooc cusub oo sawirka ah iyo tirada nuqullada oo le'eg 10. In deploy-canary.yaml Waxaan dib u dhignay tirada nuqullada 0. Ka dib marka la diro, natiijadu waxay noqon doontaa sida soo socota:
Si loo soo koobo
Aniga ahaan, ku socodsiinta gacanta ku geynta habkan waxay gacan ka geysaneysaa fahamka sida ugu fudud ee loo habeyn karo iyadoo la adeegsanayo k8s. Maadaama Kubernetes ay kuu ogolaato inaad wax walba ku cusboonaysiiso API, tillaabooyinkan waxaa si toos ah loogu samayn karaa qoraallo.
Waxyaabaha kale ee u baahan in la hirgeliyo waa barta gelitaanka tijaabada (LoadBalancer ama iyada oo loo marayo Ingress) kaas oo kaliya lagu heli karo nooca cusub. Waxa loo isticmaali karaa baadhashada gacanta.
Maqaallada mustaqbalka, waxaanu ku eegi doonaa xalalka kale ee tooska ah ee hirgaliya inta badan waxa aanu samaynay.
Sidoo kale akhri maqaallo kale oo ku jira blog-keena: