Defnydd Dedwydd gan ddefnyddio Jenkins-X Istio Flagger
Dedwyddiad Dedwydd
Gobeithiwn y darllenwch rhan gyntaf, lle yr eglurasom yn fyr beth yw Canary Deployments. Fe wnaethom hefyd ddangos sut i'w weithredu gan ddefnyddio adnoddau safonol Kubernetes.
Cyflwyno Argo
Mae Argo Rollouts yn rheolwr lleoli brodorol Kubernetes. Mae'n darparu CRD (Diffiniad o Adnoddau Cwsmer) ar gyfer Kubernetes. Diolch iddo, gallwn ddefnyddio endid newydd: Rollout, sy'n rheoli gosodiadau glaswyrdd a chaneri gyda gwahanol opsiynau ffurfweddu.
Rheolydd Argo Rollouts a ddefnyddir gan adnodd wedi'i deilwra Rollout, Yn caniatáu ar gyfer strategaethau defnyddio ychwanegol fel gwyrddlas a chaneri ar gyfer Kubernetes. Adnodd Rollout yn darparu ymarferoldeb cyfatebol Deployment, dim ond gyda strategaethau defnyddio ychwanegol.
adnodd Deployments Mae ganddi ddwy strategaeth ar gyfer eu defnyddio: RollingUpdate и Recreate. Er bod y strategaethau hyn yn addas ar gyfer y rhan fwyaf o achosion, i'w defnyddio ar weinyddion ar raddfa fawr iawn, defnyddir strategaethau ychwanegol, fel glaswyrdd neu caneri, nad ydynt ar gael yn y rheolydd Defnyddio. Er mwyn defnyddio'r strategaethau hyn yn Kubernetes, roedd yn rhaid i ddefnyddwyr ysgrifennu sgriptiau ar ben eu Defnyddiau. Mae Rheolwr Cyflwyno Argo yn datgelu'r strategaethau hyn fel paramedrau syml, datganiadol, ffurfweddadwy. https://argoproj.github.io/argo-rollouts
Mae yna hefyd Argo CI, sy'n darparu rhyngwyneb gwe cyfleus i'w ddefnyddio gyda Rollouts, byddwn yn edrych ar hynny yn yr erthygl nesaf.
Yn ein maip seilwaith (gweler isod) rydym eisoes wedi ychwanegu install.yaml fel i/k8s/argo-rollouts/install.yaml. Fel hyn bydd GitlabCI yn ei osod yn y clwstwr.
Mae hwn yn API Python + Ffasg syml iawn sy'n dychwelyd ymateb fel JSON. Byddwn yn adeiladu'r pecyn gan ddefnyddio GitlabCI ac yn gwthio'r canlyniad i Gofrestrfa Gitlab. Yn y gofrestrfa mae gennym ddau fersiwn rhyddhau gwahanol:
wuestkamp/k8s-deployment-example-app: v1
wuestkamp/k8s-deployment-example-app: v2
Yr unig wahaniaeth rhyngddynt yw'r ffeil JSON a ddychwelwyd. Rydym yn defnyddio'r cymhwysiad hwn i ddelweddu mor hawdd â phosibl pa fersiwn yr ydym yn cyfathrebu ag ef.
Ystorfa seilwaith
Yn y storfa hon byddwn yn defnyddio GitlabCI i'w ddefnyddio i Kubernetes, mae .gitlab-ci.yml yn edrych fel hyn:
Rollout yn gweithio yr un fath â Deployment. Os na fyddwn yn gosod strategaeth ddiweddaru (fel caneri yma) bydd yn ymddwyn fel y rhagosodedig Defnyddio diweddariad treigl.
Rydym yn diffinio dau gam yn yaml ar gyfer defnyddio caneri:
10% o'r traffig i'r caneri (arhoswch am â llaw yn iawn)
50% o draffig i'r caneri (aros 2 funud ac yna parhau i 100%)
Perfformio lleoli cychwynnol
Ar ôl y defnydd cychwynnol, bydd ein hadnoddau yn edrych fel hyn:
A dim ond o fersiwn gyntaf y cais rydyn ni'n cael ymateb:
Perfformio Defnydd Canary
Cam 1: 10% traffig
I ddechrau defnyddio caneri, does ond angen i ni newid fersiwn y ddelwedd fel rydyn ni'n ei wneud fel arfer gyda gosodiadau:
Rwy'n argymell y fideo hwn yn fawr, mae'n dangos sut mae Argo Rollouts ac Argo CI yn gweithio gyda'i gilydd:
Cyfanswm
Rwy'n hoff iawn o'r syniad o ddefnyddio CRDs sy'n rheoli creu mathau ychwanegol o leoliadau neu atgynhyrchiadau, ailgyfeirio traffig, ac ati. Mae gweithio gyda nhw yn mynd yn esmwyth. Nesaf hoffwn brofi'r integreiddio ag Argo CI.
Fodd bynnag, mae'n ymddangos bod cyfuniad mawr o Argo CI a Flux CI yn dod, felly efallai y byddaf yn aros nes bydd y datganiad newydd yn dod allan: Fflwcs Argo.
Ydych chi wedi cael unrhyw brofiad gydag Argo Rollouts neu Argo CI?