Kubernetes کے لیے Ingress کنٹرولرز کا جائزہ اور موازنہ

Kubernetes کے لیے Ingress کنٹرولرز کا جائزہ اور موازنہ

کسی مخصوص ایپلیکیشن کے لیے Kubernetes کلسٹر لانچ کرتے وقت، آپ کو یہ سمجھنے کی ضرورت ہے کہ ایپلی کیشن خود، کاروبار اور ڈویلپرز اس وسیلہ سے کیا تعلق رکھتے ہیں۔ اس معلومات کے ساتھ، آپ ایک آرکیٹیکچرل فیصلہ کرنا شروع کر سکتے ہیں اور خاص طور پر، ایک مخصوص Ingress کنٹرولر کا انتخاب کر سکتے ہیں، جن میں سے آج پہلے سے ہی ایک بڑی تعداد موجود ہے۔ بہت سارے مضامین/دستاویزات وغیرہ سے گزرے بغیر دستیاب اختیارات کا بنیادی خیال حاصل کرنے کے لیے، ہم نے یہ جائزہ تیار کیا ہے، بشمول مین (پروڈکشن کے لیے تیار) انگریس کنٹرولرز۔

ہم امید کرتے ہیں کہ اس سے ساتھیوں کو آرکیٹیکچرل حل کے انتخاب میں مدد ملے گی - کم از کم یہ مزید تفصیلی معلومات اور عملی تجربات کے حصول کے لیے ایک نقطہ آغاز بن جائے گا۔ اس سے پہلے، ہم نے نیٹ پر اسی طرح کے دیگر مواد کا مطالعہ کیا اور، عجیب بات یہ ہے کہ، ایک بھی کم یا زیادہ مکمل، اور سب سے اہم - ساختی - جائزہ نہیں ملا۔ تو آئیے اس خلا کو پُر کریں!

معیار

اصولی طور پر، موازنہ کرنے اور کوئی مفید نتیجہ حاصل کرنے کے لیے، آپ کو نہ صرف موضوع کے علاقے کو سمجھنا ہوگا، بلکہ آپ کے پاس معیارات کی ایک مخصوص فہرست بھی ہونی چاہیے جو تحقیق کے ویکٹر کو متعین کرے گی۔ Ingress/Kubernetes کے استعمال کے تمام ممکنہ معاملات کا تجزیہ کرنے کا بہانہ کیے بغیر، ہم نے کنٹرولرز کے لیے انتہائی عمومی تقاضوں کو اجاگر کرنے کی کوشش کی ہے - تیار رہیں کہ کسی بھی صورت میں آپ کو اپنی تمام تفصیلات اور تفصیلات کا الگ سے مطالعہ کرنا پڑے گا۔

لیکن میں ان خصوصیات سے شروع کروں گا جو اس قدر مانوس ہو چکی ہیں کہ وہ تمام حلوں میں لاگو ہوتی ہیں اور ان پر غور نہیں کیا جاتا:

  • خدمات کی متحرک دریافت (سروس کی دریافت)؛
  • SSL ختم کرنا؛
  • ویب ساکٹ کے ساتھ کام کرنا۔

اب موازنہ کے نکات کے لئے:

تعاون یافتہ پروٹوکول

انتخاب کے بنیادی معیارات میں سے ایک۔ ہو سکتا ہے کہ آپ کا سافٹ ویئر معیاری HTTP پر کام نہ کرے، یا اسے ایک ہی وقت میں متعدد پروٹوکولز پر کام کرنے کی ضرورت پڑ سکتی ہے۔ اگر آپ کا کیس غیر معیاری ہے تو اس عنصر کو ضرور مدنظر رکھیں تاکہ آپ کو بعد میں کلسٹر کو دوبارہ ترتیب دینے کی ضرورت نہ پڑے۔ تمام کنٹرولرز کے لیے، معاون پروٹوکولز کی فہرست مختلف ہوتی ہے۔

