Usambazaji wa Canary ni njia bora sana ya kujaribu nambari mpya kwenye kikundi kidogo cha watumiaji. Inapunguza sana mzigo wa trafiki ambao unaweza kuwa na matatizo wakati wa mchakato wa kupeleka, kwani hutokea tu ndani ya kikundi fulani. Ujumbe huu unahusu jinsi ya kupanga utumaji kama huu kwa kutumia Kubernetes na uwekaji otomatiki. Hii inadhania kuwa una ujuzi fulani wa rasilimali za Helm na Kubernetes..
Usambazaji rahisi wa canary kwa Kubernetes ni pamoja na rasilimali mbili muhimu: huduma yenyewe na zana ya kupeleka. Usambazaji wa Canary hufanya kazi kupitia huduma moja inayowasiliana na rasilimali mbili tofauti zinazotoa trafiki ya sasisho. Moja ya rasilimali hizi itafanya kazi na toleo la "canary", na la pili - na moja imara. Katika hali hii, tunaweza kurekebisha idadi ya matoleo ya canary ili kupunguza kiasi cha trafiki kinachohitajika kwa matengenezo. Ikiwa, kwa mfano, unapendelea kutumia Yaml, basi itaonekana kama hii katika Kubernetes:
kind: Deployment
metadata:
name: app-canary
labels:
app: app
spec:
replicas: 1
...
image: myapp:canary
---
kind: Deployment
metadata:
name: app
labels:
app: app
spec:
replicas: 5
...
image: myapp:stable
---
kind: Service
selector:
app: app # Selector will route traffic to both deployments.
Ni rahisi hata kufikiria chaguo kama hilo kwenye kubectl, na ndani
Canary Deployment Automation
Kwanza kabisa, tunahitaji ramani ya chati ya Helm, ambayo tayari ina rasilimali zilizojadiliwa hapo juu. Inapaswa kuonekana kama hii:
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
Msingi wa dhana ya Helm ni usimamizi wa matoleo anuwai. Toleo thabiti ni tawi letu kuu la msimbo thabiti la mradi. Lakini kwa usaidizi wa Helm, tunaweza kupeleka toleo la canary na msimbo wetu wa majaribio. Jambo kuu ni kuweka ubadilishaji wa trafiki kati ya toleo la utulivu na kutolewa kwa canary. Tutasimamia haya yote kwa kutumia kichaguzi maalum:
selector:
app.kubernetes.io/name: myapp
Nyenzo zetu za "canary" na uwekaji thabiti zitaonyesha lebo hii kwenye moduli. Ikiwa kila kitu kimesanidiwa kwa usahihi, basi wakati wa kupeleka toleo la canary la ramani yetu ya chati ya Helm, tutaona kwamba trafiki itaelekezwa kwa moduli mpya zilizowekwa. Toleo thabiti la amri hii lingeonekana kama hii:
helm upgrade
--install myapp
--namespace default
--set app.name=myapp # Goes into app.kubernetes.io/name
--set app.version=v1 # Goes into app.kubernetes.io/version
--set image.tag=stable
--set replicaCount=5
Sasa hebu tuangalie toleo letu la canary. Ili kupeleka toleo la canary, tunahitaji kukumbuka mambo mawili. Jina la toleo lazima liwe tofauti ili tusisasishe toleo thabiti la sasa. Toleo na lebo lazima pia ziwe tofauti ili tuweze kupeleka msimbo mwingine na kutambua tofauti katika lebo za rasilimali.
helm upgrade
--install myapp-canary
--namespace default
--set app.name=myapp # Goes into app.kubernetes.io/name
--set app.version=v2 # Goes into app.kubernetes.io/version
--set image.tag=canary
--set replicaCount=1
Hiyo, kwa kweli, ndiyo yote! Ukipiga huduma, unaweza kuona kwamba sasisho la canary huelekeza trafiki sehemu ya muda pekee.
Ikiwa unatafuta zana za uwekaji otomatiki ambazo zinajumuisha mantiki iliyoelezewa, basi angalia
Chanzo: mapenzi.com