GitOps: پل ۽ پش طريقن جو مقابلو

نوٽ. ترجمو: Kubernetes ڪميونٽي ۾، GitOps نالي هڪ رجحان واضح مقبوليت حاصل ڪري رهيو آهي، جيئن اسان ذاتي طور تي ڏٺو آهي، زيارت ڪرڻ KubeCon يورپ 2019. هي اصطلاح نسبتا تازو هو ايجاد ڪيو Weaveworks جي سربراه طرفان - Alexis Richardson - ۽ مطلب آھي اوزارن جو استعمال جيڪي ڊولپرز کان واقف آھن (بنيادي طور تي گٽ، ان ڪري نالو) آپريشنل مسئلن کي حل ڪرڻ لاءِ. خاص طور تي، اسان ڪبرنيٽس جي آپريشن بابت ڳالهائي رهيا آهيون Git ۾ ان جي ترتيبن کي محفوظ ڪندي ۽ خودڪار طريقي سان ڪلستر ۾ تبديلين کي رولنگ ڪندي. Matthias Jg هن آرٽيڪل ۾ هن رول آئوٽ جي ٻن طريقن بابت ڳالهائيندو آهي.

GitOps: پل ۽ پش طريقن جو مقابلو

گذريل سال (حقيقت ۾، رسمي طور تي اهو آگسٽ 2017 ۾ ٿيو - تقريبا ترجمو.) ڪبرنيٽس ۾ ايپليڪيشنن کي ترتيب ڏيڻ لاء هڪ نئون طريقو آهي. ان کي GitOps سڏيو ويندو آهي، ۽ اهو بنيادي خيال تي ٻڌل آهي ته ترتيب ڏيڻ واري نسخن کي Git مخزن جي محفوظ ماحول ۾ ٽريڪ ڪيو ويو آهي.

هن طريقي جي مکيه فائدن هيٺ ڏنل آهن::

  1. ترتيب ڏيڻ وارو نسخو ۽ تبديلي جي تاريخ. سڄي ڪلستر جي حالت هڪ Git مخزن ۾ محفوظ ڪئي وئي آهي، ۽ نوڪريون صرف ڪمن ذريعي اپڊيٽ ڪيون وينديون آهن. اضافي طور تي، سڀني تبديلين کي استعمال ڪندي ٽريڪ ڪري سگهجي ٿو عزم جي تاريخ.
  2. واقف Git حڪم استعمال ڪندي رول بيڪ. سادو git reset توهان کي ترتيب ڏيڻ ۾ تبديلين کي ري سيٽ ڪرڻ جي اجازت ڏئي ٿي؛ ماضي جون حالتون هميشه موجود آهن.
  3. تيار رسائي ڪنٽرول. عام طور تي، هڪ گٽ سسٽم تمام گهڻو حساس ڊيٽا تي مشتمل آهي، تنهنڪري اڪثر ڪمپنيون ان جي حفاظت تي خاص ڌيان ڏيندا آهن. انهي جي مطابق، هي تحفظ پڻ عملن سان گڏ آپريشن تي لاڳو ٿئي ٿو.
  4. مقرري لاءِ پاليسيون. گھڻا گيٽ سسٽم مقامي طور تي شاخ کان شاخ جي پاليسين جي حمايت ڪن ٿا- مثال طور، صرف پل درخواستون ماسٽر کي اپڊيٽ ڪري سگھن ٿيون، ۽ تبديلين جو جائزو ورتو وڃي ۽ ٻي ٽيم ميمبر طرفان قبول ڪيو وڃي. جيئن رسائي ڪنٽرول سان، ساڳيون پاليسيون لاڳو ٿين ٿيون ڊيپلائيمينٽ اپڊيٽس تي.

