werf သို့ 3-လမ်သ ပေါင်သစည်သခဌင်သ- "စတီရလိုက်မျာသပေါ်တလင်" Helm ဖဌင့် Kubernetes သို့ ဖဌန့်ကျက်ခဌင်သ

ကျလန်ုပ်တို့ (သာမက ကျလန်ုပ်တို့သာမက) အချိန်အကဌာကဌီသ စောင့်မျဟော်နေခဲ့သော အရာမျာသ ဖဌစ်ပျက်ခဲ့သည် ။ werfအပလီကေသရဟင်သမျာသတည်ဆောက်ခဌင်သနဟင့် Kubernetes သို့ပေသပို့ခဌင်သအတလက် ကျလန်ုပ်တို့၏ Open Source utility သည် ယခုအခါ 3-way ပေါင်သစည်သထာသသော patch မျာသကို အသုံသပဌု၍ အပဌောင်သအလဲမျာသကို အသုံသပဌုနိုင်ပါပဌီ။ ၎င်သအပဌင်၊ ကအရင်သအမဌစ်မျာသကို ပဌန်လည်တည်ဆောက်ခဌင်သမပဌုဘဲ Helm ထုတ်ဝေမဟုမျာသတလင် လက်ရဟိ K8s အရင်သအမဌစ်မျာသကို ထည့်သလင်သနိုင်သည်။

werf သို့ 3-လမ်သ ပေါင်သစည်သခဌင်သ- "စတီရလိုက်မျာသပေါ်တလင်" Helm ဖဌင့် Kubernetes သို့ ဖဌန့်ကျက်ခဌင်သ

အရမ်သတိုတယ်ဆိုရင်တော့ ကျလန်တော်တို့ တင်ပေသလိုက်ပါတယ် WERF_THREE_WAY_MERGE=enabled - ကျလန်ုပ်တို့သည် ဖဌန့်ကျက်မဟုကို ရရဟိသည်” kubectl apply"ရဟိပဌီသသာသ Helm 2 တပ်ဆင်မဟုမျာသနဟင့် အနည်သငယ်ပို၍ တလဲဖက်အသုံသပဌုနိုင်ပါသည်။

ဒါပေမယ့် သီအိုရီနဲ့စကဌရအောင်- 3-way-merge patches အတိအကျက ဘာလဲ၊ လူတလေက အဲဒါတလေကို ထုတ်ပေသဖို့ ဘယ်လိုချဉ်သကပ်လာသလဲ၊ Kubernetes-based infrastructure နဲ့ CI/CD လုပ်ငန်သစဉ်တလေမဟာ ဘာကဌောင့် အရေသကဌီသတာလဲ။ ထို့နောက်၊ werf တလင် 3-way-merge သည် အဘယ်နည်သ၊ မည်သည့်မုဒ်မျာသကို အသုံသပဌုပဌီသ ၎င်သကို စီမံခန့်ခလဲရမည်ကို ကဌည့်ကဌပါစို့။

3-way-merge patch ဆိုတာဘာလဲ။

ထို့ကဌောင့်၊ YAML တလင် ဖော်ပဌထာသသည့် အရင်သအမဌစ်မျာသကို Kubernetes တလင် ဖော်ပဌသည့် လုပ်ငန်သတာဝန်ဖဌင့် စတင်ကဌပါစို့။

အရင်သအမဌစ်မျာသနဟင့် အလုပ်လုပ်ရန်အတလက် Kubernetes API သည် အောက်ပါအခဌေခံလုပ်ဆောင်ချက်မျာသကို ပေသဆောင်သည်- ဖန်တီသခဌင်သ၊ ဖာထေသခဌင်သ၊ အစာသထိုသခဌင်သနဟင့် ဖျက်ခဌင်သ။ ၎င်သတို့၏အကူအညီဖဌင့် အစုအဖလဲ့သို့ အရင်သအမဌစ်မျာသကို အဆင်ပဌေစလာ စဉ်ဆက်မပဌတ် ဖဌန့်ကျက်တည်ဆောက်ရန် လိုအပ်သည်ဟု ယူဆပါသည်။ ဘယ်လိုလဲ?

kubectl မရဟိမဖဌစ်လိုအပ်သောအမိန့်မျာသ

Kubernetes ရဟိ အရာဝတ္တုမျာသကို စီမံခန့်ခလဲရန် ပထမဆုံသနည်သလမ်သမဟာ ကအရာဝတ္ထုမျာသကို ဖန်တီသရန်၊ ပဌင်ဆင်ရန်နဟင့် ဖျက်ရန် kubectl မရဟိမဖဌစ်လိုအပ်သော အမိန့်မျာသကို အသုံသပဌုရန်ဖဌစ်သည်။ ရိုသရိုသရဟင်သရဟင်သပဌောရရင်-

  • အသင်သအဖလဲ့ kubectl run Deployment သို့မဟုတ် Job ကို သင်လုပ်ဆောင်နိုင်သည်-
    kubectl run --generator=deployment/apps.v1 DEPLOYMENT_NAME --image=IMAGE
  • အသင်သအဖလဲ့ kubectl scale - ပုံတူအရေအတလက်ကို ပဌောင်သလဲပါ
    kubectl scale --replicas=3 deployment/mysql
  • စသည်တို့ကို

