DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

ڪلستر ٿيل پيداوار واري ماحول ۾ ڊڪر ڪنٽينرز کي هلائڻ لاءِ ڪبرنيٽس هڪ بهترين اوزار آهي. بهرحال، اهڙا مسئلا آهن جيڪي ڪبرنيٽس حل نٿا ڪري سگهن. بار بار پيداوار جي ترتيبن لاءِ، اسان کي مڪمل طور تي خودڪار ٿيل بليو/گرين ڊيپلائيمينٽ جي ضرورت آهي ته جيئن عمل ۾ دير ٿيڻ کان بچڻ لاءِ، جنهن کي خارجي HTTP درخواستن کي سنڀالڻ ۽ SSL آف لوڊ ڪرڻ جي پڻ ضرورت آهي. ان لاءِ لوڊ بيلنس سان انضمام جي ضرورت آهي جهڙوڪ ها-پراڪسي. هڪ ٻيو چيلنج آهي نيم خودڪار اسڪيلنگ ڪبرنيٽس ڪلسٽر جي خود جڏهن ڪلائوڊ ماحول ۾ هلندي آهي، مثال طور رات جي وقت ڪلستر کي جزوي طور تي اسڪيل ڪرڻ.

جڏهن ته ڪبرنيٽس وٽ اهي خاصيتون نه آهن دٻي کان ٻاهر، اهو هڪ API مهيا ڪري ٿو جيڪو توهان ساڳئي مسئلن کي حل ڪرڻ لاء استعمال ڪري سگهو ٿا. اوزار خودڪار بليو/گرين ڊيپلائيمينٽ لاءِ ۽ ڪبرنيٽس ڪلسٽر جي اسڪيلنگ کي ڪلائوڊ RTI پروجيڪٽ جي حصي طور تيار ڪيو ويو، جيڪو اوپن سورس جي بنياد تي ٺاهيو ويو.

هي آرٽيڪل، هڪ وڊيو ٽرانسڪرپٽ، توهان کي ڏيکاري ٿو ته ڪبرنيٽس کي ٻين اوپن سورس اجزاء سان گڏ هڪ پيداوار لاءِ تيار ماحول پيدا ڪرڻ لاءِ جيڪو ڪوڊ قبول ڪري ٿو گٽ ڪمٽ کان بغير پيداوار ۾ وقت جي.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 1

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

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

Kubernetes ھڪڙو اوزار نه آھي جنھن کي باڪس مان پيداوار طور استعمال ڪري سگھجي ٿو. يقينا، توهان اهو ڪري سگهو ٿا، استعمال ڪريو kubectl وغيره، پر اڃا تائين API هن پليٽ فارم بابت سڀ کان وڌيڪ دلچسپ ۽ مفيد شيء آهي. API کي فنڪشن جي سيٽ جي طور تي استعمال ڪندي، توهان تقريبا هر شي تائين رسائي ڪري سگهو ٿا جيڪو توهان ڪرڻ چاهيو ٿا Kubernetes ۾. kubectl پاڻ پڻ استعمال ڪري ٿو REST API.

هي REST آهي، تنهنڪري توهان هن API سان ڪم ڪرڻ لاءِ ڪا به ٻولي يا اوزار استعمال ڪري سگهو ٿا، پر ڪسٽم لائبريرين ذريعي توهان جي زندگي تمام گهڻي آسان ٿي ويندي. منهنجي ٽيم لکي 2 اهڙيون لائبريريون: هڪ جاوا/OSGi لاءِ ۽ هڪ لاءِ Go. ٻيو اڪثر استعمال نه ڪيو ويندو آهي، پر ڪنهن به صورت ۾ توهان وٽ اهي مفيد شيون توهان جي اختيار ۾ آهن. اهي هڪ جزوي طور لائسنس يافته اوپن سورس پروجيڪٽ آهن. مختلف ٻولين لاءِ ڪيتريون ئي اهڙيون لائبريريون آهن، تنهنڪري توهان انهن مان چونڊ ڪري سگهو ٿا جيڪي توهان لاءِ مناسب هجن.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

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