بنیادی طور پر سافٹ ویئر

ایپلی کیشنز کی متعدد تغیرات ہیں جن پر کنٹرولر مبنی ہے۔ مشہور ہیں nginx، traefik، haproxy، envoy. عام صورت میں، ٹریفک کی وصولی اور منتقلی کے طریقہ کار پر اس کا زیادہ اثر نہیں ہو سکتا، لیکن "ہڈ کے نیچے" کیا ہے اس کی ممکنہ باریکیوں اور خصوصیات کو جاننا ہمیشہ مفید ہوتا ہے۔

ٹریفک روٹنگ

کسی خاص سروس کے لیے ٹریفک کی سمت کے بارے میں فیصلہ کرنا کس چیز کی بنیاد پر ممکن ہے؟ عام طور پر یہ میزبان اور راستہ ہوتے ہیں، لیکن اضافی امکانات ہوتے ہیں۔

ایک کلسٹر کے اندر نام کی جگہ

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

upstreams کے لئے نمونے

ٹریفک کو ایپلیکیشن، سروسز کی صحت مند مثالوں کی طرف کیسے ہدایت کی جاتی ہے؟ فعال اور غیر فعال چیک، دوبارہ کوشش، سرکٹ بریکر کے ساتھ اختیارات موجود ہیں۔ (مزید تفصیلات کے لیے دیکھیں، مثال کے طور پر، Istio کے بارے میں مضمون)صحت کی جانچ (حسب ضرورت صحت کی جانچ) وغیرہ کے اپنے نفاذ۔ ایک بہت اہم پیرامیٹر اگر آپ کے پاس دستیابی اور ناکام خدمات کو توازن سے بروقت ہٹانے کے لیے اعلی تقاضے ہیں۔

بیلنسنگ الگورتھم

بہت سے اختیارات ہیں: روایتی سے راؤنڈ رابن غیر ملکی کو rdp-cookieکے ساتھ ساتھ انفرادی خصوصیات جیسے چپچپا سیشن.

توثیق

کنٹرولر کن اجازت دینے کی اسکیموں کی حمایت کرتا ہے؟ بنیادی، ڈائجسٹ، اوتھ، خارجی-تصویر - میرے خیال میں ان اختیارات سے واقف ہونا چاہیے۔ یہ ایک اہم معیار ہے اگر بہت سے ڈویلپر (اور/یا صرف نجی) لوپس ہیں جن تک رسائی Ingress کے ذریعے ہوتی ہے۔

ٹریفک کی تقسیم

کیا کنٹرولر عام طور پر استعمال ہونے والے ٹریفک کی تقسیم کے طریقہ کار کو سپورٹ کرتا ہے جیسے کینری رول آؤٹ (کینری)، A/B ٹیسٹنگ، ٹریفک مررنگ (مررنگ/شیڈونگ)؟ یہ ایپلی کیشنز کے لیے واقعی ایک تکلیف دہ موضوع ہے جس کے لیے نتیجہ خیز جانچ کے لیے درست اور درست ٹریفک مینجمنٹ کی ضرورت ہوتی ہے، پروڈکٹ کیڑے کو آف لائن ڈیبگ کرنا (یا کم سے کم نقصان کے ساتھ)، ٹریفک تجزیہ وغیرہ۔

ادا شدہ سبسکرپشن

کیا کنٹرولر کے لیے اعلی درجے کی فعالیت اور/یا تکنیکی مدد کے ساتھ کوئی ادائیگی کا اختیار ہے؟

گرافیکل یوزر انٹرفیس (ویب UI)

