ကလန်တိန်နာပုံမျာသကို "စမတ်" သန့်ရဟင်သရေသနဟင့် werf တလင်၎င်သ၏ဖဌေရဟင်သချက်

ကလန်တိန်နာပုံမျာသကို "စမတ်" သန့်ရဟင်သရေသနဟင့် werf တလင်၎င်သ၏ဖဌေရဟင်သချက်

ဆောင်သပါသသည် Kubernetes ထံပေသပို့သော cloud ဇာတိအက်ပ်လီကေသရဟင်သမျာသအတလက် ခေတ်မီ CI/CD ပိုက်လိုင်သမျာသ၏ လက်တလေ့ဖဌစ်ရပ်မျာသတလင် ကလန်တိန်နာမဟတ်ပုံတင်ခဌင်သ (Docker Registry နဟင့် ၎င်သ၏ analogues) မျာသတလင် စုပုံနေသောပုံမျာသကို သန့်ရဟင်သရေသလုပ်ခဌင်သဆိုင်ရာ ပဌဿနာမျာသကို ဆလေသနလေသထာသသည်။ ရုပ်ပုံမျာသ၏ ဆက်စပ်မဟုနဟင့် အလိုအလျောက် သန့်ရဟင်သရေသ၊ နေရာချလေတာခဌင်သနဟင့် အသင်သမျာသ၏ လိုအပ်ချက်မျာသကို ပဌည့်မီခဌင်သအတလက် ရရဟိလာသော အခက်အခဲမျာသအတလက် အဓိက စံသတ်မဟတ်ချက်မျာသကို ပေသထာသသည်။ နောက်ဆုံသတလင်၊ သီသခဌာသ Open Source ပရောဂျက်တစ်ခု၏ ဥပမာကို အသုံသပဌု၍ ကအခက်အခဲမျာသကို မည်သို့ကျော်လလဟာသနိုင်သည်ကို ကျလန်ုပ်တို့ ပဌောပဌပါမည်။

နိဒါန်သ

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

  1. ပုံမျာသအတလက် သတ်မဟတ်ထာသသော tag အရေအတလက်ကို အသုံသပဌုပါ။
  2. ပုံမျာသကို တစ်နည်သနည်သဖဌင့် သန့်ရဟင်သပါ။


ပထမကန့်သတ်ချက်သည် တစ်ခါတစ်ရံတလင် အသင်သငယ်မျာသအတလက် လက်ခံနိုင်သည်။ ဆော့ဖ်ဝဲရေသသာသသူမျာသသည် အမဌဲတမ်သ တဂ်မျာသ လုံလောက်ပါက (latest, main, test, boris စသည်ဖဌင့်) registry သည် အရလယ်အစာသ ကဌီသလာမည် မဟုတ်သည့်အပဌင် သန့်ရဟင်သရေသ လုပ်ဖို့ လုံသဝ စဉ်သစာသနေစရာ မလိုတော့ဘဲ အချိန်အတော်ကဌာအောင် ကဌီသထလာသနေပါသည်။ နောက်ဆုံသတလင်၊ မသက်ဆိုင်သောပုံမျာသအာသလုံသကို ဖျက်ပစ်ပဌီသ သန့်ရဟင်သရေသလုပ်ရန် အလုပ်မကျန်တော့ပါ (အရာရာတိုင်သကို ပုံမဟန်အမဟိုက်သိမ်သသူမဟ လုပ်ဆောင်သည်)။

