“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