k8s لاءِ پيداوار لاءِ تيار تصويرون

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

k8s لاءِ پيداوار لاءِ تيار تصويرون

اسان fintech ڪمپني Exness مان آهيون، جيڪا B2B ۽ B2C لاءِ آن لائين واپار ۽ fintech پروڊڪٽس لاءِ خدمتون تيار ڪري ٿي. اسان جي آر اينڊ ڊي وٽ ڪيتريون ئي مختلف ٽيمون آهن، ترقي کاتي ۾ 100+ ملازم آهن.

اسان ان ٽيم جي نمائندگي ڪريون ٿا جيڪا اسان جي ڊولپرز لاءِ ڪوڊ گڏ ڪرڻ ۽ هلائڻ لاءِ پليٽ فارم جي ذميوار آهي. خاص طور تي، اسان ايپليڪيشنن مان ميٽرڪس، لاگز، ۽ واقعن کي گڏ ڪرڻ، اسٽوريج ۽ رپورٽ ڪرڻ جا ذميوار آهيون. اسان في الحال تقريباً ٽي هزار Docker ڪنٽينرز کي پيداوار واري ماحول ۾ هلائيندا آهيون، اسان جي 50 TB وڏي ڊيٽا اسٽوريج کي برقرار رکون ٿا، ۽ تعميراتي حل فراهم ڪندا آهيون جيڪي اسان جي انفراسٽرڪچر جي چوڌاري ٺهيل آهن: ڪبرنيٽس، رينچر، ۽ مختلف پبلڪ ڪلائوڊ فراهم ڪندڙ. 

اسان جي motivation

ڇا جلي رهيو آهي؟ ڪو به جواب نٿو ڏئي سگهي. چرٻي ڪٿي آهي؟ اهو سمجهڻ ڏکيو آهي. ان کي باهه ڪڏهن لڳي؟ توهان ڳولي سگهو ٿا، پر فوري طور تي نه. 

k8s لاءِ پيداوار لاءِ تيار تصويرون

ڪجهه ڪنٽينر ڇو بيٺا آهن جڏهن ته ٻيا ڪري پيا آهن؟ ڪهڙو ڪنٽينر الزام هو؟ سڀ کان پوء، ڪنٽينرز جي ٻاهران ساڳيا آهن، پر هر هڪ اندر ان جي پنهنجي نو آهي.

k8s لاءِ پيداوار لاءِ تيار تصويرون

اسان جا ڊولپر قابل ماڻهو آهن. اهي سٺيون خدمتون ٺاهيندا آهن جيڪي ڪمپني کي منافعو آڻيندا آهن. پر اتي ناڪاميون آھن جڏھن ڪنٽينرز سان ايپليڪيشنون گمراھ ٿيون. هڪ ڪنٽينر تمام گهڻو سي پي يو استعمال ڪري ٿو، ٻيو نيٽ ورڪ استعمال ڪري ٿو، ٽيون استعمال ڪري ٿو I / O آپريشن، ۽ چوٿين مڪمل طور تي واضح ناهي ته اهو ساکٽ سان ڇا ڪندو آهي. اهو سڀ ڪري ٿو ۽ ٻيڙي ٻڏي. 

ايجنٽ

اهو سمجهڻ لاءِ ته اندر ڇا ٿي رهيو آهي، اسان ايجنٽن کي سڌو ڪنٽينرن ۾ رکڻ جو فيصلو ڪيو.

k8s لاءِ پيداوار لاءِ تيار تصويرون

اهي ايجنٽ پروگرامن کي روڪي رهيا آهن جيڪي ڪنٽينرز کي اهڙي حالت ۾ رکندا آهن ته اهي هڪ ٻئي کي ٽوڙي نه سگھندا آهن. ايجنٽ معياري آهن، ۽ هي ڪنٽينرز جي خدمت ڪرڻ لاء معياري طريقي جي اجازت ڏئي ٿو. 