اھو ھڪڙو سبب آھي ڇو ته اسان پنھنجي ايپليڪيشنن جي ترتيب کي خودڪار ڪرڻ لاء نيري / سائي جي ترتيب کي استعمال ڪرڻ پسند ڪندا آھيون. هن طريقي سان، توهان کي پڪ ڪرڻ گهرجي ته ايپليڪيشن جو صرف هڪ نسخو هڪ وقت ۾ فعال آهي.

نيري / سائي جي ترتيب واري ميڪانيزم هن وانگر ڏسڻ ۾ اچي ٿي. اسان ha-proxy ذريعي اسان جي ايپليڪيشنن لاءِ ٽريفڪ وصول ڪندا آهيون، جيڪو ان کي اڳتي وڌائي ٿو ساڳي ورزن جي ايپليڪيشن جي نقلن تي.

جڏهن هڪ نئين ترتيب ڏني وئي آهي، اسان استعمال ڪريون ٿا Deployer، جيڪو نئون اجزاء ڏنو ويو آهي ۽ نئين ورزن کي ترتيب ڏئي ٿو. ايپليڪيشن جي نئين ورزن کي ترتيب ڏيڻ جو مطلب اهو آهي ته نقلن جو هڪ نئون سيٽ "اٿاريو" آهي، جنهن کان پوء نئين نسخن جي اهي نقل هڪ الڳ، نئين پوڊ ۾ شروع ڪيا ويا آهن. بهرحال، ha-proxy انهن جي باري ۾ ڪجھ به نه ڄاڻي ٿو ۽ اڃا تائين انهن ڏانهن ڪو به ڪم لوڊ نه ٿو ڪري.

تنهن ڪري، سڀ کان پهريان، اهو ضروري آهي ته صحت جي چڪاس جي نئين نسخن جي ڪارڪردگي جي جانچ کي يقيني بڻائڻ لاء انهي کي يقيني بڻائي سگهجي ته نقلون لوڊ خدمت ڪرڻ لاء تيار آهن.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

سڀني تعیناتي اجزاء کي صحت جي جانچ جي ڪجهه فارم جي حمايت ڪرڻ گهرجي. هي هڪ تمام سادو HTTP ڪال چيڪ ٿي سگهي ٿو، جڏهن توهان اسٽيٽس 200 سان ڪوڊ وصول ڪندا آهيو، يا هڪ وڌيڪ گہرا چيڪ، جنهن ۾ توهان چيڪ ڪريو ٿا ريپليڪس جي ڪنيڪشن کي ڊيٽابيس ۽ ٻين خدمتن سان، متحرڪ ماحول جي ڪنيڪشن جي استحڪام. ، ۽ ڇا سڀ ڪجھ شروع ٿئي ٿو ۽ صحيح ڪم ڪري ٿو. اهو عمل ڪافي پيچيده ٿي سگهي ٿو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

سسٽم جي تصديق ڪرڻ کان پوءِ ته سڀئي تازه ڪاريون ڪم ڪري رهيون آهن، ڊوليئر ترتيبن کي اپڊيٽ ڪندو ۽ صحيح ڪانفڊ پاس ڪندو، جيڪو ha-proxy کي ٻيهر ترتيب ڏيندو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

صرف ان کان پوء ٽرئفڪ کي نئين نسخي جي نقلن سان پوڊ ڏانهن هدايت ڪئي ويندي، ۽ پراڻو پوڊ غائب ٿي ويندو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

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

ھاڻي مان توھان کي متعارف ڪرايان ٿو ھڪڙي نئين مقرري واري جزو سان - ڊپلوميٽر، جيڪو صحت جي چڪاس کي انجام ڏئي ٿو، پراکسي کي ٻيهر ترتيب ڏئي ٿو، وغيره. اهو هڪ تصور آهي جيڪو ٻاهرئين دنيا تي لاڳو نٿو ٿئي ۽ ڪبرنيٽس جي اندر موجود آهي. مان توهان کي ڏيکاريندس ته توهان اوپن سورس ٽولز استعمال ڪندي پنهنجو ڊولپر تصور ڪيئن ٺاهي سگهو ٿا.

