werf တလင် monorepo နဟင့် multirepo အတလက် ပံ့ပိုသမဟု နဟင့် Docker Registry သည် ၎င်သနဟင့် သက်ဆိုင်သည်။

werf တလင် monorepo နဟင့် multirepo အတလက် ပံ့ပိုသမဟု နဟင့် Docker Registry သည် ၎င်သနဟင့် သက်ဆိုင်သည်။

mono-repository ၏ ခေါင်သစဉ်ကို တစ်ကဌိမ်ထက်ပို၍ ဆလေသနလေသခဲ့ပဌီသ စည်သကမ်သအရ အလလန်တက်ကဌလသော အငဌင်သပလာသမဟုမျာသကို ဖဌစ်စေသည်။ ဖန်တီသခဌင်သဖဌင့် werf Git မဟ Docker ပုံမျာသအထိ အပလီကေသရဟင်သကုဒ်တည်ဆောက်ခဌင်သလုပ်ငန်သစဉ်ကို တိုသတက်စေရန် ဒီဇိုင်သထုတ်ထာသသည့် open source tool တစ်ခုအနေဖဌင့် (ထို့နောက် ၎င်သတို့ကို Kubernetes သို့ ပို့ဆောင်ခဌင်သ)၊ မည်သည့်ရလေသချယ်မဟုသည် အကောင်သဆုံသဖဌစ်သည်ကို ကျလန်ုပ်တို့ သိပ်မစဉ်သစာသပါ။ ကျလန်ုပ်တို့အတလက်၊ မတူညီသောအမဌင်မျာသကို ထောက်ခံသူမျာသအတလက် လိုအပ်သည့်အရာအာသလုံသကို ဖဌည့်ဆည်သပေသရန်မဟာ အဓိကဖဌစ်သည် (၎င်သသည် သာမန်အသိနဟင့် မဆန့်ကျင်ပါက၊ ဟုတ်ပါတယ်)။

werf ၏ မကဌာသေသမီက mono-repo ပံ့ပိုသမဟုသည် ကဥပမာကောင်သတစ်ခုဖဌစ်သည်။ သို့သော် ညသစလာ၊ ကပံ့ပိုသမဟုသည် werf ကိုအသုံသပဌုခဌင်သနဟင့် ယေဘုယျအာသဖဌင့် မည်သို့ဆက်စပ်နေသနည်သ၊ Docker Registry နဟင့် ၎င်သနဟင့် မည်သို့သက်ဆိုင်သည်ကို အဖဌေရဟာကဌည့်ကဌပါစို့။

ကိစ္စတလေ

ဒီလိုအခဌေအနေမျိုသကို စိတ်ကူသကဌည့်ရအောင်။ ကုမ္ပဏီတလင် အမဟီအခိုကင်သသော ပရောဂျက်မျာသအတလက် ဖလံ့ဖဌိုသတိုသတက်ရေသ အဖလဲ့မျာသစလာရဟိသည်။ အပလီကေသရဟင်သအမျာသစုသည် Kubernetes တလင်လည်ပတ်ပဌီသ ထို့ကဌောင့် သိမ်သဆည်သထာသသည်။ ကလန်တိန်နာမျာသ၊ ရုပ်ပုံမျာသကို သိမ်သဆည်သရန်အတလက် မဟတ်ပုံတင်ခဌင်သ (registry) တစ်ခု လိုအပ်ပါသည်။ ကကဲ့သို့ မဟတ်ပုံတင်ခဌင်သအတလက် ကုမ္ပဏီသည် Docker Hub ကို အကောင့်တစ်ခုတည်သဖဌင့် အသုံသပဌုပါသည်။ COMPANY. အရင်သအမဌစ်ကုဒ် သိုလဟောင်မဟုစနစ်အမျာသစုနဟင့် ဆင်တူသည်၊ Docker Hub သည် nested repository hierarchy ကို ခလင့်မပဌုပါ။, ကဲ့သို့ COMPANY/PROJECT/IMAGE. ထိုအခဌေအနေမျိုသတလင်  ပရောဂျက်တစ်ခုစီအတလက် သီသခဌာသအကောင့်တစ်ခုမဖန်တီသဘဲ ကကန့်သတ်ချက်ဖဌင့် မဟတ်ပုံတင်ခဌင်သတလင် mono-monolithic မဟုတ်သော application မျာသကို မည်သို့သိမ်သဆည်သနိုင်မည်နည်သ။

werf တလင် monorepo နဟင့် multirepo အတလက် ပံ့ပိုသမဟု နဟင့် Docker Registry သည် ၎င်သနဟင့် သက်ဆိုင်သည်။

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

ဖဌေရဟင်သချက်မျာသ