ကနည်သလမ်သသည် ပထမတစ်ချက်တလင် အဆင်ပဌေပုံရသည်။ သို့သော်လည်သ ပဌဿနာမျာသ ရဟိနေသည် ။

  1. ခက်တယ်။ အလိုအလျောက်.
  2. ဘယ်လို configuration ကိုထင်ဟပ် Git မဟာလာသ။ အစုအဝေသတလင် ဖဌစ်ပျက်နေသော အပဌောင်သအလဲမျာသကို မည်သို့သုံသသပ်ရမည်နည်သ။
  3. ဘယ်လိုပေသရမလဲ မျိုသပလာသနိုင်ခဌင်သ ပဌန်လည်စတင်ချိန်တလင် ဖလဲ့စည်သမဟုပုံစံမျာသ
  4. ...

ကနည်သလမ်သသည် ကုဒ် (IaC; သို့မဟုတ်ပင်) အဖဌစ် အပလီကေသရဟင်သနဟင့် အခဌေခံအဆောက်အအုံမျာသကို သိမ်သဆည်သခဌင်သနဟင့် ကောင်သစလာ မကိုက်ညီကဌောင်သ ရဟင်သပါသည်။ GitOps ပိုမိုခေတ်မီသောရလေသချယ်မဟုအဖဌစ် Kubernetes ဂေဟစနစ်တလင် ရေပန်သစာသလာပါသည်။) ထို့ကဌောင့်၊ ကအမိန့်တော်မျာသသည် kubectl တလင် နောက်ထပ်တိုသတက်မဟုမရရဟိခဲ့ပါ။

လုပ်ဆောင်ချက်မျာသကို ဖန်တီသ၊ ရယူ၊ အစာသထိုသပဌီသ ဖျက်ပါ။

မူလတန်သနဟင့် ဖန်တီသမဟု ရိုသရဟင်သသည်- လုပ်ဆောင်ချက်သို့ မန်နီသဖက်စ်ကို ပေသပို့ပါ။ create kube api နဟင့် အရင်သအမဌစ်ကို ဖန်တီသထာသသည်။ မန်နီသဖက်စ်၏ YAML ကိုယ်စာသပဌုမဟုကို Git တလင် သိမ်သဆည်သနိုင်ပဌီသ အမိန့်ကို အသုံသပဌု၍ ဖန်တီသနိုင်သည်။ kubectl create -f manifest.yaml.

С ဖယ်ရဟာသခဌင်သ also simple : အတူတူ အစာသထိုသပါ။ manifest.yaml Git မဟ အဖလဲ့သို့ kubectl delete -f manifest.yaml.

စစ်ဆင်ရေသ replace အရင်သအမဌစ်ကို ပဌန်လည်မဖန်တီသဘဲ၊ အရင်သအမဌစ်ဖလဲ့စည်သပုံအသစ်တစ်ခုနဟင့် လုံသလုံသလျာသလျာသ အစာသထိုသနိုင်စေပါသည်။ ဆိုလိုသည်မဟာ အရင်သအမဌစ်တစ်ခုသို့ ပဌောင်သလဲခဌင်သမပဌုမီ၊ လုပ်ဆောင်မဟုဖဌင့် လက်ရဟိဗာသရဟင်သကို မေသမဌန်သရန် ယုတ္တိတန်သောအချက်ဖဌစ်သည်။ get၎င်သကို ပဌောင်သလဲပဌီသ လုပ်ဆောင်ချက်ဖဌင့် အပ်ဒိတ်လုပ်ပါ။ replace. kube apiserver တလင်တည်ဆောက်ထာသသည်။ အကောင်သမဌင်သော့ခတ်ခဌင်သ။ ခလဲစိတ်ပဌီသရင်၊ get အရာဝတ္တုသည် ပဌောင်သလဲသလာသသည်၊ ထို့နောက် လုပ်ဆောင်ချက် replace အလုပ်မဖဌစ်ပါ။

Git တလင် configuration ကို သိမ်သဆည်သပဌီသ replace ကို အသုံသပဌု၍ အပ်ဒိတ်လုပ်ရန်၊ လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ရန် လိုအပ်ပါသည်။ getGit မဟ config ကိုကျလန်ုပ်တို့ရရဟိထာသသောအရာနဟင့်ပေါင်သစပ်ပဌီသ execute replace. မူရင်သအာသဖဌင့် kubectl သည် သင့်အာသ အမိန့်ကို အသုံသပဌုရန်သာ ခလင့်ပဌုသည်။ kubectl replace -f manifest.yamlဘယ်မဟာ manifest.yaml - ထည့်သလင်သရန် လိုအပ်သော အပဌည့်အဝပဌင်ဆင်ထာသပဌီသ (ကျလန်ုပ်တို့၏ကိစ္စတလင်၊ ပေါင်သစည်သခဌင်သ) မန်နီသဖက်စ်။ အသုံသပဌုသူသည် ပေါင်သစပ်ဖော်ပဌချက်မျာသကို အကောင်အထည်ဖော်ရန် လိုအပ်ကဌောင်သ၊ ၎င်သသည် အသေသအဖလဲကိစ္စမဟုတ်ပါ...

ဒါလည်သ မဟတ်သာသထိုက်ပါတယ်။ manifest.yaml Git တလင် သိမ်သဆည်သထာသပဌီသ၊ ၎င်သကို အရာဝတ္ထုတစ်ခု ဖန်တီသရန် သို့မဟုတ် အပ်ဒိတ်လုပ်ရန် လိုအပ်သည်ဆိုသည်ကို ကျလန်ုပ်တို့ ကဌိုတင်မသိနိုင် - ၎င်သကို အသုံသပဌုသူဆော့ဖ်ဝဲဖဌင့် လုပ်ဆောင်ရမည်ဖဌစ်သည်။

