Defnydd Dedwydd gan ddefnyddio Jenkins-X Istio Flagger
Dedwyddiad Dedwydd
Gobeithiwn y darllenwch rhan gyntaf, lle buom yn egluro'n fyr beth yw gosodiadau Canary a dangos sut i'w gweithredu gan ddefnyddio adnoddau safonol Kubernetes.
Istio
Ac rydym yn cymryd yn ganiataol wrth ddarllen yr erthygl hon eich bod eisoes yn gwybod beth yw Istio. Os na, yna gallwch ddarllen amdano yma.
Cais am brofion
Mae pob pod yn cynnwys dau gynhwysydd: ein cais ac istio-procsi.
Byddwn yn defnyddio cymhwysiad prawf syml gyda phodiau python frontend-nginx a backend. Bydd y pod nginx yn ailgyfeirio pob cais i'r pod backend ac yn gweithio fel dirprwy. Mae manylion i'w cael yn y iamls canlynol:
Os ydych chi am ddilyn fy enghraifft a defnyddio'r cais prawf hwn eich hun, gweler darlleniad prosiect.
Defnydd Cychwynnol
Pan fyddwn yn lansio'r Defnydd cyntaf, gwelwn mai dim ond 2 gynhwysydd sydd gan godiau ein cais, hynny yw, mae car ochr Istio newydd gael ei weithredu:
Ac rydym hefyd yn gweld Istio Gateway Loadbalancer yn y gofod enwau istio-system:
Cynhyrchu traffig
Byddwn yn defnyddio'r IP canlynol i gynhyrchu traffig a fydd yn cael ei dderbyn gan y codennau blaen a'i anfon ymlaen i'r codennau pen Γ΄l:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
Byddwn hefyd yn ychwanegu frontend.istio-test i'n ffeil gwesteiwr.
Gweld rhwyll trwy Kiali
Fe wnaethom osod y cymhwysiad prawf ac Istio ynghyd Γ’ Tracing, Grafana, Prometheus a Kiali (gweler isod am fanylion). darlleniad prosiect). Felly gallwn ddefnyddio Kiali trwy:
istioctl dashboard kiali # admin:admin
Mae Kiali yn delweddu traffig cyfredol trwy Mesh
Fel y gallwn weld, mae 100% o'r traffig yn mynd i'r gwasanaeth frontend, yna i'r codennau blaen gyda label v1, gan ein bod yn defnyddio dirprwy nginx syml sy'n ailgyfeirio ceisiadau i'r gwasanaeth backend, sydd yn ei dro yn eu hailgyfeirio i'r codennau cefn gyda label v1.
Mae Kiali yn gweithio'n wych gydag Istio ac yn darparu datrysiad rendro rhwyll mewn bocsys. Dim ond gwych.
Dedwyddiad Dedwydd
Mae gan ein hΓ΄l-wyneb eisoes ddau ddefnydd k8s, un ar gyfer v1 ac un ar gyfer v2. Nawr does ond angen i ni ddweud wrth Istio am anfon canran benodol o geisiadau i f2.
Cam 1: 10%
A'r cyfan sydd angen i ni ei wneud yw addasu pwysau'r Gwasanaeth Rhithwir i mewn istio.yaml:
Nawr gellir ystyried bod y lleoliad Canary wedi'i gwblhau ac mae'r holl draffig yn cael ei ailgyfeirio i v2:
Profi Canary Γ’ llaw
Gadewch i ni ddweud ein bod nawr yn anfon 2% o'r holl geisiadau i backend v10. Beth os ydym am brofi v2 Γ’ llaw i sicrhau bod popeth yn gweithio fel y disgwyliwn?
Gallwn ychwanegu rheol baru arbennig yn seiliedig ar benawdau HTTP:
Nawr gan ddefnyddio curl gallwn orfodi cais v2 trwy anfon y pennawd:
Bydd ceisiadau heb bennyn yn dal i gael eu gyrru gan y gymhareb 1/10:
Dedwydd am ddau fersiwn dibynnol
Nawr byddwn yn ystyried yr opsiwn lle mae gennym fersiwn v2 ar gyfer blaen ac Γ΄l-wyneb. Ar gyfer y ddau, gwnaethom nodi y dylai 10% o'r traffig fynd i v2:
Gwelwn fod traffig blaen pen blaen v1 a v2 ar gymhareb o 1/10 i ben Γ΄l v1 a v2.
Beth pe bai angen i ni anfon traffig ymlaen o frontend-v2 yn unig i backend-v2 oherwydd nad yw'n gydnaws ag v1? I wneud hyn, byddwn yn gosod cymhareb 1/10 ar gyfer y blaen, sy'n rheoli pa draffig sy'n cyrraedd y backend-v2 gan ddefnyddio negodi sourceLabels :
O ganlyniad, rydym yn cael yr hyn sydd ei angen arnom:
Gwahaniaethau oddi wrth y dull Canary Γ’ llaw
Π y rhan gyntaf Fe wnaethom berfformio defnydd Canary Γ’ llaw, gan ddefnyddio dau k8s hefyd. Yno buom yn rheoli cymhareb y ceisiadau drwy newid nifer y copΓ―au. Mae'r dull hwn yn gweithio, ond mae ganddo anfanteision difrifol.
Mae Istio yn ei gwneud hi'n bosibl pennu cymhareb y ceisiadau waeth beth fo nifer y copΓ―au. Mae hyn yn golygu, er enghraifft, y gallwn ddefnyddio HPAs (Horizontal Pod Autoscalers) ac nad oes angen eu ffurfweddu yn unol Γ’ chyflwr presennol y defnydd o Dedwydd.
Cyfanswm
Mae Istio yn gweithio'n wych ac mae ei ddefnyddio ynghyd Γ’ Kiali yn gyfuniad pwerus iawn. Nesaf ar fy rhestr o ddiddordebau mae cyfuno Spinnaker ag Istio ar gyfer awtomeiddio a dadansoddeg Dedwydd.