تنهن ڪري، پهرين شيء ڊبلر ٺاهيندو آهي هڪ آر سي ريپليڪشن ڪنٽرولر استعمال ڪندي ڪبرنيٽس API استعمال ڪندي. هي API وڌيڪ ترتيب ڏيڻ لاءِ پوڊ ۽ خدمتون ٺاهي ٿو، اهو آهي، اهو اسان جي ايپليڪيشنن لاءِ مڪمل طور تي نئون ڪلستر ٺاهي ٿو. جيئن ئي آر سي کي يقين ڏياريو ويو آهي ته نقل شروع ٿي چڪا آهن، اهو انهن جي ڪارڪردگي تي صحت جي جانچ ڪندو. هن کي ڪرڻ لاء، ڊولپر استعمال ڪري ٿو GET /health حڪم. اهو مناسب اسڪين اجزاء کي هلائي ٿو ۽ سڀني عناصر کي چيڪ ڪري ٿو جيڪي ڪلستر جي آپريشن کي سپورٽ ڪن ٿا.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

سڀني پوڊس پنهنجي صحت جي خبر ڏيڻ کان پوءِ، ڊولپر هڪ نئون ڪنفيگريشن عنصر ٺاهي ٿو - etcd تقسيم ٿيل اسٽوريج، جيڪو اندروني طور استعمال ڪيو ويندو آهي ڪبرنيٽس، بشمول لوڊ بيلنس جي ترتيب کي محفوظ ڪرڻ. اسان ڊيٽا کي etcd ڏانهن لکندا آهيون، ۽ هڪ ننڍڙو اوزار جنهن کي confd مانيٽر وغيره سڏيو ويندو آهي نئين ڊيٽا لاء.

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

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

جئين توهان ڏسي سگهو ٿا، اجزاء جي گهڻائي جي باوجود، هتي ڪجھ به پيچيده ناهي. توهان کي صرف API ۽ وغيره تي وڌيڪ ڌيان ڏيڻ جي ضرورت آهي. مان توهان کي اوپن سورس ڊپلائر بابت ٻڌائڻ چاهيان ٿو جيڪو اسان پاڻ استعمال ڪندا آهيون - Amdatu Kubernetes Deployer.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

اهو Kubernetes جي ترتيب ڏيڻ لاء هڪ اوزار آهي ۽ هيٺيون خاصيتون آهن:

  • نيرو / سائو لڳائڻ؛
  • هڪ ٻاهرين لوڊ بيلنس قائم ڪرڻ؛
  • مقرري بيان ڪندڙ انتظام؛
  • حقيقي تعیناتي کي منظم ڪرڻ؛
  • تعیناتي دوران صحت جي چڪاس جي ڪارڪردگي جي جانچ ڪندي؛
  • پوڊز ۾ ماحولياتي متغيرن کي لاڳو ڪرڻ.

هي ڊيپلائير Kubernetes API جي چوٽي تي ٺهيل آهي ۽ هڪ REST API مهيا ڪري ٿو انتظام ڪرڻ ۽ ترتيب ڏيڻ لاءِ، انهي سان گڏ هڪ Websocket API لاءِ اسٽريمنگ لاگز لاءِ ڊيپلائيمينٽ جي عمل دوران.

اهو لوڊ بيلنس جي ترتيب واري ڊيٽا کي etcd ۾ رکي ٿو، تنهنڪري توهان کي ها-پراڪسي استعمال ڪرڻ جي ضرورت نه آهي آئوٽ آف دي باڪس سپورٽ سان، پر آساني سان استعمال ڪريو توهان جي پنهنجي لوڊ بيلنس جي ترتيب واري فائيل. Amdatu Deployer Go ۾ لکيل آهي، جهڙوڪ ڪبرنيٽس پاڻ، ۽ Apache طرفان لائسنس يافته آهي.

ان کان اڳ جو مان استعمال ڪرڻ شروع ڪريان هن ورجن کي ڊبلائير جي، مون استعمال ڪيو هيٺ ڏنل ڊيپلائيمينٽ ڊسڪرپٽر، جيڪو وضاحت ڪري ٿو ته مون کي گهربل پيٽرولر.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