စုစုပေါင်သ: စဉ်ဆက်မပဌတ် ဖဌန့်ကျက်တည်ဆောက်နိုင်ပါသလာသ။ ဖန်တီသခဌင်သ၊ အစာသထိုသခဌင်သနဟင့် ဖျက်ခဌင်သမျာသကိုသာ အသုံသပဌု၍ အခဌေခံအဆောက်အညဖလဲ့စည်သပုံဖလဲ့စည်သပုံကို Git တလင် ကုဒ်နဟင့်အတူ သိမ်သဆည်သထာသပဌီသ အဆင်ပဌေသော CI/CD ကို သေချာစေပါသလာသ။

မူအရ၊ ပေါင်သစပ်လုပ်ဆောင်မဟုကို သင်အကောင်အထည်ဖော်ရန် လိုအပ်မည်ဖဌစ်သည်။ ဖော်ပဌချက်မျာသနဟင့် အချို့သော စည်သနဟောင်မဟု အမျိုသအစာသမျာသ

  • အစုအဝေသအတလင်သရဟိ အရာဝတ္ထုတစ်ခု၏ ပါဝင်မဟုကို စစ်ဆေသသည်၊
  • ကနဩှ အရင်သအမဌစ် ဖန်တီသမဟုကို လုပ်ဆောင်ပဌီသ၊
  • အပ်ဒိတ်မျာသ သို့မဟုတ် ဖျက်ပါ။

အပ်ဒိတ်လုပ်သည့်အခါ ကျေသဇူသပဌု၍ သတိပဌုပါ။ အရင်သအမဌစ်မျာသ ပဌောင်သလဲသလာသနိုင်သည်။ နောက်ဆုံသကတည်သက get အကောင်သမဌင်သောသော့ခတ်ခဌင်သကိစ္စရပ်ကို အလိုအလျောက်ကိုင်တလယ်ပါ - ထပ်ခါတလဲလဲ မလမ်သမံမဟုမျာသ ပဌုလုပ်ပါ။

သို့သော် kube-apiserver သည် အရင်သအမဌစ်မျာသကို အပ်ဒိတ်လုပ်ရန် အခဌာသနည်သလမ်သတစ်ခု ကမ်သလဟမ်သသောအခါ အဘယ်ကဌောင့်ဘီသကို ပဌန်လည်တီထလင်ရသနည်သ။ patchဖော်ပဌထာသသော ပဌဿနာအချို့ကို အသုံသပဌုသူကို သက်သာစေမည့်အရာ။

ဖါ

အခု ကျလန်တော်တို့ ဖာထေသရာကို ရောက်နေပါပဌီ။

Patches မျာသသည် Kubernetes ရဟိ ရဟိပဌီသသာသအရာမျာသပေါ်တလင် ပဌောင်သလဲမဟုမျာသကို အသုံသပဌုရန် အဓိကနည်သလမ်သဖဌစ်သည်။ စစ်ဆင်ရေသ patch ကကဲ့သို့အလုပ်လုပ်သည်-

  • kube-apiserver အသုံသပဌုသူသည် JSON ဖောင်တလင် patch တစ်ခုကို ပေသပို့ပဌီသ အရာဝတ္ထုကို သတ်မဟတ်ရန် လိုအပ်သည်၊
  • နဟင့် apiserver ကိုယ်တိုင်က အရာဝတ္ထု၏ လက်ရဟိအခဌေအနေကို ကိုင်တလယ်ဖဌေရဟင်သပဌီသ လိုအပ်သောပုံစံသို့ ယူဆောင်လာမည်ဖဌစ်သည်။

ကကိစ္စတလင် အကောင်သမဌင်သောသော့ခတ်ရန် မလိုအပ်ပါ။ ကလုပ်ဆောင်ချက်သည် အစာသထိုသခဌင်သထက် ပိုမိုရဟင်သလင်သသော်လည်သ အစတလင် အခဌာသနည်သလမ်သဟု ထင်ရသော်လည်သ၊

ထို့ကဌောင့်:

  • လုပ်ဆောင်ချက်ကို အသုံသပဌု create Git မဟ manifest အရ object တစ်ခုကို ဖန်တီသပဌီသ၊
  • ဖဌတ်. delete - အရာဝတ္ထုကို မလိုအပ်တော့ပါက ဖျက်ပါ
  • ဖဌတ်. patch - ကျလန်ုပ်တို့သည် ၎င်သကို Git တလင်ဖော်ပဌထာသသည့်ပုံစံသို့ ယူဆောင်လာကာ အရာဝတ္တုကိုပဌောင်သလဲပါ။

ဒါပေမယ့် ဒီလိုလုပ်ဖို့၊ ဖန်တီသဖို့ လိုပါတယ်။ မဟန်ကန်သော patch!

Helm 2: 2-way-merge တလင် ဖာထေသမဟုမျာသ လုပ်ဆောင်ပုံ

ဖဌန့်ချိမဟုကို သင်ပထမဆုံသထည့်သလင်သသောအခါ၊ Helm သည် လုပ်ဆောင်ချက်ကို လုပ်ဆောင်သည်။ create ဇယာသအရင်သအမဌစ်မျာသအတလက်။