جئين توهان ڏسي سگهو ٿا، GitOps طريقي سان ڪيترائي فائدا آهن. گذريل سال ۾، ٻه طريقا خاص مقبوليت حاصل ڪيا آهن. هڪ زور تي ٻڌل آهي، ٻيو پل تي ٻڌل آهي. ان کان اڳ جو اسان انھن تي نظر رکون، اچو ته پھريون ڏسون ڪھڙي عام ڪبرنيٽس جون ترتيبون نظر اچن ٿيون.

لڳائڻ جا طريقا

تازن سالن ۾، مختلف طريقن ۽ اوزارن جي تعينات لاء ڪبرنيٽس ۾ قائم ڪيا ويا آھن:

  1. اصلي ڪبرنيٽس / ڪسٽمائيز ٽيمپليٽس جي بنياد تي. ڪبرنيٽس تي ايپليڪيشنن کي ترتيب ڏيڻ جو اهو آسان طريقو آهي. ڊولپر بنيادي YAML فائلون ٺاهي ٿو ۽ انهن کي لاڳو ڪري ٿو. مسلسل ساڳئي ٽيمپليٽ کي ٻيهر لکڻ کان نجات حاصل ڪرڻ لاء، Kustomize ترقي ڪئي وئي (اهو Kubernetes ٽيمپليٽس کي ماڊلز ۾ تبديل ڪري ٿو). نوٽ. ترجمو: Kustomize سان kubectl ۾ ضم ڪيو ويو آهي ڪبرنيٽس 1.14 جو رليز.
  2. هيلم چارٽس. هيلم چارٽس توهان کي ٽيمپليٽس جا سيٽ ٺاهڻ جي اجازت ڏين ٿا، انٽ ڪنٽينرز، سائڊ ڪارز، وغيره، جيڪي ايپليڪيشنن کي ترتيب ڏيڻ لاءِ استعمال ڪيا ويندا آهن وڌيڪ لچڪدار ڪسٽمائيزيشن اختيارن سان گڏ ٽيمپليٽ جي بنياد تي. اهو طريقو ٺهيل YAML فائلن تي ٻڌل آهي. هيلم انهن کي مختلف پيٽرولن سان ڀريندو آهي ۽ پوءِ انهن کي ٽيلر ڏانهن موڪليندو آهي، هڪ ڪلسٽر جزو جيڪو انهن کي ڪلستر ۾ ڊيپلائي ڪري ٿو ۽ اپڊيٽ ۽ رول بيڪ جي اجازت ڏئي ٿو. اهم ڳالهه اها آهي ته هيلم بنيادي طور تي صرف مطلوب قدرن کي ٽيمپليٽس ۾ داخل ڪري ٿو ۽ پوءِ انهن کي ساڳئي طريقي سان لاڳو ڪري ٿو جيئن اهو روايتي انداز ۾ ڪيو ويندو آهي. (وڌيڪ پڙهو ته اهو سڀ ڪيئن ڪم ڪري ٿو ۽ توهان ان کي ڪيئن استعمال ڪري سگهو ٿا اسان جي هيلم طرفان آرٽيڪل - لڳ ڀڳ ترجمو.). تيار ٿيل هيلم چارٽس جا وسيع قسم آهن جيڪي ڪمن جي هڪ وسيع رينج کي ڍڪيندا آهن.
  3. متبادل اوزار. اتي ڪيترائي متبادل اوزار آھن. ڇا انهن سڀني ۾ عام آهي ته اهي ڪجهه ٽيمپليٽ فائلن کي Kubernetes-پڙهڻ لائق YAML فائلن ۾ تبديل ڪن ٿا ۽ پوءِ انهن کي استعمال ڪن ٿا.

اسان جي ڪم ۾، اسان مسلسل استعمال ڪندا آهيون هيلم چارٽ اهم اوزارن لاءِ (جيئن ته انهن وٽ تمام گهڻيون شيون اڳ ۾ ئي تيار آهن، جيڪي زندگي کي تمام آسان بڻائي ٿي) ۽ ”خالص“ Kubernetes YAML فائلون اسان جي پنهنجي ايپليڪيشنن کي ترتيب ڏيڻ لاءِ.

