Usambazaji wa Canary kwa kutumia Bendera ya Jenkins-X Istio
Usambazaji wa Canary
Tunatumai umesoma sehemu ya kwanza, ambapo tulielezea kwa ufupi nini Canary Deployments ni. Pia tulionyesha jinsi ya kuitekeleza kwa kutumia rasilimali za Kubernetes za kawaida.
Utoaji wa Argo
Argo Rollouts ni kidhibiti asili cha uwekaji cha Kubernetes. Inatoa CRD (Ufafanuzi wa Rasilimali Maalum) kwa Kubernetes. Shukrani kwa hilo, tunaweza kutumia huluki mpya: Rollout, ambayo inasimamia uwekaji wa bluu-kijani na canary na chaguzi mbalimbali za usanidi.
Kidhibiti cha Argo Rollouts kinachotumiwa na rasilimali maalum Rollout, Huruhusu mikakati ya ziada ya utumaji kama vile bluu-kijani na canary kwa Kubernetes. Rasilimali Rollout hutoa utendaji sawa Deployment, tu na mikakati ya ziada ya kusambaza.
rasilimali Deployments ina mikakati miwili ya kupeleka: RollingUpdate и Recreate. Ingawa mikakati hii inafaa kwa hali nyingi, kwa kutumwa kwa seva kwa kiwango kikubwa sana, mikakati ya ziada hutumiwa, kama vile bluu-kijani au canary, ambayo haipatikani katika kidhibiti cha Usambazaji. Ili kutumia mikakati hii katika Kubernetes, watumiaji walilazimika kuandika hati juu ya Usambazaji wao. Kidhibiti cha Utoaji wa Argo hufichua mikakati hii kama vigezo rahisi, vya kutangaza na vinavyoweza kusanidiwa. https://argoproj.github.io/argo-rollouts
Pia kuna Argo CI, ambayo hutoa kiolesura cha wavuti kinachofaa kwa matumizi na Utoaji, tutaangalia hilo katika makala inayofuata.
Katika turnip yetu ya miundombinu (tazama hapa chini) tayari tumeongeza install.yaml kama i/k8s/argo-rollouts/install.yaml. Kwa njia hii GitlabCI itaisakinisha kwenye nguzo.
Hii ni API rahisi sana ya Python+Flask ambayo inarudisha jibu kama JSON. Tutaunda kifurushi kwa kutumia GitlabCI na kusukuma matokeo kwenye Usajili wa Gitlab. Katika Usajili tuna matoleo mawili tofauti ya kutolewa:
wuestkamp/k8s-mfano-programu-ya-upelekaji:v1
wuestkamp/k8s-mfano-programu-ya-upelekaji:v2
Tofauti pekee kati yao ni faili ya JSON iliyorejeshwa. Tunatumia programu hii kuibua kwa urahisi iwezekanavyo ni toleo gani tunawasiliana nalo.
Hifadhi ya miundombinu
Katika hazina hii tutatumia GitlabCI kupeleka Kubernetes, .gitlab-ci.yml inaonekana kama hii:
Rollout inafanya kazi sawa na Usambazaji. Ikiwa hatutaweka mkakati wa kusasisha (kama vile canary hapa) itakuwa kama Usambazaji chaguomsingi wa kusasisha.
Tunafafanua hatua mbili katika yaml kwa uwekaji wa canary:
10% ya trafiki hadi canary (subiri mwongozo Sawa)
50% ya trafiki hadi canary (subiri dakika 2 kisha uendelee hadi 100%)
Kufanya uwekaji wa awali
Baada ya kupelekwa kwa awali, rasilimali zetu zitaonekana kama hii:
Na tunapata jibu tu kutoka kwa toleo la kwanza la programu:
Kufanya Usambazaji wa Canary
Hatua ya 1: 10% ya trafiki
Ili kuanza usambazaji wa canary, tunahitaji tu kubadilisha toleo la picha kama kawaida tunavyofanya na usambazaji:
Ninapendekeza video hii, inaonyesha jinsi Argo Rollouts na Argo CI hufanya kazi pamoja:
Jumla ya
Ninapenda sana wazo la kutumia CRD zinazodhibiti uundaji wa aina za ziada za utumaji au nakala, kuelekeza trafiki, n.k. Kufanya kazi nao huenda vizuri. Ifuatayo ningependa kujaribu ujumuishaji na Argo CI.
Walakini, inaonekana kuna muunganisho mkubwa wa Argo CI na Flux CI unakuja, kwa hivyo naweza kungoja hadi toleo jipya litoke: Argo Flux.
Je, umekuwa na uzoefu wowote na Argo Rollouts au Argo CI?