کیا کنٹرولر کنفیگریشن کا انتظام کرنے کے لیے کوئی GUI ہے؟ بنیادی طور پر "ہینڈنیس" اور/یا ان لوگوں کے لیے جنہیں Ingress'a کنفیگریشن میں کچھ تبدیلیاں کرنے کی ضرورت ہے، لیکن "کچی" ٹیمپلیٹس کے ساتھ کام کرنا تکلیف دہ ہے۔ اگر ڈویلپرز پرواز کے دوران ٹریفک کے ساتھ کچھ تجربات کرنا چاہتے ہیں تو یہ مفید ہو سکتا ہے۔

JWT کی توثیق

JSON ویب ٹوکنز کی بلٹ ان توثیق کی موجودگی کی اجازت اور صارف کی آخری درخواست تک توثیق۔

تشکیل حسب ضرورت کے امکانات

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

بنیادی DDOS تحفظ کے طریقہ کار

پتوں، وائٹ لسٹ، ممالک وغیرہ پر مبنی سادہ شرح کی حد الگورتھم یا زیادہ پیچیدہ ٹریفک فلٹرنگ کے اختیارات۔

ٹریس کی درخواست کریں۔

Ingresses سے مخصوص خدمات / pods تک کی درخواستوں کی نگرانی، ٹریک اور ڈیبگ کرنے کی صلاحیت، اور مثالی طور پر خدمات / pods کے درمیان بھی۔

WAF

معاونت درخواست فائر وال.

کنٹرولرز

کنٹرولرز کی فہرست کی بنیاد پر تشکیل دی گئی تھی۔ سرکاری Kubernetes دستاویزات и یہ ٹیبل. ہم نے مخصوصیت یا کم پھیلاؤ (ترقی کا ابتدائی مرحلہ) کی وجہ سے ان میں سے کچھ کو جائزے سے خارج کر دیا۔ باقی ذیل میں زیر بحث ہیں۔ آئیے حل کی عمومی وضاحت کے ساتھ شروع کریں اور خلاصہ جدول کے ساتھ جاری رکھیں۔

Kubernetes سے داخل ہونا

: ویب سائٹ: github.com/kubernetes/ingress-nginx
لائسنس: اپاچی 2.0

یہ Kubernetes کے لیے آفیشل کنٹرولر ہے اور کمیونٹی کی طرف سے تیار کیا جا رہا ہے۔ ظاہر ہے کہ نام سے، یہ nginx پر مبنی ہے اور اضافی خصوصیات کو لاگو کرنے کے لیے استعمال ہونے والے Lua پلگ انز کے ایک مختلف سیٹ سے مکمل ہے۔ خود nginx کی مقبولیت اور کنٹرولر کے طور پر استعمال ہونے پر اس میں کم سے کم ترامیم کی وجہ سے، یہ آپشن اوسط انجینئر (ویب تجربے کے ساتھ) کے لیے ترتیب دینے کے لیے سب سے آسان اور آسان ہو سکتا ہے۔

NGINX Inc.

: ویب سائٹ: github.com/nginxinc/kubernetes-ingress
لائسنس: اپاچی 2.0

nginx ڈویلپرز کی آفیشل پروڈکٹ۔ کی بنیاد پر ایک ادا شدہ ورژن ہے NGINX پلس. بنیادی خیال ایک اعلی سطح کا استحکام، مسلسل پسماندہ مطابقت، کسی بھی بیرونی ماڈیول کی عدم موجودگی اور اعلان کردہ بڑھتی ہوئی رفتار (آفیشل کنٹرولر کے مقابلے)، جو Lua کے مسترد ہونے کی وجہ سے حاصل ہوا ہے۔

مفت ورژن کو نمایاں طور پر کم کیا گیا ہے، بشمول آفیشل کنٹرولر کے مقابلے میں (اسی Lua ماڈیولز کی کمی کی وجہ سے)۔ ایک ہی وقت میں، ادا کرنے والے میں کافی وسیع اضافی فعالیت ہوتی ہے: ریئل ٹائم میٹرکس، JWT کی توثیق، فعال صحت کی جانچ، اور بہت کچھ۔ NGINX Ingress پر ایک اہم فائدہ TCP/UDP ٹریفک کے لیے مکمل تعاون ہے (اور کمیونٹی ورژن میں بھی!) تفریق - غیر موجودگی ٹریفک کی تقسیم کی خصوصیت، تاہم، "ڈیولپرز کے لیے سب سے زیادہ ترجیح ہے،" لیکن اس پر عمل درآمد میں وقت لگتا ہے۔

