ڪبرنيٽس ڪلستر ۾ سوراخ درست ڪرڻ. DevOpsConf کان رپورٽ ۽ نقل

Pavel Selivanov، Southbridge Solutions آرڪيٽيڪٽ ۽ Slurm استاد، DevOpsConf 2019 تي هڪ پريزنٽيشن ڏني. هي ڳالهه ٻولهه ڪبرنيٽس ”سلم ميگا“ تي ان-ڊيپٿ ڪورس جي هڪ موضوع جو حصو آهي.

سلرم بنيادي: ڪبرنيٽس جو هڪ تعارف ماسڪو ۾ نومبر 18-20 تي ٿيندي آهي.
سلرم ميگا: ڪبرنيٽس جي هود هيٺ ڏسي رهيو آهي - ماسڪو، نومبر 22-24.
Slurm آن لائن: ٻئي Kubernetes ڪورس هميشه دستياب.

هيٺ ڏنل ڪٽ جي رپورٽ جو نقل آهي.

صبح جو سلام، ساٿي ۽ جيڪي انهن سان همدردي رکن ٿا. اڄ آئون حفاظت بابت ڳالهائيندس.

مون ڏٺو ته اڄ هال ۾ ڪيترائي سيڪيورٽي گارڊ موجود آهن. مان توهان کان اڳ ۾ معافي وٺان ٿو جيڪڏهن آئون حفاظت جي دنيا مان اصطلاح استعمال ڪريان ٿو بلڪل نه جيئن توهان لاءِ رواج آهي.

اهو ائين ٿيو آهي ته اٽڪل ڇهه مهينا اڳ مون کي هڪ عوامي ڪبرنيٽس ڪلستر جي وچ ۾ آيو. پبلڪ جو مطلب آهي ته نيمس اسپيس جو هڪ نمبر نمبر آهي؛ انهن نالن جي اسپيس ۾ استعمال ڪندڙ انهن جي نالي جي جاءِ ۾ الڳ ٿيل آهن. اهي سڀئي استعمال ڪندڙ مختلف ڪمپنين سان تعلق رکن ٿا. خير، اهو فرض ڪيو ويو ته هن ڪلستر کي CDN طور استعمال ڪيو وڃي. اهو آهي، اهي توهان کي هڪ ڪلستر ڏين ٿا، اهي توهان کي هڪ صارف ڏيو ٿا اتي، توهان اتي وڃو پنهنجي نالي جي جاء تي، توهان جي محاذ کي ترتيب ڏيو.

منهنجي پوئين ڪمپني اهڙي خدمت وڪڻڻ جي ڪوشش ڪئي. ۽ مون کي چيو ويو ته ڪلستر کي ڇڪيو ته ڏسو ته اهو حل مناسب هو يا نه.

مان هن ڪلچر ۾ آيو آهيان. مون کي محدود حق ڏنو ويو، محدود نالو. اتي جا ماڻهو سمجهي ويا ته حفاظت ڇا آهي. انهن ڪبرنيٽس ۾ رول بيسڊ رسائي ڪنٽرول (RBAC) بابت پڙهيو - ۽ انهن ان کي ٽوڙي ڇڏيو ته جيئن مان ڊپلائيمينٽ کان الڳ پوڊ لانچ نه ڪري سگهان. مون کي اهو مسئلو ياد ناهي ته آئون بغير ڪنهن پوسٽ جي پوڊ لانچ ڪندي حل ڪرڻ جي ڪوشش ڪري رهيو آهيان، پر مان واقعي چاهيان ٿو ته صرف هڪ پوڊ لانچ ڪرڻ. سٺي قسمت لاءِ، مون اهو ڏسڻ جو فيصلو ڪيو ته مون وٽ ڪلسٽر ۾ ڪهڙا حق آهن، مان ڇا ڪري سگهان ٿو، ڇا نٿو ڪري سگهان، ۽ اُتي اُتي ڇا بگاڙيو آهي. ساڳئي وقت، مان توهان کي ٻڌايان ٿو ته اهي RBAC ۾ غلط ترتيب ڏنل آهن.

ائين ٿيو ته ٻن منٽن ۾ مون کي سندن ڪلستر تي هڪ منتظم مليو، سڀني پاڙيسري نيمس اسپيس کي ڏٺو، اتي انهن ڪمپنين جا هلندڙ پروڊڪشن فرنٽ ڏٺا جيڪي اڳ ۾ ئي سروس خريد ڪري چڪيون هيون. مان مشڪل سان پاڻ کي ڪنهن جي سامهون وڃڻ ۽ مکيه صفحي تي ڪجهه قسم کڻڻ کان روڪي سگهيس.

مان توهان کي مثالن سان ٻڌايان ٿو ته مون اهو ڪيئن ڪيو ۽ ڪيئن پاڻ کي ان کان بچايو.

پر پهرين، مون کي پنهنجو تعارف ڪرايو. منهنجو نالو Pavel Selivanov آهي. مان سائوٿ برج ۾ هڪ معمار آهيان. مان سمجھان ٿو Kubernetes، DevOps ۽ ھر قسم جون فينسي شيون. سائوٿ برج انجنيئر ۽ مان هي سڀ ٺاهي رهيا آهيون، ۽ مان صلاح ڪري رهيو آهيان.

اسان جي مکيه سرگرمين کان علاوه، اسان تازو شروع ڪيو آهي منصوبا جن کي Slurms سڏيو ويندو آهي. اسان ڪوشش ڪري رهيا آهيون ته ڪبرنيٽس سان گڏ ڪم ڪرڻ جي اسان جي صلاحيت کي عوام تائين ٿورو، ٻين ماڻهن کي پڻ K8s سان ڪم ڪرڻ سيکارڻ لاءِ.

اڄ مان ڪهڙي ڳالهه ڪندس؟ رپورٽ جو موضوع واضح آهي - ڪبرنيٽس ڪلستر جي سيڪيورٽي بابت. پر مان فوري طور تي چوڻ چاهيان ٿو ته هي موضوع تمام وڏو آهي - ۽ تنهن ڪري مان فوري طور تي واضح ڪرڻ چاهيان ٿو ته آئون ضرور نه ڳالهائيندس. مان هيڪني اصطلاحن بابت نه ڳالهائيندس جيڪي اڳ ۾ ئي انٽرنيٽ تي سئو ڀيرا استعمال ڪيا ويا آهن. RBAC ۽ سرٽيفڪيٽ جا سڀ قسم.

