یونٹ 5 / 11

کبرنیٹس: مینی فیسٹ، ہیلم اور اے آئی پاورڈ آرکیسٹریشن

فائدہ:

  • بنیادی اشیاء (Pod, Deployment, Service, ConfigMap, Secret, Namespace) اور Kubernetes کے اعلانیہ فلسفے کو سمجھنے اور مصنوعی ذہانت کے لیے ٹھوس منشور تیار کرنے کی صلاحیت
  • وسائل کی حدود، صحت کی جانچ (تحقیقات)، فکسڈ امیج ٹیگز اور تنگ RBAC کے ساتھ مینی فیسٹس تیار کرنے اور محفوظ بنانے کی صلاحیت
  • عمل درآمد سے پہلے صحیح سیاق و سباق کی تصدیق کرنے اور ڈرائی رن/ڈف کے ساتھ ڈرائی رن ڈسپلن کا اطلاق کرنے کی اہلیت

ایک کنٹینر چلانا آسان ہے۔ لیکن ایک ایسا نظام قائم کرنا جو سینکڑوں کنٹینرز کو درجنوں سرورز میں پھیلاتا ہے، جب ان میں سے ایک کریش ہو جاتا ہے تو خود بخود دوبارہ شروع ہو جاتا ہے، لوڈ بڑھنے پر اسے نقل کرتا ہے، اور صفر ڈاؤن ٹائم کے ساتھ اسے اپ ڈیٹ کرتا ہے؟ یہ آرکیسٹریشن ہے، اور انڈسٹری کا معیاری ٹول ہے Kubernetes (K8s مختصراً) — وہ پلیٹ فارم جو خودکار طور پر ایک کلسٹر میں کنٹینرز کو تعینات، ترازو اور ان کا انتظام کرتا ہے۔ Kubernetes طاقتور لیکن پیچیدہ ہے: ہر چیز کی تعریف لمبی، انڈینٹیشن سے متعلق حساس YAML فائلوں سے ہوتی ہے — جسے مینی فیسٹ کہتے ہیں۔ یہ وہ جگہ ہے جہاں AI تازہ ہوا کا سانس دیتا ہے۔ صحیح سیاق و سباق کے ساتھ، یہ تیزی سے یہ ظاہر کرتا ہے اور ان کی پراسرار غلطیوں کو ڈی کوڈ کرتا ہے۔

لیکن Kubernetes میں، ایک غلط مینی فیسٹ کا مطلب ہے پوری سروس کو کھڑا کرنے میں ناکام ہونا، غلط طریقے سے اسکیلنگ کرنا، یا کسی خطرے کو چھوڑ دینا۔ یہ آپ کی ذمہ داری ہے کہ AI کے ہر مینی فیسٹ کو سمجھیں اور اس کی تصدیق کریں - خاص طور پر kubectl کے لاگو ہونے سے پہلے۔

Kubernetes بنیادی اشیاء

Kubernetes کا آڈٹ کرنے کے لیے، آپ کو بنیادی تصورات کو جاننا چاہیے:

  • Pod: سب سے چھوٹا کام کرنے والا یونٹ؛ اس میں ایک یا کئی کنٹینرز ہوتے ہیں۔ عام طور پر، Pod براہ راست استعمال نہیں کیا جاتا ہے، لیکن اس کا انتظام کرنے والی بنیادی اشیاء استعمال کی جاتی ہیں۔
  • تعیناتی: اس بات کی وضاحت کرتا ہے کہ ایپلیکیشن کی کتنی کاپیاں چلیں گی، یہ کون سی تصویر استعمال کرے گی، اور اسے کیسے اپ ڈیٹ کیا جائے گا۔ اگر کوئی پوڈ کریش ہو جاتا ہے تو یہ خود بخود اسے دوبارہ بنا دے گا۔
  • سروس: ایک مقررہ نیٹ ورک ایڈریس فراہم کرتا ہے اور پوڈز کو لوڈ بیلنس کرتا ہے۔ اگرچہ پوڈ آتے اور جاتے ہیں، رسائی کا پتہ تبدیل نہیں ہوتا ہے۔
  • ConfigMap اور خفیہ: ترتیب کی اقدار اور خفیہ معلومات کو Pods سے الگ رکھتا ہے۔ ConfigMap واضح سیٹنگز کے لیے ہے، Secret حساس اقدار کے لیے ہے۔
  • نام کی جگہ: وہ علاقہ جو منطقی طور پر وسائل کو تقسیم اور الگ کرتا ہے (جیسے dev، prod)۔
  • Ingress: وہ اصول سیٹ جو HTTP ٹریفک کو بیرونی دنیا سے کلسٹر میں خدمات کی طرف لے جاتا ہے۔