کانگ انگریس

: ویب سائٹ: github.com/Kong/kubernetes-ingress-controller
لائسنس: اپاچی 2.0

کانگ انکارپوریشن کے ذریعہ تیار کردہ پروڈکٹ۔ دو ورژن میں: تجارتی اور مفت۔ nginx کی بنیاد پر، جس میں Lua ماڈیولز کی ایک بڑی تعداد کے ساتھ توسیع کی گئی ہے۔

ابتدائی طور پر، اس کی توجہ API کی درخواستوں پر کارروائی اور روٹنگ پر تھی، یعنی ایک API گیٹ وے کے طور پر، لیکن اس وقت یہ ایک مکمل Ingress کنٹرولر بن گیا ہے۔ اہم فوائد: بہت سے اضافی ماڈیولز (بشمول فریق ثالث کے ڈویلپرز کے) جو انسٹال اور کنفیگر کرنے میں آسان ہیں اور جن کی مدد سے اضافی خصوصیات کی ایک وسیع رینج کو لاگو کیا جاتا ہے۔ تاہم، بلٹ ان فنکشنز پہلے ہی بہت سے امکانات پیش کرتے ہیں۔ کام کی ترتیب CRD وسائل کا استعمال کرتے ہوئے کی جاتی ہے۔

پروڈکٹ کی ایک اہم خصوصیت - ایک ہی سموچ کے اندر کام کرنا (بجائے کراس نام کی جگہ) ایک متنازعہ موضوع ہے: کچھ لوگوں کے لیے یہ ایک نقصان کی طرح لگے گا (آپ کو ہر ایک سموچ کے لیے ہستی پیدا کرنا ہوگی)، اور کسی کے لیے یہ ایک خصوصیت ہے ( بоتنہائی کی زیادہ سطح، جیسا کہ اگر ایک کنٹرولر ٹوٹ گیا ہے، تو مسئلہ صرف سرکٹ تک محدود ہے)۔

ٹریفک

: ویب سائٹ: github.com/containous/traefik
لائسنس: ایم آئی ٹی

ایک پراکسی جو اصل میں مائیکرو سروسز اور ان کے متحرک ماحول کے لیے درخواست کی روٹنگ کے ساتھ کام کرنے کے لیے بنائی گئی تھی۔ لہذا، بہت ساری مفید خصوصیات: بالکل بھی ریبوٹ کیے بغیر ترتیب کو اپ ڈیٹ کرنا، بڑی تعداد میں توازن کے طریقوں کے لیے سپورٹ، ویب انٹرفیس، میٹرکس فارورڈنگ، مختلف پروٹوکولز کے لیے سپورٹ، REST API، کینری ریلیز، اور بہت کچھ۔ ایک اور اچھی خصوصیت لیٹس انکرپٹ سرٹیفکیٹس کو باکس سے باہر کی حمایت ہے۔ نقصان یہ ہے کہ زیادہ دستیابی (HA) کو منظم کرنے کے لیے، کنٹرولر کو اپنے KV اسٹوریج کو انسٹال اور منسلک کرنے کی ضرورت ہوگی۔

HAPROxy

: ویب سائٹ: github.com/jcmoraisjr/haproxy-ingress
لائسنس: اپاچی 2.0

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

Voyager

: ویب سائٹ: github.com/appscode/voyager
لائسنس: اپاچی 2.0

