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.
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
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ị
isi: www.habr.com