ھن ڪوڊ جي ھڪ اھم پيٽرول کي فعال ڪرڻ آھي ”استعمال صحت چيڪ“ جھنڊو. اسان کي واضع ڪرڻ جي ضرورت آهي ته مقرري جي عمل دوران هڪ صفائي چيڪ ڪيو وڃي. ھن سيٽنگ کي غير فعال ڪري سگھجي ٿو جڏھن مقرري ٽئين پارٽي ڪنٽينرز کي استعمال ڪري ٿي جن کي تصديق ڪرڻ جي ضرورت ناھي. هي بيان ڪندڙ پڻ نقلن جو تعداد ۽ فرنٽ اينڊ URL جو اشارو ڏئي ٿو جيڪو ha-proxy جي ضرورت آهي. آخر ۾ پوڊ جي وضاحت جو جھنڊو ”پوڊ اسپيڪ“ آھي، جيڪو ڪبرنيٽس کي سڏي ٿو بندرگاھ جي ترتيب، تصوير وغيره تي معلومات لاءِ. هي هڪ بلڪل سادو JSON بيان ڪندڙ آهي.

ٻيو اوزار جيڪو اوپن سورس Amdatu منصوبي جو حصو آهي Deploymentctl. اهو هڪ UI آهي ترتيب ڏيڻ لاءِ ترتيب ڏيڻ لاءِ، ذخيرو ڪرڻ جي تاريخ، ۽ ٽئين پارٽي جي استعمال ڪندڙن ۽ ڊولپرز کان ڪال بڪ لاءِ ويب هِڪ تي مشتمل آهي. توھان UI استعمال نٿا ڪري سگھو ڇو ته Amdatu Deployer بذات خود ھڪڙو REST API آھي، پر ھي انٽرفيس توھان جي لاءِ بغير ڪنھن API کي شامل ڪرڻ جي عمل کي تمام آسان بڻائي سگھي ٿو. Deploymentctl Angular 2 استعمال ڪندي OSGi/Vertx ۾ لکيل آهي.

مان ھاڻي مٿي ڏيکاريندس اسڪرين تي اڳ ۾ ٿيل رڪارڊنگ استعمال ڪندي تنھنڪري توھان کي انتظار نه ڪرڻو پوندو. اسان هڪ سادي گو ايپليڪيشن کي ترتيب ڏينداسين. پريشان نه ٿيو جيڪڏهن توهان اڳ ۾ وڃڻ جي ڪوشش نه ڪئي آهي، اها هڪ تمام سادي ايپليڪيشن آهي تنهنڪري توهان کي ان کي سمجهڻ جي قابل هوندو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

هتي اسان هڪ HTTP سرور ٺاهي رهيا آهيون جيڪو صرف /health جو جواب ڏئي ٿو، تنهنڪري هي ايپليڪيشن صرف صحت جي جانچ جي جانچ ڪري ٿو ۽ ٻيو ڪجهه به ناهي. جيڪڏهن چيڪ گذري ٿو، هيٺ ڏنل ڏيکاريل JSON جوڙجڪ استعمال ڪيو ويندو. ان ۾ ايپليڪيشن جو نسخو شامل آهي جيڪو ڊيپلائيزر طرفان لڳايو ويندو، اهو پيغام جيڪو توهان فائل جي چوٽي تي ڏسندا، ۽ بولين ڊيٽا جو قسم - ڇا اسان جي ايپليڪيشن ڪم ڪري رهي آهي يا نه.

مون آخري لڪير سان ٿورڙي ٺڳي ڪئي، ڇاڪاڻ ته مون فائل جي چوٽي تي هڪ مقرر ٿيل بوليان قيمت رکيل آهي، جيڪا مستقبل ۾ مون کي "غير صحت مند" ايپليڪيشن کي ترتيب ڏيڻ ۾ مدد ڪندي. اسان ان سان بعد ۾ ڊيل ڪنداسين.

سو اچو ته شروع ڪريون. پهريون، اسان ڪمانڊ ~ kubectl get pods استعمال ڪندي ڪنهن به هلندڙ پوڊس جي موجودگي جي جانچ ڪريون ٿا ۽، فرنٽ اينڊ يو آر ايل جي جواب جي غير موجودگي جي بنياد تي، اسان پڪ ڪريون ٿا ته في الحال ڪا به ڊيپلائيمينٽ نه ڪئي پئي وڃي.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