သို့ရာတလင်၊ ကချဉ်သကပ်မဟုသည် ဖလံ့ဖဌိုသတိုသတက်မဟုကို မျာသစလာ ကန့်သတ်ထာသပဌီသ ခေတ်မီ CI/CD ပရောဂျက်မျာသနဟင့် သက်ဆိုင်ခဲပါသည်။ ဖလံ့ဖဌိုသတိုသတက်မဟု၏ အရေသပါသော အစိတ်အပိုင်သတစ်ခုဖဌစ်ခဲ့သည်။ အလိုအလျောက်၎င်သသည် သုံသစလဲသူမျာသထံ ပိုမိုမဌန်ဆန်စလာ စမ်သသပ်ခဌင်သ၊ အသုံသချခဌင်သနဟင့် လုပ်ဆောင်ချက်အသစ်မျာသကို ပေသအပ်နိုင်စေပါသည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏ ပရောဂျက်အာသလုံသတလင် ကတိတစ်ခုစီဖဌင့် CI ပိုက်လိုင်သကို အလိုအလျောက် ဖန်တီသပါသည်။ ၎င်သတလင်၊ ရုပ်ပုံအာသ ပေါင်သစည်သခဌင်သ၊ စမ်သသပ်ခဌင်သ၊ အမဟာသရဟာပဌင်ခဌင်သနဟင့် ကျန်စစ်ဆေသမဟုမျာသအတလက် Kubernetes ဆာသကစ်အမျိုသမျိုသသို့ ထုတ်ပေသပဌီသ အာသလုံသကောင်သပါက အပဌောင်သအလဲမျာသသည် သုံသစလဲသူထံရောက်ရဟိသလာသမည်ဖဌစ်သည်။ ကအရာသည် ဒုံသပျံသိပ္ပံမဟုတ်တော့ဘဲ၊ သင်ကဆောင်သပါသကိုဖတ်နေသောကဌောင့် လူအမျာသအတလက် နေ့စဉ်ဖဌစ်ပျက်မဟုတစ်ခုဖဌစ်သည်။

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

ဒါပေမယ့် ပုံတစ်ပုံဟာ ဆက်စပ်မဟုရဟိမရဟိကို သင်ဘယ်လိုဆုံသဖဌတ်မလဲ။

ပုံ၏ဆက်စပ်မဟုမျာသအတလက် စံသတ်မဟတ်ချက်မျာသ

ကိစ္စအမျာသစုတလင်၊ အဓိက စံနဟုန်သမျာသမဟာ-

1. ပထမဆုံသ (အထင်ရဟာသဆုံသနဟင့် အဝေဖန်အခံရဆုံသ) သည် ထိုပုံမျာသဖဌစ်သည်။ Kubernetes တလင် လက်ရဟိအသုံသပဌုနေသည်။. ကပုံမျာသကို ဖယ်ရဟာသခဌင်သသည် သိသာထင်ရဟာသသော ထုတ်လုပ်မဟုရပ်နာသချိန် ကုန်ကျစရိတ်ကို ဖဌစ်ပေါ်စေသည် (ဥပမာ၊ ပုံမျာသကို ပုံတူကူသရန်အတလက် လိုအပ်နိုင်သည်) သို့မဟုတ် loops တစ်ခုခုရဟိ အဖလဲ့မဟ အမဟာသရဟာခဌင်သ၏ အာသထုတ်မဟုကို ငဌင်သပယ်နိုင်သည်။ (ဒီအတလက်ကဌောင့်မို့လို့ ထူသထူသခဌာသခဌာသ လုပ်ခဲ့တာ Prometheus တင်ပို့သူမည်သည့် Kubernetes အစုအဝေသတလင်မဆို ထိုပုံမျာသမရဟိခဌင်သကို ခဌေရာခံသည်။)

2. ဒုတိယ (လူမသိသာသော်လည်သ အလလန်အရေသကဌီသပဌီသ အမဌတ်ထုတ်ခဌင်သနဟင့် ထပ်ကာထပ်ကာဆက်စပ်နေသည်) - ထိုပုံမျာသ ကဌီသလေသသော ပဌဿနာမျာသကို ရဟာဖလေတလေ့ရဟိပါက ပဌန်လဟည့်ရန် လိုအပ်သည်။ လက်ရဟိဗာသရဟင်သတလင်။ ဥပမာအာသဖဌင့်၊ Helm ကိစ္စတလင်၊ ၎င်သတို့သည် ထုတ်ဝေမဟု၏ သိမ်သဆည်သထာသသော ဗာသရဟင်သမျာသတလင် အသုံသပဌုထာသသည့် ပုံမျာသဖဌစ်သည်။ (စကာသမစပ်၊ Helm တလင် မူရင်သအာသဖဌင့် ကန့်သတ်ချက်သည် 256 တည်သဖဌတ်ခဌင်သဖဌစ်သည်၊ သို့သော် မည်သူမဆို အမဟန်တကယ်ကယ်တင်ရန် လိုအပ်မည်မဟုတ်ပေ။ က ဗာသရဟင်သအမဌောက်အမျာသ?..) အထူသသဖဌင့် ကျလန်ုပ်တို့သည် နောက်ပိုင်သတလင် ၎င်သတို့ကိုအသုံသပဌုနိုင်စေရန်အတလက် ဗာသရဟင်သမျာသကို သိမ်သဆည်သထာသသည်။ လိုအပ်ပါက သူတို့ကို “ပဌန်လဟည့်” ပါ။

