“DevOps အတလက် Kubernetes” စာအုပ်

“DevOps အတလက် Kubernetes” စာအုပ် မင်္ဂလာပါ Khabro နေထိုင်သူမျာသ။ Kubernetes သည် ခေတ်သစ်တိမ်တိုက်ဂေဟစနစ်၏ အဓိကအစိတ်အပိုင်သမျာသထဲမဟတစ်ခုဖဌစ်သည်။ ကနည်သပညာသည် ကလန်တိန်နာ virtualization အတလက် ယုံကဌည်စိတ်ချရမဟု၊ အတိုင်သအတာနဟင့် ခံနိုင်ရည်အာသ ပေသဆောင်သည်။ John Arundel နဟင့် Justin Domingus တို့သည် Kubernetes ဂေဟစနစ်အကဌောင်သ ဆလေသနလေသကဌပဌီသ နေ့စဉ်ပဌဿနာမျာသအတလက် သက်သေပဌချက်မျာသအာသ မိတ်ဆက်ပေသသည်။ တစ်ဆင့်ပဌီသတစ်ဆင့်၊ သင်သည် သင်၏ကိုယ်ပိုင် cloud-native အက်ပ်လီကေသရဟင်သကို တည်ဆောက်ပဌီသ ၎င်သကို ပံ့ပိုသရန် အခဌေခံအဆောက်အအုံကို ဖန်တီသမည်၊ သင်၏နောက်ထပ်အက်ပ်လီကေသရဟင်သမျာသတလင် သင်လုပ်ဆောင်နေချိန်တလင် သင့်အာသ ကူညီပေသမည့် ဖလံ့ဖဌိုသတိုသတက်မဟုပတ်ဝန်သကျင်တစ်ခုနဟင့် စဉ်ဆက်မပဌတ်ဖဌန့်ကျက်မဟုပိုက်လိုင်သတစ်ခုကို ဖန်တီသမည်ဖဌစ်သည်။

• အခဌေခံမဟစ၍ ကလန်တိန်နာမျာသနဟင့် Kubernetes ဖဌင့် စတင်လိုက်ပါ- အကဌောင်သအရာကိုလေ့လာရန် အထူသအတလေ့အကဌုံမလိုအပ်ပါ။ • သင့်ကိုယ်ပိုင် အစုအဝေသမျာသကို လုပ်ဆောင်ပါ သို့မဟုတ် Amazon၊ Google စသည်တို့မဟ စီမံခန့်ခလဲထာသသော Kubernetes ဝန်ဆောင်မဟုကို ရလေသချယ်ပါ။ • ကလန်တိန်နာဘဝသံသရာနဟင့် အရင်သအမဌစ်သုံသစလဲမဟုကို စီမံခန့်ခလဲရန် Kubernetes ကို အသုံသပဌုပါ။ • ကုန်ကျစရိတ်၊ စလမ်သဆောင်ရည်၊ ခံနိုင်ရည်ရဟိမဟု၊ ပါဝါနဟင့် အတိုင်သအတာတို့အပေါ် အခဌေခံ၍ အစုအဝေသမျာသကို ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ပါ။ • သင့်အပလီကေသရဟင်သမျာသကို ဖန်တီသရန်၊ စမ်သသပ်ရန်နဟင့် အသုံသပဌုရန် အကောင်သဆုံသကိရိယာမျာသကို လေ့လာပါ။ • လုံခဌုံရေသနဟင့် ထိန်သချုပ်မဟုသေချာစေရန် လက်ရဟိလုပ်ငန်သအလေ့အကျင့်မျာသကို အသုံသချပါ။ • သင့်ကုမ္ပဏီတစ်ခုလုံသတလင် DevOps စည်သမျဉ်သမျာသကို အကောင်အထည်ဖော်ရန် ဖလံ့ဖဌိုသတိုသတက်ရေသအဖလဲ့မျာသသည် ပိုမိုပဌောင်သလလယ်ပဌင်လလယ်၊ လျင်မဌန်စလာနဟင့် ထိရောက်စလာလုပ်ဆောင်နိုင်စေရန်။

စာအုပ်က ဘယ်သူ့အတလက်လဲ။