Helm Kubernetes کا "پیکیج مینیجر" ہے: یہ آپ کو بار بار چلنے والے مینی فیسٹس (چارٹس) کو ٹیمپلیٹ کرنے اور ایک کمانڈ کے ساتھ مختلف ماحول میں مختلف اقدار کے ساتھ انسٹال کرنے کی اجازت دیتا ہے۔ AI خام مینی فیسٹ اور ہیلم چارٹ دونوں تیار کرتا ہے۔

اتنی اشیاء کیوں ہیں؟ کیونکہ Kubernetes کا بنیادی فلسفہ اعلانیہ ہے: آپ اس کی وضاحت کرتے ہیں کہ "آپ چاہتے ہیں کہ سسٹم آخرکار کیسا نظر آئے" (مثال کے طور پر "ہمیشہ اس ایپلیکیشن کی 3 کاپیاں چلتی رہیں")، جبکہ Kubernetes موجودہ حالت کو مسلسل اس مطلوبہ حالت کے قریب لے جاتا ہے۔ اگر کوئی پھلی مر جائے تو یہ ایک نیا پیدا کرتا ہے۔ اگر ایک نوڈ نیچے جاتا ہے، تو یہ کام کے بوجھ کو دوسرے نوڈ پر لے جاتا ہے۔ یہی وجہ ہے کہ مینی فیسٹ "ڈو" کے احکامات نہیں ہیں، بلکہ "اسے اس طرح رہنے دیں" کی ترکیبیں ہیں۔ اس فرق کو سمجھنا ضروری ہے جب AI کے پیدا کردہ مینی فیسٹس کو پڑھتے ہوئے: ہر ڈومین سسٹم کی مطلوبہ حالت کا حصہ بیان کرتا ہے۔ ایک غلط ڈومین کا مطلب ہے کہ Kubernetes ایک غلط مقصد کی طرف کام کر رہا ہے — اور اس مقصد کو خاموشی سے، مستقل طور پر نافذ کیا جاتا ہے۔

ٹپ: Kubernetes میں، سب سے اہم محفوظ ٹیسٹنگ ٹول kubectl apply --dry-run=server -f file.yaml ہے: یہ ظاہر کرتا ہے کہ آیا سرور قبول کرے گا اور مینی فیسٹ کو لاگو کیے بغیر کیا کرنا ہے۔ پروڈ پر مینی فیسٹ لگانے سے پہلے dry-run اور kubectl diff کو ضرور چلائیں۔

مرحلہ وار: AI کے ساتھ ظاہری شکل بنانا

  1. درخواست اور ضرورت کی وضاحت کریں۔ تصویر کا نام، بندرگاہ، کتنی نقلیں، وسائل کی حدیں (CPU/میموری)۔
  2. تعیناتی + سروس کی درخواست کریں۔ عام طور پر دونوں ایک ساتھ درکار ہوتے ہیں۔
  3. الگ الگ ترتیب اور خفیہ۔ ConfigMap کی ترتیبات، خفیہ کی حساس اقدار۔
  4. صحت کی جانچ شامل کریں۔ livenessProbe (کیا یہ لائیو ہے) اور ریڈینس پروب (کیا یہ ٹریفک کے لیے تیار ہے) اہم ہیں۔
  5. وسائل کی حد مقرر کریں۔ درخواستوں / حدود کے بغیر ایک پوڈ پورے نوڈ کو کھا سکتا ہے۔
  6. `--dry-run` اور `diff` سے تصدیق کریں، پھر درخواست دیں۔ ٹیسٹ نام کی جگہ میں سب سے پہلے۔