مان ان بابت ڳالهائيندس جيڪو مون کي ۽ منهنجي ساٿين کي ڪبرنيٽس ڪلستر ۾ سيڪيورٽي بابت درد ڏئي ٿو. اسان اهي مسئلا ڏسون ٿا ٻنهي مهيا ڪندڙن جي وچ ۾ جيڪي ڪبرنيٽس ڪلسٽر مهيا ڪن ٿا ۽ اسان وٽ اچڻ وارن گراهڪن جي وچ ۾. ۽ جيتوڻيڪ گراهڪن کان جيڪي اسان وٽ ايندا آهن ٻين صلاحڪار منتظم ڪمپنين کان. اهو آهي، سانحي جو پيمانو اصل ۾ تمام وڏو آهي.

لفظي طور تي ٽي نقطا آهن جن بابت آئون اڄ ڳالهائيندس:

  1. استعمال ڪندڙ جا حق بمقابله پوڊ حق. استعمال ڪندڙ جا حق ۽ پوڊ حق ساڳي شيء نه آهن.
  2. ڪلستر بابت معلومات گڏ ڪرڻ. مان ڏيکاريندس ته توھان سڀ معلومات گڏ ڪري سگھوٿا توھان کي ھڪڙي ڪلستر مان خاص حق حاصل ڪرڻ کان سواءِ.
  3. ڪلستر تي DoS حملو. جيڪڏهن اسان معلومات گڏ نه ٿا ڪري سگهون، اسان ڪنهن به صورت ۾ ڪلستر رکڻ جي قابل ٿي سگهنداسين. مان ڪلسٽر ڪنٽرول عناصر تي DoS حملن بابت ڳالهائيندس.

هڪ ٻي عام ڳالهه جنهن جو مان ذڪر ڪندس اهو آهي ته مون هي سڀ ڪجهه آزمايو، جنهن تي مان يقين سان چئي سگهان ٿو ته اهو سڀ ڪم ڪري ٿو.

اسان Kubespray استعمال ڪندي ڪبرنيٽس ڪلستر جي انسٽاليشن جي بنياد تي وٺون ٿا. جيڪڏهن ڪنهن کي خبر ناهي، اهو اصل ۾ جواب ڏيڻ لاء ڪردار جو هڪ سيٽ آهي. اسان ان کي اسان جي ڪم ۾ مسلسل استعمال ڪندا آهيون. سٺي ڳالهه اها آهي ته توهان ان کي ڪٿي به رول ڪري سگهو ٿا - توهان ان کي لوهه جي ٽڪرن تي يا ڪنهن ڪڪر ۾ رول ڪري سگهو ٿا. ھڪڙي تنصيب جو طريقو ھر شيء لاء ڪم ڪري ٿو.

هن ڪلستر ۾ مون وٽ هوندو Kubernetes v1.14.5. سمورو ڪعب ڪلستر، جنهن تي اسين غور ڪنداسين، ورهايل آهي نالا اسپيس ۾، هر نالي جي جاءِ هڪ الڳ ٽيم سان تعلق رکي ٿي، ۽ هن ٽيم جي ميمبرن کي هر نالي جي جاءِ تائين رسائي آهي. اهي مختلف نالن جي جڳهن ڏانهن نه ٿا وڃن، صرف انهن جي پنهنجي. پر اتي ھڪڙو خاص منتظم اڪائونٽ آھي جنھن کي سڄي ڪلستر جا حق آھن.

ڪبرنيٽس ڪلستر ۾ سوراخ درست ڪرڻ. DevOpsConf کان رپورٽ ۽ نقل

مون واعدو ڪيو ته پهرين شيء جيڪا اسان ڪنداسين اها حاصل ڪرڻ آهي ڪلسٽر جا منتظم حق. اسان کي خاص طور تي تيار ڪيل پوڊ جي ضرورت آهي جيڪا ڪبرنيٽس ڪلستر کي ٽوڙي ڇڏيندو. اسان کي اهو ڪرڻو آهي ته ان کي ڪبرنيٽس ڪلستر تي لاڳو ڪيو وڃي.

kubectl apply -f pod.yaml

هي پوڊ ڪبرنيٽس ڪلستر جي ماسٽرن مان هڪ تائين پهچندو. ۽ ان کان پوءِ ڪلستر خوشيءَ سان اسان ڏانهن admin.conf نالي هڪ فائيل واپس ڪندو. Cube ۾، هي فائل سڀني منتظمين جي سرٽيفڪيٽ کي ذخيرو ڪري ٿو، ۽ ساڳئي وقت ڪلستر API کي ترتيب ڏئي ٿو. اهو ڪيترو آسان آهي منتظم تائين رسائي حاصل ڪرڻ ، منهنجو خيال آهي ، 98٪ ڪبرنيٽس ڪلسٽرز.

مان ورجائي ٿو، هي پوڊ توهان جي ڪلستر ۾ هڪ ڊولپر طرفان ٺاهيو ويو آهي جنهن کي پنهنجي پروپوزل کي هڪ ننڍڙي نالي جي جاء تي ترتيب ڏيڻ جي رسائي آهي، اهو سڀ RBAC طرفان بند ڪيو ويو آهي. هن کي ڪوبه حق نه هو. پر ان جي باوجود سرٽيفڪيٽ واپس ڪيو ويو.

۽ هاڻي هڪ خاص تيار ڪيل پوڊ بابت. اسان ان کي ڪنهن به تصوير تي هلائيندا آهيون. اچو ته وٺو debian: jessie مثال طور.

اسان وٽ هي شيء آهي:

tolerations:
-   effect: NoSchedule 
    operator: Exists 
nodeSelector: 
    node-role.kubernetes.io/master: "" 

رواداري ڇا آهي؟ ڪبرنيٽس ڪلستر ۾ ماسٽر عام طور تي نشان لڳل آهن جن کي ٽينائن سڏيو ويندو آهي. ۽ هن "انفڪشن" جو خلاصو اهو آهي ته اهو چوي ٿو ته پوڊ ماسٽر نوڊس کي تفويض نه ٿو ڪري سگهجي. پر ڪو به ڪنهن به پوڊ ۾ ظاهر ڪرڻ جي جرئت نٿو ڪري ته اهو "انفڪشن" کي برداشت ڪري ٿو. رواداري سيڪشن صرف چوي ٿو ته جيڪڏهن ڪجهه نوڊ ۾ NoSchedule آهي، ته پوء اسان جو نوڊ اهڙي انفيڪشن کي برداشت ڪري ٿو - ۽ ڪو مسئلو ناهي.