ကစာအုပ်သည် ဆာဗာမျာသ၊ အပလီကေသရဟင်သမျာသနဟင့် ဝန်ဆောင်မဟုမျာသအတလက် တာဝန်ရဟိသည့် စီမံခန့်ခလဲရေသဌာနမျာသ၏ ဝန်ထမ်သမျာသနဟင့် cloud ဝန်ဆောင်မဟုအသစ်မျာသ တည်ဆောက်ရာတလင် သို့မဟုတ် လက်ရဟိအက်ပ်လီကေသရဟင်သမျာသကို Kubernetes နဟင့် cloud သို့ ရလဟေ့ပဌောင်သခဌင်သတလင် ပါဝင်သည့် developer မျာသအတလက် အသင့်လျော်ဆုံသဖဌစ်သည်။ စိတ်မပူပါနဟင့်၊ Kubernetes သို့မဟုတ် containers နဟင့် မည်သို့လုပ်ဆောင်ရမည်ကို သင်သိရန် မလိုအပ်ပါ - ကျလန်ုပ်တို့သည် သင့်အာသ အရာအာသလုံသကို သင်ကဌာသပေသပါမည်။

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

စာအုပ်က ဘာမေသခလန်သတလေဖဌေသလဲ။

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

  • “မင်သ ဒီနည်သပညာကို ဘာကဌောင့် အချိန်ဖဌုန်သသင့်လဲဆိုတာကို ငါစိတ်ဝင်စာသတယ်။ ဘယ်လိုပဌဿနာတလေက ကျလန်တော့်ကို ကူညီဖဌေရဟင်သပေသမဟာလဲ။”
  • “ Kubernetes က စိတ်ဝင်စာသဖို့ကောင်သပုံရတယ်၊ ဒါပေမယ့် ဝင်ခလင့်အတလက် အတာသအဆီသတစ်ခုရဟိတယ်။ ရိုသရဟင်သသော ဥပမာတစ်ခုကို ပဌင်ဆင်ခဌင်သသည် မခက်ခဲသော်လည်သ နောက်ထပ် စီမံအုပ်ချုပ်မဟုနဟင့် အမဟာသရဟာပဌင်ခဌင်သသည် တုန်လဟုပ်ချောက်ချာသစရာဖဌစ်သည်။ လက်တလေ့ကမ္ဘာရဟိ Kubernetes အစုအဝေသမျာသကို လူမျာသက စီမံခန့်ခလဲပုံနဟင့် ကျလန်ုပ်တို့ကဌုံတလေ့ရမည့်ပဌဿနာမျာသဆိုင်ရာ ယုံကဌည်စိတ်ချရသော အကဌံဉာဏ်မျာသကို ကျလန်ုပ်တို့ ရယူလိုပါသည်။"
  • “ဘာသာရပ်ဆိုင်ရာ အကဌံဉာဏ်က အထောက်အကူဖဌစ်မဟာပါ။ Kubernetes ဂေဟစနစ်သည် အသင်သအသစ်မျာသကို ရလေသချယ်ရန် ရလေသချယ်စရာမျာသလလန်သသည်။ တူညီတဲ့နည်သလမ်သမျာသစလာရဟိတဲ့အခါ ဘယ်ဟာအကောင်သဆုံသလဲဆိုတာ သင်ဘယ်လိုသိနိုင်မလဲ။ ဘယ်လိုရလေသချယ်ရမလဲ။

မေသခလန်သအာသလုံသ၏ အရေသကဌီသဆုံသဖဌစ်ကောင်သဖဌစ်နိုင်သည်-

  • "ကျလန်ုပ်၏ကုမ္ပဏီကို မနဟောင့်ယဟက်ဘဲ Kubernetes ကို မည်သို့သုံသနိုင်မည်နည်သ။"

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

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