سیکیورٹی: کوبرنیٹس کے مخصوص خطرات

  1. راز واقعی خفیہ نہیں ہے - یہ صرف بیس 64 ہے۔ Kubernetes سیکریٹ آبجیکٹ base64 اقدار کو انکوڈ کرتا ہے۔ یہ انکرپشن نہیں ہے، اسے آسانی سے ڈکرپٹ کیا جاتا ہے۔ حقیقی رازداری کے لیے، etcd انکرپشن اور ایکسٹرنل والٹ (والٹ، کلاؤڈ سیکرٹ مینیجر) کی ضرورت ہے۔ کبھی بھی گٹ سے براہ راست خفیہ انکشافات کا ارتکاب نہ کریں (اس کے حل موجود ہیں جیسے مہربند راز/بیرونی راز)۔
  2. وسائل کی حد مقرر کریں۔ بغیر کسی حد کے ایک پوڈ میموری لیک کے ساتھ پورے نوڈ کو کریش کر سکتا ہے۔
  3. کم از کم اتھارٹی (RBAC)۔ کردار پر مبنی رسائی کنٹرول کے ساتھ، ہر خدمت/صارف کے پاس صرف وہ اجازتیں ہوتی ہیں جن کی اسے ضرورت ہوتی ہے۔ AI بعض اوقات بڑا کلسٹر ایڈمن دیتا ہے۔ اس کو کم کریں.
  4. `تازہ ترین` امیج ٹیگ استعمال نہ کریں۔ آپ نہیں جانتے کہ کون سا ورژن چل رہا ہے اور آپ اسے واپس نہیں لے سکتے۔
احتیاط: kubectl ڈیلیٹ یا غلط اطلاق لائیو تعیناتی کو تباہ کر سکتا ہے۔ کمانڈز چلانے سے پہلے اس بات کی تصدیق کر لیں کہ آپ کس نام کی جگہ (kubectl config current-context) میں ہیں؛ پیداوار کے تناظر میں حادثاتی کام ایک عام آفت ہے۔

را مینی فیسٹ بمقابلہ ہیلم ٹیبل

معیار

خام YAML مینی فیسٹ

ہیلم چارٹ

تنصیب

kubectl apply -f

ہیلم انسٹال کریں

ملٹی میڈیا (dev/prod)

کاپی پیسٹ، غلطی کا شکار

سنگل چارٹ، مختلف اقدار

ورژن/رول بیک

ہاتھ سے

ہیلم رول بیک کے ساتھ آسان

سیکھنے کا وکر

کم

درمیانہ

جب

چھوٹا، واحد ماحول

ملٹی میڈیا، بار بار سروس

تین چھوٹے مقدمات

کیس 1 - کریش سروس کا راز۔ ایک پوڈ مسلسل ریبوٹ ہو رہا تھا (CrashLoopBackOff)۔ ٹیم نے AI کو لاگ اور مینی فیسٹ دیا۔ اے آئی نے دکھایا کہ پوڈ کو کبھی بھی "تیار" نہیں سمجھا گیا کیونکہ ریڈینس پروب غلط پورٹ کو دیکھ رہا تھا۔ انہوں نے پورٹ کو ٹھیک کر دیا، سروس 10 منٹ میں مستحکم ہو گئی۔ اس تعلق کو دستی طور پر قائم کرنے میں گھنٹے لگ سکتے ہیں۔

کیس 2 - حدود متعین نہ کرنے سے گرہ ٹوٹ گئی۔ تعیناتی میں کوئی حد نہیں تھی۔ یادداشت کے رساو نے پوڈ کو پھولا اور پورے نوڈ کو کریش کر دیا، جس سے پڑوسی خدمات کو بھی نقصان پہنچا۔ واقعے کے بعد، انہوں نے AI کو کہا کہ "تمام تعیناتیوں میں معقول CPU/میموری کی درخواستیں اور حدود شامل کریں" اور اسے معیاری بنایا۔ ایک لاپتہ لائن کی لاگت گھنٹوں کے ڈاؤن ٹائم۔