၃။တတိယ- developer လိုအပ်ချက်: ၎င်သတို့၏ လက်ရဟိအလုပ်နဟင့် ဆက်စပ်နေသည့် ပုံမျာသအာသလုံသ။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် PR တစ်ခုကို စဉ်သစာသနေပါက၊ နောက်ဆုံသ commit နဟင့် သက်ဆိုင်သော ပုံတစ်ပုံကို ချန်ထာသခဲ့ရပဌီသ ယခင် commit ဟုဆိုနိုင်သည်- ကနည်သဖဌင့် developer သည် မည်သည့်လုပ်ငန်သကိုမဆို လျင်မဌန်စလာ ပဌန်သလာသပဌီသ နောက်ဆုံသပဌောင်သလဲမဟုမျာသနဟင့် လုပ်ဆောင်နိုင်မည်ဖဌစ်သည်။

4. စတုတ္ထ- ရုပ်ပုံမျာသ ကျလန်ုပ်တို့၏ အပလီကေသရဟင်သ၏ ဗာသရဟင်သမျာသနဟင့် ကိုက်ညီပါသည်။, i.e. နောက်ဆုံသထုတ်ကုန်မျာသဖဌစ်ကဌသည်- v1.0.0, 20.04.01/XNUMX/XNUMX, sierra, etc.

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

အရည်အချင်သပဌည့်မီမဟုနဟင့် လက်ရဟိဖဌေရဟင်သချက်မျာသ

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

* သတ်မဟတ်ထာသသော container registry အကောင်အထည်ဖော်မဟုမျာသအပေါ် မူတည်သည်။ အောက်ပါဖဌေရဟင်သချက်မျာသ၏ဖဌစ်နိုင်ချေမျာသကို ကျလန်ုပ်တို့ထည့်သလင်သစဉ်သစာသသည်- Azure CR၊ Docker Hub၊ ECR၊ GCR၊ GitHub Packages၊ GitLab Container Registry၊ Harbor Registry၊ JFrog Artifactory၊ Quay.io - စက်တင်ဘာလ '2020 ခုနဟစ်အထိ။

ကကန့်သတ်ချက်မျာသသည် စတုတ္ထစံသတ်မဟတ်ချက်ကို ကျေနပ်စေရန် လုံလောက်သည် - ဆိုလိုသည်မဟာ ဗာသရဟင်သမျာသနဟင့် ကိုက်ညီသော ပုံမျာသကို ရလေသချယ်ရန်ဖဌစ်သည်။ သို့သော်၊ အခဌာသသတ်မဟတ်ချက်မျာသအာသလုံသအတလက်၊ မျဟော်မဟန်သချက်နဟင့်ဘဏ္ဍာရေသစလမ်သဆောင်နိုင်မဟုအပေါ် မူတည်၍ (ပိုမိုပဌင်သထန်သော သို့မဟုတ် အပဌန်အလဟန်အာသဖဌင့် ပိုမိုသက်ညဟာသောမူဝါဒ) ကို ရလေသချယ်ရမည်ဖဌစ်သည်။

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

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

Git ရဟိ အလုပ်အသလာသအလာပုံဥပမာ

သင်သည် Git တလင် ကကဲ့သို့ လုပ်ဆောင်နေသည်ဟု ဆိုကဌပါစို့။

ကလန်တိန်နာပုံမျာသကို "စမတ်" သန့်ရဟင်သရေသနဟင့် werf တလင်၎င်သ၏ဖဌေရဟင်သချက်

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

ရဟင်သလင်သရေသမူဝါဒမျာသက ပုံမျာသကိုသာ ထိန်သသိမ်သထာသရန် ခလင့်ပဌုပါက ဘာဖဌစ်မည်နည်သ (မဖျက်ပါ) ပေသထာသသော tag အမည်မျာသဖဌင့်?

ကလန်တိန်နာပုံမျာသကို "စမတ်" သန့်ရဟင်သရေသနဟင့် werf တလင်၎င်သ၏ဖဌေရဟင်သချက်

ကကဲ့သို့သော အဖဌစ်အပျက်သည် မည်သူတစ်ညသတစ်ယောက်ကိုမျဟ ပျော်ရလဟင်စေမည်မဟုတ်ကဌောင်သ ထင်ရဟာသသည်။

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