اسان جي صورت ۾، ايجنٽن کي لازمي طور لاگ مهيا ڪرڻ گهرجن معياري شڪل ۾، ٽيگ ٿيل ۽ ٺھيل. انهن کي اسان کي معياري ميٽرڪ پڻ مهيا ڪرڻ گهرجي جيڪي ڪاروباري ايپليڪيشن جي نقطه نظر کان وسعت وارا آهن.

ايجنٽ جو مطلب پڻ آپريشن ۽ سار سنڀال لاءِ افاديت جيڪي مختلف آرڪيسٽريشن سسٽم ۾ ڪم ڪري سگھن ٿيون جيڪي مختلف تصويرن کي سپورٽ ڪن ٿيون (ديبين، الپائن، سينٽوس، وغيره).

آخرڪار، ايجنٽن کي سادو CI/CD کي سپورٽ ڪرڻ گهرجي جنهن ۾ Docker فائلون شامل آهن. ٻي صورت ۾، ٻيڙي ڌار ٿي ويندي، ڇاڪاڻ ته ڪنٽينرز کي "ڏکڻ" ريل سان پهچائڻ شروع ڪيو ويندو.

تعمير عمل ۽ ٽارگيٽ تصوير جي ڊوائس

هر شي کي معياري ۽ منظم رکڻ لاء، ڪجهه قسم جي معياري تعمير جي عمل جي پيروي ڪرڻ جي ضرورت آهي. تنهن ڪري، اسان ڪنٽينرز ذريعي ڪنٽينرز گڏ ڪرڻ جو فيصلو ڪيو - اهو ٻيهر آهي.

k8s لاءِ پيداوار لاءِ تيار تصويرون

هتي ڪنٽينرز کي مضبوط خاڪو جي نمائندگي ڪري ٿو. ساڳئي وقت، انهن ۾ تقسيم کٽ رکڻ جو فيصلو ڪيو ته جيئن "زندگي راسبري وانگر نه لڳي." اهو ڇو ڪيو ويو، اسان هيٺ بيان ڪنداسين.
 
نتيجو هڪ تعمير وارو اوزار آهي- هڪ نسخي-مخصوص ڪنٽينر جيڪو حوالو ڏئي ٿو مخصوص تقسيم ورزن ۽ مخصوص اسڪرپٽ ورزن.

اسان ان کي ڪيئن استعمال ڪريون ٿا؟ اسان وٽ هڪ Docker Hub آهي جنهن ۾ هڪ ڪنٽينر آهي. اسان ان کي اسان جي سسٽم جي اندر آئيني طور تي خارجي انحصار کان نجات حاصل ڪرڻ لاء. نتيجو هڪ ڪنٽينر پيلي ۾ نشان لڳل آهي. اسان سڀني تقسيم ۽ اسڪرپٽ کي نصب ڪرڻ لاء هڪ ٽيمپليٽ ٺاهيو جيڪو اسان کي ڪنٽينر ۾ گهربل آهي. ان کان پوء، اسان هڪ استعمال ڪرڻ لاء تيار تصوير گڏ ڪريون ٿا: ڊولپرز ان ۾ ڪوڊ ۽ ڪجهه خاص انحصار شامل آهن. 

هن طريقي جي باري ۾ ڇا سٺو آهي؟ 

  • پهريون، تعميراتي اوزار جو مڪمل نسخو ڪنٽرول - تعمير ڪنٽينر، اسڪرپٽ ۽ تقسيم ورزن. 
  • ٻيو، اسان معيار کي حاصل ڪيو آهي: اسان ساڳئي طريقي سان ٽيمپليٽ، وچولي ۽ استعمال لاء تيار تصوير ٺاهيندا آهيون. 
  • ٽيون، ڪنٽينرز اسان کي پورائيزيشن ڏين ٿا. اڄ اسان Gitlab استعمال ڪريون ٿا، ۽ سڀاڻي اسان ٽيم سٽي يا جينڪنز ڏانهن سوئچ ڪنداسين ۽ اسان اسان جي ڪنٽينرز کي ساڳئي طريقي سان هلائي سگهنداسين. 
  • چوٿون، انحصار کي گھٽائڻ. اهو ڪو اتفاق نه هو ته اسان ڪنٽينر ۾ تقسيم کٽ رکيا، ڇاڪاڻ ته اهو اسان کي هر وقت انٽرنيٽ تان ڊائون لوڊ ڪرڻ کان بچڻ جي اجازت ڏئي ٿو. 
  • پنجون، تعمير جي رفتار وڌي وئي آهي - تصويرن جي مقامي ڪاپي جي موجودگي توهان کي ڊائون لوڊ ڪرڻ تي وقت ضايع ڪرڻ کان بچڻ جي اجازت ڏئي ٿي، ڇاڪاڻ ته اتي هڪ مقامي تصوير آهي. 