اڳيان اسڪرين تي توھان ڏسندا آھيو Deploymentctl انٽرفيس جو مون ذڪر ڪيو آھي، جنھن ۾ مقرري جا پيرا ميٽر مقرر ڪيا ويا آھن: نالو اسپيس، ايپليڪيشن جو نالو، ڊيپلائيشن ورزن، نقلن جو تعداد، فرنٽ-اينڊ URL، ڪنٽينر جو نالو، تصوير، وسيلن جي حد، صحت جي چڪاس لاءِ پورٽ نمبر، وغيره. وسيلن جون حدون تمام ضروري آهن، جيئن اهي توهان کي هارڊويئر جي وڌ ۾ وڌ ممڪن مقدار کي استعمال ڪرڻ جي اجازت ڏين ٿيون. هتي توهان پڻ ڏسي سگهو ٿا ڊيپلائيمينٽ لاگ.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

جيڪڏھن توھان ھاڻي ورجايو ڪمانڊ ~ kubectl get pods، توھان ڏسي سگھوٿا ته سسٽم 20 سيڪنڊن لاءِ ”منجمد“ ٿي وڃي ٿو، جنھن دوران ha-proxy وري ترتيب ڏني وئي آھي. ان کان پوء، پوڊ شروع ٿئي ٿو، ۽ اسان جي نقل کي ترتيب ڏيڻ واري لاگ ۾ ڏسي سگھجي ٿو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

مون وڊيو مان 20 سيڪنڊن جو انتظار ختم ڪيو، ۽ هاڻي توهان اسڪرين تي ڏسي سگهو ٿا ته ايپليڪيشن جو پهريون نسخو لڳايو ويو آهي. اهو سڀ ڪجهه صرف UI استعمال ڪندي ڪيو ويو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

هاڻي اچو ته ٻيو نسخو آزمائي. هن کي ڪرڻ لاء، آئون ايپليڪيشن جو پيغام تبديل ڪريان ٿو "هيلو، ڪبرنيٽس!" "Hello, Deployer!" تي، سسٽم هن تصوير کي ٺاهي ٿو ۽ ان کي ڊاکر رجسٽري ۾ رکي ٿو، جنهن کان پوء اسان صرف Deploymentctl ونڊو ۾ ٻيهر "تعمير" بٽڻ تي ڪلڪ ڪندا آهيون. انهي صورت ۾، ڊيپلائيمينٽ لاگ خودڪار طريقي سان شروع ڪئي وئي آهي جيئن اهو ٿيو جڏهن ايپليڪيشن جي پهرين ورزن کي ترتيب ڏيڻ.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

ڪمانڊ ~ kubectl get pods ڏيکاري ٿو ته في الحال ايپليڪيشن جا 2 ورجن هلندڙ آهن، پر فرنٽ اينڊ ڏيکاري ٿو ته اسان اڃا تائين 1 ورزن هلائي رهيا آهيون.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

لوڊ بيلنس نئين ورزن ڏانهن ٽرئفڪ کي ريڊائريڪٽ ڪرڻ کان اڳ صحت جي چڪاس مڪمل ٿيڻ جو انتظار ڪري ٿو. 20 سيڪنڊن کان پوءِ، اسان ڪرل ڏانھن وڃون ٿا ۽ ڏسون ٿا ته اسان وٽ ھاڻي ايپليڪيشن جو ورجن 2 ڊيپلائي ڪيو ويو آھي، ۽ پھريون ڊليٽ ڪيو ويو آھي.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

هي هڪ "صحتمند" ايپليڪيشن جي ترتيب هئي. اچو ته ڏسون ڇا ٿيندو جيڪڏهن ايپليڪيشن جي نئين ورزن لاءِ مان Healthy پيٽرولر کي درست کان غلط ۾ تبديل ڪريان، يعني، مان ڪوشش ڪريان ٿو ته هڪ غير صحت بخش ايپليڪيشن کي ترتيب ڏيو جيڪا صحت جي چڪاس ۾ ناڪام ٿي وئي آهي. اهو ٿي سگهي ٿو جيڪڏهن ڪجهه جوڙجڪ غلطيون ايپليڪيشن ۾ ترقي جي مرحلي ۾ ڪيون ويون آهن، ۽ اهو هن فارم ۾ پيداوار ۾ موڪليو ويو.