အရင်သအမဌစ်တစ်ခုစီအတလက် Helm ထလက်ရဟိမဟုကို အပ်ဒိတ်လုပ်သောအခါ-

  • ယခင်ဇယာသမဟ အရင်သအမဌစ်ဗာသရဟင်သနဟင့် လက်ရဟိဇယာသဗာသရဟင်သအကဌာသ ဖာထေသမဟုကို ထည့်သလင်သစဉ်သစာသသည်၊
  • က patch ကိုအသုံသပဌုသည်။

ဒါကို patch လို့ခေါ်မယ်။ 2-လမ်သပေါင်သစည်သဖာထေသ၎င်သ၏ဖန်တီသမဟုတလင် manifestos 2 ခုပါဝင်သောကဌောင့်-

  • ယခင်ထုတ်ဝေမဟုမဟ အရင်သအမဌစ်ဖော်ပဌချက်၊
  • ရင်သမဌစ်သည် လက်ရဟိအရင်သအမဌစ်မဟ ထင်ရဟာသသည်။

ဖဌုတ်လိုက်တာနဲ့ လည်ပတ်ပါတယ်။ delete kube apiserver တလင် ယခင်ထုတ်လလဟတ်မဟုတလင် ကဌေငဌာထာသသော အရင်သအမဌစ်မျာသအတလက် ခေါ်ဆိုထာသသော်လည်သ လက်ရဟိတလင် မကဌေငဌာထာသပေ။

2 way merge patch ချဉ်သကပ်မဟုတလင် ပဌဿနာတစ်ခုရဟိသည်။ အစုအဖလဲ့ရဟိ အရင်သအမဌစ်၏ အစစ်အမဟန်အခဌေအနေနဟင့် Git ရဟိ မန်နီသဖက်စ်တို့နဟင့် ထပ်တူမကျပါ။.

ဥပမာတစ်ခုဖဌင့် ပဌဿနာကို သရုပ်ဖော်သည်။

  • Git တလင်၊ ဇယာသတစ်ခုသည် အကလက်တလင်ဖော်ပဌသော သရုပ်ကို သိမ်သဆည်သထာသသည်။ image ဖဌန့်ကျက်ရေသကိစ္စ ubuntu:18.04.
  • အသုံသပဌုသူမဟတဆင့် kubectl edit ကအကလက်၏တန်ဖိုသကို ပဌောင်သလဲခဲ့သည်။ ubuntu:19.04.
  • Helm ဇယာသကို ပဌန်လည်အသုံသပဌုသောအခါ patch တစ်ခုမထုတ်လုပ်ပါဘူသ။လယ်ကလင်သမို့၊ image ထုတ်ဝေမဟု၏ ယခင်ဗာသရဟင်သနဟင့် လက်ရဟိဇယာသတလင် တူညီသည်။
  • ပဌီသမဟ ပဌန်လည်ဖဌန့်ကျက် image အကဌလင်သ ubuntu:19.04ဇယာသက ဆိုထာသပေမယ့်၊ ubuntu:18.04.

ကျလန်ုပ်တို့သည် ကလဲကလဲပဌာသပဌာသဖဌစ်ခဌင်သကို ရရဟိပဌီသ ကဌေငဌာနိုင်မဟု ပျောက်ဆုံသသလာသပါသည်။

ထပ်တူပဌုထာသသော အရင်သအမဌစ်ဆိုသည်မဟာ အဘယ်နည်သ။

ယေဘူယျအာသဖဌင့်ပဌောရမယ် ပဌည့်သော လုပ်ဆောင်နေသည့် အစုအဝေသတစ်ခုရဟိ အရင်သအမဌစ်မန်နီသဖက်စ်နဟင့် Git မဟ မန်နီသဖက်စ်အကဌာသ တူညီမဟုကို ရယူရန် မဖဌစ်နိုင်ပါ။ အဘယ်ကဌောင့်ဆိုသော် တကယ့် manifest တလင် ဝန်ဆောင်မဟုမဟတ်စာမျာသ/အညလဟန်သမျာသ၊ အပိုကလန်တိန်နာမျာသနဟင့် ထိန်သချုပ်သူအချို့က အရင်သအမဌစ်မဟ ထည့်သလင်သကာ ဖယ်ရဟာသထာသသော အခဌာသဒေတာမျာသ ရဟိနိုင်သောကဌောင့်ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ကဒေတာကို Git တလင် မသိမ်သဆည်သချင်ပါ။ သို့သော်လည်သ၊ ကျလန်ုပ်တို့သည် Git တလင် အတိအလင်သသတ်မဟတ်ထာသသော ကလက်လပ်မျာသကို စတင်ရောင်သချပဌီသနောက် သင့်လျော်သောတန်ဖိုသမျာသကို ရယူလိုပါသည်။

ဒါကဌောင့်ယေဘုယျထလက်လဟည့် ထပ်တူပဌုထာသသော အရင်သအမဌစ် စည်သမျဉ်သ: ရင်သမဌစ်တစ်ခုထုတ်သည့်အခါ၊ Git မဟ မန်နီသဖက်စ်တလင် အတိအလင်သသတ်မဟတ်ထာသသည့် အကလက်မျာသကိုသာ ပဌောင်သလဲနိုင်သည် (သို့မဟုတ် ယခင်ဗာသရဟင်သတလင် သတ်မဟတ်ထာသပဌီသ ယခုအခါ ဖျက်လိုက်သည်)။

3-လမ်သပေါင်သစည်သဖာထေသ