ٻين لفظن ۾، اسان هڪ ڪنٽرول ۽ لچڪدار اسيمبليء جو عمل حاصل ڪيو آهي. اسان ساڳيو اوزار استعمال ڪندا آهيون ڪنهن به مڪمل ورزن ٿيل ڪنٽينر ٺاهڻ لاءِ. 

اسان جي تعمير جو طريقو ڪيئن ڪم ڪري ٿو

k8s لاءِ پيداوار لاءِ تيار تصويرون

اسيمبلي هڪ حڪم سان شروع ڪيو ويو آهي، اهو عمل تصوير ۾ جاري ڪيو ويو آهي (ڳاڙهي ۾ نمايان ٿيل). ڊولپر وٽ هڪ Docker فائل آهي (پيلو رنگ ۾ نمايان ٿيل)، اسان ان کي رينڊر ڪريون ٿا، قدرن سان متغير کي تبديل ڪندي. ۽ رستي ۾ اسان هيڊر ۽ فوٽر شامل ڪندا آهيون - اهي اسان جا ايجنٽ آهن. 

هيڊر لاڳاپيل تصويرن مان تقسيم شامل ڪري ٿو. ۽ فوٽر اسان جي خدمتن کي اندر اندر انسٽال ڪري ٿو، ڪم لوڊ، لاگنگ ۽ ٻين ايجنٽ جي لانچ کي ترتيب ڏئي ٿو، داخلا پوائنٽ کي تبديل ڪري ٿو، وغيره. 

k8s لاءِ پيداوار لاءِ تيار تصويرون

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

جيئن ته اسان مختلف آرڪيسٽريشن سسٽم استعمال ڪندا آهيون، تعمير ڪرڻ ۽ هلائڻ کان پوء، ڪنٽينر کي سمجهڻ گهرجي ته اهو ڪهڙي ماحول ۾ آهي ۽ صورتحال جي مطابق عمل ڪري ٿو. مثال طور:
هي اسان کي هڪ تصوير ٺاهڻ جي اجازت ڏئي ٿو ۽ ان کي مختلف آرڪيسٽريشن سسٽم ۾ هلائڻ جي اجازت ڏئي ٿو، ۽ اهو شروع ڪيو ويندو هن آرڪيسٽريشن سسٽم جي خاصيتن کي مدنظر رکندي.

 k8s لاءِ پيداوار لاءِ تيار تصويرون

ساڳئي ڪنٽينر لاءِ اسان ڊاڪر ۽ ڪبرنيٽس ۾ مختلف پروسيس جا وڻ حاصل ڪندا آهيون:

k8s لاءِ پيداوار لاءِ تيار تصويرون

پيل لوڊ S6 جي نگراني هيٺ ڪيو ويو آهي. ڪليڪٽر ۽ واقعن تي ڌيان ڏيو - اهي لاگ ۽ ميٽرڪ جا ذميوار اسان جا ايجنٽ آهن. ڪبرنيٽس وٽ اهي ناهن، پر ڊاڪر وٽ آهي. ڇو؟ 