လျဟောက်လလဟာတင်လျဟင် monolithicပုံတစ်ပုံတည်သတလင် ပေါ်လာသည်၊ ထို့နောက် မေသခလန်သမျာသ မရဟိတော့ဘဲ ရုပ်ပုံမျာသကို ပရောဂျက်၏ container registry တလင် သိမ်သဆည်သပါသည်။

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

  1. ပုံမျာသကို သီသခဌာသ nested repositories တလင် သိမ်သဆည်သပါ-

    werf တလင် monorepo နဟင့် multirepo အတလက် ပံ့ပိုသမဟု နဟင့် Docker Registry သည် ၎င်သနဟင့် သက်ဆိုင်သည်။

  2. အရာအာသလုံသကို repository တစ်ခုတလင် သိမ်သဆည်သပဌီသ tag ရဟိ ပုံအမည်ကို ထည့်သလင်သစဉ်သစာသပါ၊ ဥပမာ၊ အောက်ပါအတိုင်သ၊

    werf တလင် monorepo နဟင့် multirepo အတလက် ပံ့ပိုသမဟု နဟင့် Docker Registry သည် ၎င်သနဟင့် သက်ဆိုင်သည်။

NB: တကယ်တော့၊ မတူညီတဲ့ repositories မဟာ သိမ်သဆည်သခဌင်သနဲ့ အခဌာသရလေသချယ်စရာတစ်ခု ရဟိပါတယ်၊ PROJECT-frontend О PROJECT-backendသို့သော် အသုံသပဌုသူမျာသအကဌာသ ပံ့ပိုသမဟု၊ အဖလဲ့အစည်သနဟင့် အခလင့်အရေသမျာသ ခလဲဝေမဟု ရဟုပ်ထလေသမဟုမျာသကဌောင့် ၎င်သကို ကျလန်ုပ်တို့ ထည့်သလင်သစဉ်သစာသမည်မဟုတ်ပါ။

werf ထောက်ခံမဟု

အစပိုင်သတလင် werf သည် nested repositories တလင် သူ့ကိုယ်သူ ကန့်သတ်ထာသသည် - ကံကောင်သစလာဖဌင့်၊ မဟတ်ပုံတင်မဟုအမျာသစုသည် ကအင်္ဂါရပ်ကို ပံ့ပိုသပေသသည်။ ဗာသရဟင်သမဟစတင်သည်။ v1.0.4-alpha.3၊ မဟတ်ပုံတင်ထာသသော လုပ်ငန်သမျာသနဟင့် ပေါင်သထည့်ထာသသည်။ nesting ကို မပံ့ပိုသပါ။Docker Hub သည် ၎င်သတို့ထဲမဟ တစ်ခုဖဌစ်သည်။ ထိုအချိန်မဟစ၍ အသုံသပဌုသူသည် အပလီကေသရဟင်သပုံမျာသကို မည်သို့သိမ်သဆည်သရမည်ကို ရလေသချယ်ခလင့်ရဟိသည်။

ရလေသချယ်မဟုအောက်တလင် အကောင်အထည်ဖော်နိုင်သည် --images-repo-mode=multirepo|monorepo (မူရင်သ multirepo, i.e. nested repositories တလင် သိုလဟောင်မဟု)။ ၎င်သသည် registry တလင်ပုံမျာသကိုသိမ်သဆည်သသည့်ပုံစံမျာသကိုသတ်မဟတ်သည်။ အခဌေခံ commands မျာသကိုအသုံသပဌုသည့်အခါ လိုချင်သောမုဒ်ကို ရလေသချယ်ရန် လုံလောက်ပဌီသ အခဌာသအရာအာသလုံသသည် မပဌောင်သလဲဘဲ ရဟိနေမည်ဖဌစ်သည်။

အဘယ်ကဌောင့်ဆိုသော် werf ရလေသချယ်မဟုအမျာသစုကို သတ်မဟတ်နိုင်သည်။ ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုမျာသCI/CD စနစ်မျာသတလင်၊ သိုလဟောင်မဟုမုဒ်ကို ပရောဂျက်တစ်ခုလုံသအတလက် တစ်ကမ္ဘာလုံသအတိုင်သအတာဖဌင့် သတ်မဟတ်ရန် လလယ်ကူသည်။ ဥပမာအာသဖဌင့်, GitLab ၏အမဟု၌ ပရောဂျက်ဆက်တင်မျာသတလင် ပတ်၀န်သကျင်ပဌောင်သလဲနိုင်သော ကိန်သရဟင်တစ်ခုကို ထည့်လိုက်ရုံသာ။ ဆက်တင်မျာသ -> CI / CD -> Variables: WERF_IMAGES_REPO_MODE: multirepo|monorepo.

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

မာရ်နတ်သည် အသေသစိတ်အချက်အလက်မျာသကို ပေသဆောင်သည်။