جئين توهان ڏسي سگهو ٿا، مقرري مٿين سڀني مرحلن ذريعي ٿيندي آهي ۽ ~ kubectl حاصل پوڊ ڏيکاري ٿو ته ٻئي پوڊ هلائي رهيا آهن. پر اڳئين ڊيپلائيمينٽ جي برعڪس، لاگ ان وقت ختم ٿيڻ واري صورتحال کي ڏيکاري ٿو. اهو آهي، حقيقت جي ڪري ته صحت جي چڪاس ناڪام ٿي، ايپليڪيشن جو نئون نسخو ترتيب نه ٿو ڏئي سگهجي. نتيجي طور، توھان ڏسندا آھيو ته سسٽم ايپليڪيشن جي پراڻي ورزن کي استعمال ڪرڻ ڏانھن موٽيو آھي، ۽ نئون ورزن صرف انسٽال ڪيو ويو آھي.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

ان جي باري ۾ سٺي ڳالهه اها آهي ته جيتوڻيڪ توهان وٽ هڪ ئي وقت درخواستن جو هڪ وڏو تعداد ايپليڪيشن ۾ اچي رهيو آهي، انهن کي ڊيپلائيمينٽ جي طريقيڪار تي عمل ڪرڻ دوران دير جو نوٽيس به نه ڏيندو. جيڪڏهن توهان Gatling فريم ورڪ استعمال ڪندي هن ايپليڪيشن کي آزمايو ٿا، جيڪو ان کي موڪلي ٿو جيتريون درخواستون، پوءِ انهن مان ڪنهن به درخواست کي نه ڇڏيو ويندو. هن جو مطلب اهو آهي ته اسان جا صارف اصل وقت ۾ نسخن جي تازه ڪاري کي به نوٽيس نه ڪندا. جيڪڏهن اهو ناڪام ٿئي ٿو، ڪم پراڻي ورزن تي جاري رهندو؛ جيڪڏهن اهو ڪامياب ٿي ويو، صارفين کي نئين ورزن ڏانهن تبديل ڪندا.

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

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

اسان جو بلڊ سرور ڊاڪر تصوير ٺاهيندو، ان کي ڊاڪر حب ۾ يا جيڪو به رجسٽري توهان استعمال ڪندا آهيو. Docker Hub webhook کي سپورٽ ڪري ٿو، تنهن ڪري اسان مٿي ڏيکاريل طريقي سان ڊپليئر ذريعي ريموٽ ڊيپلائيشن کي ٽرگر ڪري سگھون ٿا. اهو طريقو توهان مڪمل طور تي خودڪار ڪري سگهو ٿا توهان جي ايپليڪيشن جي ترتيب کي امڪاني پيداوار ڏانهن.

اچو ته ايندڙ موضوع ڏانهن وڃو - ڪبرنيٽس ڪلستر کي ماپڻ. ياد رهي ته kubectl حڪم هڪ اسڪيلنگ حڪم آهي. وڌيڪ مدد سان، اسان آساني سان اسان جي موجوده ڪلستر ۾ نقلن جو تعداد وڌائي سگھون ٿا. بهرحال، عملي طور تي، اسان عام طور تي پوڊ جي ڀيٽ ۾ نوڊس جو تعداد وڌائڻ چاهيندا آهيون.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

ساڳئي وقت، ڪم ​​جي ڪلاڪن دوران توهان کي وڌائڻ جي ضرورت پوندي، ۽ رات جي وقت، Amazon خدمتن جي قيمت کي گهٽائڻ لاء، توهان کي هلائڻ جي ايپليڪيشن مثالن جو تعداد گهٽائڻ جي ضرورت پوندي. هن جو مطلب اهو ناهي ته صرف پوڊن جو تعداد اسڪيل ڪرڻ ڪافي هوندو، ڇاڪاڻ ته جيتوڻيڪ هڪ نوڊس بيڪار آهي، توهان کي اڃا تائين ادا ڪرڻو پوندو Amazon ان لاءِ. اھو آھي، پوڊ کي ماپڻ سان گڏ، توھان کي استعمال ٿيل مشينن جو تعداد ماپڻ جي ضرورت پوندي.

اهو مشڪل ٿي سگهي ٿو ڇاڪاڻ ته ڇا اسان استعمال ڪريون ٿا Amazon يا ٻي ڪلائوڊ سروس، ڪبرنيٽس استعمال ٿيندڙ مشينن جي تعداد بابت ڪجھ به نه ٿو ڄاڻي. اهو هڪ اوزار ناهي جيڪو توهان کي نوڊ سطح تي سسٽم کي ماپڻ جي اجازت ڏئي ٿو.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

