Kubernetes میں Deny Service External IPs کو کنفیگر کرنے کا طریقہ

Kubernetes My Deny Service External Ips Kw Knfygr Krn Ka Tryq



Kubernetes کلسٹر قائم کرتے وقت آپ کو پریشانی کا سامنا کرنا پڑ سکتا ہے جب آپ صرف یہ جانتے ہیں کہ اپنی Kubernetes سروس کو انٹرنیٹ پر قابل رسائی بنانے کے لیے NodePort کا استعمال کیسے کرنا ہے۔ نوڈ پورٹ سروس کی قسم کو ملازمت دیتے وقت، ایک اعلی پورٹ نمبر تفویض کیا جائے گا اور آپ کو اپنے فائر وال اصول میں ان بندرگاہوں سے کنکشن کی اجازت دینی ہوگی۔ یہ آپ کے بنیادی ڈھانچے کے لیے نقصان دہ ہے خاص طور پر اگر سرور کھلے انٹرنیٹ کے ذریعے قابل رسائی ہو۔ آپ کلسٹر ایڈمنسٹریٹر کے طور پر کلسٹر کے باہر IP پتوں کا ایک بلاک تفویض کر سکتے ہیں جو وہاں کی خدمات کو ٹریفک منتقل کر سکتا ہے۔ یہ بالکل وہی ہے جس کے بارے میں ہم اس مضمون میں بات کرنے جا رہے ہیں: Kubernetes میں سروس خارجی IPs کو مسترد کرنے کے طریقہ کار کے بارے میں تمام اہم معلومات حاصل کرنے کے لیے۔

بیرونی آئی پی سروس کیا ہے؟

سروس اینڈ پوائنٹس میں سے ایک ٹریفک موصول کرے گا جو بیرونی IP (منزل آئی پی کے طور پر) اور سروس پورٹ کا استعمال کرتے ہوئے کلسٹر میں داخل ہوتا ہے۔ Kubernetes بیرونی IP کے انتظام کے لیے ذمہ دار نہیں ہے۔







یہ یقینی بنانا کہ کبرنیٹس کلسٹر تک رسائی کے لیے کون سا IP استعمال کیا جاتا ہے اس صورت حال میں بہت ضروری ہے۔ بیرونی IP سروس کی قسم کا استعمال کرتے ہوئے، ہم سروس کو اس IP ایڈریس سے منسلک کر سکتے ہیں جو کلسٹر تک رسائی کے لیے استعمال ہوتا ہے۔



حقیقت یہ ہے کہ Kubernetes نیٹ ورک اوورلے نیٹ ورک کے ساتھ تعامل کرتا ہے اس صورتحال کو سمجھنے کے لیے اہم ہے۔ اس سے یہ ظاہر ہوتا ہے کہ جب آپ کسی بھی نوڈ (ماسٹر یا ورکر نوڈ) تک پہنچ جاتے ہیں تو آپ کلسٹر میں عملی طور پر ہر نوڈ تک رسائی حاصل کر سکتے ہیں۔



نیٹ ورک اس طرح دکھایا گیا ہے:






خاکہ میں دونوں نوڈس 1 اور 2 ایک ہی IP ایڈریس کا اشتراک کرتے ہیں۔ اصلی پوڈ نوڈ 1 پر رہتا ہے لیکن IP ایڈریس 1.2.3.6 نوڈ 1 پر Nginx سروس کا پابند ہے۔ نوڈ 1 کا IP ایڈریس، 1.2.3.4، httpd سروس کا پابند ہے، اور نوڈ 2 کا اصل پوڈ وہیں واقع ہے۔

یہ اوورلے نیٹ ورک کی بنیادوں سے ممکن ہوا ہے۔ جب ہم IP ایڈریس 1.2.3.4 کرل کرتے ہیں، تو httpd سروس کو جواب دینا چاہیے۔ جب ہم 1.2.3.5 کرل کرتے ہیں، تو Nginx سروس کو جواب دینا چاہیے۔



بیرونی آئی پی کے فائدے اور نقصانات

یہاں بیرونی آئی پی کے فوائد اور نقصانات ہیں:

بیرونی IP استعمال کرنا فائدہ مند ہے کیونکہ:

    • آپ کا IP مکمل طور پر آپ کے کنٹرول میں ہے۔ کلاؤڈ فراہم کنندہ کا ASN استعمال کرنے کے بجائے، آپ IP استعمال کر سکتے ہیں جو آپ کے اپنے ASN سے تعلق رکھتا ہے۔

بیرونی IP کی خرابیوں میں درج ذیل شامل ہیں:

    • ہم ابھی جس سیدھا سیدھا سیٹ اپ سے گزریں گے وہ بہت آسانی سے دستیاب نہیں ہے۔ اس کا مطلب یہ ہے کہ اگر نوڈ ناکام ہوجاتا ہے، تو سروس مزید قابل رسائی نہیں رہے گی اور آپ کو دستی طور پر مسئلہ حل کرنا پڑے گا۔
    • آئی پی کو سنبھالنے کے لیے کافی انسانی محنت درکار ہوتی ہے۔ چونکہ IPs آپ کے لیے متحرک طور پر مختص نہیں کیے گئے ہیں، اس لیے آپ کو اسے دستی طور پر کرنا ہوگا۔

ڈیفالٹ انکار/رویے کی اجازت کیا ہے؟

