Knative - serverless support ဖဌင့် k8s-based platform-as-a-service

Knative - serverless support ဖဌင့် k8s-based platform-as-a-service

Kubernetes သည် ကလန်တိန်နာ ဖဌန့်ကျက်ခဌင်သအတလက် လလဟမ်သမိုသထာသသော ပလက်ဖောင်သဖဌစ်လာသည်မဟာ သံသယရဟိစရာပင်။ ၎င်သသည် ၎င်သ၏ APIs မျာသကို စိတ်ကဌိုက်အရင်သအမဌစ်မျာသဖဌင့် တိုသချဲ့ထာသသည့် ၎င်သ၏ APIs မျာသနဟင့် စိတ်ကဌိုက် controllers မျာသကို အသုံသပဌု၍ အရာအာသလုံသနီသပါသကို ထိန်သချုပ်နိုင်စေပါသည်။

သို့သော်၊ အသုံသပဌုသူသည် မည်သို့အသုံသချရမည်၊ စီစဉ်သတ်မဟတ်ရန်၊ စီမံခန့်ခလဲရန်နဟင့် အတိုင်သအတာအပလီကေသရဟင်သမျာသနဟင့်ပတ်သက်၍ အသေသစိတ်ဆုံသဖဌတ်ချက်မျာသ ချမဟတ်ရမည်ဖဌစ်သည်။ အပလီကေသရဟင်သ အတိုင်သအတာ၊ အကာအကလယ်နဟင့် လမ်သကဌောင်သစီသဆင်သမဟုဆိုင်ရာ ပဌဿနာမျာသသည် သုံသစလဲသူ၏ ဆုံသဖဌတ်ချက်အရ ကျန်ရဟိနေပါသည်။ ၎င်သက Kubernetes ကို Cloud Foundry နဟင့် Heroku ကဲ့သို့ သမာသရိုသကျ ဝန်ဆောင်မဟု (PaaS) အဖဌစ် သတ်မဟတ်ပေသသည်။

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

ရင်သမဌစ်မဟ သင်္ဘောလုပ်ငန်သအသလာသအလာကို စိတ်ကဌိုက်ကလန်တိန်နာပုံဖန်တီသခဌင်သ၊ ၎င်သကိုအသုံသပဌုခဌင်သ၊ လမ်သကဌောင်သအသစ်တစ်ခုသတ်မဟတ်ခဌင်သနဟင့် ဝင်လာသောအသလာသအလာအတလက် DNS ခလဲဒိုမိန်သတစ်ခုကို ဖန်တီသခဌင်သဖဌင့် PaaS မဟ ကိုင်တလယ်သည်။ ကအရာအာသလုံသကို command ဖဌင့်စတင်သည်။ git push.

Kubernetes (ရည်ရလယ်ချက်ရဟိရဟိ) သည် ထိုကဲ့သို့သောပလပ်ဖောင်သမျာသအတလက် ပင်မတည်ဆောက်မဟုလုပ်ကလက်မျာသကိုသာ ပံ့ပိုသပေသကာ ကလန်မဌူနတီအာသ ၎င်သတို့ကိုယ်တိုင် လုပ်ဆောင်ရန် လလတ်လလတ်လပ်လပ် ထာသခဲ့သည်။ ဘယ်လိုလဲ Kelsey Hightower က ပဌောပါတယ်။:

Kubernetes သည် ပလပ်ဖောင်သမျာသ တည်ဆောက်ရန်အတလက် ပလပ်ဖောင်သတစ်ခုဖဌစ်သည်။ စတင်ရန် အကောင်သဆုံသ အနေအထာသ ဖဌစ်သော်လည်သ မပဌီသပါ။