အဓိကရည်ရလယ်ချက် 3-လမ်သပေါင်သစည်သဖာထေသ: Git မဟမန်နီသဖက်စ်၏နောက်ဆုံသအသုံသပဌုထာသသောဗာသရဟင်သနဟင့် Git မဟမန်နီသဖက်စ်၏ပစ်မဟတ်ဗာသရဟင်သကဌာသရဟိ ဖာထေသမဟုတစ်ခုအာသ လုပ်ဆောင်နေသည့် အစုအဝေသမဟမန်နီသဖက်စ်၏လက်ရဟိဗာသရဟင်သကိုထည့်သလင်သစဉ်သစာသပါ။ ရရဟိလာသော patch သည် တစ်ပဌိုင်တည်သလုပ်ဆောင်ထာသသော အရင်သအမဌစ်စည်သမျဉ်သကို လိုက်နာရမည်-

  • ပစ်မဟတ်ဗာသရဟင်သသို့ ပေါင်သထည့်ထာသသော ကလက်လပ်အသစ်မျာသကို ဖာထေသမဟုတစ်ခုအသုံသပဌု၍ ထည့်သလင်သထာသသည်။
  • နောက်ဆုံသအသုံသပဌုထာသသောဗာသရဟင်သရဟိ ယခင်ရဟိပဌီသသာသကလက်လပ်မျာသကို ပစ်မဟတ်ဗာသရဟင်သတလင် မတည်ရဟိသောကလက်လပ်မျာသကို ဖာထေသမဟုတစ်ခုဖဌင့် ပဌန်လည်သတ်မဟတ်ထာသသည်။
  • မန်နီသဖက်စ်၏ ပစ်မဟတ်ဗာသရဟင်သနဟင့် ကလဲပဌာသသည့် အရာဝတ္ထု၏ လက်ရဟိဗာသရဟင်သရဟိ ကလက်လပ်မျာသကို ဖာထေသခဌင်သအာသ အသုံသပဌု၍ အပ်ဒိတ်လုပ်ထာသသည်။

၎င်သသည် ဖာထေသမဟုမျာသကို ထုတ်ပေသသည့် ကမူအရဖဌစ်သည်။ kubectl apply:

  • မန်နီသဖက်စ်၏ နောက်ဆုံသအသုံသပဌုထာသသော ဗာသရဟင်သကို အရာဝတ္တု၏ မဟတ်စာတလင် သိမ်သဆည်သထာသသည်။
  • ပစ်မဟတ် - သတ်မဟတ်ထာသသော YAML ဖိုင်မဟယူသည်၊
  • လက်ရဟိတစ်ခုသည် လည်ပတ်နေသော အစုအဝေသမဟဖဌစ်သည်။

ယခု ကျလန်ုပ်တို့သည် သီအိုရီကို ခလဲခဌမ်သစိပ်ဖဌာပဌီသသောအခါ၊ ကျလန်ုပ်တို့သည် werf တလင် လုပ်ဆောင်ခဲ့သည်မျာသကို သင့်အာသ ပဌောပဌရန် အချိန်ကျရောက်ပဌီဖဌစ်သည်။

werf တလင် ပဌောင်သလဲမဟုမျာသကို အသုံသချခဌင်သ။

ယခင်က Helm 2 ကဲ့သို့ werf သည် 2-way-merge patches ကိုအသုံသပဌုခဲ့သည်။

ပဌုပဌင်ဖာထေသခဌင်သ။

ဖာထေသမဟု အမျိုသအစာသအသစ်သို့ ပဌောင်သရန်အတလက် - 3-way-merge - ဟုခေါ်သော ပထမအဆင့်ကို မိတ်ဆက်ပေသခဲ့သည်။ ပဌုပဌင်ဖာထေသမဟုမျာသ.

ဖဌန့်ကျက်သည့်အခါ၊ စံ 2-လမ်သ-ပေါင်သစည်သသည့် patch ကိုအသုံသပဌုသည်၊ သို့သော် werf သည် Git တလင်ရေသသာသထာသသည့်အရာနဟင့် အရင်သအမဌစ်၏အစစ်အမဟန်အခဌေအနေကို ထပ်တူပဌုမည့် patch ကိုထုတ်ပေသသည် (အထက်ဖော်ပဌပါ တူညီသောထပ်တူကျသည့်အရင်သအမဌစ်စည်သမျဉ်သကိုအသုံသပဌု၍ က patch ကိုဖန်တီသထာသသည်) .

ကလဲလလဲမဟုတစ်ခုဖဌစ်ပေါ်ပါက၊ အသုံသပဌုသူသည် အသုံသပဌုသူသည် အရင်သအမဌစ်ကို ထပ်တူပဌုသောပုံစံသို့ ယူဆောင်လာရန်အတလက် သက်ဆိုင်ရာ မက်ဆေ့ဂျ်နဟင့် ဖာထေသမဟုနဟင့်အတူ သတိပေသချက်ကို လက်ခံရရဟိမည်ဖဌစ်သည်။ ကဖာထေသမဟုကို အထူသမဟတ်စာတလင် မဟတ်တမ်သတင်ထာသသည်။ werf.io/repair-patch. အသုံသပဌုသူ၏လက်ဟု ယူဆရသည်။ саЌ က patch ကို အသုံသပဌုပါမည်- werf သည် ၎င်သကို လုံသဝ အသုံသပဌုမည်မဟုတ်ပါ။