ڇڪيو ۽ دٻايو

منهنجي تازي بلاگ پوسٽن مان هڪ ۾، مون اوزار متعارف ڪرايو Weave Flux، جيڪو توهان کي اجازت ڏئي ٿو ٽيمپليٽس کي Git مخزن ۾ ۽ هر ڪمٽ يا ڪنٽينر جي پش کان پوءِ ڊيپلائيمينٽ کي اپڊيٽ ڪرڻ. منهنجو تجربو ڏيکاري ٿو ته هي اوزار پل جي نقطه نظر کي وڌائڻ ۾ مکيه مان هڪ آهي، تنهنڪري مان اڪثر ان جو حوالو ڏيندس. جيڪڏهن توهان وڌيڪ ڄاڻڻ چاهيو ٿا ته ان کي ڪيئن استعمال ڪجي، هتي مضمون سان ڳنڍيو.

ن بي! GitOps استعمال ڪرڻ جا سڀ فائدا ساڳيا رھندا آھن ٻنهي طريقن لاءِ.

ڇڪڻ تي ٻڌل طريقو

GitOps: پل ۽ پش طريقن جو مقابلو

ڇڪڻ جو طريقو حقيقت تي ٻڌل آهي ته سڀئي تبديليون ڪلستر جي اندر کان لاڳو ٿين ٿيون. ڪلستر جي اندر ھڪڙو آپريٽر آھي جيڪو باقاعدي سان لاڳاپيل Git ۽ Docker Registry Repositories کي چيڪ ڪري ٿو. جيڪڏهن انهن ۾ ڪا به تبديلي اچي ٿي، ڪلستر جي حالت اندروني طور تي اپڊيٽ ڪئي وئي آهي. اهو عمل عام طور تي تمام محفوظ سمجهيو ويندو آهي، ڇاڪاڻ ته ڪنهن به خارجي ڪلائنٽ کي ڪلسٽر ايڊمنسٽريٽر جي حقن تائين رسائي ناهي.

پرو:

  1. ڪنهن به خارجي ڪلائنٽ کي ڪلستر ۾ تبديليون ڪرڻ جو حق نه آهي؛ سڀئي تازه ڪاريون اندر کان ٻاهر نڪرنديون آهن.
  2. ڪجهه اوزار توهان کي هيلم چارٽ اپڊيٽ کي هم وقت سازي ڪرڻ ۽ انهن کي ڪلستر سان ڳنڍڻ جي اجازت ڏين ٿا.
  3. Docker رجسٽري نئين نسخن لاء اسڪين ٿي سگهي ٿو. جيڪڏهن هڪ نئين تصوير موجود آهي، Git مخزن ۽ ترتيب ڏيڻ نئين ورزن ۾ اپڊيٽ ٿيل آهن.
  4. پل ٽولز مختلف گيٽ ريپوزٽريز ۽ اجازتن سان مختلف نالن جي جڳهن ۾ ورهائي سگھجن ٿا. هن جي مهرباني، هڪ multitenant ماڊل استعمال ڪري سگهجي ٿو. مثال طور، ٽيم A استعمال ڪري سگھي ٿي نالو اسپيس A، ٽيم B استعمال ڪري سگھي ٿي نالو اسپيس B، ۽ انفراسٽرڪچر ٽيم شايد گلوبل اسپيس استعمال ڪري سگھي ٿي.
  5. ضابطي جي طور تي، اوزار تمام ہلڪو وزن آهي.
  6. گڏيل اوزارن جهڙوڪ آپريٽر Bitnami مهربند راز، رازن کي Git مخزن ۾ انڪرپٽ محفوظ ڪري سگھجي ٿو ۽ ڪلستر جي اندر حاصل ڪري سگھجي ٿو.
  7. سي ڊي پائپ لائنن سان ڪو به واسطو نه آهي ڇو ته ڊيپلائيمينٽ ڪلستر ۾ ٿينديون آهن.

Минусы:

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