اڳتي هلي اسان جو چوڻ آهي ته اسان جو انڊر نه رڳو روادار آهي، پر خاص ڪري مالڪ کي به نشانو بڻائڻ چاهي ٿو. ڇو ته ماسٽرن وٽ سڀ کان وڌيڪ لذيذ شيء آهي جيڪا اسان کي گهربل آهي - سڀ سرٽيفڪيٽ. تنهن ڪري، اسان چئون ٿا nodeSelector - ۽ اسان وٽ ماسٽرز تي هڪ معياري ليبل آهي، جيڪو توهان کي ڪلستر ۾ سڀني نوڊس مان چونڊڻ جي اجازت ڏئي ٿو بلڪل اهي نوڊس جيڪي ماسٽر آهن.

انهن ٻن حصن سان هو ضرور مالڪ وٽ ايندو. ۽ هن کي اتي رهڻ جي اجازت ڏني ويندي.

پر صرف ماسٽر وٽ اچڻ اسان لاء ڪافي ناهي. اهو اسان کي ڪجهه به نه ڏيندو. پوءِ اسان وٽ اهي ٻه شيون آهن:

hostNetwork: true 
hostPID: true 

اسان واضع ڪريون ٿا ته اسان جو پوڊ، جيڪو اسان لانچ ڪريون ٿا، ڪرنل نيم اسپيس ۾، نيٽ ورڪ نيمس اسپيس ۾، ۽ PID نالي اسپيس ۾ رهندو. هڪ دفعو ماسٽر تي پوڊ شروع ڪيو ويو آهي، اهو هن نوڊ جي سڀني حقيقي، لائيو انٽرفيس کي ڏسڻ جي قابل هوندو، سڀني ٽرئفڪ کي ٻڌي ۽ سڀني عملن جي PID کي ڏسي.

پوءِ اها ننڍين شين جي ڳالهه آهي. وغيره وٺو ۽ پڙهو جيڪو توهان چاهيو ٿا.

سڀ کان وڌيڪ دلچسپ شيء اها آهي Kubernetes خاصيت، جيڪا اتي موجود آهي ڊفالٽ طرفان.

volumeMounts:
- mountPath: /host 
  name: host 
volumes:
- hostPath: 
    path: / 
    type: Directory 
  name: host 

۽ ان جو خلاصو اهو آهي ته اسان پوڊ ۾ چئي سگهون ٿا ته اسان لانچ ڪريون ٿا، هن ڪلستر جي حقن کان سواءِ به، ته اسان هڪ حجم ٺاهڻ چاهيون ٿا hostPath قسم جو. ان جو مطلب آهي ميزبان کان رستو وٺڻ جنهن تي اسان لانچ ڪنداسين - ۽ ان کي حجم طور وٺي. ۽ پوء اسان ان کي سڏين ٿا نالو: ميزبان. اسان پوڊ جي اندر هن سڄي ميزبان پاٿ کي نصب ڪيو. هن مثال ۾، / ميزبان ڊاريڪٽري ڏانهن.

مان ان کي ٻيهر ورجائيندس. اسان پوڊ کي چيو ته ماسٽر وٽ اچو، اتي hostNetwork ۽ hostPID حاصل ڪريو - ۽ ماسٽر جي پوري روٽ کي هن پوڊ اندر نصب ڪريو.

توھان سمجھو ٿا ته ديبين ۾ اسان وٽ بيش ھلندڙ آھي، ۽ اھو بش روٽ ھيٺ ھلندو آھي. اهو آهي، اسان صرف ماسٽر تي روٽ حاصل ڪيو، بغير ڪنهن حق جي ڪبرنيٽس ڪلستر ۾.

پوءِ سڄو ڪم آهي سب ڊاريڪٽري ڏانهن وڃڻو آهي /host /etc/kubernetes/pki، جيڪڏهن مان غلطي نه ڪريان ته اتي ڪلسٽر جا سڀ ماسٽر سرٽيفڪيٽ وٺي وڃو ۽ ان مطابق ڪلسٽر ايڊمنسٽريٽر بڻجي وڃو.

جيڪڏهن توهان ان کي هن طريقي سان ڏسو، اهي پوڊ ۾ سڀ کان وڌيڪ خطرناڪ حق آهن - قطع نظر ته صارف کي ڪهڙا حق آهن:
ڪبرنيٽس ڪلستر ۾ سوراخ درست ڪرڻ. DevOpsConf کان رپورٽ ۽ نقل

جيڪڏهن مون وٽ حق آهن ته هڪ پوڊ کي ڪلسٽر جي ڪجهه نالي واري جاءِ تي، پوءِ هن پوڊ وٽ اهي حق آهن ڊفالٽ طور. مان مراعات يافته پوڊز کي هلائي سگهان ٿو، ۽ اهي عام طور تي سڀئي حق آهن، عملي طور تي نوڊ تي روٽ.

منهنجو پسنديده روٽ استعمال ڪندڙ آهي. ۽ ڪبرنيٽس وٽ ھي رن As Non-root آپشن آھي. هي هيڪر کان تحفظ جو هڪ قسم آهي. ڇا توهان کي خبر آهي ته "Moldavian وائرس" ڇا آهي؟ جيڪڏهن توهان اوچتو هڪ هيڪر آهيو ۽ منهنجي ڪبرنيٽس ڪلستر تي آيا آهيو، ته پوء اسان، غريب منتظمين، پڇو: "مهرباني ڪري پنهنجي پوڊس ۾ اشارو ڪريو جنهن سان توهان منهنجي ڪلستر کي هيڪ ڪندا، غير روٽ وانگر. ٻي صورت ۾، اهو ٿيندو ته توهان روٽ جي تحت توهان جي پوڊ ۾ پروسيس کي هلائيندا آهيو، ۽ اهو توهان لاء تمام آسان ٿي ويندو ته مون کي هيڪ ڪرڻ. مهرباني ڪري پاڻ کي پاڻ کان بچايو. "

ميزبان رستو حجم، منهنجي خيال ۾، ڪبرنيٽس ڪلستر مان گهربل نتيجو حاصل ڪرڻ جو تيز ترين طريقو آهي.

پر اهو سڀ ڪجهه ڇا ڪجي؟