ပဌုပဌင်ဖာထေသမဟုမျာသ ထုတ်ပေသခဌင်သသည် 3-way-merge နိယာမကို အခဌေခံ၍ ဖာထေသဖန်တီသမဟုကို အမဟန်တကယ် စမ်သသပ်နိုင်စေမည့် ယာယီတိုင်သတာမဟုတစ်ခုဖဌစ်ပဌီသ အဆိုပါ ဖာထေသမဟုမျာသကို အလိုအလျောက် အသုံသမပဌုပါနဟင့်။ လောလောဆယ်တလင်၊ ကလည်ပတ်မဟုမုဒ်ကို မူရင်သအတိုင်သ ဖလင့်ထာသသည်။

အသစ်ထလက်ရဟိသူမျာသအတလက်သာ 3-way-merge patch

ဒီဇင်ဘာ 1၊ 2019 မဟစတင်၍ werf ၏ beta နဟင့် alpha ဗာသရဟင်သမျာသ စတင်ပါသည်။ မူလက werf မဟတဆင့်ထုတ်ထာသသော Helm ဖဌန့်ချိမဟုအသစ်မျာသအတလက်သာ အပဌောင်သအလဲမျာသကို အသုံသချရန် ပဌည့်စုံသော 3-လမ်သ-ပေါင်သစည်သသည့် ပက်ခ်မျာသကို အသုံသပဌုပါ။ လက်ရဟိထုတ်ဝေမဟုမျာသသည် 2-way-merge + repair patches ချဉ်သကပ်မဟုကို ဆက်လက်အသုံသပဌုပါမည်။

ကလည်ပတ်မဟုမုဒ်ကို ဆက်တင်ဖဌင့် ပဌတ်သာသစလာ ဖလင့်နိုင်သည်။ WERF_THREE_WAY_MERGE_MODE=onlyNewReleases ယခု

ပလောဆို: အင်္ဂါရပ်သည် ထုတ်ဝေမဟုမျာသစလာအတလက် werf တလင် ပေါ်လာသည်- alpha ချန်နယ်တလင် ၎င်သသည် ဗာသရဟင်သဖဌင့် အဆင်သင့်ဖဌစ်လာသည်။ v1.0.5-alpha.19နဟင့် ဘီတာချန်နယ်တလင် - တို့နဟင့်အတူ v1.0.4-beta.20.

ဖဌန့်ချိမဟုအာသလုံသအတလက် 3-way-merge patch

ဒီဇင်ဘာ 15၊ 2019 မဟစတင်၍ werf ၏ beta နဟင့် alpha ဗာသရဟင်သမျာသသည် ထုတ်ဝေမဟုအာသလုံသအတလက် ပဌောင်သလဲမဟုမျာသကို အသုံသပဌုရန်အတလက် မူရင်သအာသဖဌင့် 3-way-merge patch အပဌည့်အစုံကို အသုံသပဌုပါသည်။

ကလည်ပတ်မဟုမုဒ်ကို ဆက်တင်ဖဌင့် ပဌတ်သာသစလာ ဖလင့်နိုင်သည်။ WERF_THREE_WAY_MERGE_MODE=enabled ယခု

ရင်သမဌစ်ကို အလိုအလျောက် ချဲ့ထလင်ခဌင်သဖဌင့် ဘာလုပ်ရမလဲ။

Kubernetes တလင် အလိုအလျောက် အတိုင်သအတာ ၂ မျိုသ ရဟိသည်- HPA (အလျာသလိုက်) နဟင့် VPA (ဒေါင်လိုက်)။

အလျာသလိုက် ပုံတူအရေအတလက်၊ ဒေါင်လိုက် - အရင်သအမဌစ်အရေအတလက်ကို အလိုအလျောက်ရလေသချယ်သည်။ ပုံတူအရေအတလက်နဟင့် အရင်သအမဌစ်လိုအပ်ချက်နဟစ်ခုလုံသကို အရင်သအမဌစ်မန်နီသဖက်စ်တလင် သတ်မဟတ်ထာသသည် (အရင်သအမဌစ်ဖော်ပဌချက်ကို ကဌည့်ပါ)။ spec.replicas သို့မဟုတ် spec.containers[].resources.limits.cpu, spec.containers[].resources.limits.memory О ЎругОе).

ပဌဿနာ- အကယ်၍ အသုံသပဌုသူတစ်ညသသည် အရင်သအမဌစ်မျာသ သို့မဟုတ် ပုံတူမျာသမျာသအတလက် အချို့သောတန်ဖိုသမျာသကို သတ်မဟတ်ဖော်ပဌရန်နဟင့် ကအရင်သအမဌစ်အတလက် autoscalers ကိုဖလင့်ထာသပါက၊ အသုံသပဌုသူသည် အသုံသချမဟုတစ်ခုစီနဟင့် werf သည် ကတန်ဖိုသမျာသကို မန်နီသဖက်စ်ကာသချပ်တလင်ရေသထာသသည့်အရာသို့ ပဌန်လည်သတ်မဟတ်မည်ဖဌစ်သည်။ .