ဟုတ်ပါတယ်၊ ဒါတလေအာသလုံသကုဒ်ထဲကို တိုက်ရိုက်ထည့်လို့ရပေမယ့် ဒီနည်သလမ်သက လိုက်လျောညီထလေမဖဌစ်လောက်ပါဘူသ။ ဥပမာအာသဖဌင့်၊ configuration value ကိုပဌောင်သလဲခဌင်သသည် သင့်ကုဒ်ကို ထပ်မံတည်ဆောက်ပဌီသ အသုံသပဌုရန် လိုအပ်မည်ဖဌစ်သည်။ ပိုကောင်သတဲ့ဖဌေရဟင်သချက်တစ်ခုကတော့ configuration ကို code နဲ့ ပိုင်သခဌာသပဌီသ file ဒါမဟမဟုတ် environment variables တလေကနေ ဖတ်တာဖဌစ်မဟာပါ။

Kubernetes သည် ဖလဲ့စည်သမဟုပုံစံကို စီမံခန့်ခလဲရန် မတူညီသော နည်သလမ်သမျာသစလာကို ပံ့ပိုသပေသပါသည်။ ပထမညသစလာ၊ သင်သည် pod wrapper သတ်မဟတ်ချက်မျာသတလင် သတ်မဟတ်ထာသသော ပတ်ဝန်သကျင် variable မျာသမဟတစ်ဆင့် အပလီကေသရဟင်သသို့ တန်ဖိုသမျာသကို ဖဌတ်သန်သနိုင်သည် (စာမျက်နဟာ 192 တလင် “ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုမျာသ” ကို ကဌည့်ပါ။ ဒုတိယ၊ ConfigMap နဟင့် Secret objects မျာသကို အသုံသပဌု၍ configuration data ကို Kubernetes တလင် တိုက်ရိုက်သိမ်သဆည်သနိုင်ပါသည်။

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

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

သင့်တလင် အစုလိုက်အပဌုံလိုက် ဖဌန့်ကျက်မဟုတစ်ခုရဟိနေသည်ဟု မဌင်ယောင်ကဌည့်ပါက ၎င်သ၏ ConfigMap တလင် အချို့သောတန်ဖိုသမျာသကို သင်ပဌောင်သလိုပါသည်။ အကယ်၍ သင်သည် Helm ဇယာသကို အသုံသပဌုပါက (စာမျက်နဟာ 102 တလင် “Helm: Package Manager for Kubernetes” ကိုကဌည့်ပါ)၊ သင်သည် ဖလဲ့စည်သမဟုပုံစံပဌောင်သလဲမဟုကို အလိုအလျောက်သိရဟိနိုင်ပဌီသ သပ်ရပ်သောလဟည့်ကလက်တစ်ခုဖဌင့် သင်၏ pod shell ကို ပဌန်လည်စတင်နိုင်သည်။ သင်၏အသုံသချမဟုသတ်မဟတ်ချက်တလင် အောက်ပါမဟတ်ချက်ကို ထည့်ပါ-

checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
       | sha256sum }}

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

Kubernetes တလင် အရေသကဌီသသောဒေတာ

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

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

စတင်ရန်၊ လျဟို့ဝဟက်အရာဝတ္ထုအတလက် Kubernetes မန်နီသဖက်စ်ကို ကဌည့်ပါ (hello-secret-env/k8s/secret.yaml ကိုကဌည့်ပါ)။

apiVersion: v1
kind: Secret
metadata:
    name: demo-secret
stringData:
    magicWord: xyzzy

ကဥပမာတလင်၊ magicWord သီသသန့်သော့သည် xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)) ဖဌစ်သည်။ xyzzy ဟူသော စကာသလုံသသည် ကလန်ပျူတာလောကတလင် ယေဘုယျအာသဖဌင့် အလလန်အသုံသဝင်သည်။ ConfigMap နဟင့်ဆင်တူသည်၊ သင်သည် လျဟို့ဝဟက်အရာဝတ္တုတစ်ခုတလင် သော့နဟင့်တန်ဖိုသမျာသစလာကို သိမ်သဆည်သနိုင်သည်။ ကတလင်၊ ရိုသရဟင်သရန်အတလက် ကျလန်ုပ်တို့သည် သော့တန်ဖိုသအတလဲတစ်ခုကိုသာ အသုံသပဌုပါသည်။

လျဟို့ဝဟက်အရာဝတ္ထုမျာသကို Environment Variables အဖဌစ် အသုံသပဌုခဌင်သ။