اهو خيال جيڪو ڪنهن به عام منتظم وٽ اچڻ گهرجي جيڪو ڪبرنيٽس سان ملندو آهي: ”ها، مون توهان کي ٻڌايو، ڪبرنيٽس ڪم نٿو ڪري. ان ۾ سوراخ آهن. ۽ سڄو ڪعب بڪواس آهي. حقيقت ۾، اتي هڪ اهڙي شيء آهي جيئن دستاويز، ۽ جيڪڏهن توهان اتي ڏسندا، اتي هڪ سيڪشن آهي پوڊ سيڪيورٽي پاليسي.

هي هڪ yaml اعتراض آهي - اسان ان کي Kubernetes ڪلستر ۾ ٺاهي سگهون ٿا - جيڪو خاص طور تي پوڊ جي وضاحت ۾ حفاظتي عنصرن کي سنڀاليندو آهي. اهو آهي، حقيقت ۾، اهو ڪنهن به hostNetwork، hostPID، ڪجهه مقدار جي قسمن کي استعمال ڪرڻ جي حقن کي سنڀاليندو آهي جيڪي شروع ٿيڻ تي پوڊ ۾ آهن. پوڊ سيڪيورٽي پاليسي جي مدد سان، اهو سڀ ڪجهه بيان ڪري سگهجي ٿو.

پوڊ سيڪيورٽي پاليسي جي باري ۾ سڀ کان وڌيڪ دلچسپ شيء اها آهي ته ڪبرنيٽس ڪلستر ۾، سڀئي پي ايس پي تنصيب صرف ڪنهن به طريقي سان بيان نه ڪيا ويا آهن، اهي صرف ڊفالٽ طور تي معذور آهن. پوڊ سيڪيورٽي پاليسي داخل ٿيل پلگ ان استعمال ڪندي فعال ڪئي وئي آهي.

ٺيڪ آهي، اچو ته پوڊ سيڪيورٽي پاليسي کي ڪلسٽر ۾ لڳايون، اچو ته چئو ته اسان وٽ نالي جي جاءِ ۾ ڪجهه سروس پوڊس آهن، جن تائين صرف منتظمين کي رسائي آهي. اچو ته چوندا آهن، ٻين سڀني ڪيسن ۾، پوڊ محدود حق آهن. ڇو ته گهڻو ڪري ڊولپرز کي توهان جي ڪلستر ۾ مراعات يافته پوڊ هلائڻ جي ضرورت ناهي.

۽ اسان سان هر شي ٺيڪ ٿي لڳي. ۽ اسان جي ڪبرنيٽس ڪلستر کي ٻن منٽن ۾ هيڪ نه ٿو ڪري سگھجي.

ڪو مسئلو آهي. گهڻو ڪري، جيڪڏهن توهان وٽ ڪبرنيٽس ڪلستر آهي، پوء توهان جي ڪلستر تي نگراني نصب ٿيل آهي. مان به ايترو پري وڃان ها ته اڳڪٿي ڪريان ته جيڪڏهن توهان جي ڪلستر مانيٽرنگ آهي ته ان کي پروميٿيس سڏيو ويندو.

جيڪو مان توھان کي ٻڌائڻ وارو آھيان اھو پرومٿيوس آپريٽر ۽ پروميٿيوس ٻنھي لاءِ صحيح ھوندو جيڪو پنھنجي خالص روپ ۾ ڏنو ويو. سوال اهو آهي ته جيڪڏهن مان ايترو جلدي ڪلستر ۾ منتظم نه ٿو حاصل ڪري سگهان، پوء هن جو مطلب اهو آهي ته مون کي وڌيڪ ڏسڻ جي ضرورت آهي. ۽ مان توهان جي نگراني جي مدد سان ڳولي سگهان ٿو.

شايد هرڪو Habré تي ساڳيو آرٽيڪل پڙهي، ۽ مانيٽرنگ مانيٽرنگ نالي جي جاء تي واقع آهي. هيلم چارٽ هر ڪنهن لاءِ لڳ ڀڳ هڪجهڙو سڏيو ويندو آهي. مان اندازو لڳائي رهيو آهيان ته جيڪڏهن توهان هيلم انسٽال ڪريو ٿا اسٽيبل/پرومٿيوس، توهان ختم ٿي ويندا تقريباً ساڳيا نالا. ۽ گهڻو ڪري مون کي توهان جي ڪلستر ۾ DNS نالو جو اندازو لڳائڻ جي ضرورت ناهي. ڇاڪاڻ ته اهو معياري آهي.

ڪبرنيٽس ڪلستر ۾ سوراخ درست ڪرڻ. DevOpsConf کان رپورٽ ۽ نقل

اڳيون اسان وٽ هڪ خاص devns آهي، جنهن ۾ توهان هڪ خاص پوڊ هلائي سگهو ٿا. ۽ پوءِ هن پوڊ مان اهو ڪجهه ڪرڻ بلڪل آسان آهي هن جهڙو:

$ curl http://prometheus-kube-state-metrics.monitoring 

prometheus-kube-state-metrics Prometheus ايڪسپورٽرز مان ھڪڙو آھي جيڪو خود ڪبرنيٽس API مان ميٽرڪ گڏ ڪري ٿو. اتي تمام گھڻو ڊيٽا آھي، توھان جي ڪلستر ۾ ڇا آھي، اھو ڇا آھي، توھان کي ان سان ڪھڙا مسئلا آھن.

هڪ سادي مثال طور:

kube_pod_container_info{namespace=“kube-system”,pod="kube-apisver-k8s- 1″,container="kube-apiserver",image=

"gcr.io/google-containers/kube-apiserver:v1.14.5"

,image_id=»docker-pullable://gcr.io/google-containers/kube- apiserver@sha256:e29561119a52adad9edc72bfe0e7fcab308501313b09bf99df4a96 38ee634989″,container_id=»docker://7cbe7b1fea33f811fdd8f7e0e079191110268f2 853397d7daf08e72c22d3cf8b»} 1

هڪ غير امتيازي پوڊ کان هڪ سادي ڪرل درخواست ڪندي، توهان هيٺ ڏنل معلومات حاصل ڪري سگهو ٿا. جيڪڏهن توهان کي خبر ناهي ته ڪبرنيٽس جو ڪهڙو نسخو توهان هلائي رهيا آهيو، اهو توهان کي آساني سان ٻڌائيندو.

۽ سڀ کان وڌيڪ دلچسپ ڳالهه اها آهي ته kube-state-metrics تائين رسائي کان علاوه، توهان آساني سان سڌو سنئون پروميٿيس تائين رسائي ڪري سگهو ٿا. توھان اتان کان ميٽرڪ گڏ ڪري سگھو ٿا. توھان اتان کان ميٽرڪ پڻ ٺاھي سگھو ٿا. جيتوڻيڪ نظرياتي طور تي، توهان Prometheus ۾ هڪ ڪلستر کان اهڙي سوال ٺاهي سگهو ٿا، جيڪو صرف ان کي بند ڪري ڇڏيندو. ۽ توهان جي نگراني مڪمل طور تي ڪلستر کان ڪم ڪرڻ بند ٿي ويندي.

۽ هتي سوال اهو پيدا ٿئي ٿو ته ڇا ڪو ٻاهرين مانيٽرنگ توهان جي نگراني جي نگراني ڪري ٿو. مون کي صرف هڪ Kubernetes ڪلستر ۾ هلائڻ جو موقعو مليو بغير ڪنهن به نتيجن جي پنهنجي لاءِ. توهان کي اها به خبر نه هوندي ته مان اتي ڪم ڪري رهيو آهيان، ڇو ته هاڻي ڪا به نگراني ناهي.

جيئن ته پي ايس پي سان، اهو محسوس ٿئي ٿو ته مسئلو اهو آهي ته اهي سڀئي فينسي ٽيڪنالاجيون - ڪبرنيٽس، پروميٿيس - اهي صرف ڪم نه ڪندا آهن ۽ سوراخ سان ڀريل آهن. سچي نه.

اتي هڪ اهڙي شيء آهي - نيٽ ورڪ پاليسي.

جيڪڏهن توهان هڪ عام منتظم آهيو، ته پوءِ گهڻو ڪري توهان کي نيٽ ورڪ پاليسي جي باري ۾ خبر هوندي ته هي صرف هڪ ٻيو يامل آهي، جنهن جا ڪلستر ۾ پهريان ئي ڪافي آهن. ۽ ڪجهه نيٽ ورڪ پاليسين جي ضرور ضرورت ناهي. ۽ جيڪڏھن توھان پڙھندا آھيو نيٽ ورڪ پاليسي ڇا آھي، اھو آھي Kubernetes جي yaml فائر وال، اھو توھان کي اجازت ڏئي ٿو رسائي جي حقن کي محدود ڪرڻ جي نالن جي وچ ۾، پوڊ جي وچ ۾، پوء توھان ضرور فيصلو ڪيو آھي ته فائر وال ڪبرنيٽس ۾ yaml فارميٽ ۾ ايندڙ خلاصن تي ٻڌل آھي. ... نه، نه. اهو ضرور ضروري ناهي.

جيتوڻيڪ توهان پنهنجي سيڪيورٽي ماهرن کي نه ٻڌايو ته توهان جي ڪبرنيٽس استعمال ڪندي توهان هڪ تمام آسان ۽ سادو فائر وال ٺاهي سگهو ٿا، ۽ انهي تي هڪ تمام وڏو. جيڪڏهن اهي اڃا تائين نه ٿا ڄاڻن ۽ توهان کي تنگ نه ڪن: "چڱو، مون کي ڏيو، مون کي ڏيو ..." پوء ڪنهن به صورت ۾، توهان کي ڪجهه خدمت جي جڳهن تائين رسائي کي بلاڪ ڪرڻ لاء نيٽ ورڪ پاليسي جي ضرورت آهي جيڪا توهان جي ڪلستر مان ڪڍي سگهجي ٿي. بغير ڪنهن اجازت جي.

جيئن ته مثال طور مون ڏنو آهي، توهان ڪبرنيٽس ڪلستر ۾ ڪنهن به نالي جي جڳهه مان ڪبي اسٽيٽ ميٽرڪس کي ڇڪي سگهو ٿا بغير ڪنهن حق جي. نيٽ ورڪ پاليسين ٻين سڀني نالن جي اسپيس کان مانيٽرنگ نالي جي جاءِ تائين رسائي بند ڪري ڇڏي آهي ۽ اهو ئي آهي: ڪابه رسائي، ڪو مسئلو ناهي. سڀني چارٽس ۾ جيڪي موجود آهن، ٻنهي معياري Prometheus ۽ Prometheus جيڪي آپريٽر ۾ آهن، انهن لاءِ نيٽ ورڪ پاليسين کي فعال ڪرڻ لاءِ صرف هيلم ويلز ۾ هڪ اختيار آهي. توھان کي صرف ان کي چالو ڪرڻ جي ضرورت آھي ۽ اھي ڪم ڪندا.

هتي واقعي هڪ مسئلو آهي. هڪ عام ڏاڙهي وارو منتظم هجڻ جي ڪري، توهان گهڻو ڪري اهو فيصلو ڪيو آهي ته نيٽ ورڪ پاليسين جي ضرورت ناهي. ۽ هبر وانگر وسيلن تي هر قسم جا آرٽيڪل پڙهڻ کان پوء، توهان فيصلو ڪيو ته فلانيل، خاص طور تي ميزبان-گيٽ وي موڊ سان، بهترين شيء آهي جيڪا توهان چونڊي سگهو ٿا.

آئون ڇا ڪريان؟

توھان ڪوشش ڪري سگھوٿا نيٽ ورڪ حل جيڪو توھان وٽ آھي توھان جي ڪبرنيٽس ڪلستر ۾، ان کي تبديل ڪرڻ جي ڪوشش ڪريو ڪجھ وڌيڪ فنڪشنل سان. ساڳئي Calico لاء، مثال طور. پر مان اهو چوڻ چاهيان ٿو ته نيٽ ورڪ حل کي تبديل ڪرڻ جو ڪم هڪ Kubernetes ڪم ڪندڙ ڪلستر ۾ بلڪل غير معمولي آهي. مون ان کي ٻه ڀيرا حل ڪيو (ٻنهي ڀيرا، جيتوڻيڪ، نظرياتي طور تي)، پر اسان اهو به ڏيکاريو ته اهو ڪيئن ڪجي Slurms تي. اسان جي شاگردن لاءِ، اسان ڏيکاريو ته ڪبرنيٽس ڪلستر ۾ نيٽ ورڪ حل ڪيئن بدلجي. اصول ۾، توهان کي پڪ ڪرڻ جي ڪوشش ڪري سگهو ٿا ته پيداوار ڪلستر تي ڪو به downtime نه آهي. پر توهان شايد ڪامياب نه ٿيندا.

۽ مسئلو اصل ۾ بلڪل سادو حل آهي. ڪلستر ۾ سرٽيفڪيٽ آهن، ۽ توهان کي خبر آهي ته توهان جا سرٽيفڪيٽ هڪ سال ۾ ختم ٿي ويندا. خير، ۽ عام طور تي ڪلسٽر ۾ سرٽيفڪيٽن سان گڏ هڪ عام حل - اسان ڇو پريشان آهيون، اسان ويجھي هڪ نئون ڪلستر قائم ڪنداسين، پراڻي کي سڙي وڃڻ ڏيو، ۽ هر شيء کي ٻيهر ترتيب ڏيو. سچ، جڏهن اهو سڙي وڃي ٿو، اسان کي هڪ ڏينهن لاء ويهڻو پوندو، پر هتي هڪ نئون ڪلستر آهي.

جڏهن توهان هڪ نئون ڪلستر وڌايو، ساڳئي وقت فلالين جي بدران ڪيليڪو داخل ڪريو.

ڇا ڪجي جيڪڏهن توهان جا سرٽيفڪيٽ سؤ سالن تائين جاري ڪيا وڃن ۽ توهان ڪلستر کي ٻيهر بحال ڪرڻ وارا نه آهيو؟ ڪوبي-RBAC-Proxy وانگر هڪ شيء آهي. هي هڪ تمام بهترين ترقي آهي، اهو توهان کي اجازت ڏئي ٿو ته پاڻ کي سائڊ ڪار ڪنٽينر جي طور تي ڪبرنيٽس ڪلستر ۾ ڪنهن به پوڊ ڏانهن. ۽ اهو اصل ۾ هن پوڊ کي اختيار شامل ڪري ٿو RBAC ذريعي ڪبرنيٽس پاڻ.

ھڪڙو مسئلو آھي. اڳي، هي Kube-RBAC-Proxy حل آپريٽر جي Prometheus ۾ ٺهيل هو. پر پوءِ هو هليو ويو. ھاڻي جديد ورزن ان حقيقت تي ڀاڙين ٿا ته توھان وٽ ھڪڙو نيٽ ورڪ پاليسي آھي ۽ ان کي استعمال ڪندي بند ڪريو. ۽ تنهن ڪري اسان کي چارٽ کي ٿورو ٻيهر لکڻو پوندو. حقيقت ۾، جيڪڏهن توهان وڃو هن مخزن، اهڙا مثال آهن ته هي ڪيئن استعمال ڪجي سائڊ ڪارز جي طور تي، ۽ چارٽ کي گهٽ ۾ گهٽ ٻيهر لکڻو پوندو.

هڪ وڌيڪ ننڍڙو مسئلو آهي. Prometheus اڪيلو نه آهي جيڪو صرف پنهنجي ميٽرڪس کي ڪنهن کي هٿ ڪري ٿو. اسان جا سڀئي Kubernetes ڪلستر جا حصا پڻ قابل آھن پنھنجي پنھنجي ميٽرڪ واپس ڪرڻ جي.

پر جيئن ته مون اڳ ۾ ئي چيو آهي، جيڪڏهن توهان ڪلستر تائين رسائي نٿا ڪري سگهو ۽ معلومات گڏ ڪري سگهو ٿا، ته پوء توهان گهٽ ۾ گهٽ ڪجهه نقصان ڪري سگهو ٿا.

تنهن ڪري آئون جلدي ٻه طريقا ڏيکاريندس ڪبرنيٽس ڪلستر ڪيئن برباد ٿي سگهي ٿو.

تون کلندين جڏهن مان توکي ٻڌايان ٿو، هي ٻه حقيقي زندگي جا ڪيس آهن.

طريقو هڪ. وسيلن جي کوٽ.

اچو ته هڪ ٻيو خاص پوڊ شروع ڪريون. ان ۾ هن طرح هڪ سيڪشن هوندو.

resources: 
    requests: 
        cpu: 4 
        memory: 4Gi 

جئين توهان ڄاڻو ٿا، درخواستون سي پي يو ۽ ميموري جي مقدار آهي جيڪا ميزبان تي مخصوص پوڊ لاء درخواستن سان گڏ آهي. جيڪڏهن اسان وٽ ڪوبرنيٽس ڪلستر ۾ چار-ڪور ميزبان آهي، ۽ چار سي پي يو پوڊس اتي پهچي ويندا آهن درخواستن سان، ان جو مطلب اهو آهي ته درخواستن سان گڏ وڌيڪ ڪو به پوڊ هن ميزبان وٽ نه اچي سگهندا.

جيڪڏهن مان اهڙو پوڊ هلان ٿو، ته پوءِ مان حڪم هلائيندس:

$ kubectl scale special-pod --replicas=...

ان کان پوء ڪو به ٻيو ڪو به قابل نه هوندو ڪبرنيٽس ڪلستر ڏانهن. ڇو ته سڀئي نوڊس درخواستن مان ختم ٿي ويندا. ۽ اهڙيء طرح مان توهان جي ڪبرنيٽس ڪلستر کي روڪي ڇڏيندس. جيڪڏهن مان اهو شام جو ڪريان ٿو، ته مان ڪافي وقت تائين ڊپلوميشن کي روڪي سگهان ٿو.

جيڪڏهن اسان ڪبرنيٽس جي دستاويزن تي ٻيهر نظر وجهون ٿا، ته اسان هن شيءِ کي ڏسندا سين جنهن کي Limit Range سڏيو ويندو آهي. اهو ڪلستر جي شين لاء وسيلن کي سيٽ ڪري ٿو. توهان yaml ۾ هڪ Limit Range اعتراض لکي سگهو ٿا، ان کي ڪجهه خاص نالن جي جڳهن تي لاڳو ڪريو - ۽ پوءِ هن نالي جي جاءِ ۾ توهان چئي سگهو ٿا ته توهان وٽ پوڊز لاءِ ڊفالٽ، وڌ ۾ وڌ ۽ گهٽ ۾ گهٽ وسيلا آهن.

اهڙي شيءِ جي مدد سان، اسان صارفين کي محدود ڪري سگھون ٿا ٽيمن جي مخصوص پراڊڪٽ نالن جي جڳهن ۾ انهن جي پوڊ تي هر قسم جي گندي شين کي ظاهر ڪرڻ جي صلاحيت ۾. پر بدقسمتي سان، جيتوڻيڪ توهان صارف کي ٻڌايو ته اهي هڪ کان وڌيڪ سي پي يو جي درخواستن سان پوڊ لانچ نٿا ڪري سگهن، اتي هڪ شاندار اسڪيل ڪمانڊ آهي، يا اهي ڊيش بورڊ ذريعي پيماني تي ڪري سگهن ٿا.

۽ اهو آهي جتي طريقو نمبر ٻه اچي ٿو. اسان لانچ ڪيو 11 پوڊ. اهو يارهن بلين آهي. اهو ان ڪري نه آهي جو مان اهڙو نمبر کڻي آيو آهيان، پر ان ڪري جو مون ان کي پاڻ ڏٺو.

حقيقي ڪهاڻي. شام جو دير سان مان آفيس مان نڪرڻ وارو هوس. مان ڏسان ٿو ته ڊولپرز جو هڪ گروپ ڪنڊ ۾ ويٺي آهي، پنهنجي ليپ ٽاپ سان بيحد ڪجهه ڪري رهيو آهي. مان ماڻهن وٽ وڃي پڇيس: ”توکي ڇا ٿيو آهي؟

ٿوري دير اڳ، شام جا نوَ وڳي، هڪ ڊولپر گهر وڃڻ لاءِ تيار ٿي رهيو هو. ۽ مون فيصلو ڪيو: "مان ھاڻي پنھنجي درخواست کي ھڪڙي تائين گھٽائي ڇڏيندس." مون هڪ کي دٻايو، پر انٽرنيٽ ٿورو سست ٿي ويو. هن هڪ کي ٻيهر دٻايو، هن هڪ کي دٻايو، ۽ ڪلڪ ڪيو داخل ڪريو. مون کي هر شيء تي پڪڙيو. ان کان پوء انٽرنيٽ زندگي ۾ آيو - ۽ هر شيء هن نمبر تي ماپ ڪرڻ شروع ڪيو.

اهو سچ آهي ته هيءَ ڪهاڻي ڪبرنيٽس تي نه ٿي هئي؛ ان وقت اها ڪوماد هئي. اها ڳالهه ان حقيقت تي ختم ٿي ته اسان جي هڪ ڪلاڪ کان پوءِ Nomad کي اسڪيل ڪرڻ جي مسلسل ڪوششن کان روڪڻ جي ڪوشش ڪئي، نومد جواب ڏنو ته هو اسڪيلنگ بند نه ڪندو ۽ ٻيو ڪجهه به نه ڪندو. "مان ٿڪل آهيان، مان وڃان ٿو." ۽ هو ڪنڌ جهڪائي ويو.

قدرتي طور تي، مون ڪبرنيٽس تي ساڳيو ڪم ڪرڻ جي ڪوشش ڪئي. ڪبرنيٽس يارهن بلين پوڊس سان خوش نه هو، هن چيو: ”مان نه ٿو ڪري سگهان. اندروني وات جي محافظن کان وڌيڪ." پر 1 پوڊ ٿي سگھي ٿو.

هڪ ارب جي جواب ۾، ڪعب پاڻ ۾ واپس نه ورتو. هن واقعي اسڪيلنگ شروع ڪئي. اهو عمل جيترو اڳتي وڌندو ويو، اوترو وڌيڪ وقت هن کي نوان پوڊ ٺاهڻ ۾ لڳندو هو. پر پوءِ به اهو سلسلو جاري رهيو. مسئلو صرف اهو آهي ته جيڪڏهن مان پنهنجي نيمس اسپيس ۾ لامحدود طور تي پوڊز لانچ ڪري سگهان ٿو ته پوءِ به بغير درخواستن ۽ حدن جي آئون ڪجهه ٽاسڪ سان ايترا پوڊ لانچ ڪري سگهان ٿو ته انهن ٽاسڪ جي مدد سان نوڊس ميموري ۾، سي پي يو ۾ شامل ٿيڻ شروع ٿي ويندا. جڏهن مون تمام گهڻا پوڊ لانچ ڪيا، انهن مان معلومات اسٽوريج ۾ وڃڻ گهرجي، اهو آهي، وغيره. ۽ جڏهن تمام گهڻي معلومات اتي پهچي ٿي، اسٽوريج تمام سست موٽڻ شروع ٿئي ٿي - ۽ ڪبرنيٽس سست ٿيڻ شروع ٿئي ٿو.

۽ هڪ وڌيڪ مسئلو... جيئن توهان ڄاڻو ٿا، ڪبرنيٽس ڪنٽرول عناصر هڪ مرڪزي شيءِ نه آهن، پر ڪيترائي جزا آهن. خاص طور تي، اتي هڪ ڪنٽرولر مينيجر، شيڊولر، ۽ پوء تي آهي. اهي سڀئي ماڻهو هڪ ئي وقت غير ضروري، بيوقوف ڪم ڪرڻ شروع ڪندا، جيڪي وقت سان گڏ وڌيڪ ۽ وڌيڪ وقت وٺڻ شروع ڪندا. سنڀاليندڙ مئنيجر نئون پوڊ ٺاهيندو. شيڊيولر انھن لاءِ نئون نوڊ ڳولڻ جي ڪوشش ڪندو. توھان جلد ئي توھان جي ڪلستر ۾ نون نوڊس مان ختم ٿي ويندا. ڪبرنيٽس ڪلستر سست ۽ سست ڪم ڪرڻ شروع ڪندو.

پر مون اڃا به اڳتي وڌڻ جو فيصلو ڪيو. جئين توهان کي خبر آهي، Kubernetes ۾ هڪ اهڙي شيء آهي جنهن کي خدمت سڏيو ويندو آهي. يقينن، توهان جي ڪلستر ۾ ڊفالٽ طور، گهڻو ڪري، خدمت IP ٽيبل استعمال ڪندي ڪم ڪري ٿي.

جيڪڏهن توهان هڪ بلين پوڊ هلائيندا آهيو، مثال طور، ۽ پوءِ ڪبرنيٽس کي مجبور ڪرڻ لاءِ اسڪرپٽ استعمال ڪريو نيون خدمتون ٺاهڻ لاءِ:

for i in {1..1111111}; do
    kubectl expose deployment test --port 80  
        --overrides="{"apiVersion": "v1", 
           "metadata": {"name": "nginx$i"}}"; 