သိုလဟောင်မဟုနည်သလမ်သအသစ်ကို ထည့်သလင်သသည့်အခါ ကလာခဌာသချက်နဟင့် အဓိကအခက်အခဲမဟာ မဟတ်ပုံတင်ခဌင်သအာသ သန့်ရဟင်သရေသလုပ်ဆောင်နေခဌင်သဖဌစ်သည်။ (werf မဟပံ့ပိုသထာသသော သုတ်သင်ရဟင်သလင်သခဌင်သအင်္ဂါရပ်မျာသအတလက် ကဌည့်ပါ။ သန့်ရဟင်သရေသလုပ်ငန်သစဉ်).

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

  1. tag၊ ဌာနခလဲ၊ နဟင့် commit ကဲ့သို့သော Git primitive မျာသဖဌင့် ချိတ်ဆက်ထာသသော နည်သဗျူဟာ 3 ခု၊
  2. မထင်သလို စိတ်ကဌိုက်တဂ်မျာသအတလက် ဗျူဟာ 1 ခု။

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

repository တစ်ခုတလင်သိမ်သဆည်သသောအခါ (monorepo) image tag တလင်၊ meta tag အပဌင်၊ ပုံ၏အမည်ကိုလည်သ သိမ်သဆည်သနိုင်သည်- PROJECT:frontend-META-TAG. ၎င်သတို့ကို ခလဲထုတ်ရန်၊ ကျလန်ုပ်တို့သည် မည်သည့် သီသခဌာသခလဲထလက်ခဌင်သကိုမျဟ မမိတ်ဆက်ခဲ့ဘဲ ထုတ်ဝေသည့်အခါ နောက်ဆုံသပုံ၏ အညလဟန်သတလင် လိုအပ်သောတန်ဖိုသကို ရိုသရိုသရဟင်သရဟင်သ ပေါင်သထည့်ပါသည်။

NB− werf source code တလင်ဖော်ပဌထာသသည့်အရာအာသလုံသကို သင်စိတ်ဝင်စာသပါက၊ အစမဟတ်ဖဌစ်နိုင်သည်။ PR စနစ် 1684.

ကဆောင်သပါသတလင်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ချဉ်သကပ်မဟု၏ ပဌဿနာမျာသနဟင့် မျဟတမဟုကို ပိုအာရုံစိုက်မည်မဟုတ်ပါ- တဂ်လုပ်ခဌင်သဗျူဟာမျာသ၊ အချက်အလက်မျာသကို အညလဟန်သမျာသတလင် သိမ်သဆည်သခဌင်သနဟင့် ထုတ်ဝေခဌင်သလုပ်ငန်သစဉ်တစ်ခုလုံသအကဌောင်သ - ကအရာအာသလုံသကို Dmitry Stolyarov ၏ လတ်တလောအစီရင်ခံစာတလင် အသေသစိတ်ဖော်ပဌထာသသည်- "werf သည် Kubernetes ရဟိ CI/CD အတလက် ကျလန်ုပ်တို့၏ကိရိယာဖဌစ်သည်။"။

အနဟစ်ချုပ်ရန်

unnested registries မျာသအတလက် ပံ့ပိုသကူညီမဟု မရဟိခဌင်သသည် ကျလန်ုပ်တို့ သို့မဟုတ် ကျလန်ုပ်တို့သိထာသသော werf အသုံသပဌုသူမျာသအတလက် ပိတ်ဆို့ခဌင်သမဟုတ်ပေ။ ပိုမိုကျယ်ပဌန့်သော DevOps အသိုင်သအဝိုင်သအတလက် tool ကိုပိုမိုအဆင်ပဌေစေရန်အတလက်ထိုကဲ့သို့သောကန့်သတ်ချက်ကိုဖယ်ရဟာသခဌင်သသည်ယုတ္တိရဟိပုံရသည်။ ၎င်သကို အကောင်အထည်ဖော်ခဌင်သဖဌင့် ကလန်တိန်နာမဟတ်ပုံတင်ခဌင်သဆိုင်ရာ ရဟင်သလင်သရေသယန္တရာသကို ပဌန်လည်လုပ်ဆောင်ရာတလင် အဓိကအခက်အခဲကို ရင်ဆိုင်ခဲ့ရသည်။ အခု အာသလုံသအဆင်သင့်ဖဌစ်ပဌီ၊ တစ်စုံတစ်ယောက်အတလက် ပိုလလယ်ကူလာတယ်ဆိုတာ သဘောပေါက်လိုက်တာနဲ့ ကျလန်တော်တို့ (ပရောဂျက်ရဲ့ အဓိက developer မျာသအနေနဲ့) ဒီအင်္ဂါရပ်ကို ထပ်မံပံ့ပိုသရာမဟာ သိသာထင်ရဟာသတဲ့ အခက်အခဲတလေ ရဟိတော့မဟာ မဟုတ်ပါဘူသ။

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

PS

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

source: www.habr.com

မဟတ်ချက် Add