Njia rahisi na salama ya kuelekeza uwekaji wa canary kwa kutumia Helm

Njia rahisi na salama ya kuelekeza uwekaji wa canary kwa kutumia Helm

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..

Njia rahisi na salama ya kuelekeza uwekaji wa canary kwa kutumia Helm

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 nyaraka za Kubernetes kuna hata mafunzo kamili juu ya hali hii. Lakini swali kuu la chapisho hili ni jinsi tunavyoenda kugeuza mchakato huu kwa kutumia Helm.

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 deliverybot na Vyombo vya otomatiki vya Helm kwenye GitHub. Chati za Helm zinazotumiwa kutekeleza njia iliyoelezewa hapo juu ziko kwenye Github, hapa. Kwa ujumla, ilikuwa muhtasari wa kinadharia wa jinsi ya kutekeleza otomatiki ya kupeleka matoleo ya canary kwa vitendo, na dhana na mifano maalum.

Chanzo: mapenzi.com

Kuongeza maoni