جيڪڏهن اسان ”پوڊ“ جي وضاحت تي نظر وجهون ٿا (هتي - ڪبرنيٽس پوڊ)، اسان ڏسنداسين ته واقعن جو ڪنٽينر هڪ پوڊ ۾ لڳايو ويو آهي، جنهن ۾ هڪ الڳ ڪليڪٽر ڪنٽينر هوندو آهي جيڪو ميٽرڪس ۽ لاگ گڏ ڪرڻ جو ڪم سرانجام ڏيندو آهي. اسان ڪبرنيٽس جون صلاحيتون استعمال ڪري سگھون ٿا: ھڪڙي پوڊ ۾ ڪنٽينرز کي هلائڻ، ھڪڙي عمل ۾ ۽ / يا نيٽ ورڪ جي جڳھ ۾. اصل ۾ پنهنجو ايجنٽ متعارف ڪرايو ۽ ڪجهه ڪم انجام ڏيو. ۽ جيڪڏھن اھو ساڳيو ڪنٽينر ڊاڪر ۾ لانچ ڪيو ويو آھي، اھو حاصل ڪندو ساڳيون صلاحيتون ٻاھرين جي طور تي، اھو آھي، اھو لاگ ۽ ميٽرڪ پهچائڻ جي قابل ھوندو، ڇو ته ايجنٽ اندروني طور تي لانچ ڪيا ويندا. 

ميٽرڪ ۽ لاگ

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

ٻيو پاسو لاگن جي مقدار کي محدود ڪرڻ آهي. جيڪڏهن لاگز جي مقدار ۾ اضافو ڪيترن ئي ڪنٽينرز ۾ ٿئي ٿو (ايپليڪيشن لوپ ۾ اسٽيڪ-ٽريس ڪڍي ٿو)، سي پي يو، ڪميونيڪيشن چينلز، ۽ لاگ پروسيسنگ سسٽم تي لوڊ وڌائي ٿو، ۽ اهو ميزبان جي آپريشن کي متاثر ڪري ٿو. سڄو ۽ ٻيا ڪنٽينر ميزبان تي، پوءِ ڪڏهن ڪڏهن هي ميزبان جي ”گرڻ“ جو سبب بڻجي ٿو. 

ٽيون پاسو اهو آهي ته اهو ضروري آهي ته باڪس کان ٻاهر ممڪن طور تي ڪيترن ئي ميٽرڪ گڏ ڪرڻ جي طريقن کي سپورٽ ڪرڻ. فائلون پڙهڻ ۽ پولنگ Prometheus-endpoint کان وٺي ايپليڪيشن مخصوص پروٽوڪول استعمال ڪرڻ تائين.

۽ آخري پاسو وسيلن جي استعمال کي گھٽائڻ آھي.

اسان چونڊيو هڪ اوپن سورس Go حل جنهن کي ٽيليگراف سڏيو ويندو آهي. هي هڪ آفاقي ڪنيڪٽر آهي جيڪو سپورٽ ڪري ٿو 140 کان وڌيڪ قسمن جي ان پٽ چينلز (ان پٽ پلگ ان) ۽ 30 قسمن جا آئوٽ پٽ چينلز (آئوٽ پٽ پلگ ان). اسان ان کي حتمي شڪل ڏني آهي ۽ هاڻي اسان توهان کي ٻڌائينداسين ته اسان ڪبرنيٽس کي مثال طور استعمال ڪندي ان کي ڪيئن استعمال ڪندا آهيون. 

k8s لاءِ پيداوار لاءِ تيار تصويرون

اچو ته چوندا آهن هڪ ڊولپر ڪم لوڊ لوڊ ڪري ٿو ۽ ڪبرنيٽس هڪ پوڊ ٺاهڻ جي درخواست وصول ڪري ٿو. هن نقطي تي، ڪليڪٽر نالي هڪ ڪنٽينر هر پوڊ لاء خودڪار طور تي ٺاهيو ويندو آهي (اسان ميوٽيشن ويب هوڪ استعمال ڪندا آهيون). ڪليڪٽر اسان جو ايجنٽ آهي. شروعات ۾، هي ڪنٽينر پاڻ کي پروميٿيوس ۽ لاگ گڏ ڪرڻ واري نظام سان ڪم ڪرڻ لاءِ ترتيب ڏئي ٿو.

  • ائين ڪرڻ لاءِ، اهو پوڊ تشريح استعمال ڪري ٿو، ۽ ان جي مواد تي منحصر ڪري ٿو، ٺاهي ٿو، چئو، هڪ پروميٿيس آخري پوائنٽ؛ 
  • پوڊ جي وضاحت ۽ مخصوص ڪنٽينر سيٽنگن جي بنياد تي، اهو فيصلو ڪري ٿو ته ڪيئن لاگ ان کي پهچائڻ.