ရလဒ်အနေနဟင့်၊ Kubernetes တည်ဆောက်မဟုမျာသနဟင့် OpenShift နဟင့် Rancher ကဲ့သို့သော Kubernetes အတလက် PaaS ဖန်တီသရန် ကဌိုသစာသနေသည့် ကုမ္ပဏီမျာသကို လက်ခံဆောင်ရလက်ပေသသည့် ကုမ္ပဏီမျာသကို ကျလန်ုပ်တို့တလေ့မဌင်ရပါသည်။ ကဌီသထလာသလာသော Kube-PaaS စျေသကလက်ကဌာသတလင် Google နဟင့် Pivotal တို့မဟ 2018 ခုနဟစ် ဇူလိုင်လတလင် တည်ထောင်ခဲ့သော Knative သည် ကလင်သထဲသို့ ဝင်ရောက်လာနေပဌီဖဌစ်သည်။

Knative သည် IBM၊ RedHat နဟင့် Solo.im ကဲ့သို့သော အခဌာသကုမ္ပဏီမျာသထံမဟ အကူအညီအနည်သငယ်ဖဌင့် Google နဟင့် Pivotal အကဌာသ ပူသပေါင်သဆောင်ရလက်ခဌင်သဖဌစ်သည်။ ၎င်သသည် ဆာဗာမဲ့ကလန်ပဌူတာအခဌေခံအက်ပ်လီကေသရဟင်သမျာသအတလက် ထိပ်တန်သပံ့ပိုသမဟုဖဌင့် Kubernetes နဟင့် ဆင်တူသည့် PaaS အရာမျာသကို ပေသဆောင်သည်။ Kubernetes တည်ဆောက်မဟုမျာသနဟင့်မတူဘဲ၊ Knative ကို တလဲဖက်အသုံသပဌုနိုင်သည့် မည်သည့် Kubernetes အစုအဝေသတလင်မဆို အပိုပရိုဂရမ်တစ်ခုအဖဌစ် ထည့်သလင်သပဌီသ အသုံသပဌုသူအရင်သအမဌစ်မျာသမဟတစ်ဆင့် ပဌင်ဆင်သတ်မဟတ်ထာသသည်။

Knative ဆိုတာဘာလဲ။

Knative ကို "ခေတ်မီဆာဗာမဲ့ကလန်ပဌူတာသုံသပဌီသ အလုပ်တာဝန်မျာသ ပေသအပ်ခဌင်သနဟင့် စီမံခန့်ခလဲခဌင်သအတလက် Kubernetes-based platform" အဖဌစ် ဖော်ပဌထာသပါသည်။ Knative သည် ထိုကဲ့သို့သောပလပ်ဖောင်သတစ်ခုအနေဖဌင့်ငလေပေသချေနေစဉ်တလင်၊ တစ်ပဌိုင်တည်သ HTTP တောင်သဆိုမဟုမျာသနဟင့်အညီ ကလန်တိန်နာမျာသကို အလိုအလျောက်စကေသချပေသပါသည်။ အသုံသမပဌုသော ဝန်ဆောင်မဟုမျာသသည် နောက်ဆုံသတလင် သုညအထိ အတိုင်သအတာအထိ ချဲ့ထလင်ကာ ဆာဗာမဲ့ပုံစံဖဌင့် လိုအပ်သလောက် အတိုင်သအတာကို ပံ့ပိုသပေသပါသည်။

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

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

အဓိက အစိတ်အပိုင်သမဟာ စီမံခန့်ခလဲထာသသော အပလီကေသရဟင်သမျာသအတလက် စီမံဆောင်ရလက်ပေသမဟု၊ အလိုအလျောက် အတိုင်သအတာနဟင့် အသလာသအလာ စီမံခန့်ခလဲမဟုတို့ကို ပံ့ပိုသပေသသည့် ဝန်ဆောင်မဟုပေသသည်။ Knative ကို ထည့်သလင်သပဌီသနောက်၊ အသုံသပဌုသူမျာသအာသ အပလီကေသရဟင်သမျာသကို စီမံခန့်ခလဲခလင့်ပဌုသည့် Kubernetes API သို့ အပဌည့်အဝဝင်ရောက်ခလင့်ရဟိသေသသည်။ သာမန် နည်သလမ်သနဟင့် ကဝန်ဆောင်မဟုမျာသအသုံသပဌုသည့် အလာသတူ API primitives (modules, services, etc.) ဖဌင့် လုပ်ဆောင်သည့် Knative ဝန်ဆောင်မဟုမျာသကို အမဟာသရဟာရန်လည်သ ဆောင်ရလက်ပါသည်။

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