done 

ڪلستر جي سڀني نوڊس تي، وڌيڪ ۽ وڌيڪ نوان iptables ضابطا ٺاهيا ويندا تقريبا هڪ ئي وقت. ان کان علاوه، هر خدمت لاء هڪ ارب iptables ضابطا ٺاهيا ويندا.

مون هن سڄي شيءَ کي ڪيترن هزارن، ڏهن تائين جانچيو. ۽ مسئلو اهو آهي ته اڳ ۾ ئي هن حد تي اهو ڪافي مسئلو آهي ssh ڪرڻ لاء نوڊ. ڇاڪاڻ ته پيڪٽ، ڪيترن ئي زنجيرن مان گذرڻ، محسوس ڪرڻ شروع ڪن ٿا تمام سٺو نه.

۽ اهو، پڻ، سڀ ڪبرنيٽس جي مدد سان حل ڪيو ويو آهي. اهڙو ڪو وسيلو ڪوٽا اعتراض آهي. ڪلستر ۾ نالن جي جڳھ لاء دستياب وسيلن ۽ شين جو تعداد مقرر ڪري ٿو. اسان Kubernetes ڪلستر جي هر نالي جي جاء تي yaml اعتراض ٺاهي سگهون ٿا. هن اعتراض کي استعمال ڪندي، اسان اهو چئي سگهون ٿا ته اسان وٽ هن نيمس اسپيس لاءِ مخصوص درخواستون ۽ حدون مختص ڪيون ويون آهن، ۽ پوءِ اسان اهو چئي سگهون ٿا ته هن نالي جي جاءِ ۾ 10 خدمتون ۽ 10 پوڊس ٺاهڻ ممڪن آهي. ۽ ھڪڙو ڊولپر گھٽ ۾ گھٽ شام جو پاڻ کي ڇڪي سگھي ٿو. ڪبرنيٽس کيس ٻڌائيندو: ”توهان پنهنجي پوڊ کي ان مقدار تائين نه ٿا ماپي سگهو، ڇاڪاڻ ته وسيلا ڪوٽا کان وڌيڪ آهن. اهو آهي، مسئلو حل. هتي دستاويز.