اسان Docker API ذريعي لاگ گڏ ڪندا آهيون: ڊولپرز کي صرف انهن کي stdout يا stderr ۾ رکڻو پوندو، ۽ ڪليڪٽر ان کي ترتيب ڏيندو. لاگز کي ڪجهه دير سان ٽڪر ۾ گڏ ڪيو ويو آهي ممڪن ميزبان اوورلوڊ کي روڪڻ لاء. 

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

  • لاگز گريلوگ ۾ موجود آهن (بصري تجزيي لاءِ)؛
  • لاگ، ميٽرڪ، واقعا موڪليا ويا آهن ڪلڪ هائوس ڏانهن ڊگهي مدت اسٽوريج لاء.

AWS ۾ سڀ ڪجھ ساڳيو ڪم ڪري ٿو، صرف اسان گريلوگ کي ڪافڪا سان Cloudwatch سان تبديل ڪريون ٿا. اسان اتي لاگ موڪليندا آهيون، ۽ هر شيء بلڪل آسان ٿي ويندي آهي: اهو فوري طور تي واضح آهي ته اهي ڪهڙي ڪلستر ۽ ڪنٽينر سان تعلق رکن ٿا. ساڳيو ئي گوگل اسٽيڪ ڊرائيور لاءِ صحيح آهي. اهو آهي، اسان جي اسڪيم ٻنهي بنيادن تي ڪافڪا ۽ ڪلائوڊ ۾ ڪم ڪري ٿي. 

جيڪڏهن اسان وٽ پوڊ سان ڪبرنيٽس نه آهن، اهو منصوبو ٿورو وڌيڪ پيچيده آهي، پر اهو ساڳيو اصولن تي ڪم ڪري ٿو.

k8s لاءِ پيداوار لاءِ تيار تصويرون

ساڳيا عمل ڪنٽينر اندر جاري ڪيا ويا آهن، اهي S6 استعمال ڪندي ترتيب ڏنل آهن. سڀ ساڳيا عمل ساڳيا ڪنٽينر اندر هلندا آهن.

آخر ۾

اسان تصويرن جي تعمير ۽ لانچ ڪرڻ لاءِ مڪمل حل ٺاھيو آھي، لاگ ۽ ميٽرڪ گڏ ڪرڻ ۽ پهچائڻ لاءِ اختيارن سان:

  • اسان تصويرن کي گڏ ڪرڻ لاءِ هڪ معياري طريقو ٺاهيو، ۽ ان جي بنياد تي اسان سي آءِ ٽيمپليٽس ٺاهيا.
  • ڊيٽا گڏ ڪرڻ جا ايجنٽ اسان جا ٽيليگراف ايڪسٽينشن آهن. اسان انهن کي پيداوار ۾ چڱي طرح آزمايو؛
  • اسان ميوٽيشن ويب هِڪ استعمال ڪريون ٿا ڪنٽينرز کي پوڊز ۾ ايجنٽن سان لاڳو ڪرڻ لاءِ؛ 
  • Kubernetes / Rancher ecosystem ۾ ضم ٿيل؛
  • اسان ساڳيون ڪنٽينرز کي مختلف آرڪيسٽريشن سسٽم ۾ هلائي سگهون ٿا ۽ نتيجو حاصل ڪري سگهون ٿا جيڪو اسان جي توقع آهي؛
  • مڪمل طور تي متحرڪ ڪنٽينر مينيجمينٽ جي ٺاھ جوڙ ٺاھيو. 

شريڪ ليکڪ: Ilya Prudnikov

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

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