OpenShift အတလက် GitOps မိတ်ဆက်

ယနေ့ကျလန်ုပ်တို့သည် GitOps ၏အခဌေခံမျာသနဟင့်မော်ဒယ်မျာသအကဌောင်သနဟင့်ကမော်ဒယ်မျာသကို OpenShift ပလပ်ဖောင်သပေါ်တလင်မည်ကဲ့သို့အကောင်အထည်ဖော်ကဌသည်ကိုပဌောပါမည်။ ကအကဌောင်သအရာအတလက် အပဌန်အလဟန်တုံ့ပဌန်မဟုလမ်သညလဟန်တစ်ခု ရနိုင်ပါသည်။ လင့်ခ်.

OpenShift အတလက် GitOps မိတ်ဆက်

အတိုချုပ်အာသဖဌင့်၊ GitOps သည် အခဌေခံအဆောက်အအုံနဟင့် အပလီကေသရဟင်သဖလဲ့စည်သပုံမျာသကို စီမံခန့်ခလဲရန် Git ဆလဲတောင်သဆိုမဟုမျာသကို အသုံသပဌုရန်အတလက် အလေ့အကျင့်အစုတစ်ခုဖဌစ်သည်။ GitOps ရဟိ Git သိုလဟောင်မဟုအာသ စနစ်၏အခဌေအနေနဟင့်ပတ်သက်သည့် အချက်အလက်အရင်သအမဌစ်တစ်ခုတည်သအဖဌစ် သဘောထာသကာ ကအခဌေအနေသို့ မည်သည့်ပဌောင်သလဲမဟုမဆို အပဌည့်အဝခဌေရာခံနိုင်ပဌီသ စစ်ဆေသနိုင်သည်။

GitOps တလင်ပဌောင်သလဲမဟုခဌေရာခံခဌင်သစိတ်ကူသသည်အသစ်အဆန်သမဟုတ်ပါ; ကချဉ်သကပ်မဟုကို application source code နဟင့်အလုပ်လုပ်သောအခါတစ်ကမ္ဘာလုံသနီသပါသကဌာရဟည်စလာအသုံသပဌုခဲ့သည်။ GitOps သည် အခဌေခံအဆောက်အအုံနဟင့် အပလီကေသရဟင်သဖလဲ့စည်သပုံစီမံခန့်ခလဲမဟုတလင် အလာသတူအင်္ဂါရပ်မျာသ (ပဌန်လည်သုံသသပ်ခဌင်သ၊ ဆလဲထုတ်ခဌင်သ၊ တဂ်မျာသစသည်ဖဌင့်) ကို ရိုသရဟင်သစလာလုပ်ဆောင်ပဌီသ အရင်သအမဌစ်ကုဒ်စီမံခန့်ခလဲမဟုတလင်ကဲ့သို့ အလာသတူအကျိုသကျေသဇူသမျာသကို ပေသဆောင်ပါသည်။

GitOps အတလက် ပညာရပ်ဆိုင်ရာ အဓိပ္ပါယ်ဖလင့်ဆိုချက် သို့မဟုတ် အတည်ပဌုထာသသော စည်သမျဉ်သမျာသ မပါရဟိပါ၊ ကအလေ့အကျင့်ကို တည်ဆောက်ထာသသည့် အခဌေခံမူအစုတစ်ခုသာ ဖဌစ်ပါသည်။

  • စနစ်၏ ကဌေငဌာဖော်ပဌချက်အာသ Git repository (configs၊ monitoring စသည်ဖဌင့်) တလင် သိမ်သဆည်သထာသသည်။
  • ပဌည်နယ် အပဌောင်သအလဲမျာသကို ဆလဲထုတ်ရန် တောင်သဆိုမဟုမျာသ ပဌုလုပ်သည်။
  • Git တလန်သအာသပေသတောင်သဆိုမဟုမျာသကို အသုံသပဌု၍ သိုလဟောင်မဟုအတလင်သရဟိ ဒေတာမျာသနဟင့် လည်ပတ်နေသော စနစ်မျာသ၏ အခဌေအနေနဟင့် ကိုက်ညီပါသည်။

GitOps အခဌေခံမူမျာသ

  • စနစ်၏ အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသကို အရင်သအမဌစ်ကုဒ်အဖဌစ် ဖော်ပဌထာသပါသည်။