انهيءَ سلسلي ۾ هڪ مشڪل نقطو اڀري ٿو. توهان محسوس ڪيو ته ڪبرنيٽس ۾ نالي جي جڳهه ٺاهڻ ڪيترو ڏکيو ٿي رهيو آهي. ان کي ٺاهڻ لاء، اسان کي تمام گهڻيون شيون وٺڻ گهرجن.

وسيلن جو ڪوٽا + حد جي حد + RBAC
• نالي جي جڳھ ٺاھيو
• اندر هڪ حد بندي ٺاهيو
• اندر ريسورس ڪوٽا ٺاهيو
• CI لاءِ هڪ سروس اڪائونٽ ٺاهيو
• سي آءِ ۽ استعمال ڪندڙن لاءِ رول بائنڊنگ ٺاهيو
• اختياري طور تي ضروري سروس پوڊ لانچ ڪريو

تنهن ڪري، مان هن موقعي کي وٺڻ چاهيان ٿو منهنجي ترقيات کي حصيداري ڪرڻ لاء. اتي هڪ اهڙي شيء آهي جنهن کي SDK آپريٽر سڏيو ويندو آهي. اهو هڪ طريقو آهي ڪبرنيٽس ڪلستر لاءِ ان لاءِ آپريٽر لکڻ لاءِ. توهان جوابي استعمال ڪندي بيان لکي سگهو ٿا.