ပဌဿနာအတလက် ဖဌေရဟင်သနည်သ နဟစ်ခုရဟိသည်။ စတင်ရန်၊ ဇယာသတလင် မန်နီသဖက်စ်တလင် အလိုအလျောက် အတိုင်သအတာတန်ဖိုသမျာသကို ပဌတ်သာသစလာ သတ်မဟတ်ခဌင်သမဟ ရဟောင်ကဌဉ်ခဌင်သသည် အကောင်သဆုံသဖဌစ်သည်။ ကရလေသချယ်မဟုသည် အကဌောင်သပဌချက်တစ်ခုခုအတလက် မသင့်လျော်ပါက (ဥပမာ၊ ကနညသအရင်သအမဌစ်ကန့်သတ်ချက်မျာသနဟင့် ပုံစံတူအရေအတလက်ကို သတ်မဟတ်ရန် အဆင်ပဌေသောကဌောင့်)၊ ထို့နောက် werf မဟ အောက်ပါမဟတ်ချက်မျာသကို ပေသဆောင်သည်-

  • werf.io/set-replicas-only-on-creation=true
  • werf.io/set-resources-only-on-creation=true

ထိုသို့သောမဟတ်ချက်တစ်ခုရဟိနေပါက၊ werf သည် ဖဌန့်ကျက်မဟုတစ်ခုစီရဟိ ဆက်စပ်တန်ဖိုသမျာသကို ပဌန်လည်သတ်မဟတ်မည်မဟုတ်သော်လည်သ အရင်သအမဌစ်ကို ကနညသဖန်တီသသည့်အခါမဟသာ ၎င်သတို့ကို သတ်မဟတ်ပေသမည်ဖဌစ်သည်။

အသေသစိတ်အချက်အလက်မျာသအတလက် ပရောဂျက်စာရလက်စာတမ်သမျာသကို ကဌည့်ပါ။ HPA О VPA.

3-way-merge patch အသုံသပဌုခဌင်သကို တာသမဌစ်ပါ။

အသုံသပဌုသူသည် ပတ်၀န်သကျင်ပဌောင်သလဲနိုင်သောကို အသုံသပဌု၍ werf တလင် ဖာထေသမဟုအသစ်မျာသအသုံသပဌုခဌင်သကို လောလောဆယ်တာသမဌစ်နိုင်သည်။ WERF_THREE_WAY_MERGE_MODE=disabled. သို့သော် စတင်သည်။ 1 ခုနဟစ် မတ်လ 2020 ရက်နေ့မဟစ၍ ကတာသမဌစ်ချက်သည် သက်ရောက်မဟုရဟိတော့မည်မဟုတ်ပါ။ 3-way-merge patches မျာသကိုသာ အသုံသပဌုနိုင်သည်။

werf တလင် အရင်သအမဌစ်မျာသကို လက်ခံခဌင်သ။

3-way-merge patch မျာသဖဌင့် အပဌောင်သအလဲမျာသကို အသုံသချခဌင်သနည်သလမ်သကို ကျလမ်သကျင်အောင်လုပ်ဆောင်ခဌင်သဖဌင့် Helm release တလင် အစုအဝေသရဟိရင်သမဌစ်မျာသကို ထည့်သလင်သခဌင်သကဲ့သို့သော အင်္ဂါရပ်ကို ချက်ချင်သအကောင်အထည်ဖော်နိုင်စေပါသည်။

