Canary Deployment e sebelisa Jenkins-X Istio Flagger
Ho tsamaisoa ha Canary
Re tšepa hore u tla bala karolo ea pele, moo re hlalositseng ka bokhutšoanyane hore na Canary Deployments ke eng. Re boetse re bonts'a mokhoa oa ho e kenya ts'ebetsong ka lisebelisoa tse tloaelehileng tsa Kubernetes.
Argo Rollouts
Argo Rollouts ke molaoli oa thomello ea matsoalloa a Kubernetes. E fana ka CRD (Tlhaloso ea Mohloli oa Tloaelo) bakeng sa Kubernetes. Ka lebaka leo, re ka sebelisa setheo se secha: Rollout, e laolang li-deployments tse botala bo botala le li-canary tse nang le likhetho tse fapaneng tsa tlhophiso.
Selaoli sa Argo Rollouts se sebelisoang ke sesebelisoa se ikhethileng Rollout, E lumella maano a eketsehileng a phepelo joalo ka botala bo boputsoa le canary bakeng sa Kubernetes. Mohlodi Rollout e fana ka tshebetso e lekanang Deployment, feela ka maano a eketsehileng a ho tsamaisa.
mohlodi Deployments e na le mekhoa e 'meli ea ho tsamaisa: RollingUpdate и Recreate. Le hoja maqheka ana a loketse maemong a mangata, bakeng sa ho romelloa ho li-server ka tekanyo e kholo haholo, ho sebelisoa maqheka a eketsehileng, a kang botala bo botala kapa canary, tse sa fumaneheng ho molaoli oa Deployment. Ho sebelisa maano ana ho Kubernetes, basebelisi ba ne ba tlameha ho ngola mangolo ka holim'a Deployments ea bona. The Argo Rollouts Controller e pepesa maano ana e le liparamente tse bonolo, tse phatlalatsang, tse ka lokisoang. https://argoproj.github.io/argo-rollouts
Ho boetse ho na le Argo CI, e fanang ka sehokelo se bonolo sa webo hore se sebelisoe le Rollouts, re tla e sheba sehloohong se latelang.
Ho turnip ea rona ea lisebelisoa (sheba ka tlase) re se re kentse install.yaml e le i/k8s/argo-rollouts/install.yaml. Ka tsela ena GitlabCI e tla e kenya ka har'a sehlopha.
Ena ke Python + Flask API e bonolo haholo e khutlisetsang karabo joalo ka JSON. Re tla haha sephutheloana re sebelisa GitlabCI ebe re sutumelletsa sephetho ho Gitlab Registry. Ho registry re na le mefuta e 'meli e fapaneng ea tokollo:
wuestkamp/k8s-deployment-app:v1
wuestkamp/k8s-deployment-app:v2
Phapang e le 'ngoe feela lipakeng tsa bona ke faele ea JSON e khutlisitsoeng. Re sebelisa sesebelisoa sena ho bona habonolo kamoo ho ka khonehang hore na re buisana le mofuta ofe.
Sebaka sa polokelo ea meaho
Sebakeng sena sa polokelo re tla sebelisa GitlabCI bakeng sa ho romelloa ho Kubernetes, .gitlab-ci.yml e shebahala tjena:
Rollout e sebetsa joalo ka Deployment. Haeba re sa behe leano la ntlafatso (joalo ka canary mona) le tla sebetsa joalo ka Deployment ea kamehla ea rolling-update.
Re hlalosa mehato e 'meli ho yaml bakeng sa ho tsamaisoa ha canary:
10% ea sephethephethe ho ea canary (emela buka ea OK)
50% sephethephethe ho ea canary (ema metsotso e 2 ebe u tsoela pele ho 100%)
Ho etsa tlhahiso ea pele
Ka mor'a tlhahiso ea pele, lisebelisoa tsa rona li tla shebahala tjena:
'Me re fumana karabo feela ho tsoa ho mofuta oa pele oa ts'ebeliso:
Ho etsa Canary Deployment
Mohato oa 1: 10% ea sephethephethe
Ho qala phepelo ea li-canary, re hloka feela ho fetola mofuta oa setšoantšo joalo ka ha re tloaetse ho etsa ka li-deployments:
Ke khothaletsa video ena, e bonts'a kamoo Argo Rollouts le Argo CI li sebetsang 'moho:
Phello
Ke hlile ke rata mohopolo oa ho sebelisa li-CRD tse laolang tlhahiso ea mefuta e meng ea li-deployments kapa likopi, ho tsamaisa sephethephethe, jj. Ho sebetsa le bona ho tsamaea hantle. Ka mor'a moo ke rata ho leka ho kopanya le Argo CI.
Leha ho le joalo, ho bonahala ho na le kopano e kholo ea Argo CI le Flux CI e tlang, kahoo nka ema ho fihlela tokollo e ncha e tsoa: Argo Flux.
Na u bile le boiphihlelo ka Argo Rollouts kapa Argo CI?