پش جي بنياد تي طريقو

GitOps: پل ۽ پش طريقن جو مقابلو

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

Плюсы:

  1. سيڪيورٽي Git مخزن جي ذريعي مقرر ڪئي وئي آهي ۽ پائپ لائن تعمير ڪريو.
  2. هيلم چارٽس کي ترتيب ڏيڻ آسان آهي ۽ هيلم پلگ ان کي سپورٽ ڪري ٿو.
  3. رازن کي منظم ڪرڻ آسان آهي ڇو ته راز پائپ لائنن ۾ استعمال ڪري سگھجن ٿا ۽ Git ۾ انڪوڊ ٿيل پڻ محفوظ ڪري سگھجن ٿا (استعمال ڪندڙ جي ترجيحن تي منحصر).
  4. خاص اوزار سان ڪو به واسطو نه آهي، ڇاڪاڻ ته ڪنهن به قسم جو استعمال ڪري سگهجي ٿو.
  5. ڪنٽينر ورزن جي تازه ڪاري کي تعمير پائپ لائن ذريعي شروع ڪري سگهجي ٿو.

Минусы:

  1. ڪلستر جي رسائي ڊيٽا تعميراتي سسٽم جي اندر آهي.
  2. اپڊيٽ ڪنٽينرز کي اپڊيٽ ڪرڻ اڃا به آسان آهي پل جي عمل سان.
  3. سي ڊي سسٽم تي تمام گهڻو انحصار، ڇو ته اسان کي گهربل پائپ لائنون اصل ۾ Gitlab Runners لاءِ لکيون ويون آهن، ۽ پوءِ ٽيم فيصلو ڪري ٿي Azure DevOps يا Jenkins ڏانهن منتقل ڪرڻ... ۽ انهن کي وڏي تعداد ۾ تعمير ٿيل پائپ لائنن کي لڏڻو پوندو.

نتيجا: ڌڪ يا ڇڪڻ؟

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

ڪجهه سوچڻ کان پوءِ، مان اڻڄاتل نتيجي تي پهتو ته ائين نه آهي. جيڪڏهن اسان اجزاء جي باري ۾ ڳالهايون ٿا جيڪي وڌ کان وڌ تحفظ جي ضرورت هونديون آهن، هن لسٽ ۾ ڳجهي اسٽوريج، سي آء / سي ڊي سسٽم، ۽ گٽ مخزن شامل هوندا. انهن جي اندر جي معلومات تمام خطرناڪ آهي ۽ وڌ کان وڌ تحفظ جي ضرورت آهي. اضافي طور تي، جيڪڏهن ڪو ماڻهو توهان جي Git مخزن ۾ داخل ٿئي ٿو ۽ اتي ڪوڊ کي دٻائي سگهي ٿو، اهي جيڪي به چاهين ٿا (ڇا اهو ڇڪيو يا ڌڪ) ۽ ڪلستر جي سسٽم کي ڦهلائي سگهي ٿو. اهڙيء طرح، سڀ کان اهم اجزاء جن کي محفوظ ڪرڻ جي ضرورت آهي Git مخزن ۽ CI / CD سسٽم، نه ڪلستر سندون. جيڪڏهن توهان وٽ انهن قسمن جي سسٽم لاءِ چڱي طرح ترتيب ڏنل پاليسيون ۽ سيڪيورٽي ڪنٽرول آهن، ۽ ڪلسٽر سندون صرف پائپ لائنن ۾ ڪڍيا ويا آهن راز جي طور تي، ڇڪڻ واري طريقي جي شامل ڪيل سيڪيورٽي شايد قيمتي طور تي قيمتي نه هجي جيترو اصل ۾ سوچيو ويو آهي.