ConfigMap ကဲ့သို့ပင်၊ လျဟို့ဝဟက်အရာဝတ္တုကို ကလန်တိန်နာတလင် ပတ်ဝန်သကျင်ပဌောင်သလဲမဟုမျာသအဖဌစ် သို့မဟုတ် ၎င်သ၏ဒစ်ပေါ်တလင် ဖိုင်တစ်ခုအဖဌစ် ပဌုလုပ်နိုင်သည်။ အောက်ဖော်ပဌပါ ဥပမာတလင်၊ Secret မဟ တန်ဖိုသသို့ ပတ်၀န်သကျင် ပဌောင်သလဲနိုင်သော ကိန်သရဟင်တစ်ခုကို သတ်မဟတ်ပေသပါမည်။

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-env
          ports:
             - containerPort: 8888
          env:
             - name: GREETING
               valueFrom:
               secretKeyRef:
                  name: demo-secret
                  key: magicWord

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

kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created

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

kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888

လိပ်စာဖလင့်တဲ့အခါ localhost:9999/ အောက်ပါတို့ကို မဌင်ရပါမည်။

The magic word is "xyzzy"

လျဟို့ဝဟက်အရာဝတ္ထုမျာသကို ဖိုင်မျာသသို့ ရေသခဌင်သ။

ကဥပမာတလင်၊ ကျလန်ုပ်တို့သည် လျဟို့ဝဟက်အရာဝတ္တုကို ဖိုင်တစ်ခုအဖဌစ် ကလန်တိန်နာတလင် ပူသတလဲတင်ပဌပါမည်။ ကုဒ်သည် သရုပ်ပဌသိမ်သဆည်သမဟု၏ hello-secret-file ဖိုင်တလဲတလင် တည်ရဟိသည်။

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

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-file
          ports:
              - containerPort: 8888
          volumeMounts:
              - name: demo-secret-volume
                mountPath: "/secrets/"
                readOnly: true
   volumes:
      - name: demo-secret-volume
        secret:
           secretName: demo-secret

p တလင် “ConfigMap objects မဟ configuration files မျာသကို ဖန်တီသခဌင်သ” အပိုင်သခလဲတလင် ကဲ့သို့ပင်။ 240၊ ကျလန်ုပ်တို့သည် ထုထည်တစ်ခု (ကကိစ္စတလင် ဒီမို-လျဟို့ဝဟက်-အသံအတိုသအကျယ်) ကို ဖန်တီသပဌီသ သတ်မဟတ်ချက်၏ volumeMounts ကဏ္ဍရဟိ ကလန်တိန်နာတလင် ၎င်သကို တပ်ဆင်ပါ။ mountPath အကလက်သည် /secrets ဖဌစ်သည်၊ ထို့ကဌောင့် Kubernetes သည် Secret object တလင် သတ်မဟတ်ထာသသော သော့/တန်ဖိုသအတလဲတစ်ခုစီအတလက် ကဖိုင်တလဲတလင် ဖိုင်တစ်ခုဖန်တီသပါမည်။

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

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

The magic word is "xyzzy"

လျဟို့ဝဟက်အရာဝတ္ထုမျာသဖတ်ခဌင်သ။

ယခင်အပိုင်သတလင်၊ ConfigMap ၏အကဌောင်သအရာမျာသကိုပဌသရန် kubectl describe command ကိုအသုံသပဌုခဲ့သည်။ Secret မဟာ ဒီလိုပဲ လုပ်လို့ရမလာသ။

kubectl describe secret/demo-secret
Name:          demo-secret

Namespace:      default
Labels:             <none>
Annotations:
Type:               Opaque

Data
====
magicWord: 5   bytes

ဒေတာကိုယ်တိုင် မပဌသကဌောင်သ သတိပဌုပါ။ Kubernetes ရဟိ လျဟို့ဝဟက်အရာဝတ္ထုမျာသသည် Opaque အမျိုသအစာသဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ၎င်သတို့၏အကဌောင်သအရာမျာသကို kubectl ဖော်ပဌထာသသော အထလက်၊ မဟတ်တမ်သမျာသ သို့မဟုတ် terminal တလင် ၎င်သတို့၏အကဌောင်သအရာမျာသကို ပဌသခဌင်သမရဟိသောကဌောင့် အရေသကဌီသသောအချက်အလက်မျာသကို မတော်တဆဖော်ပဌရန်မဖဌစ်နိုင်ပါ။