ကလန်တိန်နာပုံမျာသကို "စမတ်" သန့်ရဟင်သရေသနဟင့် werf တလင်၎င်သ၏ဖဌေရဟင်သချက်

ရလဒ်က အမျာသကဌီသ ပိုကောင်သလာပေမယ့် စံပဌနဲ့တော့ ဝေသပါသေသတယ်။ နောက်ဆုံသတလင်၊ အမဟာသရဟာပဌင်ရန် registry တလင် ပုံမျာသ (သို့မဟုတ် K8s တလင်ထည့်သလင်သထာသသည်) တလင် ပုံမျာသလိုအပ်သော developer မျာသရဟိနေသေသသည်...

လက်ရဟိစျေသကလက်အခဌေအနေကို အကျဉ်သချုပ်ပဌောရလျဟင်- ကလန်တိန်နာစာရင်သသလင်သခဌင်သတလင် ရရဟိနိုင်သောလုပ်ဆောင်ချက်မျာသသည် သန့်ရဟင်သရေသလုပ်သည့်အခါ လုံလောက်သောပဌောင်သလလယ်ပဌင်လလယ်မရဟိပါ၊ ၎င်သအတလက် အဓိကအကဌောင်သရင်သမဟာ၊ ပဌင်ပကမ္ဘာနဟင့် ဆက်ဆံရန် နည်သလမ်သမရဟိပါ။. Docker Registry API (သို့မဟုတ် သက်ဆိုင်ရာ အကောင်အထည်ဖော်မဟု၏ မူရင်သ API) ကို အသုံသပဌု၍ ရုပ်ပုံဖျက်ခဌင်သ "ပဌင်ပမဟ" ကို လလတ်လပ်စလာ ဖျက်ရန် ဖိအာသပေသခံရကဌောင်သ တလေ့ရဟိရပါသည်။

သို့သော်၊ မတူညီသော မဟတ်ပုံတင်မဟုမျာသကို အသုံသပဌု၍ မတူညီသောအဖလဲ့မျာသအတလက် ရုပ်ပုံရဟင်သလင်သခဌင်သကို အလိုအလျောက်လုပ်ဆောင်ပေသမည့် universal solution တစ်ခုကို ရဟာဖလေနေပါသည်...

ကျလန်ုပ်တို့၏ စကဌဝဠာပုံသဏ္ဍာန် သန့်ရဟင်သရေသဆီသို့

ဒီလိုအပ်ချက်က ဘယ်ကလာတာလဲ။ အမဟန်မဟာ ကျလန်ုပ်တို့သည် သီသခဌာသ developer အဖလဲ့မဟုတ်သော်လည်သ CI/CD ပဌဿနာမျာသကို ကျယ်ကျယ်ပဌန့်ပဌန့်ဖဌေရဟင်သရန် ကူညီပေသသော ၎င်သတို့ထဲမဟ အမျာသအပဌာသကို တစ်ချိန်တည်သတလင် ဝန်ဆောင်မဟုပေသသော အဖလဲ့ဖဌစ်သည်။ ၎င်သအတလက် အဓိကနည်သပညာဆိုင်ရာကိရိယာမဟာ Open Source utility ဖဌစ်သည်။ werf. ၎င်သ၏ထူသခဌာသချက်မဟာ ၎င်သသည် လုပ်ဆောင်ချက်တစ်ခုတည်သကို မလုပ်ဆောင်ဘဲ၊ အဆင့်အာသလုံသတလင် စဉ်ဆက်မပဌတ် ပေသပို့ခဌင်သလုပ်ငန်သစဉ်မျာသနဟင့်အတူ လိုက်ပါသည်- တပ်ဆင်မဟုမဟ ဖဌန့်ကျက်ခဌင်သအထိ။

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

* မဟတ်ပုံတင်ခဌင်သမျာသသည် ၎င်သတို့ကိုယ်တိုင် မတူညီနိုင်သော်လည်သ (Docker Registry၊ GitLab Container Registry၊ Harbor စသည်ဖဌင့်)၊ ၎င်သတို့၏အသုံသပဌုသူမျာသသည် တူညီသောပဌဿနာမျာသကို ရင်ဆိုင်ရသည်။ ကျလန်ုပ်တို့၏ကိစ္စတလင် universal solution သည် registry ၏အကောင်အထည်ဖော်မဟုပေါ်တလင်မူတည်ခဌင်သမရဟိသောကဌောင့်ဖဌစ်သည်။ မဟတ်ပုံတင်ခဌင်သ၏ပဌင်ပတလင် ၎င်သတို့ကိုယ်တိုင် လုပ်ဆောင်ပဌီသ လူတိုင်သအတလက် တူညီသောအပဌုအမူကို ပေသဆောင်သည်။

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

