Ụzọ dị mfe ma dị nchebe iji rụọ ọrụ nke canary na Helm

Ụzọ dị mfe ma dị nchebe iji rụọ ọrụ nke canary na Helm

Nbunye Canary bụ ụzọ dị irè iji nwalee koodu ọhụrụ na mpaghara ndị ọrụ. Ọ na-ebelata nke ọma ibu okporo ụzọ nke nwere ike bụrụ nsogbu n'oge usoro ntinye, n'ihi na ọ na-eme naanị n'ime otu mpaghara. Edebere ndetu a maka otu esi ahazi nnabata dị otú ahụ site na iji Kubernetes na akpaaka mbugharị. Anyị chere na ị maara ihe gbasara akụrụngwa Helm na Kubernetes.

Ụzọ dị mfe ma dị nchebe iji rụọ ọrụ nke canary na Helm

Mfefe canary dị mfe na Kubernetes gụnyere akụrụngwa isi abụọ: ọrụ ahụ n'onwe ya na ngwa mbugharị. Mbugharị Canary na-arụ ọrụ site na otu ọrụ na-emekọrịta ihe na akụrụngwa abụọ dị iche iche na-enye mmelite okporo ụzọ. Otu n'ime ihe ndị a ga-arụ ọrụ na ụdị "canary", nke abụọ ga-arụ ọrụ na nsụgharị kwụsiri ike. N'ọnọdụ a, anyị nwere ike ịhazi ọnụọgụ nke ụdị canary iji belata ọnụọgụ okporo ụzọ achọrọ iji jee ozi. Ọ bụrụ, dịka ọmụmaatụ, ịchọrọ iji Yaml, mgbe ahụ ọ ga-adị ka nke a na 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.

Ọ dị mfe iche n'echiche nhọrọ a site na iji kubectl, na n'ime Kubernetes akwụkwọ Enwere ọbụna nkuzi zuru oke na ọnọdụ a. Mana ajụjụ bụ isi nke post a bụ ka anyị ga-esi megharịa usoro a site na iji Helm.

Akpaaka nke nnyefe canary

Nke mbụ, anyị chọrọ map chaatị Helm, nke gụnyere ihe ndị anyị tụlere n'elu. Ọ kwesịrị ịdị ka nke a:

~/charts/app
├── Chart.yaml
├── README.md
├── templates
│   ├── NOTES.txt
│   ├── _helpers.tpl
│   ├── deployment.yaml
│   └── service.yaml
└── values.yaml

Ndabere nke echiche Helm bụ njikwa nke mwepụta ọtụtụ ụdị. Ụdị kwụsiri ike bụ alaka ụlọ ọrụ anyị bụ isi kwụsiri ike nke koodu oru ngo. Mana na Helm anyị nwere ike ibuga ntọhapụ canary na koodu nnwale anyị. Isi ihe bụ idobe mgbanwe okporo ụzọ n'etiti ụdị kwụsiri ike na ntọhapụ canary. Anyị ga-ejikwa ihe a niile site na iji onye nhọpụta pụrụ iche:

selector:
  app.kubernetes.io/name: myapp

Akụ “canary” anyị na nke kwụsiri ike ga-egosi akara a na modul. Ọ bụrụ na ahaziri ihe niile n'ụzọ ziri ezi, mgbe ahụ, n'oge ntinye nke ụdị canary nke map chaatị Helm anyị ga-ahụ na a ga-eduzi okporo ụzọ gaa na modul ebugara ọhụrụ. Ụdị iwu a kwụsiri ike ga-adị ka nke a:

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

Ugbu a ka anyị lelee ntọhapụ canary anyị. Iji tinye ụdị canary, anyị kwesịrị icheta ihe abụọ. Aha ntọhapụ ga-adị iche ka anyị ghara iwepụta mmelite na ụdị kwụsiri ike ugbu a. Ụdị na mkpado ahụ ga-adịkwa iche ka anyị wee nwee ike ibugharị koodu ndị ọzọ wee chọpụta ọdịiche site na mkpado akụrụngwa.

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

Ọ gwụla! Ọ bụrụ na ị ping ọrụ, ị ga-ahụ na canary update ụzọ okporo ụzọ naanị akụkụ nke oge.

Ọ bụrụ na ị na-achọ ihe eji arụ ọrụ akpaaka nke gụnyere mgbagha akọwara, mgbe ahụ ṅaa ntị Deliverybot na na Ngwá ọrụ akpaaka Helm na GitHub. Chaatị Helm ejiri mejuputa usoro akọwara n'elu dị na Github, ebe a. N'izugbe, nke a bụ ntụle nyocha nke otu a ga-esi mejuputa akpaaka nke ntinye nke ụdị canary na omume, yana echiche na ihe atụ.

isi: www.habr.com

Tinye a comment