تنهنڪري اسان کي نوڊس ۽ پوڊ ٻنهي جو خيال رکڻو پوندو. اسان آساني سان نون نوڊس جي لانچ کي اسڪيل ڪري سگھون ٿا AWS API ۽ اسڪيلنگ گروپ مشينون استعمال ڪندي ڪبرنيٽس ورڪر نوڊس جي تعداد کي ترتيب ڏيڻ لاءِ. توهان ڪبرنيٽس ڪلستر ۾ نوڊس رجسٽر ڪرڻ لاءِ ڪلائوڊ-انٽ يا ساڳي اسڪرپٽ پڻ استعمال ڪري سگهو ٿا.

نئين مشين اسڪيلنگ گروپ ۾ شروع ٿئي ٿي، پاڻ کي نوڊ طور شروع ڪري ٿي، ماسٽر جي رجسٽري ۾ رجسٽر ٿئي ٿي ۽ ڪم ڪرڻ شروع ڪري ٿي. ان کان پوء، توهان نتيجن جي نوڊس تي استعمال لاء نقلن جو تعداد وڌائي سگهو ٿا. اسڪيلنگ کي گهٽائڻ لاءِ وڌيڪ ڪوشش جي ضرورت آهي، جيئن توهان کي پڪ ڪرڻ جي ضرورت آهي ته اهڙو قدم ”غير ضروري“ مشينن کي بند ڪرڻ کان پوءِ اڳ ۾ ئي هلندڙ ايپليڪيشنن جي تباهي جو سبب نه بڻجي. اهڙي صورتحال کي روڪڻ لاءِ، توهان کي نوڊس کي مقرر ڪرڻ جي ضرورت آهي ”اڻ شيڊول“ جي حالت ۾. هن جو مطلب آهي ته ڊفالٽ شيڊولر انهن نوڊس کي نظرانداز ڪندو جڏهن ڊيمون سيٽ پوڊس کي شيڊول ڪندي. شيڊيولر انهن سرورن مان ڪا به شيءِ حذف نه ڪندو، پر اتي به ڪو نئون ڪنٽينر لانچ نه ڪندو. ايندڙ قدم ڊرين نوڊ کي ختم ڪرڻ آهي، يعني ان مان هلندڙ پوڊز کي ٻي مشين ۾ منتقل ڪرڻ، يا ٻيون نوڊس جيڪي ان لاءِ ڪافي صلاحيت رکن ٿا. هڪ دفعو توهان پڪ ڪيو ته انهن نوڊس تي هاڻي ڪو به ڪنٽينر نه آهن، توهان انهن کي ڪبرنيٽس مان هٽائي سگهو ٿا. ان کان پوء، اهي صرف ڪبرنيٽس لاء موجود آهن. اڳيون، توهان کي استعمال ڪرڻ جي ضرورت آهي AWS API غير ضروري نوڊس يا مشين کي غير فعال ڪرڻ لاء.
توھان استعمال ڪري سگھو ٿا Amdatu Scalerd، ٻيو اوپن سورس اسڪيلنگ جو اوزار AWS API سان ملندڙ جلندڙ آھي. اهو ڪلستر ۾ نوڊس شامل ڪرڻ يا ختم ڪرڻ لاءِ CLI مهيا ڪري ٿو. ان جي دلچسپ خصوصيت ھيٺ ڏنل json فائل استعمال ڪندي شيڊولر کي ترتيب ڏيڻ جي صلاحيت آھي.

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

ڏيکاريل ڪوڊ رات جي عرصي دوران ڪلستر جي گنجائش اڌ کان گھٽ ڪري ٿو. اهو ترتيب ڏئي ٿو ٻنهي نسخن جو تعداد دستياب ۽ ايمازون ڪلستر جي گهربل صلاحيت. هن شيڊولر کي استعمال ڪرڻ سان رات جو پاڻمرادو نوڊس جو تعداد گھٽجي ويندو ۽ صبح جو انھن کي وڌائيندو، Amazon وانگر ڪلائوڊ سروس کان نوڊس استعمال ڪرڻ جي قيمت بچائيندو. هي خصوصيت ڪبرنيٽس ۾ نه ٺهيل آهي، پر اسڪيلرڊ استعمال ڪندي توهان کي اجازت ڏيندو ته توهان هن پليٽ فارم کي ماپ ڪري سگهو ٿا.

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

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

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

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

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

