Qaphela ukuhumusha: Lokhu kubuka konke okuvela ku-Weaveworks kwethula amasu okukhishwa kohlelo lokusebenza adume kakhulu futhi kukhombisa ukuthi lawo athuthuke kakhulu angasetshenziswa kanjani kusetshenziswa u-opharetha we-Kubernetes Flagger. Ibhalwe ngolimi olulula futhi iqukethe imidwebo ebonakalayo evumela ngisho nonjiniyela abasafufusa ukuthi baqonde udaba.
Umdwebo uthathwe ku
Enye yezinselelo ezinkulu ekuthuthukiseni izinhlelo zokusebenza zomdabu zamafu namuhla ukusheshisa ukuthunyelwa. Ngendlela ye-microservices, abathuthukisi sebevele basebenza futhi futhi baklama izinhlelo zokusebenza eziyi-modular ngokuphelele, okuvumela amaqembu ahlukene ukuthi abhale kanyekanye ikhodi futhi enze izinguquko kuhlelo lokusebenza.
Ukuthunyelwa okufushane nokuvamile kunezinzuzo ezilandelayo:
- Isikhathi sokumaketha sincishisiwe.
- Izici ezintsha zifinyelela kubasebenzisi ngokushesha.
- Impendulo yomsebenzisi ifinyelela ithimba lokuthuthukisa ngokushesha. Lokhu kusho ukuthi ithimba lingangeza izici futhi lilungise izinkinga ngokushesha okukhulu.
- Isimilo sikanjiniyela siyakhula: izici eziningi ekuthuthukisweni zijabulisa kakhulu ukusebenza nazo.
Kodwa njengoba imvamisa yokukhishwa ikhula, amathuba okuba nomthelela omubi ekuthembekeni kohlelo lokusebenza noma ulwazi lomsebenzisi nawo anda. Kungakho kubalulekile ukuthi imisebenzi namathimba e-DevOps akhe izinqubo futhi aphathe amasu okuthunyelwa ngendlela enciphisa ubungozi kumkhiqizo nakubasebenzisi. (Ungafunda kabanzi mayelana ne-CI/CD pipeline automation
Kulokhu okuthunyelwe, sizoxoxa ngamasu ahlukahlukene okuthunyelwa e-Kubernetes, okuhlanganisa ukuthunyelwa okuqengqelekayo nezindlela ezithuthuke kakhulu njengokukhishwa kwe-canary nokuhluka kwazo.
Amasu okusabalalisa
Kunezinhlobo eziningana ezahlukene zamasu okusebenzisa ongazisebenzisa kuye ngomgomo wakho. Isibonelo, ungase udinge ukwenza izinguquko endaweni ethile ukuze uphinde uhlole, noma kusethi yabasebenzisi/amaklayenti, noma kungase kudingeke wenze ukuhlola okulinganiselwe komsebenzisi ngaphambi kokwenza isici. umphakathi.
Rolling (kancane kancane, "rolling" ukuthunyelwa)
Leli isu elijwayelekile lokusebenzisa ku-Kubernetes. Kancane kancane, ngayinye ngayinye, ishintsha ama-pods ngenguqulo yakudala yohlelo lokusebenza ngama-pods ngenguqulo entsha - ngaphandle kokuphumula kweqoqo.
U-Kubernetes ulinda kuze kube yilapho ama-pods amasha eselungele ukusebenza (ewahlola usebenzisa
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp
spec:
replicas: 3
template:
metadata:
labels:
app: awesomeapp
spec:
containers:
- name: awesomeapp
image: imagerepo-user/awesomeapp:new
ports:
- containerPort: 8080
Amapharamitha wokubuyekeza i-rollover angacaciswa kufayela le-manifest:
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
...
Dala kabusha
Kulolu hlobo olulula lokusatshalaliswa, ama-pods amadala abulawa ngesikhathi esisodwa futhi athathelwa indawo amasha:
I-manifest ehambisanayo ibonakala kanje:
spec:
replicas: 3
strategy:
type: Recreate
template:
...
Okuluhlaza okwesibhakabhaka/Okuhlaza (okuluhlaza okwesibhakabhaka nokuluhlaza)
Isu lokusebenzisa okuluhlaza okwesibhakabhaka nokuluhlaza (ngezinye izikhathi okubuye kubizwe ngokuthi okubomvu/okumnyama) libandakanya ukusetshenziswa kanyekanye kwezinguqulo ezindala (eziluhlaza) nezintsha (eziluhlaza okwesibhakabhaka) zohlelo lokusebenza. Ngemva kokuthumela zombili izinguqulo, abasebenzisi abavamile banokufinyelela kweluhlaza okotshani, kuyilapho eluhlaza okwesibhakabhaka itholakalela ithimba le-QA ukuze lenze izivivinyo ngokuzenzakalelayo ngesevisi ehlukile noma ukudlulisela ngembobo okuqondile:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp-02
spec:
template:
metadata:
labels:
app: awesomeapp
version: "02"
Ngemuva kokuthi inguqulo eluhlaza okwesibhakabhaka (entsha) isihloliwe futhi nokukhululwa kwayo sekuvunyelwe, isevisi ishintshela kuyo, futhi inguqulo eluhlaza (endala) iyagoqwa:
apiVersion: v1
kind: Service
metadata:
name: awesomeapp
spec:
selector:
app: awesomeapp
version: "02"
...
I-Canary (ukuthunyelwa kwe-canary)
Ukukhishwa kwe-Canary kufana nokukhishwa okuluhlaza okwesibhakabhaka nokuluhlaza, kodwa kunokulawula okungcono nokusetshenziswa
Leli su lisetshenziswa uma kunesidingo sokuzama ukusebenza okuthile okusha, ngokuvamile kungemuva lohlelo lokusebenza. Ingqikithi yendlela yokwenza amaseva amabili acishe afane: eyodwa isebenzela cishe bonke abasebenzisi, kanti enye, ngemisebenzi emisha, isebenzela iqembu elincane labasebenzisi, ngemuva kwalokho imiphumela yomsebenzi wabo iqhathaniswa. Uma yonke into ihamba ngaphandle kwamaphutha, inguqulo entsha ikhishwa kancane kancane kuyo yonke ingqalasizinda.
Nakuba leli su lingasetshenziswa kusetshenziswa i-Kubernetes kuphela, esikhundleni sama-pod amadala kufakwe amasha, kulula kakhulu futhi kulula kakhulu ukusebenzisa i-mesh yesevisi efana ne-Istio.
Isibonelo, ungase ube nama-manifest amabili ahlukene ku-Git: i-manifest evamile enomaka 0.1.0 kanye ne-canary manifest enomaka 0.2.0. Ngokushintsha izisindo ku-Istio virtual gateway manifest, ungakwazi ukulawula ukusatshalaliswa kwethrafikhi phakathi kwalokhu kukhishwa okubili:
Ukuze uthole umhlahlandlela wesinyathelo ngesinyathelo ekusebenziseni ukuthunyelwa kwe-canary usebenzisa i-Istio, bheka
Ukuthunyelwa kwe-Canary nge-Weaveworks Flagger
I-Flager isebenza ngokuzenzakalelayo nabo. Isebenzisa i-Istio noma i-AWS App Mesh ukuze ihambise futhi ishintshe ithrafikhi, kanye namamethrikhi e-Prometheus ukuze ihlaziye imiphumela. Ngaphezu kwalokho, ukuhlaziya ukuthunyelwa kwe-canary kungangezwa ngama-webhooks ukwenza izivivinyo zokwamukela, ukuhlolwa komthwalo, kanye nanoma yiziphi ezinye izinhlobo zamasheke.
Ngokusekelwe ekusetshenzisweni kwe-Kubernetes futhi, uma kunesidingo, ukukala okuvundlile kwama-pods (HPA), i-Flagger idala amasethi ezinto (ukuthunyelwa kwe-Kubernetes, amasevisi e-ClusterIP kanye ne-Istio noma amasevisi we-App Mesh) ukuze ahlaziye futhi asebenzise ukuthunyelwa kwe-canary:
Ukusebenzisa iluphu yokulawula (lawula iluphu),I-Flagger kancane kancane ishintsha ithrafikhi iye kuseva ye-canary, kuyilapho ngesikhathi esifanayo ikala amamethrikhi okusebenza angukhiye njengamaphesenti ezicelo eziphumelelayo ze-HTTP, isilinganiso sobude besikhathi sokucela, kanye nempilo ye-pod. Ngokusekelwe ekuhlaziyeni kwe-KPI (Key Performance Indicators), i-canary iyakhula noma iyawa futhi imiphumela yokuhlaziya ishicilelwa ku-Slack. Incazelo kanye nokuboniswa kwale nqubo kungatholakala endabeni
Ukufakwa okumnyama (okufihliwe) noma kwe-A/B
Ukuthunyelwa kwe-Stealth kungenye inguquko yesu le-canary (okuyinto, ngendlela, i-Flagger engasebenza nayo). Umehluko phakathi kwe-stealth kanye ne-canary deployments ukuthi ukuthunyelwa kwe-stealth kubhekana ne-frontend kune-backend njengokuthunyelwa kwe-canary.
Elinye igama lalokhu kusetshenziswa ukuhlola kwe-A/B. Esikhundleni sokwenza isici esisha sitholakale kubo bonke abasebenzisi, sinikezwa ingxenye elinganiselwe yabo. Ngokuvamile, laba basebenzisi abazi ukuthi bangabahloli abahamba phambili (yingakho igama elithi "ukukhishwa okuyimfihlo").
Ukusebenzisa amaswishi okusebenza (isici sokuguqula) namanye amathuluzi, ungakwazi ukuqapha indlela abasebenzisi abasebenzisana ngayo nesici esisha, noma ngabe basebenzisana naso, noma ukuthi bathola isixhumi esibonakalayo somsebenzisi esisha siyadida, kanye nezinye izinhlobo zamamethrikhi.
Umaka kanye nokuthunyelwa kwe-A/B
Ngokungeziwe emzileni osuselwe esisindweni, i-Flagger ingaphinda ihambise ithrafikhi kuseva ye-canary ngokusekelwe kumapharamitha e-HTTP. Ekuhloleni kwe-A/B, ungasebenzisa izihloko ze-HTTP noma amakhukhi ukuze uqondise ingxenye ethile yabasebenzisi. Lokhu kusebenza ikakhulukazi esimweni sezinhlelo zokusebenza ezingaphambili ezidinga ukubophezela kuseshini kuseva (ubudlelwano besikhathi). Ulwazi olwengeziwe lungatholakala kumadokhumenti e-Flager.
Umbhali uzwakalisa ukubonga
I-PS evela kumhumushi
Funda futhi kubhulogi yethu:
- Β«
Ukubuka konke nokuqhathaniswa kwezilawuli ze-Ingress ze-Kubernetes "; - Β«
i-werf - ithuluzi lethu le-CI / CD ku-Kubernetes (uhlolojikelele nombiko wevidiyo) "; - Β«
Yakha futhi usebenzise ama-microservices ohlobo olufanayo nge-werf ne-GitLab CI "; - Β«
Iyini i-GitOps? ".
Source: www.habr.com