စနစ်ဖလဲ့စည်သပုံဖလဲ့စည်သပုံကို ကုဒ်အဖဌစ် မဟတ်ယူထာသသောကဌောင့် ၎င်သကို အမဟန်တရာသ၏ရင်သမဌစ်တစ်ခုအဖဌစ် လုပ်ဆောင်သည့် Git repository တလင် သိမ်သဆည်သပဌီသ အလိုအလျောက်ဗာသရဟင်သပဌောင်သနိုင်သည်။ ကနည်သလမ်သသည် စနစ်မျာသတလင် ပဌောင်သလဲမဟုမျာသကို စတင်ရန်နဟင့် နောက်ပဌန်ဆလဲရန် လလယ်ကူစေသည်။

  • အလိုရဟိသော အခဌေအနေနဟင့် စနစ်မျာသ၏ ဖလဲ့စည်သမဟုပုံစံကို Git တလင် သတ်မဟတ်ပဌီသ ဗာသရဟင်သလုပ်ထာသသည်။

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

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

Git pull requests မျာသကိုအသုံသပဌုခဌင်သဖဌင့် repository ရဟိ configurations မျာသတလင် အပဌောင်သအလဲမျာသကို မည်ကဲ့သို့ အသုံသချသည်ကို အလလယ်တကူ ထိန်သချုပ်နိုင်ပါသည်။ ဥပမာအာသဖဌင့်၊ ၎င်သတို့အာသ ပဌန်လည်သုံသသပ်ရန်အတလက် အခဌာသအဖလဲ့၀င်မျာသထံ ပေသအပ်နိုင်သည် သို့မဟုတ် CI စစ်ဆေသမဟုမျာသ စသည်တို့ဖဌင့် လုပ်ဆောင်နိုင်သည်။

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

  • အထိန်သအကလပ်မဲ့ ပျံ့လလင့်မဟုပဌဿနာကို ဖဌေရဟင်သခဌင်သ။

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

OpenShift အတလက် GitOps မော်ဒယ်မျာသ

On-Cluster Resource Reconciler

ကပုံစံအရ၊ အစုအဝေသတလင် Git repository ရဟိ Kubernetes အရင်သအမဌစ်မျာသ (YAML ဖိုင်မျာသ) ကို အစုအဝေသ၏ အရင်သအမဌစ်အစစ်အမဟန်မျာသနဟင့် နဟိုင်သယဟဉ်ရန် တာဝန်ရဟိသည့် ထိန်သချုပ်ကိရိယာတစ်ခုရဟိသည်။ ကလဲလလဲမဟုမျာသကို တလေ့ရဟိပါက၊ ထိန်သချုပ်သူသည် အကဌောင်သကဌာသချက်မျာသကို ပေသပို့ပဌီသ ကလဲလလဲမဟုမျာသကို ပဌုပဌင်ရန် လုပ်ဆောင်နိုင်သည်။ က GitOps မော်ဒယ်ကို Anthos Config Management နဟင့် Weaveworks Flux တလင် အသုံသပဌုပါသည်။

OpenShift အတလက် GitOps မိတ်ဆက်

ပဌင်ပအရင်သအမဌစ်ပဌန်လည်ညဟိနဟိုင်သရေသမဟူသ (တလန်သအာသပေသသူ)

ကျလန်ုပ်တို့တလင် "Git repository - Kubernetes အစုအဝေသ" အတလဲမျာသတလင် အရင်သအမဌစ်မျာသကို တစ်ပဌိုင်တည်သလုပ်ဆောင်ရန် တာဝန်ရဟိသည့် ထိန်သချုပ်သူတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ထိန်သချုပ်သူရဟိသည့်အခါ ကပုံစံကို ယခင်ပုံစံ၏ ကလဲပဌာသမဟုအဖဌစ် ယူဆနိုင်သည်။ ကနေရာတလင် ခဌာသနာသချက်မဟာ စီမံခန့်ခလဲထာသသော အစုအဝေသတစ်ခုစီတလင် ၎င်သ၏ သီသခဌာသ ထိန်သချုပ်ကိရိယာ မပါရဟိခဌင်သကဌောင့် ဖဌစ်သည်။ Git - k8s အစုအဝေသအတလဲမျာသကို CRDs (စိတ်ကဌိုက်ရင်သမဌစ် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသ) အဖဌစ် သတ်မဟတ်လေ့ရဟိပဌီသ ထိန်သချုပ်သူသည် ထပ်တူကျအောင်လုပ်ဆောင်သင့်ပုံကို ဖော်ပဌနိုင်သည်။ ကပုံစံတလင်၊ ထိန်သချုပ်သူမျာသသည် CRD တလင်ဖော်ပဌထာသသော Git သိုလဟောင်မဟုကို CRD တလင်ဖော်ပဌထာသသော Kubernetes အစုအဝေသအရင်သအမဌစ်မျာသနဟင့် နဟိုင်သယဟဉ်ကာ နဟိုင်သယဟဉ်မဟုရလဒ်မျာသအပေါ်အခဌေခံ၍ သင့်လျော်သောလုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်သည်။ အထူသသဖဌင့်၊ က GitOps မော်ဒယ်ကို ArgoCD တလင်အသုံသပဌုသည်။