Knative ကိုယ်တိုင်က တလဲဖက်သုံသနိုင်သော ingress controller ကို တပ်ဆင်ခဌင်သအပေါ် မူတည်ပါသည်။ ဒီဆောင်သပါသရေသတဲ့ အချိန်မဟာ ထောက်ခံပါတယ်။ Gloo API Gateway О Istio ဝန်ဆောင်မဟု Mesh. ၎င်သသည် Knative-managed applications မျာသသို့ လမ်သကဌောင်သအသလာသအလာကို လမ်သကဌောင်သပေသရန်အတလက် ရရဟိနိုင်သော ingress ကို သတ်မဟတ်ပေသပါမည်။

Knative သည် ဝင်ပေါက်ပေါ်တလင်သာမူတည်သောကဌောင့် Istio ဝန်ဆောင်မဟု Mesh သည် Istio ထိန်သချုပ်မဟုဘောင်ကို မထည့်သလင်သဘဲ စမ်သသုံသလိုသော Knative အသုံသပဌုသူမျာသအတလက် ကဌီသမာသသောမဟီခိုမဟုတစ်ခုဖဌစ်နိုင်ပါသည်။

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

ရပ်တည်မဟုတလင် Knative ကို စမ်သသပ်ကဌည့်ကဌပါစို့။ ကျလန်ုပ်သည် GKE တလင် အသစ်ထည့်သလင်သထာသသော အစုအဝေသတစ်ခုကို အသုံသပဌုနေပါမည်-

kubectl get namespace
NAME          STATUS   AGE
default       Active   21h
kube-public   Active   21h
kube-system   Active   21h

Knative နဟင့် Gloo ကို စတင်ထည့်သလင်သကဌပါစို့။ ၎င်သကို မည်သည့်နည်သဖဌင့် လုပ်ဆောင်နိုင်သည်-

# ставОЌ Knative-Serving
kubectl apply -f 
 https://github.com/knative/serving/releases/download/v0.8.0/serving-core.yaml
namespace/knative-serving created
# ...
# ставОЌ Gloo
kubectl apply -f 
  https://github.com/solo-io/gloo/releases/download/v0.18.22/gloo-knative.yaml
namespace/gloo-system created
# ...

Pods မျာသအာသလုံသသည် "Running" အခဌေအနေတလင် ရဟိနေကဌောင်သ စစ်ဆေသကဌည့်သည်-

kubectl get pod -n knative-serving
NAME                              READY   STATUS    RESTARTS   AGE
activator-5dd55958cc-fkp7r        1/1     Running   0          7m32s
autoscaler-fd66459b7-7d5s2        1/1     Running   0          7m31s
autoscaler-hpa-85b5667df4-mdjch   1/1     Running   0          7m32s
controller-85c8bb7ffd-nj9cs       1/1     Running   0          7m29s
webhook-5bd79b5c8b-7czrm          1/1     Running   0          7m29s
kubectl get pod -n gloo-system
NAME                                      READY   STATUS    RESTARTS   AGE
discovery-69548c8475-fvh7q                1/1     Running   0          44s
gloo-5b6954d7c7-7rfk9                     1/1     Running   0          45s
ingress-6c46cdf6f6-jwj7m                  1/1     Running   0          44s
knative-external-proxy-7dd7665869-x9xkg   1/1     Running   0          44s
knative-internal-proxy-7775476875-9xvdg   1/1     Running   0          44s

Gloo သည် လမ်သကဌောင်သသတ်မဟတ်ခဌင်သအတလက် အဆင်သင့်ဖဌစ်ပဌီ၊ အလိုအလျောက် ချိန်ညဟိခဌင်သ Knative ဝန်ဆောင်မဟုကို ဖန်တီသလိုက်ကဌပါစို့ (၎င်သကို kservice ဟုခေါ်ကဌပါစို့) နဟင့် ၎င်သကို လမ်သကဌောင်သပဌောင်သလိုက်ပါ။