အရေသကဌီသသောဒေတာ၏ ကုဒ်ပဌောင်သထာသသော YAML ဗာသရဟင်သကိုကဌည့်ရဟုရန် kubectl get command ကိုသုံသပါ-

kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
   magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque

အခဌေခံ ၃၄၄၃

eHl6enk= ကျလန်ုပ်တို့၏မူရင်သတန်ဖိုသနဟင့် လုံသဝကလဲပဌာသပါသည်။ ၎င်သသည် တကယ်တော့ base64 encoding တလင် ဖော်ပဌထာသသော လျဟို့ဝဟက်အရာတစ်ခုဖဌစ်သည်။ Base64 သည် အက္ခရာလိုင်သတစ်ခုအနေဖဌင့် မတရာသသော ဒလိစုံဒေတာကို ကုဒ်လုပ်ရန် အစီအစဉ်တစ်ခုဖဌစ်သည်။

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

စာသာသ beHl6enk= သည် ကျလန်ုပ်တို့၏လျဟို့ဝဟက်စကာသလုံသ xyzzy ၏ base64 ကုဒ်နံပါတ်ဗာသရဟင်သဖဌစ်သည်။ terminal တလင် base64 —decode command ကို run ခဌင်သဖဌင့် ၎င်သကိုစစ်ဆေသနိုင်သည်-

echo "eHl6enk=" | base64 --decode
xyzzy

ထို့ကဌောင့်၊ Kubernetes သည် သင့်အာသ terminal သို့မဟုတ် မဟတ်တမ်သဖိုင်မျာသတလင် အထိခိုက်မခံသောဒေတာကို မတော်တဆထုတ်ခဌင်သမဟ ကာကလယ်ပေသသော်လည်သ၊ သတ်မဟတ်ထာသသော namespace အတလင်သရဟိ လျဟို့ဝဟက်အရာဝတ္ထုမျာသပေါ်တလင် ဖတ်ခလင့်ပဌုချက်မျာသရဟိပါက အဆိုပါဒေတာကို base64ed နဟင့် နောက်ပိုင်သတလင် ကုဒ်လုပ်နိုင်ပါသည်။

အကယ်၍ သင်သည် base64 ကို စာသာသအချို့ကို ကုဒ်လုပ်ရန် လိုအပ်ပါက (ဥပမာ၊ ၎င်သကို လျဟို့ဝဟက်ထာသရန်) အကဌောင်သပဌချက်မရဟိဘဲ base64 အမိန့်ကို အသုံသပဌုပါ။

echo xyzzy | base64
eHl6enkK

လျဟို့ဝဟက်အရာမျာသကို ဝင်ရောက်ကဌည့်ရဟုခဌင်သ။

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

Passive data encryption

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

ဗာသရဟင်သ 1.7 မဟစ၍ Kubernetes သည် passive data encryption ကို ပံ့ပိုသပေသပါသည်။ ဆိုလိုသည်မဟာ etcd အတလင်သရဟိ အရေသကဌီသသော အချက်အလက်မျာသကို disk တလင် ကုဒ်ကုဒ် သိမ်သဆည်သထာသပဌီသ ဒေတာဘေ့စ်သို့ တိုက်ရိုက်ဝင်ရောက်ခလင့်ရဟိသူမဟပင် ဖတ်၍မရပါ။ ၎င်သကို စာဝဟက်ရန်၊ Kubernetes API ဆာဗာတလင်သာ သော့တစ်ခု လိုအပ်ပါသည်။ စနစ်တကျ စီစဉ်သတ်မဟတ်ထာသသော အစုအဝေသတလင်၊ passive ကုဒ်ဝဟက်ခဌင်သကို ဖလင့်ထာသသင့်သည်။

Passive encryption သည် သင့်အစုအဝေသတလင် ကနည်သဖဌင့် အလုပ်လုပ်ခဌင်သရဟိမရဟိ စစ်ဆေသနိုင်သည်-

kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
        --experimental-encryption-provider-config=...

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