تنهن ڪري، جيڪڏهن ڇڪڻ جو طريقو وڌيڪ محنت وارو آهي ۽ حفاظتي فائدو فراهم نٿو ڪري، ڇا اهو منطقي ناهي ته صرف ڌڪ واري طريقي کي استعمال ڪرڻ لاء؟ پر ڪو ماڻهو اهو بحث ڪري سگهي ٿو ته زور ڏيڻ واري طريقي سان توهان سي ڊي سسٽم سان تمام گهڻو ڳنڍيل آهيو، ۽ شايد، اهو بهتر ناهي ته اهو نه ڪيو وڃي ته جيئن مستقبل ۾ لڏپلاڻ ڪرڻ آسان بڻائي سگهجي.

منهنجي خيال ۾ (هميشه وانگر)، توهان کي اهو استعمال ڪرڻ گهرجي جيڪو ڪنهن خاص ڪيس لاءِ سڀ کان وڌيڪ مناسب آهي يا گڏيو. ذاتي طور تي، مان ٻنهي طريقن کي استعمال ڪريان ٿو: Weave Flux پل تي ٻڌل ڊيپلائيمينٽن لاءِ جنهن ۾ گهڻو ڪري اسان جون پنهنجون خدمتون شامل آهن، ۽ هيلم ۽ پلگ ان سان گڏ هڪ پش اپروچ، جيڪو هيلم چارٽس کي ڪلسٽر تي لاڳو ڪرڻ آسان بڻائي ٿو ۽ توهان کي رازن کي بنا ڪنهن رڪاوٽ جي پيدا ڪرڻ جي اجازت ڏئي ٿو. منهنجو خيال آهي ته اتي ڪڏهن به هڪ واحد حل نه هوندو جيڪو سڀني ڪيسن لاءِ موزون هوندو، ڇاڪاڻ ته اتي هميشه تمام گهڻيون خوبيون هونديون آهن ۽ انهن جو دارومدار مخصوص ايپليڪيشن تي هوندو آهي. اهو چيو پيو وڃي، مان سفارش ڪريان ٿو GitOps - اهو زندگي کي تمام آسان بڻائي ٿو ۽ سيڪيورٽي کي بهتر بڻائي ٿو.

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

مترجم کان پي ايس نوٽ

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

انهي لحاظ کان، پش ماڊل اسان کي اجازت ڏئي ٿو ته گهٽ ۾ گهٽ رول ​​آئوٽ جي ڪجهه گارنٽي فراهم ڪري، ڇاڪاڻ ته پائپ لائن جي زندگي رول آئوٽ جي زندگي جي برابر ٿي سگهي ٿي.

اسان ٻنهي ماڊلز جي ڪوشش ڪئي ۽ مضمون جي ليکڪ وانگر ساڳئي نتيجن تي آيا:

  1. پل ماڊل اسان لاءِ موزون آهي ته سسٽم جي اجزاء جي تازه ڪاري کي ڪيترن ئي ڪلسٽرن تي منظم ڪرڻ لاءِ (ڏسو. addon-operator بابت مضمون).
  2. GitLab CI تي ٻڌل پش ماڊل هيلم چارٽس استعمال ڪندي ايپليڪيشنن کي رولنگ ڪرڻ لاءِ مناسب آهي. ساڳي ئي وقت، پائپ لائنن جي اندر تعیناتي جو رول آئوٽ اوزار استعمال ڪندي مانيٽر ڪيو ويندو آهي werf. رستي ۾، اسان جي هن منصوبي جي حوالي سان، اسان مسلسل "GitOps" ٻڌو جڏهن اسان KubeCon Europe'19 تي اسان جي اسٽينڊ تي DevOps انجنيئرن جي دٻاءُ واري مسئلن تي بحث ڪيو.

مترجم کان PPS

اسان جي بلاگ تي پڻ پڙهو:

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

ڇا توھان استعمال ڪري رھيا آھيو GitOps؟

  • ها، ڇڪڻ جو طريقو

  • ها، ڌڪ

  • ها، ڇڪ + ڌڪ

  • ها، ٻيو ڪجهه

  • نه

30 صارفين ووٽ ڏنو. 10 استعمال ڪندڙن کي روڪيو ويو.

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

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