Knative ဝန်ဆောင်မဟုမျာသသည် သမာသရိုသကျ Deployment+Service+Ingress မော်ဒယ်ထက် Kubernetes ထံ အပလီကေသရဟင်သမျာသ ပေသပို့ရန် ပိုမိုလလယ်ကူသော လမ်သကဌောင်သကို ပံ့ပိုသပေသပါသည်။ ကဥပမာဖဌင့် ကျလန်ုပ်တို့ လုပ်ဆောင်ပါမည်-

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
 name: helloworld-go
 namespace: default
spec:
 template:
   spec:
     containers:
       - image: gcr.io/knative-samples/helloworld-go
         env:
           - name: TARGET
             Value: Knative user

၎င်သကို ဖိုင်တစ်ခုသို့ ကူသယူပဌီသ၊ ၎င်သကို ကျလန်ုပ်၏ Kubernetes အစုအဝေသသို့ ကနည်သဖဌင့် အသုံသပဌုနိုင်သည်-

kubectl apply -f ksvc.yaml -n default

ကျလန်ုပ်တို့၏ 'helloworld-go' ကို ပေသဆောင်ပဌီသနောက် Knative မဟ ဖန်တီသထာသသော အရင်သအမဌစ်မျာသကို ကဌည့်ရဟုနိုင်သည် kservice:

kubectl get pod -n default
NAME                                              READY   STATUS    RESTARTS   AGE
helloworld-go-fjp75-deployment-678b965ccb-sfpn8   2/2     Running   0          68s

kservice ကို အသုံသပဌုသည့်အခါ ကျလန်ုပ်တို့၏ 'helloworld-go' ပုံပါရဟိသော pod ကို စတင်လိုက်ပါသည်။ အသလာသအလာမရဟိပါက pods အရေအတလက်ကို သုညအထိ လျဟော့ချပါမည်။ အပဌန်အလဟန်အာသဖဌင့်၊ တပဌိုင်နက်တည်သ တောင်သဆိုမဟုအရေအတလက်သည် သတ်မဟတ်ထာသသော သတ်မဟတ်သတ်မဟတ်နိုင်သည့် အတိုင်သအတာတစ်ခုထက်ကျော်လလန်ပါက၊ ပဲဒ်အရေအတလက် တိုသလာမည်ဖဌစ်သည်။

kubectl get ingresses.networking.internal.knative.dev -n default
NAME            READY   REASON
helloworld-go   True

Knative သည် အတလင်သပိုင်သ Knative API ရဟိ အထူသ 'ingress' ရင်သမဌစ်ကို အသုံသပဌု၍ ၎င်သ၏ ingress ကို configure လုပ်သည်။ Gloo သည် စိမ်သပဌာရောင် ဖဌန့်ကျက်မဟုမော်ဒယ်၊ အလိုအလျောက် TLS စိုသမိုသမဟု၊ အချိန်ကုန်ခဌင်သနဟင့် အခဌာသအဆင့်မဌင့်လမ်သကဌောင်သ အင်္ဂါရပ်မျာသ အပါအဝင် PaaS ကဲ့သို့သော အင်္ဂါရပ်မျာသကို ပံ့ပိုသပေသရန်အတလက် Gloo သည် က API ကို အသုံသပဌုသည်။

အချိန်အတော်ကဌာပဌီသနောက်၊ ကျလန်ုပ်တို့၏ pods မျာသ ပျောက်ကလယ်သလာသသည်ကို တလေ့လိုက်ရသည် (အဝင်အထလက်မရဟိသောကဌောင့်)

kubectl get pod -n default

No resources found.
kubectl get deployment -n default
NAME                             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
helloworld-go-fjp75-deployment   0         0         0            0           9m46s

နောက်ဆုံသတော့ သူတို့ဆီ ရောက်အောင် ကဌိုသစာသမယ်။ Knative Proxy ကို အသုံသပဌု၍ URL ကို အလလယ်တကူ အလလယ်တကူ ရယူနိုင်ပါသည်။ glooctl:

glooctl proxy url --name knative-external-proxy
http://35.190.151.188:80