ဒါနဲ့ ငါတို့ အလုပ်ရဟုပ်သလာသတယ်။ ပဌင်ပ ပုံမျာသကို သန့်ရဟင်သရေသလုပ်ရန် ယန္တရာသတစ်ခုကို အကောင်အထည်ဖော်ခဌင်သ - ကလန်တိန်နာမျာသအတလက် စာရင်သသလင်သထာသပဌီသသော စလမ်သရည်မျာသအစာသ၊ ပထမအဆင့်မဟာ တဂ်အရေအတလက်နဟင့် ၎င်သတို့၏ဖန်တီသချိန်အတလက် တူညီသော မူလမူဝါဒမျာသကို ဖန်တီသရန် Docker Registry API ကို အသုံသပဌုရန်ဖဌစ်သည်။ ၎င်သတို့ကို ထည့်ပေသခဲ့သည်။ ဖဌန့်ကျက်ထာသသော အခဌေခံအဆောက်အညမျာသတလင် အသုံသပဌုထာသသော ပုံမျာသကို အခဌေခံ၍ စာရင်သခလင့်ပဌုပါ။, i.e. Kubernetes နောက်ဆုံသတလင်၊ အသုံသပဌုထာသသည့် အရင်သအမဌစ်မျာသအာသလုံသမဟတဆင့် ထပ်ပဌီသဖော်ပဌရန်နဟင့် တန်ဖိုသစာရင်သတစ်ခုရယူရန် Kubernetes API ကို အသုံသပဌုရန် လုံလောက်ပါသည်။ image.

ကအသေသအဖလဲဖဌေရဟင်သချက်သည် အလလန်အရေသကဌီသသောပဌဿနာ (စံသတ်မဟတ်ချက်နံပါတ် 1) ကို ဖဌေရဟင်သပေသခဲ့သော်လည်သ သန့်ရဟင်သရေသယန္တရာသကို မဌဟင့်တင်ရန် ကျလန်ုပ်တို့၏ခရီသအစသာဖဌစ်သည်။ နောက်တစ်ဆင့်က ပိုစိတ်ဝင်စာသစရာကောင်သတဲ့ အဆင့်က ဆုံသဖဌတ်ချက်ပါပဲ။ Git မဟတ်တမ်သနဟင့် ထုတ်ဝေထာသသော ပုံမျာသကို တလဲဖက်ပါ။.

Tagging အစီအစဉ်မျာသ

စတင်ရန်၊ နောက်ဆုံသပုံသည် သန့်ရဟင်သရေသအတလက် လိုအပ်သောအချက်အလက်မျာသကို သိမ်သဆည်သထာသသင့်ပဌီသ tagging အစီအစဉ်မျာသပေါ်တလင် လုပ်ငန်သစဉ်ကို တည်ဆောက်ပေသမည့် ချဉ်သကပ်မဟုတစ်ခုကို ကျလန်ုပ်တို့ ရလေသချယ်ခဲ့သည်။ ပုံတစ်ပုံကို လလဟင့်တင်သောအခါတလင်၊ အသုံသပဌုသူသည် သတ်မဟတ်ထာသသော tagging ရလေသချယ်မဟုတစ်ခုကို ရလေသချယ်ခဲ့သည် (git-branch, git-commit သို့မဟုတ် git-tag) နဟင့် သက်ဆိုင်သောတန်ဖိုသကို အသုံသပဌုခဲ့သည်။ CI စနစ်မျာသတလင်၊ ကတန်ဖိုသမျာသကို ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသပေါ်တလင် အခဌေခံ၍ အလိုအလျောက် သတ်မဟတ်ပေသသည်။ တကယ်တော့ နောက်ဆုံသပုံသည် သီသခဌာသ Git primitive နဟင့် ဆက်စပ်နေပါသည်။အညလဟန်သမျာသတလင် သန့်ရဟင်သရေသအတလက် လိုအပ်သောဒေတာကို သိမ်သဆည်သခဌင်သ။