کیس 3 - بڑا RBAC پکڑا گیا۔ ایک تفتیش کے دوران، AI کی طرف سے تیار کردہ سروس اکاؤنٹ مینی فیسٹ کو کلسٹر ایڈمن کے کردار سے منسلک پایا گیا - یعنی سروس پورے کلسٹر کا انتظام کر سکتی ہے۔ ٹیم نے اپنے نام کی جگہ میں صرف پوڈز پڑھنے کی اجازت کو محدود کردیا۔ کم از کم استحقاق کے اصول نے سیکیورٹی کے خطرے کو ختم کردیا۔

چار کاپی کرنے کے قابل ٹیمپلیٹس

1) تعیناتی + سروس پروڈکشن:

Kubernetes کے لیے ایک تعیناتی اور سروس مینی فیسٹ لکھیں۔ درخواست: [AD]، تصویر: [تصویر: فکسڈ ورژن]، پورٹ: [X]، نقل: [N]۔ قواعد:- CPU/میموری کی درخواستیں اور حدود شامل کریں۔- livenessProbe اور ReadinessProbe کی وضاحت کریں۔- ConfigMap سے ترتیب پڑھیں، خفیہ آبجیکٹ سے خفیہ؛ مینی فیسٹ میں اقدار کو سرایت نہ کریں، پلیس ہولڈرز استعمال کریں۔ - تصویری ٹیگ ": تازہ ترین" استعمال نہ کریں۔ تفصیل کے ساتھ دیں۔

2) واضح غلطی کو حل کرنا:

موجودہ پوڈ [CrashLoopBackOff/Pending/ImagePullBackOff] حالت میں ہے۔ مندرجہ ذیل مینی فیسٹ اور 'kubectl describe' آؤٹ پٹ کے مطابق، امکان کی ترتیب میں ممکنہ بنیادی وجوہات کی فہرست بنائیں اور ہر ایک کے لیے verify کمانڈ جاری کریں۔ مینی فیسٹ: [YAML] بیان کریں: [آؤٹ پٹ]

3) سیکورٹی/ سالمیت کی جانچ:

اس Kubernetes مینی فیسٹ کو چیک کریں: کیا وسائل کی حد غائب ہے، کیا یہ پروب غائب ہے، کیا کوئی :latest ٹیگ ہے، کیا حد سے زیادہ وسیع RBAC/اجازت ہے، کیا راز مینی فیسٹ میں سرایت کر گیا ہے؟ نتائج کو اہمیت کے مطابق اور تصحیح کے ساتھ لکھیں۔ منشور: [YAML]

4) ہیلم چارٹ میں تبدیلی:

مندرجہ ذیل خام مینی فیسٹس کو دوبارہ قابل استعمال ہیلم چارٹ میں تبدیل کریں: کونسی اقدار values.yaml (تصویر، نقل، ماخذ، ماحول) پر جائیں؟ چارٹ کا ڈھانچہ اور نمونہ اقدار دکھائیں.yaml.Manifest: [YAML]

کمزور فوری / مضبوط اشارہ

کمزور: "میری درخواست کے لیے Kubernetes YAML لکھیں۔"

نتیجہ: ایک بغیر تحقیقات، بغیر کسی حد کی تعیناتی: تازہ ترین ٹیگ کے ساتھ، خفیہ میدان کو سرایت کرنا؛ مصنوعات میں غیر محفوظ اور نازک۔

مضبوط: "Kubernetes Deployment + Service لکھیں۔ امیج myapp:1.4.2, 3 replicas, 8080 ports. CPU 100m-500m, میموری 128Mi-512Mi درخواستیں/حدود شامل کریں۔ /healthz کے لیے Liveness probe ڈالیں، Readyness probe' سے آبجیکٹ کو چیک کریں۔ اسے مینی فیسٹ میں شامل کریں تفصیل کے ساتھ۔"

