ʻO kahi ala maʻalahi a paʻa hoʻi e hoʻokaʻawale i nā hoʻolaha canary me ka hoʻohana ʻana iā Helm

ʻO kahi ala maʻalahi a paʻa hoʻi e hoʻokaʻawale i nā hoʻolaha canary me ka hoʻohana ʻana iā Helm

ʻO ka hoʻolālā Canary kahi ala maikaʻi loa e hoʻāʻo ai i nā code hou ma kahi ʻāpana o nā mea hoʻohana. Hoʻemi nui ia i ka ukana kaʻa i hiki ke pilikia i ka wā o ka waiho ʻana no ka mea aia wale nō i loko o kahi ʻāpana kikoʻī. Hoʻolaʻa ʻia kēia memo i ka hoʻonohonoho ʻana i kēlā ʻano hoʻolālā me ka hoʻohana ʻana i nā Kubernetes a me ka automation deployment. Manaʻo mākou ua ʻike ʻoe i kekahi mea e pili ana i nā kumuwaiwai Helm a me Kubernetes.

ʻO kahi ala maʻalahi a paʻa hoʻi e hoʻokaʻawale i nā hoʻolaha canary me ka hoʻohana ʻana iā Helm

ʻO kahi hoʻolaha canary maʻalahi iā Kubernetes e loaʻa i ʻelua kumu waiwai nui: ʻo ka lawelawe ponoʻī a me ka hāmeʻa hoʻolaha. Hana ʻia ka hoʻolaha ʻana o Canary ma o kahi lawelawe hoʻokahi e launa pū me ʻelua mau kumuwaiwai like ʻole e lawelawe ana i ka loli hou. E hana kekahi o kēia mau kumuwaiwai me ka mana "canary", a ʻo ka lua e hana me ka mana paʻa. Ma kēia kūlana, hiki iā mākou ke hoʻoponopono i ka helu o nā mana canary i mea e hōʻemi ai i ka nui o ke kaʻa e pono ai e lawelawe. Inā, no ka laʻana, makemake ʻoe e hoʻohana iā Yaml, a laila e like me kēia ma 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.

ʻOi aku ka maʻalahi o ka noʻonoʻo ʻana i kēia koho me ka hoʻohana ʻana i kubectl, a i loko Palapala Kubernetes Aia kekahi kumu aʻo piha ma kēia ʻano. Akā ʻo ka nīnau nui o kēia pou pehea mākou e hana ai i kēia kaʻina hana me ka hoʻohana ʻana iā Helm.

ʻO ka hoʻokomo ʻana i ka canary

ʻO ka mea mua, pono mākou i kahi palapala palapala Helm, kahi i loaʻa i nā kumuwaiwai a mākou i kūkākūkā ai ma luna. Pono e like me kēia:

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

ʻO ke kumu o ka manaʻo Helm ka hoʻokele ʻana i nā hoʻokuʻu multi-version. ʻO ka mana paʻa ko mākou lālā paʻa nui o ke code papahana. Akā me Helm hiki iā mākou ke kau i kahi hoʻokuʻu canary me kā mākou code hoʻokolohua. ʻO ka mea nui ʻo ka mālama ʻana i ka hoʻololi ʻana ma waena o ka mana paʻa a me ka hoʻokuʻu canary. E mālama mākou i kēia me ka hoʻohana ʻana i kahi mea koho kūikawā:

selector:
  app.kubernetes.io/name: myapp

ʻO kā mākou "canary" a me nā kumu waiwai hoʻolālā paʻa e hōʻike i kēia lepili ma nā modula. Inā hoʻonohonoho pono ʻia nā mea a pau, a laila i ka wā o ka hoʻolaha ʻana i ka mana canary o kā mākou palapala palapala Helm e ʻike mākou e alakaʻi ʻia ke kaʻa i nā modules hou i kau ʻia. ʻO ka mana paʻa o kēia kauoha e like me kēia:

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

I kēia manawa, e nānā kāua i kā mākou hoʻokuʻu ʻana i ka canary. No ke kau ʻana i ka mana canary, pono mākou e hoʻomanaʻo i ʻelua mau mea. Pono e ʻokoʻa ka inoa hoʻokuʻu i ʻole mākou e ʻōwili i kahi mea hou i ka mana paʻa o kēia manawa. Pono ʻokoʻa ka mana a me ka hōʻailona i hiki iā mākou ke kau i nā code ʻē aʻe a ʻike i nā ʻokoʻa ma o nā hōʻailona waiwai.

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

ʻo ia wale nō! Inā ʻoe e ping i ka lawelawe, hiki iā ʻoe ke ʻike i ka hele ʻana o ka canary i nā ala hele i kahi hapa o ka manawa.

Inā ʻoe e ʻimi nei i nā hāmeʻa automation deployment e loaʻa ana i ka logic i wehewehe ʻia, a laila e hoʻolohe Deliverybot a ma ʻO nā mea paahana Helm ma GitHub. Aia nā palapala Helm i hoʻohana ʻia e hoʻokō i ke ʻano i hōʻike ʻia ma luna ma Github, Aia maanei. Ma keʻano laulā, he ʻike manaʻo kēia no ka hoʻokō ʻana i ka automation o ka hoʻolaha ʻana i nā mana canary i ka hoʻomaʻamaʻa, me nā manaʻo kikoʻī a me nā hiʻohiʻona.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka