Knative - بغیر سرور سپورٹ کے ساتھ k8s پر مبنی پلیٹ فارم بطور سروس

Knative - بغیر سرور سپورٹ کے ساتھ k8s پر مبنی پلیٹ فارم بطور سروس

Kubernetes بلاشبہ کنٹینر کی تعیناتی کا غالب پلیٹ فارم بن گیا ہے۔ یہ اپنے APIs اور کسٹم کنٹرولرز کا استعمال کرتے ہوئے تقریباً کسی بھی چیز کو کنٹرول کرنے کی صلاحیت فراہم کرتا ہے جو اپنی مرضی کے وسائل کے ساتھ APIs کو بڑھاتے ہیں۔

تاہم، صارف کو ابھی بھی اس بارے میں تفصیلی فیصلے کرنا ہوں گے کہ کس طرح ایپلی کیشنز کو تعینات، ترتیب، نظم اور اسکیل کرنا ہے۔ ایپلیکیشن اسکیلنگ، تحفظ، اور ٹریفک کے بہاؤ کے مسائل صارف کی صوابدید پر رہتے ہیں۔ یہ Kubernetes کو روایتی پلیٹ فارمز سے بطور سروس (PaaS) الگ کرتا ہے، جیسے کلاؤڈ فاؤنڈری اور ہیروکو۔

پلیٹ فارمز کا ایک آسان صارف انٹرفیس ہے اور اس کا مقصد ایپلیکیشن ڈویلپرز ہیں جو اکثر انفرادی ایپلی کیشنز کو ترتیب دینے میں شامل ہوتے ہیں۔ روٹنگ، تعیناتی، اور میٹرکس کا انتظام بنیادی PaaS سسٹم کے ذریعے صارف کے لیے شفاف طریقے سے کیا جاتا ہے۔

ماخذ سے جہاز کے ورک فلو کو PaaS ایک حسب ضرورت کنٹینر امیج بنا کر، اسے تعینات کر کے، ایک نیا راستہ ترتیب دے کر اور آنے والی ٹریفک کے لیے DNS ذیلی ڈومین کے ذریعے سنبھالتا ہے۔ یہ سب کمانڈ پر شروع کیا گیا ہے۔ git push.

Kubernetes (جان بوجھ کر) ایسے پلیٹ فارمز کے لیے صرف بنیادی تعمیراتی بلاکس فراہم کرتا ہے، جس سے کمیونٹی خود کام کرنے کے لیے آزاد رہتی ہے۔ کیسے کیلسی ہائی ٹاور نے کہا:

Kubernetes پلیٹ فارم بنانے کا ایک پلیٹ فارم ہے۔ شروع کرنے کے لئے بہترین پوزیشن، لیکن ختم نہیں.

نتیجے کے طور پر، ہم Kubernetes کی تعمیرات کا ایک گروپ دیکھتے ہیں، نیز میزبان کمپنیاں جو Kubernetes کے لیے PaaS بنانے کی کوشش کر رہی ہیں، جیسے OpenShift اور Rancher۔ بڑھتی ہوئی Kube-PaaS مارکیٹ کے درمیان، Knative، جو جولائی 2018 میں Google اور Pivotal کے ذریعے قائم کیا گیا تھا، رنگ میں داخل ہو رہا ہے۔

Knative Google اور Pivotal کے درمیان ایک تعاون تھا، جس میں دوسری کمپنیوں جیسے IBM، RedHat اور Solo.im کی تھوڑی مدد تھی۔ یہ سرور لیس کمپیوٹنگ پر مبنی ایپلی کیشنز کے لیے اعلی درجے کی حمایت کے ساتھ Kubernetes کو اسی طرح کی PaaS چیزیں پیش کرتا ہے۔ Kubernetes کی تعمیر کے برعکس، Knative کو کسی بھی مطابقت پذیر Kubernetes کلسٹر پر ایک ایڈ آن کے طور پر انسٹال کیا جاتا ہے اور صارف کے وسائل کے ذریعے کنفیگر کیا جاتا ہے۔

