Canary ဖြန့်ကျက်ခြင်းသည် အသုံးပြုသူအုပ်စုခွဲတစ်ခုတွင် ကုဒ်အသစ်ကို စမ်းသပ်ရန် အလွန်ထိရောက်သောနည်းလမ်းဖြစ်သည်။ ၎င်းသည် ဖြန့်ကျက်မှုလုပ်ငန်းစဉ်အတွင်း ပြဿနာရှိနိုင်သည့် လမ်းကြောင်းကို သိသိသာသာ လျှော့ချပေးသည်၊ ၎င်းသည် သတ်မှတ်ထားသော အစုခွဲတစ်ခုအတွင်းသာ ဖြစ်ပေါ်သောကြောင့် ဖြစ်သည်။ ဤမှတ်စုသည် Kubernetes နှင့် ဖြန့်ကျက်မှု အလိုအလျောက်စနစ်တို့ကို အသုံးပြု၍ ထိုသို့သော ဖြန့်ကျက်မှုကို မည်ကဲ့သို့ စုစည်းရမည်နည်း။ Helm နှင့် Kubernetes အရင်းအမြစ်များအကြောင်း သင်သိသည်ဟု ကျွန်ုပ်တို့ယူဆပါသည်။.
Kubernetes သို့ ရိုးရှင်းသော Canary ဖြန့်ကျက်မှုတွင် အဓိကအရင်းအမြစ်နှစ်ခုပါဝင်သည်- ဝန်ဆောင်မှုကိုယ်တိုင်နှင့် အသုံးချမှုကိရိယာ။ Canary ဖြန့်ကျက်မှုသည် အပ်ဒိတ်အသွားအလာကို ဝန်ဆောင်မှုပေးသော မတူညီသောအရင်းအမြစ်နှစ်ခုနှင့် အပြန်အလှန်အကျိုးပြုသည့် ဝန်ဆောင်မှုတစ်ခုတည်းမှတစ်ဆင့် လုပ်ဆောင်သည်။ ဤအရင်းအမြစ်များထဲမှတစ်ခုသည် "ကိန္နရီ" ဗားရှင်းနှင့်အလုပ်လုပ်မည်ဖြစ်ပြီး ဒုတိယသည် တည်ငြိမ်သောဗားရှင်းဖြင့် လုပ်ဆောင်မည်ဖြစ်သည်။ ဤအခြေအနေတွင်၊ ဝန်ဆောင်မှုပေးရန် လိုအပ်သော လမ်းကြောင်းပမာဏကို လျှော့ချရန်အတွက် canary ဗားရှင်းအရေအတွက်ကို ထိန်းညှိနိုင်သည်။ ဥပမာအားဖြင့်၊ သင်သည် Yaml ကို အသုံးပြုလိုပါက၊ 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.
kubectl နှင့် in ကိုအသုံးပြု၍ ဤရွေးချယ်မှုကို စိတ်ကူးကြည့်ရန် ပို၍လွယ်ကူပါသည်။
ကိန္နရီ ဖြန့်ကျက်မှုကို အလိုအလျောက် လုပ်ဆောင်ခြင်း။
ပထမဦးစွာ၊ အထက်တွင် ဆွေးနွေးခဲ့သည့် အရင်းအမြစ်များ ပါ၀င်ပြီးဖြစ်သည့် Helm ဇယားမြေပုံ လိုအပ်ပါသည်။ ၎င်းသည်ဤကဲ့သို့သောပုံသဏ္ဌာန်ရှိသင့်သည်-
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
Helm အယူအဆ၏ အခြေခံမှာ ဗားရှင်းပေါင်းစုံ ဖြန့်ချိမှုများကို စီမံခန့်ခွဲခြင်း ဖြစ်သည်။ တည်ငြိမ်သောဗားရှင်းသည် ပရောဂျက်ကုဒ်၏ ပင်မတည်ငြိမ်သောဌာနခွဲဖြစ်သည်။ သို့သော် Helm ဖြင့် ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ စမ်းသပ်ကုဒ်ဖြင့် Canary ထွက်ရှိမှုကို အသုံးချနိုင်သည်။ အဓိကအရာမှာ တည်ငြိမ်သောဗားရှင်းနှင့် canary ထွက်ရှိမှုကြား အသွားအလာဖလှယ်မှုကို ထိန်းသိမ်းရန်ဖြစ်သည်။ အထူးရွေးချယ်ကိရိယာကို အသုံးပြု၍ ဤအရာအားလုံးကို ကျွန်ုပ်တို့ စီမံပါမည်-
selector:
app.kubernetes.io/name: myapp
ကျွန်ုပ်တို့၏ "ကိန္နရီ" နှင့် တည်ငြိမ်သောအသုံးချရေးအရင်းအမြစ်များသည် မော်ဂျူးများတွင် ဤတံဆိပ်ကို ညွှန်ပြပါမည်။ အရာအားလုံးကို မှန်ကန်စွာ ပြင်ဆင်သတ်မှတ်ထားပါက၊ ကျွန်ုပ်တို့၏ Helm ဇယားမြေပုံ၏ ကိန္နရီဗားရှင်းကို ဖြန့်ကျက်စဉ်တွင် အသစ်တပ်ဆင်ထားသော မော်ဂျူးများသို့ လမ်းကြောင်းများကို ညွှန်ပြလိမ့်မည်ကို တွေ့ရပါမည်။ ဤ command ၏ တည်ငြိမ်သော ဗားရှင်းသည် ဤကဲ့သို့ ဖြစ်သည်-
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
ယခု ကျွန်ုပ်တို့၏ Canary လွတ်မြောက်မှုကို စစ်ဆေးကြည့်ကြပါစို့။ Canary ဗားရှင်းကို အသုံးချရန် အချက်နှစ်ချက်ကို မှတ်သားထားရန် လိုအပ်သည်။ လက်ရှိတည်ငြိမ်သောဗားရှင်းသို့ အပ်ဒိတ်တစ်ခုမွမ်းမံခြင်းမပြုရန် ထုတ်ဝေသည့်အမည်သည် ကွဲပြားရပါမည်။ အခြားကုဒ်များကို အသုံးပြုပြီး အရင်းအမြစ်တဂ်များဖြင့် ကွဲပြားမှုများကို ခွဲခြားသတ်မှတ်နိုင်ရန် ဗားရှင်းနှင့် tag သည်လည်း ကွဲပြားရပါမည်။
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
ဒါပါပဲ! ဝန်ဆောင်မှုကို ping လုပ်ပါက၊ canary update သည် အချိန်၏တစ်စိတ်တစ်ပိုင်းသာ လမ်းကြောင်းများကို လမ်းကြောင်းပေးကြောင်း သင်တွေ့မြင်နိုင်ပါသည်။
ဖော်ပြထားသော ယုတ္တိဗေဒများ ပါဝင်သော ဖြန့်ကျက်မှု အလိုအလျောက်စနစ် ကိရိယာများကို ရှာဖွေနေပါက၊ အာရုံစိုက်ပါ။
source: www.habr.com