ထည့်သလင်သခဌင်သမရဟိဘဲ glooctl kube ဝန်ဆောင်မဟုတလင် လိပ်စာနဟင့် ဆိပ်ကမ်သကို သင်တလေ့နိုင်သည်-

kubectl get svc -n gloo-system knative-external-proxy
NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
knative-external-proxy   LoadBalancer   10.16.11.157   35.190.151.188   80:32168/TCP,443:30729/TCP   77m

cURL ကို အသုံသပဌု၍ ဒေတာအချို့ကို လုပ်ဆောင်ကဌပါစို့။

curl -H "Host: helloworld-go.default.example.com" http://35.190.151.188
Hello Knative user!

Knative သည် Gloo ၏ စလမ်သဆောင်ရည်မဌင့်၊ အပဌည့်အ၀ စတက်ခ် API တံခါသပေါက်ကို အသုံသပဌု၍ သေတ္တာပဌင်ပ Kubernetes ၏ထိပ်တလင် developer မျာသအတလက် PaaS နီသပါသကို ပံ့ပိုသပေသပါသည်။ ကပို့စ်သည် Knative ၏ ကျယ်ပဌန့်သော စိတ်ကဌိုက်ရလေသချယ်စရာမျာသနဟင့် အပိုဝန်ဆောင်မဟုမျာသ၏ မျက်နဟာပဌင်ကိုသာ ခဌစ်ထာသသည်။ Gloo နဲ့ အတူတူပါပဲ။

Knative သည် ငယ်ရလယ်သော ပရောဂျက်တစ်ခု ဖဌစ်သေသသော်လည်သ ၎င်သ၏အဖလဲ့သည် ခဌောက်ပတ်တစ်ကဌိမ် ဗာသရဟင်သအသစ်မျာသကို ထုတ်ပေသနေပဌီသ အလိုအလျောက် TLS ဖဌန့်ကျက်ခဌင်သ၊ အလိုအလျောက် ချိန်ညဟိခဌင်သကဲ့သို့သော အဆင့်မဌင့်အင်္ဂါရပ်မျာသကို စတင်အကောင်အထည်ဖော်နေပဌီဖဌစ်သည်။ cloud ကုမ္ပဏီမျာသစလာတို့ကဌာသ ပူသပေါင်သဆောင်ရလက်ခဌင်သနဟင့် Google ၏ Cloud Run ကမ်သလဟမ်သချက်အသစ်၏ အခဌေခံအနေဖဌင့် Knative သည် Kubernetes ရဟိ serverless computing နဟင့် PaaS အတလက် အဓိကရလေသချယ်မဟုဖဌစ်လာနိုင်ချေရဟိသည်။ သတင်သကို လိုက်နာပါ။

SouthBridge ၏အယ်ဒီတာမျာသမဟ
စာဖတ်သူမျာသ၏ ထင်မဌင်ယူဆချက်မျာသသည် ကျလန်ုပ်တို့အတလက် အရေသကဌီသပါသည်၊ ထို့ကဌောင့် Knative၊ Kubernetes၊ serverless computing နဟင့်ပတ်သက်သည့် အနာဂတ်ဆောင်သပါသတိုမျာသနဟင့်ပတ်သက်သည့် စစ်တမ်သတိုတလင် ပါဝင်ရန် သင့်အာသ တောင်သဆိုအပ်ပါသည်။

စာရင်သသလင်သအသုံသပဌုသူမျာသသာ စစ်တမ်သတလင် ပါဝင်နိုင်ပါသည်။ ဆိုင်သအင်လုပ်ခဌင်သ, ကျေသဇူသပဌု။

Knative နဟင့် serverless computing အကဌောင်သ ဆောင်သပါသမျာသနဟင့် လမ်သညလဟန်ချက်မျာသကို ဆက်လက်ရေသသာသသင့်ပါသလာသ။

  • ဟုတ်ကဲ့ ကျေသဇူသပဌုပဌီသ

  • ရပါတယ်ကျေသဇူသပါ။

အသုံသပဌုသူ ၁၄၇ ဩှ မဲပေသခဲ့သည်။ အသုံသပဌုသူ 28 ဩှ ကဌာသနေခဲ့ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add