' پہلے سے طے شدہ اجازت ' یہ بتاتا ہے کہ تمام ٹریفک کو بطور ڈیفالٹ اجازت ہے۔ جب تک کہ خاص طور پر اجازت نہ ہو، اصطلاح استعمال کرتے وقت تمام ٹریفک کو بطور ڈیفالٹ انکار کر دیا جاتا ہے۔ پہلے سے طے شدہ انکار ' سوائے اس کے کہ جب نیٹ ورک کی پالیسی متعین ہو۔

    • کسی پوڈ پر آنے اور جانے والے تمام ٹریفک کی اجازت ہے اگر اس پوڈ کے لیے کوئی نیٹ ورک پالیسی نافذ نہ ہو۔
    • اگر ایک یا زیادہ نیٹ ورک کی پالیسیاں کسی قسم کے داخلے کے لیے نافذ العمل ہیں، تو صرف ان پالیسیوں کی طرف سے واضح طور پر اجازت دی گئی انٹریف ٹریفک کی اجازت ہے۔
    • جب ایک یا زیادہ نیٹ ورک کی پالیسیاں ایگریس قسم کے پوڈ پر لاگو ہوتی ہیں، تو صرف ان پالیسیوں کے ذریعے اجازت دی گئی ایگریس ٹریفک کی اجازت ہوتی ہے۔

دوسری اینڈ پوائنٹ کی اقسام (VMs، میزبان انٹرفیس) کے لیے پہلے سے طے شدہ ترتیب ٹریفک کو روکنا ہے۔ صرف اس ٹریفک کی اجازت ہے جس کی نیٹ ورک پالیسی کی طرف سے اجازت دی گئی ہے، چاہے کوئی نیٹ ورک پالیسی اینڈ پوائنٹ پر لاگو نہ ہو۔

بہترین پریکٹس: مضمر ڈیفالٹ انکار پالیسی

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

کبرنیٹس پوڈز کے لیے ڈیفالٹ انکار پالیسی کیسے بنائی جائے؟

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

    • عالمی نیٹ ورک پالیسی کو مسترد کرنے کے لیے ڈیفالٹ کو فعال کریں، نام کی جگہ کے بغیر
    • نیٹ ورک پالیسی کو مسترد کرنے کے لیے ڈیفالٹ کو فعال کریں، نام کی جگہ
    • Kubernetes پالیسی، نام کی جگہ سے انکار کرنے کے لیے ڈیفالٹ کو فعال کریں۔

آئی پی بلاک کیا ہے؟

اس کے ساتھ، مخصوص IP CIDR رینجز کو داخل ہونے کے ذرائع یا خارجی منزلوں کے طور پر اجازت دینے کے لیے منتخب کیا جاتا ہے۔ یہ دیکھتے ہوئے کہ Pod IPs عارضی اور غیر متوقع ہیں، یہ کلسٹر بیرونی IPs ہونے چاہئیں۔

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

یہ داخلے کے لیے درست ہے اور اس کا مطلب یہ ہے کہ بعض صورتوں میں آپ کو آنے والے پیکٹوں کو فلٹر کرنا ہوگا جو اصل ماخذ IP پر مبنی ہیں۔ دوسری طرف، نیٹ ورک پالیسی جس 'ذریعہ آئی پی' پر کام کرتی ہے وہ لوڈ بیلنسر کا IP ہو سکتا ہے یا یہاں تک کہ Pod's node وغیرہ۔

اس سے ظاہر ہوتا ہے کہ پوڈز اور سروس آئی پی کے درمیان کنکشن جو کلسٹر-بیرونی آئی پیز پر دوبارہ لکھے گئے ہیں، نکلنے کے معاملے میں آئی پی بلاک پر مبنی پابندیوں کا نشانہ بن سکتے ہیں۔

پہلے سے طے شدہ پالیسیاں کیا ہیں؟

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

ڈیفالٹ تمام داخل ہونے والی ٹریفک سے انکار کریں۔

ایک ایسی نیٹ ورک پالیسی بناتے وقت جو تمام پوڈز کا انتخاب کرتی ہے لیکن اس میں ان پوڈز پر آنے والی کوئی ٹریفک شامل نہیں ہوتی ہے، آپ ایک 'ڈیفالٹ' انگریس آئسولیشن پالیسی بنا سکتے ہیں اور وہ نام کی جگہ کے لیے ہے۔


یہ یقینی بناتا ہے کہ تمام پوڈز، قطع نظر اس کے کہ کوئی اور نیٹ ورک پالیسی انہیں منتخب کرتی ہے، داخلے کے لیے الگ تھلگ ہیں۔ یہ اصول کسی بھی پوڈ سے باہر نکلنے کے لیے تنہائی پر لاگو نہیں ہوتا ہے۔

ڈیفالٹ تمام خارجی ٹریفک سے انکار کریں۔

جب آپ ایک ایسی نیٹ ورک پالیسی بناتے ہیں جو تمام پوڈز کا انتخاب کرتی ہے لیکن ان پوڈز سے نکلنے والی ٹریفک کو روکتی ہے، تو آپ ایک 'ڈیفالٹ' ایگریس آئسولیشن پالیسی بنا سکتے ہیں اور وہ نام کی جگہ کے لیے بھی ہے۔

نتیجہ

یہ ہدایت نامہ DenyServiceExternalIPs کے استعمال کے بارے میں تھا۔ ہم نے ایک خاکہ نما نمائیندگی بھی ڈیزائن کی ہے تاکہ ہمارے صارفین یہ سمجھ سکیں کہ یہ کام کر رہا ہے۔ ہم نے نمونے کی ترتیب بھی فراہم کی ہے۔