HAproxy کنٹرولر کی بنیاد پر، جو ایک عالمگیر حل کے طور پر پوزیشن میں ہے جو فراہم کنندگان کی ایک بڑی تعداد پر خصوصیات کی ایک وسیع رینج کو سپورٹ کرتا ہے۔ L7 اور L4 پر ٹریفک کو متوازن کرنے کے لیے ایک موقع پیش کیا جاتا ہے، اور مجموعی طور پر TCP L4 ٹریفک کو متوازن کرنے کو حل کی اہم خصوصیات میں سے ایک کہا جا سکتا ہے۔

قنطور

: ویب سائٹ: github.com/heptio/contour
لائسنس: اپاچی 2.0

یہ حل نہ صرف ایلچی پر مبنی ہے: اسے تیار کیا گیا تھا۔ ایک دوسرے کے ساتھ اس مقبول پراکسی کے مصنفین کے ساتھ۔ ایک اہم خصوصیت IngressRoute CRD وسائل کا استعمال کرتے ہوئے Ingress وسائل کو الگ کرنے کی صلاحیت ہے۔ ایک ہی کلسٹر کا استعمال کرنے والی بہت سی ترقیاتی ٹیموں والی تنظیموں کے لیے، یہ ہمسایہ لوپس میں ٹریفک کے ساتھ کام کرنے کی سیکیورٹی کو زیادہ سے زیادہ بنانے میں مدد کرتا ہے اور Ingress وسائل کو تبدیل کرتے وقت انہیں غلطیوں سے بچاتا ہے۔

یہ توازن کے طریقوں کا ایک توسیعی سیٹ بھی پیش کرتا ہے (اس میں درخواست کی عکس بندی، خودکار تکرار، درخواست کی شرح کو محدود کرنا، اور بہت کچھ ہے)، ٹریفک کے بہاؤ اور ناکامیوں کی تفصیلی نگرانی۔ شاید کسی کے لیے چپچپا سیشن کے لیے تعاون کی کمی ایک اہم خرابی ہو گی (حالانکہ کام پہلے سے ہی جاری ہے).

Istio Ingress

: ویب سائٹ: istio.io/docs/tasks/traffic-management/ingress
لائسنس: اپاچی 2.0

ایک جامع سروس میش حل جو نہ صرف ایک Ingress کنٹرولر ہے جو باہر سے آنے والی ٹریفک کا انتظام کرتا ہے بلکہ کلسٹر کے اندر تمام ٹریفک کو بھی کنٹرول کرتا ہے۔ ہڈ کے نیچے، ایلچی کو ہر سروس کے لیے سائڈ کار پراکسی کے طور پر استعمال کیا جاتا ہے۔ جوہر میں، یہ ایک بڑا مجموعہ ہے جو "کچھ بھی کر سکتا ہے"، اور اس کا بنیادی خیال زیادہ سے زیادہ انتظام، توسیع پذیری، سلامتی اور شفافیت ہے۔ اس کے ساتھ، آپ ٹریفک روٹنگ کو ٹھیک کر سکتے ہیں، خدمات کے درمیان اجازت تک رسائی، توازن، نگرانی، کینری ریلیز، اور بہت کچھ کر سکتے ہیں۔ مضامین کی سیریز میں Istio کے بارے میں مزید پڑھیں "Istio کے ساتھ مائیکرو سروسز پر واپس جائیں۔'.

سفیر

: ویب سائٹ: github.com/datawire/ambassador
لائسنس: اپاچی 2.0

ایلچی پر مبنی ایک اور حل۔ اس کے مفت اور تجارتی ورژن ہیں۔ اس کی پوزیشن "Kubernetes کے مکمل طور پر مقامی" کے طور پر رکھی گئی ہے، جس سے متعلقہ فوائد حاصل ہوتے ہیں (K8s کلسٹر کے طریقوں اور اداروں کے ساتھ سخت انضمام)۔

موازنہ کی میز

لہذا، مضمون کا اختتام یہ بہت بڑا ٹیبل ہے:

