اسان کي ڪبرنيٽس ۾ مائڪرو سروسز کي ترقي ڪرڻ بابت وڌ ۾ وڌ پڇيو وڃي ٿو. ڊولپرز، خاص طور تي تشريح ڪيل ٻولين جا، پنھنجي پسنديده IDE ۾ ڪوڊ کي تڪڙو درست ڪرڻ چاھيو ٿا ۽ بغير تعمير/تعمير جي انتظار کان سواءِ نتيجو ڏسو - صرف F5 کي دٻائڻ سان. ۽ جڏهن اهو هڪ واحد ايپليڪيشن تي آيو، اهو مقامي طور تي ڊيٽابيس ۽ ويب سرور کي نصب ڪرڻ لاء ڪافي هو (ڊاڪر، ورچوئل بڪس ۾ ...)، ۽ پوء فوري طور تي ترقي جو مزو وٺو. monoliths جي microservices ۾ ڪٽڻ ۽ Kubernetes جي اچڻ سان، هڪ ٻئي تي انحصار جي ظاهر ٿيڻ سان، هر شيء اهو ٿورو وڌيڪ ڏکيو ٿي ويو. انهن مان وڌيڪ microservices، وڌيڪ مسئلا. ٻيهر ترقي جو مزو وٺڻ لاءِ، توهان کي هڪ يا ٻه کان وڌيڪ ڊڪر ڪنٽينر کڻڻا پوندا، ۽ ڪڏهن ڪڏهن درجن کان به وڌيڪ... عام طور تي، اهو سڀ ڪجهه گهڻو وقت وٺي سگهي ٿو، ڇاڪاڻ ته ان کي پڻ اپڊيٽ رکڻو پوندو. .
مختلف وقتن تي اسان مسئلي جي مختلف حلن جي ڪوشش ڪئي. ۽ مان شروع ڪندس گڏ ڪيل ڪم ڪارن سان يا صرف ”بيچين“ سان.
1. ڪچي
اڪثر IDEs وٽ FTP/SFTP استعمال ڪندي ڪوڊ سڌو سنئون سرور تي ايڊٽ ڪرڻ جي صلاحيت هوندي آهي. اهو رستو تمام واضح آهي ۽ اسان فوري طور تي ان کي استعمال ڪرڻ جو فيصلو ڪيو. ان جو جوهر هيٺين ريت آهي:
پوڊ آف ڊولپمينٽ ماحوليات (dev/review) ۾، هڪ اضافي ڪنٽينر شروع ڪيو ويو آهي SSH رسائي سان ۽ ڊولپر جي عوامي SSH ڪيچ کي اڳتي وڌائڻ جيڪو ايپليڪيشن کي انجام ڏيندو / ترتيب ڏيندو.
Voila: ڊولپر جيڪو ڊولپمينٽ شروع ڪيو سروس جي نالي سان ڳنڍي سگھي ٿو (ڪيئن محفوظ طور تي ڪلستر تائين رسائي فراهم ڪرڻ، اسان اڳ ۾ ئي ٻڌايو آهي) توهان جي ڊيسڪ ٽاپ تان SFTP ذريعي ۽ ڪوڊ کي ايڊٽ ڪريو بغير ان جي ڪلستر تائين پهچائڻ جو انتظار ڪريو.
اهو هڪ مڪمل طور تي ڪم ڪندڙ حل آهي، پر عمل درآمد جي نقطي نظر کان ان جا واضح نقصان آهن:
هيلم چارٽ کي بهتر ڪرڻ جي ضرورت آهي، جيڪو مستقبل ۾ پڙهڻ ڏکيو آهي؛
صرف ان شخص طرفان استعمال ڪري سگھجي ٿو جيڪو خدمت کي ترتيب ڏنو؛
توهان کي ياد رکڻ جي ضرورت آهي ته پوءِ ان کي ڪوڊ سان مقامي ڊاريڪٽري سان هم وقت سازي ڪريو ۽ ان کي گيٽ سان انجام ڏيو.
2. ٽيليفون
پروجيڪٽ ٽيلي ويزن ڪافي عرصي کان سڃاتل آھي، پر اسان، جيئن چوندا آھن ته، "ان کي عملي طور تي سنجيدگيءَ سان ڪوشش ڪرڻ جي آس پاس نه ٿي سگھيا." بهرحال، مطالبو پنهنجو ڪم ڪري چڪو آهي ۽ هاڻي اسان کي پنهنجو تجربو شيئر ڪرڻ ۾ خوشي ٿي آهي، جيڪا شايد اسان جي بلاگ جي پڙهندڙن لاءِ ڪارآمد ٿي سگهي ٿي - خاص ڪري جڏهن ته هن وقت تائين حب تي ٽيليپريسنس بابت ٻيو ڪو به مواد موجود ناهي.
مختصر ۾، سڀڪنھن شيء کي ايترو خوفناڪ نه ٿي نڪتو. اسان سڀني ڪارناما رکيا آهن جن کي ڊولپر جي حصي تي عمل ڪرڻ جي ضرورت آهي هيلم چارٽ ٽيڪسٽ فائل ۾ سڏيو ويندو آهي NOTES.txt. اهڙيء طرح، Kubernetes تي خدمت کي ترتيب ڏيڻ کان پوء، ڊولپر GitLab نوڪري لاگ ۾ مقامي ديو ماحول کي شروع ڪرڻ لاء هدايتون ڏسي ٿو:
!!! Разработка сервиса локально, в составе Kubernetes !!!
* Настройка окружения
* * Должен быть доступ до кластера через VPN
* * На локальном ПК установлен kubectl ( https://kubernetes.io/docs/tasks/tools/install-kubectl/ )
* * Получить config-файл для kubectl (скопировать в ~/.kube/config)
* * На локальном ПК установлен telepresence ( https://www.telepresence.io/reference/install )
* * Должен быть установлен Docker
* * Необходим доступ уровня reporter или выше к репозиторию https://gitlab.site.com/group/app
* * Необходимо залогинится в registry с логином/паролем от GitLab (делается один раз):
#########################################################################
docker login registry.site.com
#########################################################################
* Запуск окружения
#########################################################################
telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name }}:backend --mount=/tmp/app --docker-run -v `pwd`:/app -v /tmp/app/var/run/secrets:/var/run/secrets -ti registry.site.com/group/app/backend:v8
#########################################################################
اسان هن هدايت ۾ بيان ڪيل قدمن تي تفصيل سان نه رهنداسين... آخري هڪ جي استثنا سان. Telepresence جي لانچ دوران ڇا ٿيندو؟
Telepresence سان ڪم ڪرڻ
شروع ڪرڻ تي (مٿي ڏنل هدايتن ۾ بيان ڪيل آخري حڪم استعمال ڪندي)، اسان سيٽ ڪيو:
نالي جي جاءِ جنهن ۾ مائڪرو سروس هلي رهي آهي؛
تعیناتي ۽ ڪنٽينر جا نالا جيڪي اسان داخل ڪرڻ چاهيون ٿا.
باقي دليل اختياري آهن. جيڪڏهن اسان جي خدمت ڪبرنيٽس API سان ۽ ان لاءِ رابطو ڪري ٿي سروس اڪائونٽ ٺاهي وئي، اسان کي اسان جي ڊيسڪ ٽاپ تي سرٽيفڪيٽ/ ٽوڪن کي نصب ڪرڻ جي ضرورت آهي. هن کي ڪرڻ لاء، اختيار استعمال ڪريو --mount=true (يا --mount=/dst_path)، جيڪو اسان جي ڊيسڪ ٽاپ تي ڪبرنيٽس ڪنٽينر کان روٽ (/) کي نصب ڪندو. ان کان پوء، اسان ڪري سگھون ٿا (او ايس تي منحصر ڪري ٿو ۽ ايپليڪيشن ڪيئن شروع ٿئي ٿي) ڪلستر مان "ڪيز" استعمال ڪريو.
پهرين، اچو ته ڏسو سڀ کان وڌيڪ آفاقي اختيار هڪ ايپليڪيشن هلائڻ لاءِ - هڪ ڊڪر ڪنٽينر ۾. هن کي ڪرڻ لاء اسان کي استعمال ڪندا سين --docker-run ۽ ڊاريڪٽري کي ڪوڊ سان گڏ ڪنٽينر ۾ لڳايو: -v `pwd`:/app
اڳيون: -v /tmp/app/var/run/secrets:/var/run/secrets - ڊاريڪٽري کي سرٽيفڪيٽ/ٽوڪن سان گڏ ڪنٽينر ۾ نصب ڪرڻ لاءِ.
هي اختيار آخرڪار تصوير جي پٺيان آهي جنهن ۾ ايپليڪيشن هلندي. NB: جڏهن هڪ تصوير ٺاهي، توهان کي وضاحت ڪرڻ گهرجي CMD يا ENTRYPOINT!
واقعي اڳتي ڇا ٿيندو؟
Kubernetes ۾، مخصوص ڊيپلائيمينٽ لاءِ، نقلن جو تعداد 0 ۾ تبديل ڪيو ويندو. ان جي بدران، ھڪ نئين ڊيپلائيمينٽ شروع ڪئي ويندي - ھڪ متبادل ڪنٽينر سان backend.
2 ڪنٽينر ڊيسڪٽاپ تي لانچ ٿيندا: پهريون ٽيليپريسينس سان (اهو پراڪسي درخواستن کي / کان ڪبرنيٽس تائين ڏيندو)، ٻيو ايپليڪيشن سان ترقي ڪئي پئي وڃي.
جيڪڏهن اسان ايپليڪيشن سان گڏ ڪنٽينر ۾ عمل ڪريون ٿا، ته پوءِ هيلم طرفان منتقل ڪيل سڀئي ENV متغير اسان وٽ دستياب هوندا، ۽ سڀئي خدمتون پڻ دستياب هونديون. باقي اهو آهي ته توهان جي پسنديده IDE ۾ ڪوڊ ايڊٽ ڪريو ۽ نتيجو مزو ڪريو.
ڪم جي آخر ۾، توهان کي صرف ٽرمينل کي بند ڪرڻ جي ضرورت آهي جنهن ۾ Telepresence هلي رهي آهي (سيشن کي Ctrl+C سان ختم ڪريو) - ڊاکر ڪنٽينرز ڊيسڪ ٽاپ تي بند ٿي ويندا، ۽ ڪبرنيٽس ۾ هر شيء پنهنجي شروعاتي حالت ڏانهن موٽندي. باقي اهو آهي ته ڪم ڪرڻ، ايم آر کي جاري ڪريو ۽ ان کي جائزو وٺڻ/ضم ڪرڻ/... (توهان جي ڪم جي فلوز تي منحصر آهي).
جيڪڏهن اسان ڊاڪر ڪنٽينر ۾ ايپليڪيشن کي هلائڻ نٿا چاهيون - مثال طور، اسان پي ايڇ پي ۾ نه، پر گو ۾ ترقي ڪريون ٿا، ۽ اڃا به ان کي مقامي طور تي ٺاهيون ٿا - ٽيليپريسنس لانچ ڪرڻ اڃا به آسان ٿيندو:
اختيار کان سواء Telepresence لانچ ڪرڻ کان پوء --docker-run موجوده ٽرمينل ۾ سڀ ماحولياتي متغير موجود هوندا، تنهن ڪري ان ۾ اپليڪيشن شروع ٿيڻ گهرجي.
NB: استعمال ڪرڻ وقت، مثال طور، PHP، توهان کي ياد رکڻ گهرجي ته مختلف op_cache، apc ۽ ٻين تيز ڪندڙ ڊولپمينٽ لاءِ بند ڪرڻ - ٻي صورت ۾ ڪوڊ کي ايڊٽ ڪرڻ سان گهربل نتيجو نه ٿيندو.
نتيجو
ڪبرنيٽس سان مقامي ترقي هڪ مسئلو آهي جنهن جو حل هن پليٽ فارم جي پکيڙ جي تناسب ۾ وڌي رهيو آهي. ڊولپرز کان لاڳاپيل درخواستون حاصل ڪرڻ (اسان جي گراهڪن کان)، اسان انهن کي پهرين دستياب طريقن سان حل ڪرڻ شروع ڪيو، جيڪو، جيتوڻيڪ، پاڻ کي ڊگهي عرصي تائين ثابت نه ڪيو. خوشقسمتيءَ سان، اها ڳالهه واضح ٿي چڪي آهي نه رڳو هاڻي ۽ نه رڳو اسان لاءِ، تنهن ڪري وڌيڪ موزون وسيلا اڳ ۾ ئي دنيا ۾ ظاهر ٿي چڪا آهن، ۽ Telepresence انهن مان سڀ کان وڌيڪ مشهور آهي. اسڪافولڊ گوگل کان). ان کي استعمال ڪرڻ جو اسان جو تجربو اڃا ايترو وڏو نه آهي، پر اهو اڳ ۾ ئي اسان کي ان جي سفارش ڪرڻ جو سبب ڏئي ٿو اسان جي "دڪان ۾ ساٿي" - ڪوشش ڪريو!