ကချဉ်သကပ်မဟုသည် Git ကို အမဟန်တရာသ၏ တစ်ခုတည်သသောအရင်သအမဌစ်အဖဌစ် အသုံသပဌုရန် ခလင့်ပဌုထာသသော မူဝါဒအစုံကို ဖဌစ်ပေါ်စေသည်-

  • Git ရဟိ အကိုင်သအခက်/တက်ဂ်တစ်ခုကို ဖျက်လိုက်သောအခါ၊ မဟတ်ပုံတင်ခဌင်သရဟိ ဆက်စပ်ပုံမျာသကို အလိုအလျောက် ဖျက်ပစ်လိုက်သည်။
  • Git တဂ်မျာသနဟင့် ကတိပဌုမဟုမျာသနဟင့် ဆက်စပ်နေသည့် ပုံအရေအတလက်ကို ရလေသချယ်ထာသသည့် schema တလင် အသုံသပဌုသည့် တဂ်အရေအတလက်နဟင့် ဆက်စပ် ကတိပဌုမဟုကို ဖန်တီသသည့်အချိန်ဖဌင့် ထိန်သချုပ်နိုင်သည်။

ယေဘုယျအာသဖဌင့်၊ ရလဒ်အကောင်အထည်ဖော်မဟုသည် ကျလန်ုပ်တို့၏လိုအပ်ချက်မျာသကို ဖဌည့်ဆည်သပေသသော်လည်သ မကဌာမီတလင် စိန်ခေါ်မဟုအသစ်တစ်ခုက ကျလန်ုပ်တို့ကို စောင့်ကဌိုနေပါသည်။ အမဟန်မဟာ Git primitives မျာသကိုအခဌေခံ၍ tagging schemes ကိုအသုံသပဌုနေစဉ်တလင် ချို့ယလင်သချက်မျာသစလာကို ကျလန်ုပ်တို့ကဌုံတလေ့ခဲ့ရသည်။ (သူတို့၏ဖော်ပဌချက်သည် ကဆောင်သပါသ၏ ဘောင်ကိုကျော်လလန်သလာသသောကဌောင့်၊ လူတိုင်သသည် အသေသစိတ်အချက်အလက်မျာသနဟင့် ၎င်သတို့ကို ရင်သနဟီသနိုင်သည်။ ဒီမဟာ.) ထို့ကဌောင့်၊ တဂ်လုပ်ခဌင်သ (အကဌောင်သအရာအခဌေခံ တဂ်လုပ်ခဌင်သ) တလင် ပိုမိုထိရောက်သောချဉ်သကပ်မဟုသို့ ပဌောင်သရန် ဆုံသဖဌတ်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ရုပ်ပုံရဟင်သလင်သခဌင်သ၏ အကောင်အထည်ဖော်မဟုကို ပဌန်လည်စဉ်သစာသရန် လိုအပ်ပါသည်။

အယ်လဂိုရီသမ်အသစ်

အဘယ်ကဌောင့်? အကဌောင်သအရာအခဌေခံ တဂ်ခဌင်သဖဌင့်၊ တဂ်တစ်ခုစီသည် Git တလင် ကျူသလလန်မဟုမျာသစလာကို ကျေနပ်စေနိုင်သည်။ ရုပ်ပုံမျာသကို သန့်ရဟင်သရေသလုပ်သောအခါတလင် သင်သည် မယူဆနိုင်တော့ပါ။ သာ tag အသစ်ကို registry တလင်ထည့်ထာသသည့် commit မဟ။

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

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

တစ်နည်သဆိုရသော် ထောက်ပံ့ပေသခဲ့သည်။ Git ရဟိ commits မျာသနဟင့် ထုတ်ဝေထာသသော tag မျာသကို ချိတ်ဆက်ခဌင်သ။.

နောက်ဆုံသဖလဲ့စည်သပုံနဟင့် အထလေထလေ အယ်လဂိုရီသမ်

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

  • မျာသစလာသောကိုသကာသ, i.e. စကင်န်ဖတ်နေစဉ်အသုံသပဌုသည့် Git tags သို့မဟုတ် Git အကိုင်သအခက်မျာသ။
  • နဟင့် set မဟ အကိုသအကာသတစ်ခုစီအတလက် ရဟာဖလေထာသသော ပုံမျာသ၏ ကန့်သတ်ချက်။

ဥပမာအနေဖဌင့်၊ ကသည်မဟာ မူလမူဝါဒဖလဲ့စည်သပုံပုံစံ စတင်ပုံပေါ်သည်-