DEVOXX UK. پيداوار ۾ ڪبرنيٽس: بليو / گرين ڊيپلائيمينٽ، آٽو اسڪيلنگ ۽ ڊيپلائيمينٽ آٽوميشن. حصو 2

اتي هڪ سوال هو ڇو ته ڪبرنيٽس سان ها-پراڪسي لوڊ بيلنس استعمال ڪريو. سٺو سوال ڇو ته في الحال لوڊ بيلنس جا 2 ليول آهن. Kubernetes خدمتون اڃا تائين مجازي IP پتي تي رهن ٿيون. توهان انهن کي بندرگاهن لاءِ استعمال نٿا ڪري سگهو ٻاهرين ميزبان مشينن تي ڇاڪاڻ ته جيڪڏهن ايمازون پنهنجي ڪلائوڊ هوسٽ کي اوور لوڊ ڪري ٿي، پتو تبديل ٿي ويندو. اهو ئي سبب آهي ته اسان خدمتن جي سامهون ha-proxy رکون ٿا - ٽريفڪ لاءِ وڌيڪ جامد ڍانچي ٺاهڻ لاءِ ته جيئن Kubernetes سان بيحد گفتگو ڪري سگهجي.

هڪ ٻيو سٺو سوال اهو آهي ته توهان ڊيٽابيس اسڪيما جي تبديلين جو خيال ڪيئن رکي سگهو ٿا جڏهن نيري / گرين ڊيپلائيمينٽ ڪري رهيا آهيو؟ حقيقت اها آهي ته ڪبرنيٽس جي استعمال کان سواء، ڊيٽابيس اسڪيما کي تبديل ڪرڻ هڪ ڏکيو ڪم آهي. توهان کي پڪ ڪرڻ جي ضرورت آهي ته پراڻي ۽ نئين اسڪيما مطابقت رکندڙ آهن، جنهن کان پوء توهان ڊيٽابيس کي اپڊيٽ ڪري سگهو ٿا ۽ پوء پاڻ ايپليڪيشنن کي اپڊيٽ ڪري سگهو ٿا. توھان ڊيٽابيس کي گرم ڪري سگھو ٿا ۽ پوءِ ايپليڪيشنن کي اپڊيٽ ڪري سگھو ٿا. مان انهن ماڻهن کي ڄاڻان ٿو جن هڪ مڪمل طور تي نئين ڊيٽابيس ڪلسٽر کي نئين اسڪيما سان بوٽ ڪيو آهي، اهو هڪ اختيار آهي جيڪڏهن توهان وٽ منگو وانگر اسڪيم لیس ڊيٽابيس آهي، پر اهو هرگز آسان ڪم ناهي. جيڪڏهن توهان وٽ وڌيڪ سوال نه آهي، توهان جي توجه لاء مهرباني!

ڪجھ اشتهار 🙂

اسان سان گڏ رهڻ لاء توهان جي مهرباني. ڇا توهان اسان جا مضمون پسند ڪندا آهيو؟ وڌيڪ دلچسپ مواد ڏسڻ چاهيو ٿا؟ آرڊر ڏيڻ يا دوستن کي سفارش ڪندي اسان جي مدد ڪريو، ڪلائوڊ VPS ڊولپرز لاءِ $4.99 کان, داخلا-سطح سرورز جو هڪ منفرد اينالاگ، جيڪو اسان توهان لاءِ ايجاد ڪيو هو: VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps جي باري ۾ سڄي حقيقت $19 کان يا سرور ڪيئن شيئر ڪجي؟ (RAID1 ۽ RAID10 سان دستياب آهي، 24 ڪور تائين ۽ 40GB DDR4 تائين).

ڊيل R730xd 2x سستا Equinix Tier IV ڊيٽا سينٽر ۾ Amsterdam ۾؟ صرف هتي 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199 کان هالينڊ ۾! ڊيل R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99 کان! جي باري ۾ پڙهو انفراسٽرڪچر ڪارپوريشن ڪيئن ٺاهيو. ڪلاس ڊيل R730xd E5-2650 v4 سرورز جي استعمال سان 9000 يورو جي قيمت هڪ پني لاءِ؟

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

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