Aiwatar da Canary ta amfani da Jenkins-X Istio Flagger
Canary turawa
Muna fatan kun karanta kashi na farko, Inda muka yi bayani a taƙaice abin da Canary deployments ne kuma ya nuna yadda ake aiwatar da su ta amfani da daidaitattun albarkatun Kubernetes.
Istio
Kuma muna ɗauka cewa ta hanyar karanta wannan labarin kun riga kun san menene Istio. Idan ba haka ba, to kuna iya karantawa game da shi a nan.
Aikace-aikacen gwaji
Kowane kwasfa ya ƙunshi kwantena guda biyu: aikace-aikacen mu da istio-proxy.
Za mu yi amfani da aikace-aikacen gwaji mai sauƙi tare da frontend-nginx da python pods na baya. Kwamfutar nginx kawai za ta sake tura kowane buƙatu zuwa ga kwaf ɗin baya kuma yayi aiki azaman wakili. Ana iya samun cikakkun bayanai a cikin wadannan yamls:
Idan kuna son bin misalina kuma kuyi amfani da wannan aikace-aikacen gwaji da kanku, duba karatun aikin.
Tushen Farko
Lokacin da muka ƙaddamar da ƙaddamarwa na farko, mun ga cewa kwas ɗin aikace-aikacenmu suna da kwantena 2 kawai, wato, Istio sidecar ana aiwatar da shi:
Za mu yi amfani da IP mai zuwa don samar da zirga-zirgar zirga-zirgar da za a karɓa ta gabas na gaba kuma a tura su zuwa faifan baya:
while true; do curl -s --resolve 'frontend.istio-test:80:35.242.202.152' frontend.istio-test; sleep 0.1; done
Za mu kuma ƙara frontend.istio-test zuwa fayil ɗin rundunanmu.
Duba Mesh ta hanyar Kiali
Mun shigar da aikace-aikacen gwaji da Istio tare da Tracing, Grafana, Prometheus da Kiali (duba ƙasa don cikakkun bayanai). karatun aikin). Don haka za mu iya amfani da Kiali ta hanyar:
istioctl dashboard kiali # admin:admin
Kiali yana hango zirga-zirga na yanzu ta hanyar Mesh
Kamar yadda muke iya gani, 100% na zirga-zirga yana zuwa sabis na gaba, sannan zuwa gadaje na gaba tare da lakabin v1, tunda muna amfani da wakili na nginx mai sauƙi wanda ke tura buƙatun zuwa sabis na baya, wanda hakan yana tura su zuwa kwas ɗin baya. tare da alamar v1.
Kiali yana aiki da kyau tare da Istio kuma yana ba da mafita mai ma'ana ta Mesh. Mai girma kawai.
Canary turawa
Tushen mu na baya ya riga yana da jigilar k8s guda biyu, ɗaya don v1 kuma ɗaya don v2. Yanzu kawai muna buƙatar gaya wa Istio don tura wani kaso na buƙatun zuwa v2.
Mataki na 1: 10%
Kuma duk abin da muke buƙatar yi shine daidaita nauyin VirtualService a ciki istio.yaml:
Yanzu ana iya ɗaukar jigilar Canary cikakke kuma duk zirga-zirga ana karkata zuwa v2:
Gwajin Canary da hannu
Bari mu ce yanzu mun aika 2% na duk buƙatun zuwa v10 backend. Idan muna son gwada v2 da hannu don tabbatar da cewa komai yana aiki kamar yadda muke tsammani?
Za mu iya ƙara ƙa'idar da ta dace ta musamman dangane da taken HTTP:
Yanzu ta amfani da curl za mu iya tilasta buƙatar v2 ta hanyar aika taken:
Buƙatun ba tare da kan kai ba har yanzu za a gudanar da su ta hanyar rabon 1/10:
Canary don nau'ikan dogaro biyu
Yanzu za mu yi la'akari da zaɓin inda muke da sigar v2 don duka gaba da baya. Ga duka biyun, mun ayyana cewa 10% na zirga-zirga ya kamata zuwa v2:
Mun ga wancan gaban v1 da v2 duka zirga-zirgar gaba a cikin rabo na 1/10 zuwa v1 da v2.
Menene idan muna buƙatar tura zirga-zirga daga gaba-v2 kawai zuwa backend-v2 saboda bai dace da v1 ba? Don yin wannan, za mu saita rabo na 1/10 don gaban gaba, wanda ke sarrafa abin da zirga-zirgar zirga-zirgar ke kaiwa zuwa baya-v2 ta amfani da shawarwari. sourceLabels :
В bangare na farko Mun yi jigilar Canary da hannu, kuma mun yi amfani da jigilar k8s guda biyu. A can mun sarrafa rabon buƙatun ta hanyar canza adadin kwafi. Wannan tsarin yana aiki, amma yana da babban lahani.
Istio yana ba da damar tantance ƙimar buƙatun ba tare da la'akari da adadin kwafi ba. Wannan yana nufin, alal misali, cewa zamu iya amfani da HPAs (Horizontal Pod Autoscalers) kuma bamu buƙatar daidaitawa gwargwadon halin yanzu na tura Canary.
Sakamakon
Istio yana aiki mai girma kuma amfani dashi tare da Kiali yana haifar da haɗin gwiwa mai ƙarfi. Na gaba akan jerin abubuwan bukatu na shine hada Spinnaker tare da Istio don sarrafa kansa da ƙididdigar Canary.