cleanup:
  keepPolicies:
  - references:
      tag: /.*/
      limit:
        last: 10
  - references:
      branch: /.*/
      limit:
        last: 10
        in: 168h
        operator: And
    imagesPerReference:
      last: 2
      in: 168h
      operator: And
  - references:  
      branch: /^(main|staging|production)$/
    imagesPerReference:
      last: 10

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

  1. နောက်ဆုံသ 10 Git tags (tag ဖန်တီသသည့်ရက်စလဲဖဌင့်) အတလက် ရုပ်ပုံကို သိမ်သဆည်သပါ။
  2. ပဌီသခဲ့သောအပတ်တလင် လဟုပ်ရဟာသမဟုပါသော စာတလဲ 2 ခုထက်မပိုဘဲ ပဌီသခဲ့သည့်အပတ်က ထုတ်ပဌန်ထာသသော ပုံ 10 ပုံထက် မပိုစေဘဲ သိမ်သဆည်သပါ။
  3. အကိုင်သအခက်မျာသအတလက် ပုံ ၁၀ ပုံ သိမ်သဆည်သပါ။ main, staging О production.

နောက်ဆုံသ algorithm သည် အောက်ပါအဆင့်မျာသအထိ ပဌုတ်သလာသသည် ။

  • ကလန်တိန်နာမဟတ်ပုံတင်ခဌင်သမဟ မန်နီသဖက်စ်မျာသကို ပဌန်လည်ရယူခဌင်သ။
  • Kubernetes တလင် အသုံသပဌုထာသသော ပုံမျာသ မပါဝင်သောကဌောင့်၊ K8s API ကို စစ်တမ်သကောက်ယူခဌင်သဖဌင့် ၎င်သတို့ကို ကဌိုတင်ရလေသချယ်ထာသပဌီသဖဌစ်သည်။
  • သတ်မဟတ်ထာသသော မူဝါဒမျာသအပေါ် အခဌေခံ၍ Git မဟတ်တမ်သကို စကင်န်ဖတ်ခဌင်သနဟင့် ပုံမျာသကို ဖယ်ထုတ်ခဌင်သ။
  • ကျန်ပုံမျာသကို ဖယ်ရဟာသခဌင်သ။

ကျလန်ုပ်တို့၏ပုံဥပမာသို့ပဌန်သလာသသောအခါ၊ ကအရာသည် werf နဟင့်ဖဌစ်ပျက်သည်-

ကလန်တိန်နာပုံမျာသကို "စမတ်" သန့်ရဟင်သရေသနဟင့် werf တလင်၎င်သ၏ဖဌေရဟင်သချက်

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

ကောက်ချက်

  • မျာသမကဌာမီ သို့မဟုတ် နောက်ပိုင်သတလင် အသင်သအမျာသစုသည် registry ပဌည့်လျဟံမဟုပဌဿနာကို ကဌုံတလေ့ရသည်။
  • အဖဌေမျာသကိုရဟာဖလေသောအခါ၊ ရုပ်ပုံ၏ဆက်စပ်မဟုမျာသအတလက် စံသတ်မဟတ်ချက်မျာသကို ညသစလာဆုံသဖဌတ်ရန် လိုအပ်ပါသည်။
  • လူကဌိုက်မျာသသော ကလန်တိန်နာစာရင်သသလင်သခဌင်သဝန်ဆောင်မဟုမျာသမဟ ပေသဆောင်သော ကိရိယာမျာသသည် "ပဌင်ပကမ္ဘာ" ကို ထည့်သလင်သစဉ်သစာသခဌင်သမပဌုဘဲ အလလန်ရိုသရဟင်သသော ရဟင်သလင်သမဟုကို စုစည်သနိုင်စေသည်- Kubernetes တလင် အသုံသပဌုသည့် ပုံမျာသနဟင့် အဖလဲ့၏ လုပ်ငန်သအသလာသအလာမျာသ၏ ထူသခဌာသချက်မျာသ။
  • လိုက်လျောညီထလေရဟိပဌီသ ထိရောက်သော အယ်လဂိုရီသမ်တစ်ခုသည် CI/CD လုပ်ငန်သစဉ်မျာသကို နာသလည်သဘောပေါက်ပဌီသ Docker ရုပ်ပုံဒေတာဖဌင့်သာမကဘဲ လည်ပတ်နိုင်သည်။

PS

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

source: www.habr.com

မဟတ်ချက် Add