فرق: دوسرا فوری ورژن اسکیل، وسائل کی حدود، صحت کی جانچ اور خفیہ اصول دیتا ہے۔ آؤٹ پٹ پیداوار کے قریب اور محفوظ ہے۔

عام غلطیاں

  • وسائل کی حدود متعین نہ کرنا۔ ایک پوڈ پورے نوڈ کو کھا سکتا ہے۔
  • صحت کی جانچ (تحقیقات) کو شامل نہیں کرنا۔ Kubernetes کریش شدہ / تیار نہیں Pod کا پتہ نہیں لگا سکتا۔
  • `:تازہ ترین` ٹیگ۔ یہ واضح نہیں ہو جاتا کہ کون سا ورژن چل رہا ہے، اسے واپس نہیں لایا جا سکتا۔
  • راز کو براہ راست گٹ کو دینا۔ Base64 خفیہ کاری نہیں ہے۔ ہر کوئی اسے حل کرتا ہے.
  • غلط سیاق و سباق/نام کی جگہ میں کمانڈ چلانا۔ پروڈ میں کریش ہونے کا سب سے عام طریقہ۔
  • چھوڑنا `--dry-run`/`diff`۔ یہ نہیں دیکھ رہے کہ عمل درآمد سے پہلے کیا ہوگا۔

خلاصہ میں

Kubernetes ایک طاقتور لیکن پیچیدہ آرکیسٹریٹر ہے جو خود بخود ایک کلسٹر میں کنٹینرز کو تعینات، ترازو اور بہتر بناتا ہے۔ ہر چیز کی وضاحت مینی فیسٹ YAMLs کے ذریعے کی جاتی ہے، جسے Helm ٹیمپلیٹائز کرتا ہے۔ AI تیزی سے تعیناتی/سروس مینی فیسٹ اور ہیلم چارٹس تیار کرتا ہے، پراسرار کیڑے حل کرتا ہے — لیکن آپ کو واضح طور پر وسائل کی حد، صحت کی جانچ، ناقابل تغیر امیج ٹیگ، تنگ RBAC اور خفیہ حفاظتی قواعد کے بارے میں پوچھنا ہوگا۔ --dry-run، diff اور درست سیاق و سباق کی جانچ وہ عادات ہیں جو پروڈ کے کریشوں کو روکتی ہیں۔

درخواست کا کام

AI کو "تعیناتی + سروس جنریشن" ٹیمپلیٹ کے ساتھ نمونے کی درخواست کے لیے ایک مینی فیسٹ تیار کریں۔ پھر: (1) اسے "سیکیورٹی/سینٹی چیک" ٹیمپلیٹ کے ساتھ وسائل کی حد، تحقیقات، :تازہ ترین، اور راز کے لیے چیک کریں۔ (2) اگر ممکن ہو تو ٹیسٹ کلسٹر/منی کیوب پر kubectl apply --dry-run=server چلائیں اور آؤٹ پٹ پڑھیں۔ (3) دو انتہائی اہم حفاظتی/مضبوطی اشیاء کو نوٹ کریں جو آپ کو غائب ہیں۔

چیک لسٹ

  • میں نے اپنی درخواست میں تصویری ورژن، نقل کی تعداد، پورٹ اور وسائل کی حدیں شامل کیں۔
  • [ ] میں نے مینی فیسٹ میں زندہ دلی اور تیاری کی تحقیقات شامل کیں۔
  • تصویری ٹیگ فکسڈ میں نے استعمال نہیں کیا :latest.
  • [ ] راز ظاہر میں سرایت نہیں کرتا۔ میں نے خفیہ آبجیکٹ/بیرونی والٹ استعمال کیا۔
  • میں نے RBAC/اجازت کو کم سے کم اجازتوں تک محدود کر دیا ہے۔
  • درخواست دینے سے پہلے، میں نے تصدیق کی کہ میں صحیح سیاق و سباق میں تھا اور وہ --dry-run/diff آؤٹ پٹ۔