Istio تقسیم شدہ ایپلی کیشنز کو جوڑنے، محفوظ کرنے اور ان کی نگرانی کے لیے ایک آسان ٹول ہے۔ Istio پیمانے پر سافٹ ویئر کو چلانے اور ان کا نظم کرنے کے لیے مختلف قسم کی ٹیکنالوجیز کا استعمال کرتا ہے، بشمول ایپلیکیشن کوڈ کو پیک کرنے کے لیے کنٹینرز اور تعیناتی کے لیے انحصار، اور ان کنٹینرز کو منظم کرنے کے لیے Kubernetes۔ لہذا، Istio کے ساتھ کام کرنے کے لیے آپ کو معلوم ہونا چاہیے کہ ان ٹیکنالوجیز پر مبنی متعدد خدمات کے ساتھ ایک ایپلیکیشن کیسے کام کرتی ہے۔ بغیر اسٹیو اگر یہ ٹولز اور تصورات آپ کو پہلے سے ہی معلوم ہیں تو بلا جھجک اس ٹیوٹوریل کو چھوڑیں اور سیدھا سیکشن پر جائیں۔ Google Kubernetes Engine (GKE) پر Istio انسٹال کرنا یا ایکسٹینشن انسٹال کرنا GKE پر اسٹیو.
یہ ایک مرحلہ وار گائیڈ ہے جہاں ہم ماخذ کوڈ سے لے کر GKE کنٹینر تک پورے عمل کو دیکھیں گے تاکہ آپ کو ایک مثال کے ذریعے ان ٹیکنالوجیز کی بنیادی تفہیم فراہم کی جا سکے۔ آپ یہ بھی دیکھیں گے کہ کس طرح Istio ان ٹیکنالوجیز کی طاقت کا فائدہ اٹھاتا ہے۔ یہ فرض کرتا ہے کہ آپ کنٹینرز، کبرنیٹس، سروس میشز، یا اسٹیو کے بارے میں کچھ نہیں جانتے ہیں۔
ٹاسکس
اس ٹیوٹوریل میں، آپ درج ذیل کام مکمل کریں گے:
متعدد خدمات کے ساتھ ایک سادہ ہیلو ورلڈ ایپلی کیشن سیکھنا۔
سورس کوڈ سے ایپلیکیشن چلائیں۔
درخواست کو کنٹینرز میں پیک کرنا۔
Kubernetes کلسٹر بنانا۔
کنٹینرز کو ایک کلسٹر میں تعینات کرنا۔
شروع کرنے سے پہلے
Kubernetes Engine API کو فعال کرنے کے لیے ہدایات پر عمل کریں:
اس ٹیوٹوریل میں، آپ کلاؤڈ شیل استعمال کر سکتے ہیں، جو ورچوئل مشین تیار کرتا ہے۔ Google Compute Engine میں g1-small Debian پر مبنی Linux، یا Linux یا macOS کمپیوٹر کے ساتھ۔
آپشن A: کلاؤڈ شیل کا استعمال
کلاؤڈ شیل استعمال کرنے کے فوائد:
ازگر 2 اور ازگر 3 ترقیاتی ماحول (بشمول مجازی) مکمل طور پر تشکیل شدہ ہیں۔
کمانڈ لائن ٹولز gcloud, ڈاکر, گٹ и کیوبیکٹل، جسے ہم استعمال کریں گے پہلے ہی انسٹال ہیں۔
آپ کے پاس انتخاب کرنے کے لیے کئی ہیں۔ ٹیکسٹ ایڈیٹرز:
کوڈ ایڈیٹر۔، جو کلاؤڈ شیل ونڈو کے اوپری حصے میں ترمیم کے آئیکن کے ساتھ کھلتا ہے۔
ایماکس، ویم یا نینو، جو کلاؤڈ شیل میں کمانڈ لائن سے کھلتے ہیں۔
نمونہ ایپلی کیشن Python میں لکھا گیا ہے اور دو اجزاء پر مشتمل ہے جو استعمال کرتے ہوئے بات چیت کرتے ہیں۔ باقی:
سرور: ایک اختتامی نقطہ کے ساتھ سادہ سرور حاصل کریں، /، جو کنسول پر "ہیلو ورلڈ" پرنٹ کرتا ہے۔
لوڈجن: اسکرپٹ جو ٹریفک بھیجتا ہے۔ سرور، فی سیکنڈ درخواستوں کی ایک قابل ترتیب تعداد کے ساتھ۔
سورس کوڈ سے ایپلیکیشن چلانا
نمونہ ایپلیکیشن کو دریافت کرنے کے لیے، اسے کلاؤڈ شیل میں یا اپنے کمپیوٹر پر چلائیں۔
1) کیٹلاگ میں istio-samples/sample-apps/helloserver رن سرور:
python3 server/server.py
شروعات میں سرور مندرجہ ذیل ظاہر ہوتا ہے:
INFO:root:Starting server...
2) درخواستیں بھیجنے کے لیے ایک اور ٹرمینل ونڈو کھولیں۔ سرور. اگر آپ کلاؤڈ شیل استعمال کر رہے ہیں، تو دوسرا سیشن کھولنے کے لیے ایڈ آئیکن پر کلک کریں۔
3) کو ایک درخواست بھیجیں۔ سرور:
curl http://localhost:8080
سرور کے جوابات:
Hello World!
4) اس ڈائرکٹری سے جہاں آپ نے نمونہ کوڈ ڈاؤن لوڈ کیا ہے، اس ڈائرکٹری پر جائیں جس میں موجود ہے۔ لوڈجن:
cd YOUR_WORKING_DIRECTORY/istio-samples/sample-apps/helloserver/loadgen
نیٹ ورکنگ کے نقطہ نظر سے، پوری ایپلیکیشن ایک ہی میزبان (مقامی کمپیوٹر یا کلاؤڈ شیل ورچوئل مشین) پر چلتی ہے۔ اس لیے آپ استعمال کر سکتے ہیں۔ localhostکو درخواستیں بھیجنے کے لیے سرور.
10) روکنا لوڈجن и سرور، درج کریں۔ Ctrl-c ہر ٹرمینل ونڈو میں۔
11) ٹرمینل ونڈو میں لوڈجن ورچوئل ماحول کو غیر فعال کریں:
deactivate
کنٹینرز میں درخواست کی پیکنگ
GKE پر ایپلیکیشن چلانے کے لیے، آپ کو سیمپل ایپلیکیشن - پیک کرنا ہوگا۔ سرور и لوڈجن - کنٹینرز. کنٹینر کسی ایپلیکیشن کو اس کے ماحول سے الگ کرنے کے لیے پیک کرنے کا ایک طریقہ ہے۔
کسی درخواست کو کنٹینر میں پیک کرنے کے لیے، آپ کو ضرورت ہے۔ ڈاکر فائل. ڈاکر فائل ایک ٹیکسٹ فائل ہے جو ایپلیکیشن کے سورس کوڈ اور اس پر انحصار کرنے کے لیے کمانڈز کی وضاحت کرتی ہے۔ ڈاکر کی تصویر۔ ایک بار تعمیر ہونے کے بعد، آپ تصویر کو کنٹینر رجسٹری میں اپ لوڈ کرتے ہیں جیسے کہ Docker Hub یا کنٹینر رجسٹری.
مثال پہلے ہی موجود ہے۔ ڈاکر فائل لیے سرور и لوڈجن تصاویر جمع کرنے کے لیے تمام ضروری احکامات کے ساتھ۔ ذیل میں - ڈاکر فائل لیے سرور:
FROM python:3-slim as base
FROM base as builder
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
g++
&& rm -rf /var/lib/apt/lists/*
# Enable unbuffered logging
FROM base as final
ENV PYTHONUNBUFFERED=1
RUN apt-get -qq update
&& apt-get install -y --no-install-recommends
wget
WORKDIR /helloserver
# Grab packages from builder
COPY --from=builder /usr/local/lib/python3.7/ /usr/local/lib/python3.7/
# Add the application
COPY . .
EXPOSE 8080
ENTRYPOINT [ "python", "server.py" ]
ٹیم ازگر سے: 3-بیس کے طور پر پتلا ڈوکر کو تازہ ترین استعمال کرنے کو کہتا ہے۔ Python 3 تصویر ایک بنیاد کے طور پر.
ٹیم کاپی کریں۔ . سورس فائلوں کو موجودہ ورکنگ ڈائرکٹری میں کاپی کرتا ہے (صرف ہمارے معاملے میں server.py) کنٹینر کے فائل سسٹم میں۔
ENTRYPOINT اس کمانڈ کی وضاحت کرتا ہے جو کنٹینر کو شروع کرنے کے لیے استعمال ہوتا ہے۔ ہمارے معاملے میں، یہ کمانڈ تقریباً وہی ہے جو آپ چلاتے تھے۔ server.py سورس کوڈ سے۔
ٹیم ایکسپوز اشارہ کرتا ہے کہ سرور پورٹ کے ذریعے ڈیٹا کا انتظار کر رہا ہے۔ 8080. یہ ٹیم نہیں ہے۔ بندرگاہیں فراہم کرتا ہے۔. یہ کچھ قسم کی دستاویزات ہیں جو بندرگاہ کو کھولنے کے لیے درکار ہیں۔ 8080 کنٹینر شروع کرتے وقت.
آپ کی درخواست کو کنٹینرائز کرنے کی تیاری
1) درج ذیل ماحولیاتی متغیرات مرتب کریں۔ بدل دیں۔ PROJECT_ID آپ کے GCP پروجیکٹ ID پر۔
export PROJECT_ID="PROJECT_ID"
export GCR_REPO="preparing-istio"
اقدار کا استعمال کرتے ہوئے PROJECT_ID и GCR_REPO جب آپ اسے بناتے ہیں تو آپ ڈوکر امیج کو ٹیگ کرتے ہیں اور اسے نجی کنٹینر رجسٹری میں دھکیل دیتے ہیں۔
2) کمانڈ لائن ٹول کے لیے ڈیفالٹ GCP پروجیکٹ سیٹ کریں۔ gcloud.
gcloud config set project $PROJECT_ID
3) کمانڈ لائن ٹول کے لیے ڈیفالٹ زون سیٹ کریں۔ gcloud.
gcloud config set compute/zone us-central1-b
4) یقینی بنائیں کہ کنٹینر رجسٹری سروس GCP پروجیکٹ میں فعال ہے۔
مخزن میں تصاویر کی فہرست کا جائزہ لیں اور تصدیق کریں کہ تصاویر اپ لوڈ ہو چکی ہیں:
gcloud container images list --repository gcr.io/$PROJECT_ID/preparing-istio
کمانڈ نئی اپ لوڈ کردہ تصاویر کے نام دکھاتی ہے:
NAME
gcr.io/PROJECT_ID/preparing-istio/helloserver
gcr.io/PROJECT_ID/preparing-istio/loadgen
ایک GKE کلسٹر بنانا۔
یہ کنٹینرز کلاؤڈ شیل ورچوئل مشین یا کمانڈ کے ساتھ کمپیوٹر پر چلائے جا سکتے ہیں۔ ڈاکر رن. لیکن پیداواری ماحول میں، آپ کو کنٹینرز کو مرکزی طور پر آرکیسٹریٹ کرنے کا ایک طریقہ درکار ہوتا ہے۔ مثال کے طور پر، آپ کو ایک ایسے سسٹم کی ضرورت ہے جو اس بات کو یقینی بنائے کہ کنٹینرز ہمیشہ چل رہے ہیں، اور اگر ٹریفک میں اضافہ ہوتا ہے تو آپ کو اضافی کنٹینر کی مثالوں کو بڑھانے اور اسپن کرنے کے طریقے کی ضرورت ہے۔
کنٹینرائزڈ ایپلیکیشنز کو چلانے کے لیے آپ استعمال کر سکتے ہیں۔ جی کے ای۔. GKE ایک کنٹینر آرکیسٹریشن پلیٹ فارم ہے جو ورچوئل مشینوں کو کلسٹر میں اکٹھا کرتا ہے۔ ہر ورچوئل مشین کو نوڈ کہا جاتا ہے۔ GKE کلسٹرز اوپن سورس Kubernetes کلسٹر مینجمنٹ سسٹم پر مبنی ہیں۔ Kubernetes کلسٹر کے ساتھ تعامل کے لیے میکانزم فراہم کرتا ہے۔
ٹیم gcloud GCP پروجیکٹ اور آپ کے بتائے ہوئے ڈیفالٹ زون میں ایک istioready کلسٹر بناتا ہے۔ Istio چلانے کے لیے، ہم کم از کم 4 نوڈس اور ایک ورچوئل مشین رکھنے کی تجویز کرتے ہیں۔ n1-معیاری-2.
ٹیم چند منٹوں میں کلسٹر بناتی ہے۔ جب کلسٹر تیار ہوتا ہے، تو کمانڈ کچھ اس طرح آؤٹ پٹ کرتی ہے۔ сообщение.
2) کمانڈ لائن ٹول میں اسناد فراہم کریں۔ کیوبیکٹلکلسٹر کا انتظام کرنے کے لیے اسے استعمال کرنا:
3) اب آپ Kubernetes کے ساتھ بات چیت کر سکتے ہیں۔ کیوبیکٹل. مثال کے طور پر، درج ذیل کمانڈ سے نوڈس کی حیثیت معلوم کی جا سکتی ہے۔
kubectl get nodes
کمانڈ نوڈس کی فہرست تیار کرتی ہے:
NAME STATUS ROLES AGE VERSION
gke-istoready-default-pool-dbeb23dc-1vg0 Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-36z5 Ready <none> 100s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-fj7s Ready <none> 99s v1.13.6-gke.13
gke-istoready-default-pool-dbeb23dc-wbjw Ready <none> 99s v1.13.6-gke.13
Kubernetes کلیدی تصورات
خاکہ GKE پر ایک درخواست دکھاتا ہے:
GKE میں کنٹینرز لگانے سے پہلے، Kubernetes کے کلیدی تصورات جانیں۔ اگر آپ مزید جاننا چاہتے ہیں تو بالکل آخر میں لنکس موجود ہیں۔
نوڈس اور کلسٹرز. GKE میں، نوڈ ایک ورچوئل مشین ہے۔ دوسرے Kubernetes پلیٹ فارمز پر، ایک نوڈ کمپیوٹر یا ورچوئل مشین ہو سکتا ہے۔ کلسٹر نوڈس کا ایک مجموعہ ہے جسے ایک اکائی سمجھا جا سکتا ہے جہاں آپ کنٹینرائزڈ ایپلیکیشن لگاتے ہیں۔
پھلیاں. Kubernetes میں، کنٹینرز پھلیوں میں چلتے ہیں. Kubernetes میں Pod ایک ناقابل تقسیم اکائی ہے۔ ایک پوڈ میں ایک یا زیادہ کنٹینرز ہوتے ہیں۔ آپ سرور کنٹینرز تعینات کرتے ہیں اور لوڈجن علیحدہ پھلیوں میں. جب ایک پوڈ میں کئی کنٹینرز ہوتے ہیں (مثال کے طور پر، ایک ایپلیکیشن سرور اور پراکسی سرور)، کنٹینرز کو ایک واحد ادارے کے طور پر منظم کیا جاتا ہے اور پوڈ کے وسائل کا اشتراک کیا جاتا ہے۔
تعیناتیاں. Kubernetes میں، ایک تعیناتی ایک ایسی چیز ہے جو ایک جیسی پھلیوں کا مجموعہ ہے۔ تعیناتی کلسٹر نوڈس میں تقسیم شدہ پوڈز کی متعدد نقلیں شروع کرتی ہے۔ تعیناتی خود بخود ان پوڈز کی جگہ لے لیتی ہے جو ناکام ہو چکے ہیں یا غیر جوابدہ ہیں۔
Kubernetes سروس. GKE میں ایپلیکیشن کوڈ چلاتے وقت، کے درمیان کنکشن لوڈجن и سرور. جب آپ نے کلاؤڈ شیل ورچوئل مشین یا ڈیسک ٹاپ پر خدمات شروع کیں تو آپ نے درخواستیں بھیجیں۔ سرور اس کے بعد مقامی ہسٹسٹ: 8080. جی کے ای میں تعینات ہونے کے بعد، پوڈز کو دستیاب نوڈس پر عمل میں لایا جاتا ہے۔ پہلے سے طے شدہ طور پر، آپ کو اس پر کوئی کنٹرول نہیں ہے کہ پوڈ کس نوڈ پر چل رہا ہے، لہذا آپ پھلیاں کوئی مستقل IP پتے نہیں۔
کے لیے ایک IP ایڈریس حاصل کرنے کے لیے سرور، آپ کو پوڈ کے اوپر ایک نیٹ ورک تجرید کی وضاحت کرنے کی ضرورت ہے۔ یہی بات ہے۔ Kubernetes سروس. Kubernetes سروس پوڈز کے سیٹ کے لیے ایک مستقل اختتامی نقطہ فراہم کرتی ہے۔ ایسے چند ہی ہیں خدمات کی اقسام. سرور استعمال کرتا ہے لوڈ بیلنسرجو رابطہ کرنے کے لیے ایک بیرونی IP پتہ فراہم کرتا ہے۔ سرور کلسٹر کے باہر سے۔
Kubernetes میں ایک بلٹ ان DNS سسٹم بھی ہے جو DNS ناموں کو تفویض کرتا ہے (مثال کے طور پر، helloserver.default.cluster.local) خدمات۔ اس کی بدولت، کلسٹر کے اندر موجود پوڈز ایک مستقل پتے پر کلسٹر میں موجود دیگر پھلیوں کے ساتھ بات چیت کرتے ہیں۔ DNS کا نام کلسٹر سے باہر استعمال نہیں کیا جا سکتا، جیسے کلاؤڈ شیل میں یا کمپیوٹر پر۔
Kubernetes ظاہر ہوتا ہے۔
جب آپ نے سورس سے ایپلیکیشن چلائی تو آپ نے لازمی کمانڈ کا استعمال کیا۔ پادری 3
server.py
لازمی ایک فعل کا مطلب ہے: "یہ کرو۔"
Kubernetes استعمال کرتا ہے۔ اعلانیہ ماڈل. اس کا مطلب یہ ہے کہ ہم Kubernetes کو یہ نہیں بتا رہے ہیں کہ کیا کرنا ہے، بلکہ مطلوبہ حالت کو بیان کر رہے ہیں۔ مثال کے طور پر، Kubernetes ضرورت کے مطابق پوڈ کو شروع اور روکتا ہے تاکہ یہ یقینی بنایا جا سکے کہ سسٹم کی اصل حالت مطلوبہ حالت سے ملتی ہے۔
آپ مینی فیسٹ یا فائلوں میں مطلوبہ حالت کی نشاندہی کرتے ہیں۔ یامل. YAML فائل میں ایک یا زیادہ Kubernetes اشیاء کے لیے وضاحتیں ہوتی ہیں۔
مثال کے لیے YAML فائل ہے۔ سرور и لوڈجن. ہر YAML فائل تعیناتی آبجیکٹ اور Kubernetes سروس کی مطلوبہ حالت کی وضاحت کرتی ہے۔
پہلا میدان نمونہ مطلوبہ حالت کی وضاحت پر مشتمل ہے۔
spec.replicas پھلیوں کی مطلوبہ تعداد کی نشاندہی کرتا ہے۔
سیکشن spec.template پوڈ ٹیمپلیٹ کی وضاحت کرتا ہے۔ پوڈ کی تفصیلات میں ایک فیلڈ ہے۔ تصویر، جو اس تصویر کا نام بتاتا ہے جسے کنٹینر رجسٹری سے نکالنے کی ضرورت ہے۔
لوڈ بیلنسر: کلائنٹس لوڈ بیلنسر کے آئی پی ایڈریس پر درخواستیں بھیجتے ہیں، جس کا آئی پی ایڈریس مستقل ہے اور کلسٹر کے باہر سے قابل رسائی ہے۔
ٹارگٹ پورٹ: جیسا کہ آپ کو یاد ہے، ٹیم ایکسپوز 8080 в ڈاکر فائل بندرگاہیں فراہم نہیں کیں۔ آپ بندرگاہ فراہم کرتے ہیں۔ 8080تاکہ آپ کنٹینر سے رابطہ کر سکیں سرور کلسٹر کے باہر. ہمارے معاملے میں hellosvc.default.cluster.local:80 (مختصر نام: ہیلوس وی سی) بندرگاہ کے مساوی ہے۔ 8080 Pod IP پتے ہیلو سرور.
پورٹ: یہ وہ پورٹ نمبر ہے جہاں کلسٹر میں دیگر سروسز درخواستیں بھیجیں گی۔
loadgen.yaml
پر تعیناتی اعتراض loadgen.yaml کی طرح نظر آنا server.yaml. فرق یہ ہے کہ تعیناتی آبجیکٹ میں ایک سیکشن ہوتا ہے۔ env. یہ ماحولیاتی متغیرات کی وضاحت کرتا ہے جن کی ضرورت ہے۔ لوڈجن اور جسے آپ نے منبع سے ایپلیکیشن چلاتے وقت انسٹال کیا تھا۔
وقت لوڈجن فیلڈ کے لیے آنے والی درخواستوں کو قبول نہیں کرتا ہے۔ قسم اشارہ کیا کلسٹر آئی پی. یہ قسم ایک مستقل IP پتہ فراہم کرتی ہے جسے کلسٹر میں خدمات استعمال کر سکتی ہیں، لیکن یہ IP پتہ بیرونی کلائنٹس کے سامنے نہیں آتا ہے۔
بدل دیں۔ PROJECT_ID آپ کے GCP پروجیکٹ ID پر۔
9) محفوظ کریں اور بند کریں۔ loadgen.yaml، ٹیکسٹ ایڈیٹر بند کریں۔
10) YAML فائل کوبرنیٹس پر تعینات کریں:
kubectl apply -f loadgen.yaml
کامیاب تکمیل پر، کمانڈ مندرجہ ذیل کوڈ تیار کرتا ہے:
deployment.apps/loadgenerator created
service/loadgensvc created
11) پھلیوں کی حالت چیک کریں:
kubectl get pods
کمانڈ حیثیت کو ظاہر کرتا ہے:
NAME READY STATUS RESTARTS AGE
helloserver-69b9576d96-mwtcj 1/1 Running 0 58s
loadgenerator-774dbc46fb-gpbrz 1/1 Running 0 57s
12) پوڈ سے ایپلیکیشن لاگز نکالیں۔ لوڈجن. بدل دیں۔ POD_ID پچھلے جواب سے شناخت کنندہ کو۔
kubectl logs loadgenerator-POD_ID
13) بیرونی IP پتے حاصل کریں۔ ہیلوس وی سی:
kubectl get service
کمانڈ کا جواب کچھ اس طرح لگتا ہے:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hellosvc LoadBalancer 10.81.15.158 192.0.2.1 80:31127/TCP 33m
kubernetes ClusterIP 10.81.0.1 <none> 443/TCP 93m
loadgensvc ClusterIP 10.81.15.155 <none> 80/TCP 4m52s
14) کو ایک درخواست بھیجیں۔ ہیلوس وی سی: بدلنا EXTERNAL_IP بیرونی IP پتے پر ہیلوس وی سی.
curl http://EXTERNAL_IP
آئیے اسٹیو پر چلتے ہیں۔
آپ کے پاس پہلے سے ہی ایک درخواست GKE پر تعینات ہے۔ لوڈجن Kubernetes DNS استعمال کر سکتے ہیں (hellosvc:80) کو درخواستیں بھیجنے کے لیے سروراور آپ کو درخواستیں بھیج سکتے ہیں۔ سرور بیرونی IP ایڈریس کے ذریعے۔ اگرچہ Kubernetes میں بہت سی خصوصیات ہیں، لیکن خدمات کے بارے میں کچھ معلومات غائب ہیں:
خدمات کیسے تعامل کرتی ہیں؟ خدمات کے درمیان کیا تعلقات ہیں؟ خدمات کے درمیان ٹریفک کیسے چلتا ہے؟ کیا آپ اس سے واقف ہیں؟ لوڈجن کو درخواستیں بھیجتا ہے۔ سرور، لیکن تصور کریں کہ آپ درخواست کے بارے میں کچھ نہیں جانتے ہیں۔ ان سوالات کا جواب دینے کے لیے، آئیے GKE میں چلنے والے پوڈز کی فہرست دیکھیں۔
میٹرکس. کتنی دیر تک سرور آنے والی درخواست کا جواب دیتا ہے؟ سرور کو فی سیکنڈ کتنی درخواستیں موصول ہوتی ہیں؟ کیا یہ غلطی کے پیغامات دیتا ہے؟
سیکیورٹی کی معلومات. کے درمیان ٹریفک لوڈجن и سرور صرف گزرتا ہے HTTP یا کی طرف سے mTLS?
Istio ان تمام سوالات کے جوابات دیتا ہے۔ ایسا کرنے کے لیے، اسٹیو ایک سائڈ کار پراکسی رکھتا ہے۔ ایلچی ہر پھلی میں. ایلچی پراکسی تمام آنے والے اور جانے والے ٹریفک کو ایپلیکیشن کنٹینرز تک روکتی ہے۔ اس کا مطلب ہے کہ سرور и لوڈجن سائڈکار پراکسی ایلچی، اور تمام ٹریفک کے ذریعے وصول کریں۔ لوڈجن к سرور ایلچی پراکسی کے ذریعے جاتا ہے۔
ایلچی پراکسیوں کے درمیان رابطے ایک سروس میش بناتے ہیں۔ سروس میش فن تعمیر Kubernetes کے اوپر کنٹرول کی ایک تہہ فراہم کرتا ہے۔
چونکہ ایلچی پراکسی ان کے اپنے کنٹینرز میں چلتی ہیں، اس لیے Istio کو GKE کلسٹر کے اوپر انسٹال کیا جا سکتا ہے جس میں ایپلیکیشن کوڈ میں تقریباً کوئی تبدیلی نہیں کی جا سکتی۔ لیکن آپ نے اپنی درخواست کو Istio کے زیر انتظام کرنے کے لیے کچھ کام کیا ہے:
تمام کنٹینرز کے لیے خدمات۔ تعیناتیوں کو سرور и لوڈجن Kubernetes سروس سے منسلک۔ یہاں تک کہ لوڈجن, جو آنے والی درخواستیں وصول نہیں کرتی ہیں، وہاں ایک سروس موجود ہے۔
خدمات میں بندرگاہوں کے نام ہونے چاہئیں۔ اگرچہ GKE میں سروس پورٹس کو بے نام چھوڑا جا سکتا ہے، لیکن Istio آپ کو بتانے کا تقاضا کرتا ہے۔ بندرگاہ کا نام اس کے پروٹوکول کے مطابق۔ YAML فائل میں پورٹ کے لیے سرور کہا جاتا ہے۔ HTTPکیونکہ سرور پروٹوکول استعمال کرتا ہے۔ HTTP... اگر سروس استعمال کیا جاتا ہے جی آر پی سی، آپ بندرگاہ کا نام دیں گے۔ grpc.
تعیناتیوں کو جھنڈا لگایا گیا ہے۔ لہذا، آپ Istio کی ٹریفک مینجمنٹ کی خصوصیات استعمال کر سکتے ہیں، جیسے کہ ٹریفک کو ایک ہی سروس کے ورژن کے درمیان تقسیم کرنا۔
Istio انسٹال کرنا
Istio کو انسٹال کرنے کے دو طریقے ہیں۔ کر سکتے ہیں۔ GKE ایکسٹینشن پر Istio کو فعال کریں۔ یا Istio کا اوپن سورس ورژن انسٹال کریں۔ کلسٹر پر. GKE پر Istio کے ساتھ، آپ GKE کلسٹر لائف سائیکل میں Istio تنصیبات اور اپ گریڈ کو آسانی سے منظم کر سکتے ہیں۔ اگر آپ Istio کا تازہ ترین ورژن یا اپنے Istio کنٹرول پینل کی ترتیب پر زیادہ کنٹرول چاہتے ہیں تو GKE ایکسٹینشن پر Istio کے بجائے اوپن سورس ورژن انسٹال کریں۔ نقطہ نظر پر فیصلہ کرنے کے لئے، مضمون پڑھیں کیا مجھے GKE پر Istio کی ضرورت ہے؟.
ایک آپشن منتخب کریں، مناسب گائیڈ کا جائزہ لیں، اور اپنے کلسٹر پر Istio انسٹال کرنے کے لیے ہدایات پر عمل کریں۔ اگر آپ اپنی نئی تعینات کردہ ایپلیکیشن کے ساتھ Istio استعمال کرنا چاہتے ہیں، سائڈکار کے نفاذ کو فعال کریں۔ نام کی جگہ کے لیے پہلے سے طے شدہ.
صفائی
اس ٹیوٹوریل میں استعمال کیے گئے وسائل کے لیے آپ کے Google Cloud Platform اکاؤنٹ سے چارج ہونے سے بچنے کے لیے، Istio انسٹال کرنے اور سیمپل ایپلیکیشن کے ساتھ کھیلنے کے بعد کنٹینر کلسٹر کو حذف کر دیں۔ یہ کلسٹر کے تمام وسائل کو ہٹا دے گا، جیسے کمپیوٹ انسٹینس، ڈسک، اور نیٹ ورک کے وسائل۔