Knative کیا ہے؟

Knative کو "جدید سرور لیس کمپیوٹنگ کا استعمال کرتے ہوئے کام کے بوجھ کی فراہمی اور انتظام کرنے کے لیے Kubernetes پر مبنی پلیٹ فارم" کے طور پر بیان کیا گیا ہے۔ Knative، خود کو اس طرح کے پلیٹ فارم کے طور پر بلنگ کرتے ہوئے، کنٹینرز کو فعال طور پر کنٹینرز کو سمورتی HTTP درخواستوں کے تناسب سے بناتا ہے۔ غیر استعمال شدہ خدمات آخر کار صفر تک سکیل کرتی ہیں، جو سرور کے بغیر طرز کی آن ڈیمانڈ اسکیلنگ فراہم کرتی ہیں۔

Knative کنٹرولرز کے ایک سیٹ پر مشتمل ہوتا ہے جو کسی بھی Kubernetes کلسٹر میں انسٹال ہوتا ہے اور درج ذیل صلاحیتیں فراہم کرتا ہے:

  • ماخذ کوڈ سے کنٹینرائزڈ ایپلی کیشنز بنانا (جزو کے ذریعہ فراہم کردہ تعمیر),
  • ایپلی کیشنز تک آنے والی ٹریفک تک رسائی فراہم کرنا (جز کے ذریعہ فراہم کردہ سرونگ),
  • ڈیلیوری اور ڈیمانڈ پر ایپلی کیشنز کی خودکار اسکیلنگ (جز کے ذریعہ بھی فراہم کی گئی ہے۔ سرونگ),
  • ایپلیکیشن لانچ کرنے والے واقعات کے ذرائع کی نشاندہی کرنا (جز کے ذریعہ فراہم کردہ واقعہ).

ایک کلیدی جزو سرونگ ہے، جو منظم ایپلی کیشنز کے لیے پروویژننگ، آٹو اسکیلنگ اور ٹریفک مینجمنٹ فراہم کرتا ہے۔ Knative کو انسٹال کرنے کے بعد، آپ کو اب بھی Kubernetes API تک مکمل رسائی حاصل ہے، جو صارفین کو ایپلیکیشنز کا نظم کرنے کی اجازت دیتا ہے۔ عام طریقہ، اور Knative سروسز کو ڈیبگ کرنے کا کام بھی کرتا ہے، اسی API پرائمیٹوز کے ساتھ کام کرتا ہے جو یہ سروسز استعمال کرتی ہیں (ماڈیولز، سروسز وغیرہ)۔

سرونگ کی مدد سے، نیلے سبز ٹریفک کی روٹنگ بھی خودکار ہے، جب صارف ایپلی کیشن کا اپ ڈیٹ ورژن فراہم کرتا ہے تو ایپلیکیشن کے نئے اور پرانے ورژن کے درمیان ٹریفک کی تقسیم کو یقینی بناتا ہے۔

Knative خود ایک ہم آہنگ انگریس کنٹرولر کو انسٹال کرنے پر منحصر ہے۔ اس مضمون کو لکھنے کے وقت تائید کی جاتی ہے۔ گلو API گیٹ وے и اسٹیو سروس میش. یہ Knative کے زیر انتظام ایپلی کیشنز تک ٹریفک کو روٹ کرنے کے لیے دستیاب داخلے کو ترتیب دے گا۔

Istio سروس میش Knative صارفین کے لیے ایک بڑا انحصار ہو سکتا ہے جو 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
# ...

ہم چیک کرتے ہیں کہ تمام پوڈز "رننگ" کی حالت میں ہیں:

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 خدمات روایتی تعیناتی+سروس+انگریس ماڈل کے مقابلے 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

میں نے اسے ایک فائل میں کاپی کیا، پھر اسے اپنے کبرنیٹس کلسٹر پر اس طرح لاگو کیا:

kubectl apply -f ksvc.yaml -n default

ہم اپنے 'ہیلو ورلڈ-گو' کی فراہمی کے بعد کلسٹر میں Knative کے تخلیق کردہ وسائل کو دیکھ سکتے ہیں۔ kservice:

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

ہماری 'helloworld-go' امیج کے ساتھ پوڈ کو لانچ کیا جاتا ہے جب kservice کو تعینات کیا جاتا ہے۔ اگر ٹریفک نہ ہو تو پوڈز کی تعداد صفر ہو جائے گی۔ اور اس کے برعکس، اگر بیک وقت درخواستوں کی تعداد ایک خاص قابل ترتیب حد سے تجاوز کر جاتی ہے، تو پوڈز کی تعداد بڑھ جائے گی۔

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

Knative داخلی Knative API میں ایک خاص 'انگریس' وسائل کا استعمال کرتے ہوئے اپنے داخلے کو ترتیب دیتا ہے۔ Gloo اس API کو PaaS جیسی خصوصیات فراہم کرنے کے لیے اپنی کنفیگریشن کے طور پر استعمال کرتا ہے، بشمول نیلے سبز تعیناتی ماڈل، خودکار TLS نفاذ، ٹائم آؤٹ، اور دیگر جدید روٹنگ خصوصیات۔

کچھ دیر کے بعد، ہم دیکھتے ہیں کہ ہمارے پوڈ غائب ہو گئے ہیں (کیونکہ وہاں کوئی آنے والا ٹریفک نہیں تھا):

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 آپ کیوب سروس میں ایڈریس اور پورٹ دیکھ سکتے ہیں:

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 کے اوپر ڈویلپرز کے لیے تقریباً PaaS فراہم کرتا ہے۔ اس پوسٹ نے صرف Knative کے وسیع حسب ضرورت اختیارات اور اضافی خصوصیات کی سطح کو کھرچ دیا ہے۔ گلو کے ساتھ بھی ایسا ہی!

اس حقیقت کے باوجود کہ Knative ابھی بھی ایک نوجوان پراجیکٹ ہے، اس کی ٹیم ہر چھ ہفتے بعد نئے ورژن جاری کرتی ہے، اور جدید خصوصیات کا نفاذ شروع ہو چکا ہے، جیسے خودکار TLS تعیناتی، کنٹرول پینل کی خودکار سکیلنگ۔ ایک اچھا موقع ہے کہ، متعدد کلاؤڈ کمپنیوں کے درمیان تعاون کے نتیجے میں، اور گوگل کی نئی کلاؤڈ رن پیشکش کی بنیاد کے طور پر، Knative بغیر سرور کمپیوٹنگ اور Kubernetes پر PaaS کے لیے بنیادی آپشن بن سکتا ہے۔ خبروں پر عمل کریں!

ساؤتھ برج کے ایڈیٹرز سے
قارئین کی آراء ہمارے لیے اہم ہیں، اس لیے ہم آپ سے Knative، Kubernetes، سرور لیس کمپیوٹنگ کے بارے میں مستقبل کے مضامین سے متعلق ایک مختصر سروے میں حصہ لینے کے لیے کہتے ہیں:

سروے میں صرف رجسٹرڈ صارفین ہی حصہ لے سکتے ہیں۔ سائن ان، برائے مہربانی.

کیا مجھے Knative اور سرور لیس کمپیوٹنگ کے بارے میں مضامین اور گائیڈز لکھنا جاری رکھنا چاہیے؟

  • جی ہاں برائے مہربانی.

  • نہیں شکریہ.

28 صارفین نے ووٹ دیا۔ 4 صارفین غیر حاضر رہے۔

ماخذ: www.habr.com

DDoS تحفظ، VPS VDS سرورز والی سائٹوں کے لیے قابل اعتماد ہوسٹنگ خریدیں۔ DDoS تحفظ، VPS VDS سرورز کے ساتھ قابل اعتماد ویب سائٹ ہوسٹنگ خریدیں۔ ProHoster