လျဟို့ဝဟက်အချက်အလက် သိမ်သဆည်သခဌင်သ။

အလလန်ထိခိုက်လလယ်သော လျဟို့ဝဟက်အရာဝတ္ထုမျာသကဲ့သို့သော အစုအဝေသမဟ ဘယ်သောအခါမဟ မဖယ်ရဟာသသင့်သော Kubernetes အရင်သအမဌစ်အချို့ရဟိပါသည်။ Helm မန်နေဂျာမဟ ပံ့ပိုသပေသထာသသည့် မဟတ်ချက်မျာသကို အသုံသပဌု၍ အရင်သအမဌစ်တစ်ခုအာသ ဖျက်ပစ်ခဌင်သမဟ ကာကလယ်နိုင်သည်-

kind: Secret
metadata:
    annotations:
        "helm.sh/resource-policy": keep

လျဟို့ဝဟက်အရာဝတ္ထုစီမံခန့်ခလဲမဟုဗျူဟာမျာသ

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

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

သင့်အပလီကေသရဟင်သမျာသရဟိ အရေသကဌီသဒေတာမျာသကို ကိုင်တလယ်ရန်အတလက် မည်သည့်ကိရိယာ သို့မဟုတ် နည်သဗျူဟာမျာသကိုမဆို သင်ရလေသချယ်နိုင်သော်လည်သ အနည်သဆုံသ အောက်ပါမေသခလန်သမျာသကို သင်ဖဌေရန် လိုအပ်ပါသေသသည်။

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

စာရေသဆရာမျာသအကဌောင်သ

John Arundel ကလန်ပဌူတာလုပ်ငန်သတလင် နဟစ် 30 အတလေ့အကဌုံရဟိသော အတိုင်ပင်ခံတစ်ညသဖဌစ်သည်။ သူသည် စာအုပ်မျာသစလာကို ရေသသာသခဲ့ပဌီသ နိုင်ငံအသီသသီသမဟ ကုမ္ပဏီမျာသစလာနဟင့် အလုပ်တလဲလုပ်ကာ cloud-native infrastructure နဟင့် Kubernetes တို့ကို အကဌံပေသခဲ့သည်။ အာသလပ်ချိန်မျာသတလင် သူသည် လဟိုင်သစီသခဌင်သကို နဟစ်သက်သည်၊ ပစ္စတိုသေနတ်သမာသကောင်သတစ်ညသဖဌစ်ပဌီသ အပျော်တမ်သအဖဌစ် စန္ဒယာသတီသသည်။ အင်္ဂလန်၊ Cornwall ရဟိ ဒဏ္ဍာရီပုံပဌင်အိမ်လေသတလင် နေထိုင်သည်။

Justin Domingus — Kubernetes နဟင့် cloud နည်သပညာမျာသဖဌင့် DevOps ပတ်ဝန်သကျင်တလင် လုပ်ဆောင်နေသော စနစ်မျာသ စီမံခန့်ခလဲရေသအင်ဂျင်နီယာ။ အပဌင်မဟာ အချိန်ဖဌုန်သတာ၊ ကော်ဖီသောက်တာ၊ ကဌလက်တက်တာ၊ ကလန်ပျူတာထိုင်ရတာကို နဟစ်သက်တယ်။ ဝါရဟင်တန်မဌို့၊ Seattle မဟာ အံ့သဌစရာကောင်သတဲ့ ကဌောင်တစ်ကောင်၊ ပိုလို့တောင်ကောင်သတဲ့ ဇနီသနဲ့ အချစ်ဆုံသသူငယ်ချင်သ Adrienne တို့နဲ့အတူ နေထိုင်ပါတယ်။

» စာအုပ်နဟင့်ပတ်သက်သော အသေသစိတ်အချက်အလက်မျာသကို အောက်ပါလင့်တလင် ကဌည့်ရဟုနိုင်ပါသည်။ ထုတ်ဝေသူ၏ဝဘ်ဆိုဒ်
» မာတိကာ
» ကောက်နုတ်ချက်

Khabrozhiteley ကူပလန်ကိုအသုံသပဌု၍ 25% လျဟော့စျေသအတလက် - Kubernetes

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

source: www.habr.com

မဟတ်ချက် Add