پهرين ته اهو جوابي ۾ لکيو ويو هو، ۽ پوء مون ڏٺو ته اتي هڪ SDK آپريٽر هو ۽ جوابي ڪردار کي آپريٽر ۾ ٻيهر لکيو. هي بيان توهان کي اجازت ڏئي ٿو ڪوبرنيٽس ڪلستر ۾ هڪ اعتراض ٺاهي جنهن کي حڪم سڏيو ويندو آهي. هڪ حڪم جي اندر، اهو توهان کي اجازت ڏئي ٿو ته ماحول کي بيان ڪرڻ لاء هن حڪم لاء yaml ۾. ۽ ٽيم جي ماحول ۾، اهو اسان کي بيان ڪرڻ جي اجازت ڏئي ٿو ته اسان تمام گهڻا وسيلا مختص ڪري رهيا آهيون.

ٿورڙو هن سڄي پيچيده عمل کي آسان بڻائي.

۽ نتيجي ۾. ان سڀ سان ڇا ڪجي؟
پهريون. پوڊ سيڪيورٽي پاليسي سٺي آهي. ۽ ان حقيقت جي باوجود ته ڪوبرنيٽس انسٽالر اڄ ڏينهن تائين انهن کي استعمال نٿا ڪن، توهان کي اڃا تائين انهن کي پنهنجي ڪلستر ۾ استعمال ڪرڻ جي ضرورت آهي.

نيٽ ورڪ پاليسي صرف هڪ ٻي غير ضروري خصوصيت ناهي. اھو اھو آھي جيڪو واقعي ھڪڙي ڪلستر ۾ گھربل آھي.

LimitRange/ResourceQuota - اھو وقت آھي ان کي استعمال ڪرڻ جو. اسان هڪ ڊگهو وقت اڳ استعمال ڪرڻ شروع ڪيو، ۽ هڪ ڊگهي وقت تائين مون کي پڪ هئي ته هرڪو ان کي استعمال ڪري رهيو هو. اهو ظاهر ٿيو ته اهو نادر آهي.

ان کان علاوه جيڪو مون رپورٽ دوران ذڪر ڪيو آهي، اتي غير دستاويزي خاصيتون آهن جيڪي توهان کي ڪلستر تي حملو ڪرڻ جي اجازت ڏين ٿيون. تازو جاري ڪيو ويو ڪبرنيٽس جي ڪمزورين جو وسيع تجزيو.

ڪجهه شيون تمام اداس ۽ ڏکوئيندڙ آهن. مثال طور، ڪجهه شرطن جي تحت، ڪبرنيٽس ڪلستر ۾ ڪوبيليٽ وارن لاڪ ڊاريڪٽري جي مواد کي غير مجاز استعمال ڪندڙ کي ڏئي سگھن ٿا.

تُوت هتي هدايتون آهن ته ڪيئن ٻيهر پيدا ڪجي هر شي کي مون توهان کي ٻڌايو. هتي فائلون آهن پيداوار جي مثالن سان جيڪي ريسورس ڪوٽا ۽ پوڊ سيڪيورٽي پاليسي نظر اچن ٿا. ۽ توهان اهو سڀ ڪجهه ڇڪي سگهو ٿا.

سڀني جي مهرباني.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو