Kind
Workshop ( Part-1 )

Kind = Kubernetes In Docker
Kind သည် Docker ကို အသုံးပြု၍ Kubernetes Cluster များကို Local (laptop or Desktop) တွင် တည်ဆောက်နိုင်သော Tools တစ်ခုဖြစ်သည်။ Local တွင် multi node၊ HA control plane များပုံစံဖြင့်လည်း တည်ဆောက်နိုင်ပါသည်။ Local development ပြုလုပ်ရာတွင် minikube ကဲ့သို့အသုံးပြုနိုင်သည်။ multi node ရ၍ cluster admin များအတွက် ပိုပြီးအသုံးဝင်သည်။ ယခု workshop တွင် Kind ကို အသုံးပြု၍ single control plane/worker node၊ multi nodes၊ control plane HA နှင့် Ingress ကို Setup လုပ်သွားပြီး 2048 game နှင့် hola webapp ကို တည်ဆောက် သွားမှာ ဖြစ်သည်။
Workshop Prerequisite
Kind Install in Linux
Kind Install in Mac
Kind Install in Window
Kind install using golang
Kind ကို install ပြုလုပ်ပြီးသွားလျှင် အောက်ဖော်ပြပါ commands ဖြင့် kubernetes cluster များကို တည်ဆောက်နိုင်ပါသည်။--name=<name>ဖြင့် မတူညီသော cluster များအတွက် မိမိ စိတ်ကြိုက်နာမည်များ ပေးနိုင်သည်။
တည်ဆောက်ပြီးသော Clusters များကို အောက်ဖော်ပြပါ command ဖြင့် list လုပ်နိုင်သည်။
တည်ဆောက်ပြီးသော Clusters များ၏ cluster information များကို အောက်ဖော်ပြပါ command ဖြင့် ကြည့်နိုင်ပါသည်။
မိမိ အသုံးပြုပြီးသည့်အခါ (သို့မဟုတ်) မလိုအပ်တော့သည့်အခါ အောက်ဖော်ပြပါ command ဖြင့် cluster များကို delete ပြုလုပ်နိုင်ပါသည်။
အထက်ပါ command များသည် kind ကိုအသုံးပြု၍ kubernetes cluster ကို မိမိ laptop တွင် အလွယ်တကူ အသုံးပြုနိုင်သော basic command များဖြစ်သည်။ ဆက်လက် kind ကို အသုံးပြုပြီး ကျွန်တော်တို့ multi nodes cluster၊ multi control-plane HA နှင့် ingress များကို တည်ဆောက်သွားမှာဖြစ်တယ်။
လိုအပ်သည့် manifest များကို Kubernetes User Group Myanmar git repo မှ clone ရပါမည်။
ဒါကတော့ multi node cluster တည်ဆောက်ရန် configuration ဖြစ်သည်။ worker node များကို ကိုယ်လိုချင်သလောက် - role: worker ဖြင့် ထပ်တိုး တည်ဆောက်နိုင်သည်။ label၊ nodeSelector နှင့် scheduling တို့လေ့ကျင့် စမ်းသပ်ရာတွင် အသုံးဝင်သည်။
Control plane node ကို high availability ဖြစ်စေရန် တစ်ခုထက် ပိုထားချင်သည့်အခါ အောက်ဖော်ပြပါ configuration အတိုင်း -role: control-plane တိုးပြီး တည်ဆောက်နိုင်ပါသည်။
nginx ingress controller ကို setup လုပ်ရန် control-plane တွင် http နှင့် https အတွက် hostport 80/443 ကိုဖွင့်ပြီး kind ကို setup လုပ်ရပါမည်။ controller ကို control plane node တွင် schedule လုပ်ရန် kind ဖြင့် cluster စတည်ဆောက်ကတည်းက label ingress-ready=true ဖြင့် configure ပြုလုပ်ထားခြင်းဖြစ်သည်။
လိုအပ်သည့် ingress controller နှင့် service ကို ထည့်သွင်းရမည်။
ထည့်သွင်းပြီးသော ingress controller ကို control plane ပေါ်သာလျှင် run ရန် patch ပြုလုပ်ပြီး reschedule ပြန်လုပ်သည်။
cluster အတွင်းရှိ node များကို list ထုတ်ကြည့်ရန်အတွက် အောက်တွင်ဖော်ပြထားသော command ကိုအသုံးပြုပါ။
တည်ဆောက်ပြီးသော multi nodes cluster ပေါ်တွင် Pod တစ်ခုကို စမ်းပြီး တည်ဆောက်ရန်၊
Pod တည်ဆောက်ပြီး အဆင်ပြေလျှင် 2048 game အတွက် သီးသန့် project တစ်ခုအနေဖြင့် namespace အသစ် တည်ဆောက်ရန် manifest ကို file ထဲတွင် save ပြီး အောက်ဖော်ပြပါ command များဖြင့် တည်ဆောက်နိုင်ပါသည်။
2048 game ကို k8s cluster တွင် deployment အနေဖြင့် တည်ဆောက်ရန် အောက်ဖော်ပြပါ manifest ကို save ပြီး kubectl create -f ဖြင့် တည်ဆောက်နိုင်သည်။
အပေါ်မှ command များဖြင့် တည်ဆောက်ခဲ့သော 2048 application ၏ pods များ running ဖြစ်၊ မဖြစ် check ရန် လိုအပ်ပါသည်။ Pod များ running ဖြစ်သွားပြီးလျှင် အောက်ဖော်ပြပါ manifest ကို အသုံးပြုပြီး service ကို expose ထုတ်နိုင်သည်။
ingress ကို ဆက်လက်တည်ဆောက်လိုလျှင် kind ဖြင့် cluster စတည်ဆောက်ကတည်းက ingress controller ကို setup ပြုလုပ်ခဲ့ရန် လိုအပ်ပါသည်။
အထက်ပါ manifest ကို save ပြီး အောက်ဖော်ပြပါ command များဖြင့် ingress တစ်ခု တည်ဆောက်နိုင်မည်ဖြစ်သည်။
ယခု အခါတွင် 2048 game ကို local kubernetes cluster တွင် အောင်မြင်စွာ တည်ဆောက်ပြီး ဖြစ်သည်။ browser တွင် localhost ကို ဖွင့်ပြီ game ကို ဆော့နိုင်ပြီ ဖြစ်သည်။
Exposing Hola app
အပေါ်မှ စမ်းသပ်တည်ဆောက်ခဲ့သော hola pod ကို service expose ပြုလုပ်ပြီး ingress မှတဆင့် localhost/hola ပတ်လမ်းကြောင်းနှင့်ခေါ်ဆိုနိုင်ရန် စမ်းကြမှာ ဖြစ်ပါသည်။
အရင်ဆုံး service expose ပြုလုပ်နိုင်ရန်အတွက် pod ကို app=hola label တပ်ပေးရန်လိုအပ်ပါသည်။ ထို့နောက် အောက်ဖော်ပြပါ command များဖြင့် service ကို expose ပြုလုပ်နိုင်သည်။
အထက်ပါ hola-ingress manifest ကိုအသုံးပြုပြီး အောက်ဖော်ပြပါ command များဖြင့် ingress တည်ဆောက်နိုင်ပါသည်။
ယခုအခါတွင် localhost မှာ 2048 game ကိုခေါ်ဆိုနိုင်ပြီး localhost/hola/ မှတစ်ဆင့် hola application ကို ခေါ်ဆိုနိုင်ပြီ ဖြစ်သည်။
Last updated
Was this helpful?