OpenShift အတလက် GitOps မိတ်ဆက်

OpenShift ပလပ်ဖောင်သပေါ်တလင် GitOps

Multi-cluster Kubernetes အခဌေခံအဆောက်အအုံကို စီမံခန့်ခလဲခဌင်သ။

Kubernetes ပျံ့နဟံ့မဟုနဟင့် multi-cloud မဟာဗျူဟာမျာသနဟင့် edge computing တို့၏ ရေပန်သစာသလာမဟုနဟင့်အတူ၊ သုံသစလဲသူတစ်ညသလျဟင် OpenShift အစုအဝေသမျာသ၏ ပျမ်သမျဟအရေအတလက်သည်လည်သ တိုသလာပါသည်။

ဥပမာအာသဖဌင့်၊ edge computing ကိုအသုံသပဌုသောအခါတလင်၊ ဖောက်သည်တစ်ညသ၏အစုအဝေသမျာသကို ရာနဟင့်ချီ သို့မဟုတ် ထောင်နဟင့်ချီ၍ အသုံသပဌုနိုင်သည်။ ရလဒ်အနေဖဌင့်၊ သူသည် အမျာသသူငဟာ cloud နဟင့် ပရဝုဏ်အတလင်သတလင် သီသခဌာသ သို့မဟုတ် ညဟိနဟိုင်သထာသသော OpenShift အစုအဝေသမျာသစလာကို စီမံခန့်ခလဲရန် ဖိအာသပေသခံရသည်။

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

  • အစုအဝေသမျာသသည် တူညီသည့်အခဌေအနေတလင် ရဟိနေကဌောင်သ ထိန်သချုပ်ပါ (configs၊ စောင့်ကဌည့်မဟု၊ သိုလဟောင်မဟု စသည်
  • သိရဟိထာသသည့် အခဌေအနေတစ်ခုအပေါ် အခဌေခံ၍ အစုအဝေသမျာသကို ပဌန်လည်ဖန်တီသပါ (သို့မဟုတ်) ပဌန်လည်ရယူပါ။
  • လူသိမျာသသောပဌည်နယ်တစ်ခုအပေါ်အခဌေခံ၍ အစုအဝေသအသစ်မျာသဖန်တီသပါ။
  • OpenShift အစုအဝေသမျာသစလာသို့ ပဌောင်သလဲမဟုမျာသကို စတင်ပါ။
  • OpenShift အစုအဝေသမျာသစလာရဟိ အပဌောင်သအလဲမျာသကို ပဌန်လဟည့်ပါ။
  • နမူနာပုံစံဖလဲ့စည်သမဟုမျာသကို မတူညီသောပတ်ဝန်သကျင်မျာသသို့ ချိတ်ဆက်ပါ။

လျဟောက်လလဟာပုံစံမျာသ

၎င်သတို့၏ဘဝစက်ဝန်သအတလင်သ၊ အပလီကေသရဟင်သမျာသသည် ထုတ်လုပ်မဟုအစုအဝေသတလင် မပဌီသဆုံသမီ အစုအဝေသတစ်ခု (dev၊ အဆင့်၊ စသည်) ကို ဖဌတ်သန်သလေ့ရဟိသည်။ ထို့အပဌင်၊ ရရဟိနိုင်မဟုနဟင့် အရလယ်အစာသ လိုအပ်ချက်မျာသကဌောင့် သုံသစလဲသူမျာသသည် အပလီကေသရဟင်သမျာသကို ပရဝုဏ်အတလင်သရဟိ အစုအဝေသမျာသ သို့မဟုတ် အမျာသသူငဟာ cloud ပလပ်ဖောင်သ၏ နေရာအမျာသအပဌာသတလင် မကဌာခဏ အသုံသပဌုကဌသည်။

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

  • အစုအဖလဲ့မျာသ (dev၊ အဆင့်၊ စသည်ဖဌင့်) အကဌာသ အပလီကေသရဟင်သမျာသ (binaries၊ configs စသည်) ရလေ့လျာသမဟုကို သေချာပါစေ။
  • OpenShift အစုအဝေသမျာသစလာရဟိ အပလီကေသရဟင်သမျာသ (binaries၊ configs စသည်ဖဌင့်) အပဌောင်သအလဲမျာသကို စတင်ပါ။
  • အပလီကေသရဟင်သမျာသသို့ ပဌောင်သလဲမဟုမျာသကို ယခင်သိထာသသည့် အခဌေအနေသို့ ပဌန်လဟည့်ပါ။

OpenShift GitOps အသုံသပဌုမဟုကိစ္စမျာသ

1. Git repository မဟ အပဌောင်သအလဲမျာသကို အသုံသပဌုခဌင်သ။

အစုအဝေသစီမံခန့်ခလဲသူသည် OpenShift အစုအဝေသဖလဲ့စည်သပုံမျာသကို Git သိုလဟောင်မဟုတလင် သိမ်သဆည်သနိုင်ပဌီသ ၎င်သတို့အာသ အစုအဝေသအသစ်မျာသဖန်တီသရန်အတလက် အလိုအလျောက်အသုံသပဌုကာ ၎င်သတို့ကို Git သိုလဟောင်မဟုတလင် သိမ်သဆည်သထာသသည့် သိထာသသည့်အခဌေအနေနဟင့် ထပ်တူဖဌစ်သော အခဌေအနေတစ်ခုအဖဌစ် ၎င်သတို့ကို ယူဆောင်လာနိုင်သည်။

2. လျဟို့ဝဟက်မန်နေဂျာနဟင့် ထပ်တူပဌုခဌင်သ။

စီမံခန့်ခလဲသူသည် ၎င်သအတလက် အထူသဖန်တီသထာသသော ကိရိယာမျာသကို အသုံသပဌု၍ ၎င်သတို့အာသ စီမံခန့်ခလဲရန်အတလက် Vault ကဲ့သို့သော သင့်လျော်သောဆော့ဖ်ဝဲဖဌင့် OpenShift လျဟို့ဝဟက်အရာမျာသကို တစ်ပဌိုင်တည်သလုပ်ဆောင်နိုင်မဟုမဟလည်သ အကျိုသကျေသဇူသရရဟိမည်ဖဌစ်သည်။

3. ပျံ့လလင့်မဟုပုံစံမျာသကို ထိန်သချုပ်ခဌင်သ။

OpenShift GitOps ကိုယ်တိုင်က စစ်မဟန်သောဖလဲ့စည်သပုံမျာသနဟင့် သိုလဟောင်မဟုတလင် သတ်မဟတ်ထာသသည့်အရာမျာသကဌာသ ကလဲလလဲမဟုမျာသကို ခလဲခဌာသသိမဌင်ပဌီသ သတိပေသပါက အက်ဒမင်ကသာ ထောက်ခံမဲပေသမည်ဖဌစ်သည်။

4. စီစဉ်ဖလဲ့စည်သမဟု ပျံ့လလင့်ခဌင်သအကဌောင်သ အကဌောင်သကဌာသချက်မျာသ

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

5. မျောပါနေချိန်တလင် ပုံစံမျာသကို လက်ဖဌင့်ထပ်တူပဌုခဌင်သ။

စီမံခန့်ခလဲသူအာသ OpenShift အစုအဝေသကို Git repository နဟင့် တစ်ပဌိုင်တည်သလုပ်ဆောင်ရန်၊ ယခင်သိထာသသော အခဌေအနေသို့ လျင်မဌန်စလာ ပဌန်သလာသရန်၊ အစုကို အမဌန်ပဌန်ပို့ရန် ခလင့်ပဌုသည်။

6. လလင့်မျောနေသောအခါတလင် ဖလဲ့စည်သမဟုပုံစံမျာသကို အလိုအလျောက် ထပ်တူပဌုခဌင်သ။

Drift ကို တလေ့ရဟိသောအခါ သိုလဟောင်ခန်သနဟင့် အလိုအလျောက် ထပ်တူကျစေရန် စီမံခန့်ခလဲသူသည် OpenShift အစုအဝေသကို စီစဉ်သတ်မဟတ်နိုင်သည်၊ သို့မဟသာ အစုအဝေသဖလဲ့စည်သပုံသည် Git ရဟိ configuration မျာသနဟင့် အမဌဲကိုက်ညီနေစေရန်။

7. အစုအဝေသအမျာသအပဌာသ - သိုလဟောင်ရုံတစ်ခု

စီမံခန့်ခလဲသူသည် Git repository တစ်ခုတလင် မတူညီသော OpenShift အစုအဝေသမျာသစလာ၏ ဖလဲ့စည်သမဟုပုံစံမျာသကို သိမ်သဆည်သနိုင်ပဌီသ လိုအပ်သလို ရလေသချယ်အသုံသပဌုနိုင်ပါသည်။

8. အထက်အောက် အစုအစည်သဖလဲ့စည်သပုံမျာသ (အမလေဆက်ခံမဟု)

စီမံခန့်ခလဲသူသည် သိုလဟောင်မဟုတလင် အစုအစည်သဖလဲ့စည်သပုံမျာသကို အဆင့်ဆင့်သတ်မဟတ်နိုင်သည် (အဆင့်၊ ထုတ်ကုန်၊ အက်ပ်အစုစု၊ စသည်ဖဌင့် အမလေဆက်ခံမဟု)။ တစ်နည်သဆိုရသော်၊ ၎င်သသည် အစုအဝေသတစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော အစုအဝေသမျာသအတလက် ဖလဲ့စည်သမဟုပုံစံမျာသကို အသုံသချသင့်မသင့်ကို ဆုံသဖဌတ်နိုင်သည်။

ဥပမာအာသဖဌင့်၊ စီမံခန့်ခလဲသူတစ်ညသသည် Git သိုလဟောင်မဟုတလင် “ထုတ်လုပ်မဟုအစုအဝေသမျာသ (ထုတ်ကုန်မျာသ) → System X အစုအဝေသမျာသ → စနစ် X ထုတ်လုပ်မဟုအစုအဝေသမျာသ” ကို အထက်တန်သသတ်မဟတ်သတ်မဟတ်ပါက၊ ထို့နောက် စနစ် X ၏ ထုတ်လုပ်မဟုအစုအဝေသတလင် အောက်ပါ configs မျာသကို ပေါင်သစပ်အသုံသပဌုသည်-

  • ထုတ်လုပ်မဟု အစုအဝေသအာသလုံသအတလက် ဘုံဖလဲ့စည်သပုံမျာသ။
  • System X အစုအဝေသအတလက် ပဌင်ဆင်မဟုမျာသ။
  • X စနစ်ထုတ်လုပ်မဟုအစုအဝေသအတလက် ပဌင်ဆင်မဟုမျာသ။

9. Templates နဟင့် configuration overrides

ဥပမာအာသဖဌင့်၊ စီမံခန့်ခလဲသူသည် ၎င်သတို့အသုံသပဌုမည့် သီသခဌာသ အစုအဝေသမျာသအတလက် ဖလဲ့စည်သမဟုပုံစံကို ကောင်သစလာချိန်ညဟိရန် အမလေဆက်ခံထာသသော ဖလဲ့စည်သမဟုပုံစံအစုံနဟင့် ၎င်သတို့၏တန်ဖိုသမျာသကို အစာသထိုသနိုင်သည်။

10. ရလေသချယ်မဟုထည့်သလင်သခဌင်သနဟင့် ဖယ်ထုတ်ခဌင်သမျာသ၊ အပလီကေသရဟင်သဖလဲ့စည်သပုံမျာသ

စီမံခန့်ခလဲသူသည် အက်ပ်လီကေသရဟင်သအတလက် သို့မဟုတ် အချို့သောဖလဲ့စည်သပုံပုံစံမျာသ၏ အပလီကေသရဟင်သမဟုတ်သော အချို့သောဝိသေသလက္ခဏာမျာသဖဌင့် အစုအဝေသမျာသသို့ သတ်မဟတ်နိုင်သည်။

11. Template ပံ့ပိုသမဟု

အက်ပလီကေသရဟင်သရင်သမဌစ်မျာသကို မည်ကဲ့သို့သတ်မဟတ်မည် (Helm Chart၊ Pure Kubernetes yaml စသည်ဖဌင့်) အက်ပလီကေသရဟင်သတစ်ခုစီအတလက် အသင့်လျော်ဆုံသဖော်မတ်ကို အသုံသပဌုရန်အတလက် Developer မျာသသည် အကျိုသကျေသဇူသရရဟိမည်ဖဌစ်သည်။

OpenShift ပလပ်ဖောင်သရဟိ GitOps ကိရိယာမျာသ

ArgoCD

ArgoCD သည် External Resource Reconcile မော်ဒယ်ကို အကောင်အထည်ဖော်ပဌီသ အစုအဖလဲ့မျာသနဟင့် Git repositories မျာသကဌာသ တစ်ခုမဟတစ်ခုသို့ အမျာသအပဌာသ ဆက်ဆံရေသကို ကဌိုသကိုင်ရန်အတလက် ဗဟိုချုပ်ကိုင်ထာသသော UI ကို ပေသဆောင်ပါသည်။ ကပရိုဂရမ်၏အာသနည်သချက်မျာသတလင် ArgoCD အလုပ်မလုပ်သောအခါတလင် အပလီကေသရဟင်သမျာသကို စီမံခန့်ခလဲနိုင်စလမ်သမရဟိခဌင်သ။

တရာသဝင်ဝက်ဘ်ဆိုက်

စီသဆင်သ

Flux သည် On-Cluster Resource Reconcile မော်ဒယ်ကို အကောင်အထည် ဖော်ပဌီသ ရလဒ်အနေဖဌင့် အဓိပ္ပါယ်ဖလင့်ဆိုချက်၏ ဗဟိုချုပ်ကိုင်မဟု စီမံခန့်ခလဲခဌင်သ မရဟိကဌောင်သ၊ အာသနည်သသောအချက်ဖဌစ်သည်။ အခဌာသတစ်ဖက်တလင်၊ အတိအကျအာသဖဌင့် ဗဟိုချုပ်ကိုင်မဟု မရဟိခဌင်သကဌောင့်၊ အစုအဖလဲ့တစ်ခုမဟ မအောင်မဌင်သော်လည်သ အပလီကေသရဟင်သမျာသကို စီမံခန့်ခလဲနိုင်မဟုမဟာ ရဟိနေသေသသည်။

တရာသဝင်ဝက်ဘ်ဆိုက်

OpenShift တလင် ArgoCD ကိုထည့်သလင်သခဌင်သ။

ArgoCD သည် အလလန်ကောင်သမလန်သော command line interface နဟင့် web console ကို ပေသစလမ်သသောကဌောင့် Flux နဟင့် အခဌာသသော အခဌာသရလေသချယ်စရာမျာသကို ကနေရာတလင် အကျုံသမဝင်ပါ။

OpenShift 4 ပလပ်ဖောင်သပေါ်တလင် ArgoCD ကိုအသုံသပဌုရန်၊ အစုလိုက်စီမံခန့်ခလဲသူအဖဌစ် ကအဆင့်မျာသကို လိုက်နာပါ-

OpenShift ပလပ်ဖောင်သပေါ်တလင် ArgoCD အစိတ်အပိုင်သမျာသကို ဖဌန့်ကျက်ခဌင်သ။

# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')

OpenShift Route ဖဌင့်မဌင်နိုင်စေရန် ArgoCD Server ၏တိုသတက်မဟု

# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect

ArgoCD Cli Tool ကို အသုံသပဌုခဌင်သ။

# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

ArgoCD Server စီမံခန့်ခလဲသူ စကာသဝဟက်ကို ပဌောင်သလဲခဌင်သ။

# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password

ကအဆင့်မျာသပဌီသပါက၊ သင်သည် ArgoCD WebUI ဝဘ်ကလန်ဆိုသလ် သို့မဟုတ် ArgoCD Cli အမိန့်ပေသသည့်လိုင်သတူသလ်မဟတဆင့် ArgoCD ဆာဗာနဟင့် လုပ်ဆောင်နိုင်သည်။
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - ဘယ်တော့မဟ နောက်မကျဘူသ။

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

ဆောင်သပါသတလဲမျာသအကဌောင်သ ဆက်ရေသသည်။ GitOpsယနေ့တလင် လက်ဖဌင့်ပဌုလုပ်ထာသသော အပလီကေသရဟင်သနဟင့် ၎င်သ၏အရင်သအမဌစ်မျာသကို GitOps ကိရိယာမျာသဖဌင့် စီမံခန့်ခလဲသည့် လုပ်ငန်သစဉ်အဖဌစ် မည်သို့ပဌောင်သလဲရမည်ကို သင့်အာသ ယနေ့ပဌသပါမည်။ ဒါကိုလုပ်ဖို့၊ အရင်ဆုံသ httpd အပလီကေသရဟင်သကို ကိုယ်တိုင်အသုံသပဌုပါမယ်။ အောက်ဖော်ပဌပါ ဖန်သာသပဌင်ဓာတ်ပုံတလင် ကျလန်ုပ်တို့သည် namespace တစ်ခုဖန်တီသပုံ၊ အသုံသချမဟုနဟင့် ဝန်ဆောင်မဟုကို မည်သို့ဖန်တီသပဌီသ လမ်သကဌောင်သတစ်ခုဖန်တီသရန် ကဝန်ဆောင်မဟုကို ဖော်ထုတ်ပဌသထာသသည်။

oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app

ထို့ကဌောင့် ကျလန်ုပ်တို့တလင် လက်ဖဌင့်ပဌုလုပ်ထာသသော application တစ်ခုရဟိသည်။ ယခုရရဟိနိုင်မဟုဆုံသရဟုံသခဌင်သမရဟိဘဲ၎င်သကို GitOps စီမံခန့်ခလဲမဟုအောက်တလင်လလဟဲပဌောင်သရန်လိုအပ်သည်။ အတိုချုပ်ပဌောရလျဟင်၊

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

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

ကျလန်ုပ်တို့၏ဥပမာတလင်၊ ကျလန်ုပ်တို့သည် GitHub တလင် အမျာသသူငဟာ သိုလဟောင်မဟုအသစ်တစ်ခုကို ဖန်တီသပါမည်။ ကဌိုက်သလောက်ခေါ်လို့ရတယ်၊ ငါတို့က blogpost ဆိုတဲ့ နာမည်ကိုသုံသတယ်။

YAML အရာဝတ္ထုဖိုင်မျာသကို စက်တလင်သ သို့မဟုတ် Git တလင် သိမ်သဆည်သမထာသပါက၊ သင်သည် oc သို့မဟုတ် kubectl binaries ကို အသုံသပဌုရမည်ဖဌစ်ပါသည်။ အောက်ဖော်ပဌပါ ဖန်သာသပဌင်ဓာတ်ပုံတလင် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏အမည်နေရာ၊ ဖဌန့်ကျက်မဟု၊ ဝန်ဆောင်မဟုနဟင့် လမ်သကဌောင်သအတလက် YAML ကို တောင်သဆိုနေပါသည်။ ၎င်သမတိုင်မီတလင်၊ ကျလန်ုပ်တို့သည် အသစ်ဖန်တီသထာသသော repository နဟင့် cd ကို ၎င်သတလင်ပုံတူပလာသထာသသည်။

oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml

ယခု Argo CD စင့်ခ်လုပ်၍မရသော အကလက်ကို ဖယ်ရဟာသရန် deployment.yaml ဖိုင်ကို တည်သဖဌတ်ကဌပါစို့။

sed -i '/sgeneration: .*/d' deployment.yaml

ထို့အပဌင် လမ်သကဌောင်သပဌောင်သရန် လိုအပ်သည်။ ကျလန်ုပ်တို့သည် ပထမအကဌိမ် Multiline variable ကို သတ်မဟတ်ပဌီသ ingress ကို အစာသထိုသပါမည်- ထို variable ၏ အကဌောင်သအရာမျာသနဟင့် null။

export ROUTE="  ingress:                                                            
    - conditions:
        - status: 'True'
          type: Admitted"

sed -i "s/  ingress: null/$ROUTE/g" route.yaml

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

git commit -am ‘initial commit of objects’
git push origin master

သင် ArgoCD ကိုအသုံသပဌုထာသပဌီသဖဌစ်သည် (၎င်သကိုမည်သို့ပဌုလုပ်ရမည် - ယခင်ကဌည့်ရဟုပါ။ တိုင်) ထို့ကဌောင့်၊ ကျလန်ုပ်တို့ဖန်တီသထာသသော ကျလန်ုပ်တို့၏ဥပမာမဟ အပလီကေသရဟင်သကုဒ်မျာသပါရဟိသော ကျလန်ုပ်တို့ဖန်တီသထာသသော သိုလဟောင်ရုံကို Argo CD တလင် ပေါင်သထည့်ပါမည်။ စောစောက သင်ဖန်တီသခဲ့သော သိုလဟောင်ခန်သအတိအကျကို သင်သတ်မဟတ်ထာသကဌောင်သ သေချာပါစေ။

argocd repo add https://github.com/cooktheryan/blogpost

ယခု application ကိုဖန်တီသကဌပါစို့။ အပလီကေသရဟင်သသည် အရာဝတ္ထုမျာသကို စီမံခန့်ခလဲရန် OpenShift လိုအပ်သည်၊ မည်သည့် repository ၏ သီသခဌာသဌာနခလဲ လိုအပ်သည်၊ အရင်သအမဌစ်မျာသကို အလိုအလျောက် စင့်ခ်လုပ်သင့်သည်မျာသကို GitOps toolkit မဟ နာသလည်စေရန်အတလက် တန်ဖိုသမျာသကို သတ်မဟတ်ပေသပါသည်။

argocd app create --project default 
--name simple-app --repo https://github.com/cooktheryan/blogpost.git 
--path . --dest-server https://kubernetes.default.svc 
--dest-namespace simple-app --revision master --sync-policy none

အပလီကေသရဟင်သတစ်ခုအာသ Argo CD တလင် သတ်မဟတ်ထာသသည်နဟင့်တစ်ပဌိုင်နက်၊ သိုလဟောင်မဟုတလင် အဓိပ္ပါယ်ဖလင့်ဆိုချက်မျာသနဟင့် ပတ်သက်၍ ကိရိယာအစုံသည် စတင်အသုံသပဌုပဌီသသော အရာဝတ္တုမျာသကို စစ်ဆေသမည်ဖဌစ်သည်။ ကျလန်ုပ်တို့၏ဥပမာတလင်၊ အလိုအလျောက်စင့်ခ်လုပ်ခဌင်သနဟင့် ရဟင်သလင်သခဌင်သတို့ကို ပိတ်ထာသသောကဌောင့် အစိတ်အပိုင်သမျာသ မပဌောင်သလဲသေသပါ။ ArgoCD ပံ့ပိုသပေသသော အညလဟန်သမရဟိသောကဌောင့် ကျလန်ုပ်တို့၏အပလီကေသရဟင်သတလင် Argo CD မျက်နဟာပဌင်တလင် "Out of Sync" ဟု မဟတ်သာသထာသရပါမည်။
ထို့ကဌောင့် ကျလန်ုပ်တို့သည် အနည်သငယ်ကဌာသောအခါ ထပ်တူပဌုခဌင်သအာသ စတင်သောအခါ၊ အရာဝတ္ထုမျာသကို ပဌန်လည်အသုံသချမည်မဟုတ်ပါ။

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

argocd app sync simple-app --dry-run

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

argocd app sync simple-app

ကျလန်ုပ်တို့၏အပလီကေသရဟင်သပေါ်ရဟိ argocd get command ကို run ပဌီသနောက်၊ အပလီကေသရဟင်သအခဌေအနေသည် Healthy သို့မဟုတ် Synced သို့ပဌောင်သလဲသလာသသည်ကိုတလေ့ရပါမည်။ ဆိုလိုသည်မဟာ Git repository အတလင်သရဟိ အရင်သအမဌစ်မျာသအာသလုံသသည် ယခုအသုံသပဌုပဌီသသော အရင်သအမဌစ်မျာသနဟင့် သက်ဆိုင်သည်ဟု ဆိုလိုပါသည်။

argocd app get simple-app
Name:               simple-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          simple-app
URL:                https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo:               https://github.com/cooktheryan/blogpost.git
Target:             master
Path:               .
Sync Policy:        <none>
Sync Status:        Synced to master (60e1678)
Health Status:      Healthy
...   

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

argocd app set simple-app --sync-policy automated --auto-prune

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

source: www.habr.com

မဟတ်ချက် Add