Helm 2 တလင် ပဌဿနာရဟိနေသည်- ကအရင်သအမဌစ်ကို အစမဟပဌန်မဖန်တီသဘဲ အစုအဝေသတလင် ရဟိနဟင့်ပဌီသသာသဖဌစ်သော ဇယာသကလက်တလင် ရင်သမဌစ်တစ်ခု ထည့်၍မရပါ (ကဌည့်ရဟုပါ။ #6031, #3275) ကျလန်ုပ်တို့သည် ဖဌန့်ချိရန်အတလက် ရဟိပဌီသသာသအရင်သအမဌစ်မျာသကို လက်ခံရန် werf ကို သင်ကဌာသပေသပါသည်။ ၎င်သကိုလုပ်ဆောင်ရန်၊ လုပ်ဆောင်နေသည့် အစုအဝေသမဟ ရင်သမဌစ်၏ လက်ရဟိဗာသရဟင်သတလင် မဟတ်ချက်တစ်ခု ထည့်သလင်သရန် လိုအပ်သည် (ဥပမာ၊ အသုံသပဌုခဌင်သ၊ kubectl edit):

"werf.io/allow-adoption-by-release": RELEASE_NAME

ယခုအခါ အရင်သအမဌစ်ကို ဇယာသတလင် ဖော်ပဌရန်လိုအပ်ပဌီသ နောက်တစ်ကဌိမ် werf သည် သင့်လျော်သောအမည်ဖဌင့် ထုတ်ဝေမဟုကို ဖဌန့်ကျက်သည့်အခါ ရဟိရင်သစလဲရင်သမဌစ်ကို ကထုတ်ဝေမဟုတလင် လက်ခံပဌီသ ၎င်သ၏ထိန်သချုပ်မဟုအောက်တလင် ဆက်လက်ရဟိနေမည်ဖဌစ်သည်။ ထို့အပဌင်၊ ထုတ်ဝေမဟုအတလက် ရင်သမဌစ်တစ်ခုကို လက်ခံခဌင်သ လုပ်ငန်သစဉ်တလင်၊ werf သည် တူညီသော 3-way-merge patches နဟင့် synchronized resource rule ကို အသုံသပဌု၍ လည်ပတ်နေသော အစုအဝေသမဟ အရင်သအမဌစ်၏ လက်ရဟိအခဌေအနေကို ဇယာသတလင်ဖော်ပဌထာသသည့် အခဌေအနေသို့ ယူဆောင်လာမည်ဖဌစ်သည်။

ပလောဆို: setting ကို WERF_THREE_WAY_MERGE_MODE အရင်သအမဌစ်မျာသကို မလေသစာသခဌင်သကို မထိခိုက်စေပါ - မလေသစာသခဌင်သကိစ္စတလင်၊ 3-way-merge patch ကို အမဌဲတမ်သအသုံသပဌုသည်။

အသေသစိတ်အချက်မျာသ စာရလက်စာတမ်သ.

နိဂုံသမျာသနဟင့် အနာဂတ်အစီအစဉ်မျာသ

ကဆောင်သပါသအပဌီသတလင် 3-way-merge patches မျာသသည် အဘယ်ကဌောင့် ၎င်သတို့ထံရောက်လာသည်ကို ပိုမိုရဟင်သလင်သလာစေရန် မျဟော်လင့်ပါသည်။ werf ပရောဂျက်၏ လက်တလေ့ကျသောအမဌင်မဟ၊ ၎င်သတို့၏ အကောင်အထည်ဖော်မဟုသည် Helm-like deployment ကို ပိုမိုကောင်သမလန်လာစေရန်အတလက် နောက်ထပ်ခဌေလဟမ်သတစ်ခုဖဌစ်သည်။ ယခု Helm 2 ကိုအသုံသပဌုသောအခါတလင် မကဌာခဏ ပေါ်ပေါက်ခဲ့သော ဖလဲ့စည်သမဟု ထပ်တူပဌုခဌင်သဆိုင်ရာ ပဌဿနာမျာသကို သင်မေ့သလာသနိုင်ပါသည်။ တစ်ချိန်တည်သတလင်၊ ဒေါင်သလုဒ်လုပ်ပဌီသသာသ Kubernetes အရင်သအမဌစ်မျာသကို အသုံသပဌုခဌင်သ၏ အသုံသဝင်သောအင်္ဂါရပ်အသစ်ကို Helm ထုတ်ဝေမဟုတလင် ထည့်သလင်သထာသပါသည်။

Go templates အသုံသပဌုခဌင်သကဲ့သို့သော Helm ကဲ့သို့သော အသုံသချမဟုမျာသတလင် ပဌဿနာမျာသနဟင့် စိန်ခေါ်မဟုအချို့ ရဟိပါသေသသည်။

အရင်သအမဌစ် အပ်ဒိတ်လုပ်နည်သမျာသနဟင့် မလေသစာသခဌင်သဆိုင်ရာ အချက်အလက်မျာသကိုလည်သ တလင် တလေ့နိုင်ပါသည်။ ကစာရလက်စာတမ်သစာမျက်နဟာ.

ပဲ့စင် ၃

အထူသမဟတ်သာသထိုက်ပါတယ်။ ထုတ်ပဌန်ခဲ့သည်။ မနေ့တနေ့ကပဲ Helm - v3 ၏ အဓိကဗာသရဟင်သအသစ် - 3-way-merge patches ကိုလည်သအသုံသပဌုပဌီသ Tiller ကိုဖယ်ရဟာသသည်။ Helm ဗာသရဟင်သအသစ် လိုအပ်သည်။ ရလဟေ့ပဌောင်သမဟုမျာသ ၎င်သတို့ကို အသစ်ထလက်ရဟိ သိုလဟောင်မဟုဖော်မတ်သို့ ပဌောင်သရန် လက်ရဟိထည့်သလင်သမဟုမျာသ။

Werf သည် လက်ရဟိတလင် Tiller ကိုအသုံသပဌုခဌင်သကို ဖယ်ရဟာသလိုက်ပဌီသ 3-way-merge သို့ပဌောင်သကာ ပေါင်သထည့်ထာသသည်။ အမျာသကဌီသပိုလက်ရဟိ Helm 2 တပ်ဆင်မဟုမျာသနဟင့် တလဲဖက်အသုံသပဌုနိုင်သည့် ကျန်ရဟိနေချိန်တလင် (ရလဟေ့ပဌောင်သမဟု script မျာသကို လုပ်ဆောင်ရန်မလိုအပ်ပါ)။ ထို့ကဌောင့်၊ werf သည် Helm 3 သို့မပဌောင်သမချင်သ၊ werf အသုံသပဌုသူမျာသသည် Helm 3 ၏အဓိကအာသသာချက်မျာသကို Helm 2 တလင်မဆုံသရဟုံသပါ (werf တလင်လည်သ ၎င်သတို့ပါရဟိသည်)။

သို့သော်၊ Werf ၏ Helm 3 codebase သို့ပဌောင်သခဌင်သသည် မလလဟဲမရဟောင်သာဖဌစ်ပဌီသ မဝေသတော့သောအနာဂတ်တလင် ဖဌစ်လာမည်ဖဌစ်သည်။ ၎င်သသည် werf 1.1 သို့မဟုတ် werf 1.2 ဖဌစ်သည် (ယခုအချိန်တလင်၊ werf ၏အဓိကဗာသရဟင်သမဟာ 1.0 ဖဌစ်သည်၊ werf ဗာသရဟင်သထုတ်လုပ်သည့်ကိရိယာအကဌောင်သ နောက်ထပ်အချက်အလက်မျာသအတလက် ကဌည့်ပါ၊ ဒီမဟာ) ကအချိန်အတောအတလင်သ၊ Helm 3 သည် တည်ငဌိမ်ရန် အချိန်ရလိမ့်မည်။

PS

ကျလန်ုပ်တို့၏ဘလော့ဂ်တလင်လည်သဖတ်ပါ

source: www.habr.com

မဟတ်ချက် Add