Kubernetes کے لیے Ingress کنٹرولرز کا جائزہ اور موازنہ

یہ قریب سے دیکھنے کے لیے قابل کلک ہے، اور فارمیٹ میں بھی دستیاب ہے۔ گوگل شیٹس.

مختصر کرنے کے لئے

اس مضمون کا مقصد آپ کے مخصوص معاملے میں کیا انتخاب کرنا ہے اس کے بارے میں مزید مکمل تفہیم فراہم کرنا ہے (تاہم، کسی بھی طرح سے مکمل نہیں!)۔ ہمیشہ کی طرح، ہر کنٹرولر کے اپنے فوائد اور نقصانات ہوتے ہیں…

Kubernetes سے کلاسک Ingress اس کی دستیابی اور ثابت ہونے کے لئے اچھا ہے، کافی خصوصیات - عام صورت میں، یہ "آنکھوں کے لئے کافی" ہونا چاہئے. تاہم، اگر استحکام، خصوصیات کی سطح اور ترقی کے تقاضے بڑھ رہے ہیں، تو آپ کو NGINX Plus کے ساتھ Ingress اور ادا شدہ سبسکرپشن پر توجہ دینی چاہیے۔ کانگ کے پاس پلگ انز کا سب سے امیر سیٹ ہے (اور، اس کے مطابق، مواقع وہ فراہم کرتے ہیں)، اور ادا شدہ ورژن میں ان میں سے اور بھی زیادہ ہیں۔ اس کے پاس API گیٹ وے کے طور پر کام کرنے کے کافی مواقع ہیں، CRD وسائل پر مبنی ڈائنامک کنفیگریشن، نیز بنیادی Kubernetes سروسز۔

توازن اور اجازت کے طریقوں کی بڑھتی ہوئی ضروریات کے ساتھ، Traefik اور HAProxy پر ایک نظر ڈالیں۔ یہ اوپن سورس پروجیکٹس ہیں، جو کئی سالوں سے ثابت ہوئے، بہت مستحکم اور فعال طور پر ترقی کر رہے ہیں۔ کنٹور کو اب کچھ سال ہوچکے ہیں، لیکن یہ اب بھی بہت جوان نظر آرہا ہے اور اس میں ایلچی کے اوپر صرف بنیادی خصوصیات شامل کی گئی ہیں۔ اگر درخواست کے سامنے WAF کی موجودگی / سرایت کرنے کے تقاضے ہیں، تو آپ کو Kubernetes یا HAProxy سے اسی Ingress پر توجہ دینی چاہیے۔

اور خصوصیات کے لحاظ سے سب سے زیادہ امیر وہ مصنوعات ہیں جو ایلچی کے اوپر بنی ہیں، خاص طور پر اسٹیو۔ ایسا لگتا ہے کہ یہ ایک جامع حل ہے جو "کچھ بھی کر سکتا ہے"، جس کا مطلب یہ بھی ہے کہ دیگر حلوں کے مقابلے میں کنفیگریشن / لانچ / ایڈمنسٹریشن کے لیے نمایاں طور پر اعلی درجے کی حد ہے۔

ہم نے Kubernetes سے Ingress کو ایک معیاری کنٹرولر کے طور پر منتخب کیا ہے اور اب بھی استعمال کیا ہے، جو 80-90% ضروریات کو پورا کرتا ہے۔ یہ کافی قابل اعتماد، ترتیب دینے اور پھیلانے میں آسان ہے۔ عام طور پر، مخصوص ضروریات کی غیر موجودگی میں، یہ زیادہ تر کلسٹرز/ایپلی کیشنز کے مطابق ہونا چاہیے۔ انہی یونیورسل اور نسبتاً آسان پروڈکٹس میں سے، Traefik اور HAProxy کی سفارش کی جا سکتی ہے۔

PS

ہمارے بلاگ پر بھی پڑھیں:

ماخذ: www.habr.com

نیا تبصرہ شامل کریں