Defnydd Dedwydd gan ddefnyddio Jenkins-X Istio Flagger
Byddwn yn perfformio'r defnydd Canary â llaw trwy GitOps ac yn creu / addasu prif adnoddau Kubernetes. Mae'r erthygl hon wedi'i bwriadu'n bennaf i'w chyflwyno gyda sut mae lleoli yn gweithio yn Kubernetes Canary, gan fod yna ddulliau mwy effeithiol o awtomeiddio, y byddwn yn eu hystyried yn yr erthyglau canlynol.
Gyda'r strategaeth Canary, dim ond i is-set o ddefnyddwyr y caiff diweddariadau eu cymhwyso'n gyntaf. Trwy fonitro, data log, profion â llaw, neu sianeli adborth eraill, caiff y datganiad ei brofi cyn ei ryddhau i bob defnyddiwr.
Defnydd Kubernetes (diweddariad treigl)
Y strategaeth ddiofyn ar gyfer Kubernetes Deploy yw diweddariad treigl, lle mae nifer penodol o godennau'n cael eu lansio gyda fersiynau newydd o'r delweddau. Os cawsant eu creu heb broblemau, mae codennau gyda hen fersiynau o ddelweddau yn cael eu terfynu, a chrëir codennau newydd ochr yn ochr.
GitOps
Rydym yn defnyddio GitOps yn yr enghraifft hon oherwydd ein bod yn:
defnyddio Git fel un ffynhonnell o wirionedd
rydym yn defnyddio Git Operations ar gyfer adeiladu a defnyddio (nid oes angen unrhyw orchmynion heblaw tag git / uno)
Enghraifft
Gadewch i ni gymryd arfer da - i gael un ystorfa ar gyfer cod cais ac un ar gyfer seilwaith.
Ystorfa cais
Mae hwn yn API Python + Ffasg syml iawn sy'n dychwelyd ymateb fel JSON. Byddwn yn adeiladu'r pecyn trwy 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 newid yn y 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 maip hwn byddwn yn anfon trwy GitlabCI i Kubernetes, .gitlab-ci.yml fel a ganlyn:
Rydym yn gwthio'r newidiadau hyn i'r ystorfa y bydd y defnydd yn cychwyn ohoni (trwy GitlabCI) ac yn gweld o ganlyniad:
Bydd ein Gwasanaeth yn cyfeirio at y ddau ddefnydd, gan fod gan y ddau ddewiswr ap. Oherwydd haposodiad diofyn Kubernetes, dylem weld gwahanol ymatebion ar gyfer ~10% o geisiadau:
Cyflwr presennol ein cais (GitOps, a gymerwyd o Git fel Un Ffynhonnell Gwirionedd) yw presenoldeb dau ddefnydd gyda chopïau gweithredol, un ar gyfer pob fersiwn.
~ Mae 10% o ddefnyddwyr yn dod yn gyfarwydd â fersiwn newydd ac yn ei brofi'n anfwriadol. Nawr yw'r amser i wirio am wallau yn y logiau a monitro data i ddod o hyd i broblemau.
Cam 2: Rhyddhewch y fersiwn newydd i bob defnyddiwr
Fe wnaethon ni benderfynu bod popeth wedi mynd yn dda a nawr mae angen i ni gyflwyno'r fersiwn newydd i bob defnyddiwr. I wneud hyn rydym yn syml yn diweddaru deploy.yaml gosod fersiwn newydd o'r ddelwedd a nifer y replicas hafal i 10. Yn deploy-canary.yaml rydym yn gosod nifer y copïau yn ôl i 0. Ar ôl eu defnyddio, bydd y canlyniad fel a ganlyn:
Crynhoi
I mi, mae rhedeg y gosodiad â llaw fel hyn yn helpu i ddeall pa mor hawdd y gellir ei ffurfweddu gan ddefnyddio k8s. Gan fod Kubernetes yn caniatáu ichi ddiweddaru popeth trwy API, gellir awtomeiddio'r camau hyn trwy sgriptiau.
Peth arall y mae angen ei weithredu yw pwynt mynediad profwr (LoadBalancer neu trwy Ingress) lle gellir cyrchu'r fersiwn newydd yn unig. Gellir ei ddefnyddio ar gyfer pori â llaw.
Mewn erthyglau yn y dyfodol, byddwn yn edrych ar atebion awtomataidd eraill sy'n gweithredu'r rhan fwyaf o'r hyn yr ydym wedi'i wneud.