Istio ۾ اونداهي لانچ: ڳجهي خدمتون

”خطرو منهنجو وچولي نالو آهي،“ آسٽن پاورز، هڪ بين الاقوامي پراسرار ماڻهو، چوندو هو. پر سپر ايجنٽن ۽ انٽيليجنس سروسز پاران جيڪا عزت ڪئي ويندي آهي، اها ڪمپيوٽر سروسز لاءِ بلڪل مناسب ناهي، جتي بوريت خطري کان گهڻو بهتر آهي.

Istio ۾ اونداهي لانچ: ڳجهي خدمتون

۽ Istio، OpenShift ۽ Kubernetes سان گڏ، مائڪرو سروسز کي ترتيب ڏيڻ کي واقعي بورنگ ۽ پيش گوئي ڪري ٿو - ۽ اهو عظيم آهي. اسان هن بابت ڳالهائينداسين ۽ گهڻو ڪجهه اسٽيو سيريز جي چوٿين ۽ آخري پوسٽ ۾.

جڏهن بوريت صحيح آهي

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

جڏهن توهان جي سافٽ ويئر جو هڪ نئون نسخو ترتيب ڏيو، اهو خطرن کي گهٽائڻ لاء سڀني اختيارن تي غور ڪرڻ جي قابل آهي. متوازي طور تي هلڻ هڪ تمام طاقتور ۽ ثابت ٿيل طريقو آهي ٽيسٽ ڪرڻ لاءِ، ۽ Istio توهان کي اجازت ڏئي ٿو ”ڳجهي خدمت“ (توهان جي مائڪرو سروس جو لڪيل نسخو) استعمال ڪرڻ لاءِ اهو ڪرڻ لاءِ پيداواري نظام سان مداخلت ڪرڻ کان سواءِ. ان لاءِ به هڪ خاص اصطلاح آهي - ”ڊارڪ لانچ“، جنهن جي نتيجي ۾ هڪ فنڪشن ذريعي چالو ڪيو ويندو آهي هڪ جيتري جاسوسي نالي ”ٽريفڪ آئيني“ سان.

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

بوريت کي منظم ڪرڻ دلچسپ آهي

هيٺ ڏنل اسٽيو روٽنگ قاعدي تي هڪ نظر وٺو، جيڪو سڀني HTTP درخواستن کي مائڪروسروس سفارش v1 ڏانهن روانو ڪري ٿو (سڀني مثالن مان ورتل Istio Tutorial GitHub repo)، جڏهن ته هڪ ئي وقت ۾ انهن کي سفارش ڪرڻ لاء آئيني طور تي v2 microservice:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
ليبل تي ڌيان ڏيو mirror: اسڪرين جي تري ۾ - اھو اھو آھي جيڪو ٽرئفڪ جي آئيني کي سيٽ ڪري ٿو. ها، اهو بلڪل سادو آهي!

هن قاعدي جو نتيجو اهو ٿيندو ته توهان جو پروڊڪشن سسٽم (v1) ايندڙ ايندڙ درخواستن تي عمل ڪرڻ جاري رکندو، پر درخواستون پاڻ کي غير هم وقتي طور تي v2 ڏانهن آئيني طور تي ظاهر ڪيو ويندو، اهو آهي، انهن جا مڪمل نقل اتي ويندا. اهو طريقو، توهان ٽيسٽ ڪري سگهو ٿا v2 حقيقي حالتن ۾ - حقيقي ڊيٽا ۽ ٽرئفڪ تي - بغير ڪنهن به طريقي سان مداخلت جي پيداوار سسٽم جي آپريشن سان. ڇا اهو آرگنائيزنگ ٽيسٽ کي بورنگ بڻائي ٿو؟ ها بلڪل. پر اهو هڪ دلچسپ انداز ۾ ڪيو ويو آهي.

اچو ته ڊراما شامل ڪريو

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

اچو ته هڪ اهم نقطو ورجائي

ٽريفڪ آئيني سان ڳجھي لانچ (ڊارڪ لانچ / درخواست آئيني) بغير ڪنهن به طريقي سان ڪوڊ کي متاثر ڪرڻ جي ڪري سگهجي ٿو.

دماغي خوراڪ

ڇا جيڪڏھن اھو جڳھ جتي درخواستون آئيني آھن انھن مان ڪجھ موڪلي ٿو v1 ڏانھن نه، پر v2 ڏانھن؟ مثال طور، سڀني درخواستن جو هڪ سيڪڙو يا صرف استعمال ڪندڙن جي هڪ مخصوص گروپ کان درخواستون. ۽ پوء، اڳ ۾ ئي ڏسي رهيو آهي ته ڪيئن v2 ڪم ڪري ٿو، تدريجي طور تي سڀني درخواستن کي نئين ورزن ڏانهن منتقل ڪريو. يا ان جي برعڪس، سڀڪنھن شيء کي واپس v1 ڏانھن جيڪڏھن ڪجھھ غلط ٿي وڃي v2 سان. مان سمجهان ٿو ته ان کي ڪينري ڊيپلائيشن سڏيو ويندو آهي. کان کني ڏانهن واپس وڃي ٿو، ۽ جيڪڏهن اهو روسي نسل جو هجي ها ته شايد ان ۾ هڪ حوالو هجي ها ٻليون)، ۽ هاڻي اسان هن کي وڌيڪ تفصيل سان ڏسنداسين.

Istio ۾ ڪينري جي تعیناتي: ڪميشن کي آسان ڪرڻ

احتياط سان ۽ تدريجي

Canary Deployment deployment model جو خلاصو انتهائي سادو آهي: جڏهن توهان پنهنجي سافٽ ويئر جو نئون ورجن لانچ ڪندا آهيو (اسان جي صورت ۾، هڪ microservice)، توهان پهريان ان تائين رسائي ڏيو صارفين جي هڪ ننڍڙي گروپ تائين. جيڪڏهن سڀ ڪجھ ٺيڪ ٿي وڃي، ته توهان آهستي آهستي هن گروپ کي وڌايو جيستائين نئون ورزن ڪم ڪرڻ شروع نه ڪري، يا - جيڪڏهن ائين نه ٿئي - آخرڪار سڀني صارفين کي ان ڏانهن لڏپلاڻ ڪريو. سوچڻ سان ۽ تدريجي طور تي هڪ نئون نسخو متعارف ڪرائڻ ۽ استعمال ڪندڙن کي ان تي ڪنٽرول ٿيل طريقي سان تبديل ڪرڻ سان، توهان خطرن کي گهٽائي سگهو ٿا ۽ موٽ وڌائي سگهو ٿا.

يقينن، Istio ذهانت واري درخواست جي رستي لاءِ ڪيترائي سٺا آپشن پيش ڪندي ڪينري جي ترتيب کي آسان بڻائي ٿو. ۽ ها، اهو سڀ ڪجهه ڪري سگهجي ٿو بغير ڪنهن به طريقي سان توهان جي سورس ڪوڊ کي ڇڪڻ جي.

برائوزر کي فلٽر ڪرڻ

هڪ سادي رستي جي معيار مان هڪ آهي برائوزر تي ٻڌل ريڊائريشن. اچو ته چئو ته توهان صرف سفاري برائوزرن کان درخواستون چاهيون ٿا v2 ڏانهن وڃو. هتي اهو ڪيئن ڪيو ويو آهي:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
اچو ته هن روٽنگ قاعدي کي لاڳو ڪريو ۽ پوء ڪمانڊ استعمال ڪريو curl اسان هڪ لوپ ۾ microservice جي حقيقي درخواستن کي نقل ڪنداسين. جئين توهان اسڪرين شاٽ ۾ ڏسي سگهو ٿا، اهي سڀئي وڃو v1:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
v2 تي ٽرئفڪ ڪٿي آهي؟ جيئن ته اسان جي مثال ۾ سڀ درخواستون صرف اسان جي پنهنجي ڪمانڊ لائن کان آيا آهن، اهو صرف موجود ناهي. پر مٿي ڏنل اسڪرين ۾ ھيٺين لائنن تي ڌيان ڏيو: اھو ھڪڙو رد عمل آھي ان حقيقت جو ته اسان سفاري برائوزر کان ھڪڙي درخواست تي عمل ڪيو، جنھن جي نتيجي ۾ ھي پيدا ڪيو:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون

لامحدود طاقت

اسان اڳ ۾ ئي لکي چڪا آهيون ته باقاعده اظهار تمام طاقتور صلاحيتون مهيا ڪن ٿيون رستن جي درخواستن لاءِ. هيٺ ڏنل مثال تي هڪ نظر وٺو (اسان سمجهون ٿا ته توهان سمجهي سگهندا ته اهو ڇا ڪري ٿو):

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
هينئر تائين توهان کي شايد اهو خيال آهي ته باقاعده اظهار ڇا ڪري سگهي ٿو.

سمارٽ ڪم ڪريو

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

دلچسپي؟

ڇا توهان پنهنجي ڪمپيوٽر تي Istio، Kubernetes ۽ OpenShift سان تجربو ڪرڻ جا خواهشمند آهيو؟ ٽيم Red Hat ڊولپر ٽيم هڪ شاندار تيار ڪيو درسي ڪتاب هن موضوع تي ۽ سڀني سان گڏ فائلون عوامي طور تي دستياب ڪيون. تنهن ڪري اڳتي وڌو ۽ پنهنجو پاڻ کي ڪنهن به شيء کان انڪار نه ڪريو.

Istio Egress: سوويئر جي دڪان ذريعي نڪرڻ

Istio استعمال ڪندي Red Hat OpenShift ۽ Kubernetes سان گڏ، توھان پنھنجي زندگي کي مائڪرو سروسز سان گھڻو آسان بڻائي سگھو ٿا. Istio جي سروس ميش ڪبرنيٽس پوڊس جي اندر لڪيل آهي، ۽ توهان جو ڪوڊ هلندو آهي (اڪثر ڪري) اڪيلائي ۾. ڪارڪردگي، تبديلي جي آساني، ٽريڪنگ، وغيره - هي سڀ استعمال ڪرڻ آسان آهي سائڊ ڪار ڪنٽينرز جي استعمال جي مهرباني. پر ڇا جيڪڏهن توهان جي مائڪرو سروس کي ٻين خدمتن سان رابطو ڪرڻ جي ضرورت آهي جيڪي توهان جي OpenShift-Kubernetes سسٽم کان ٻاهر واقع آهن؟

اهو آهي جتي Istio Egress بچاء لاء اچي ٿو. مختصر ۾، اهو صرف توهان کي وسيلن تائين رسائي جي اجازت ڏئي ٿو (پڙهو: "خدمتون") جيڪي توهان جي Kubernetes پوڊس جي سسٽم جو حصو نه آهن. جيڪڏهن توهان اضافي ترتيب نه ڏيو، پوء Istio Egress ماحول ۾ ٽرئفڪ صرف پوڊ جي ڪلستر جي اندر ۽ اندروني IP جدولن جي بنياد تي اهڙن ڪلستر جي وچ ۾ روٽ ڪيو ويندو آهي. ۽ اهڙي پوپشن تمام سٺو ڪم ڪري ٿي جيستائين توهان کي ٻاهران خدمتن تائين رسائي جي ضرورت ناهي.

ايگريس توهان کي مٿين IP جدولن کي نظرانداز ڪرڻ جي اجازت ڏئي ٿي، يا ته ايگريس قاعدن جي بنياد تي يا IP پتي جي حد تي.

اچو ته اسان وٽ هڪ جاوا پروگرام آهي جيڪو httpbin.org/headers ڏانهن GET درخواست ڪري ٿو.

(httpbin.org ٻاهر نڪرڻ واري خدمت جي درخواستن جي جاچ لاءِ صرف هڪ آسان وسيلو آهي.)

جيڪڏهن توهان ڪمانڊ لائن تي داخل ڪيو curl http://httpbin.org/headers، اسان هيٺ ڏنل ڏسنداسين:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
يا توهان برائوزر ۾ ساڳيو ايڊريس کولي سگهو ٿا:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
جئين توهان ڏسي سگهو ٿا، اتي موجود خدمت صرف هيڊر واپس ڏئي ٿو ان ڏانهن گذري ويو.

اسان واپار جي سر تي تبديل ڪري رهيا آهيون

ھاڻي اچو ته ھن سروس جو جاوا ڪوڊ وٺون، جيڪو اسان جي سسٽم کان ٻاھر آھي، ۽ ان کي پاڻ تي ھلائي، جتي، ياد ڪريو، Istio انسٽال ٿيل آھي. (توهان اهو پنهنجو پاڻ سان رابطو ڪري سگهو ٿا اسان جو Istio سبق.) مناسب تصوير ٺاهي ۽ ان کي OpenShift پليٽ فارم تي لانچ ڪيو، اسان هن خدمت کي حڪم سان سڏينداسين. curl egresshttpbin-istioegress.$(minishift ip).nip.io، جنهن کان پوءِ اسان هن کي اسڪرين تي ڏسندا:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
اڙي، ڇا ٿيو؟ سڀ ڪجهه صرف ڪم ڪيو. مطلب ڇا آھي Not Found ڇا آھي؟ اسان صرف هن لاء ڪيو curl.

پوري انٽرنيٽ تائين IP جدولن کي وڌايو

Istio هن لاء الزام (يا شڪرگذار) هجڻ گهرجي. سڀ کان پوء، Istio صرف سائڊ ڪار ڪنٽينرز آهي جيڪي ڳولڻ ۽ رستي جي ذميوار آهن (۽ ٻيون ڪيتريون ئي شيون جيڪي اسان اڳ ۾ ڳالهايون ٿا). انهي سبب لاء، IP ٽيبل صرف ڄاڻن ٿا ته توهان جي ڪلستر سسٽم اندر ڇا آهي. ۽ httpbin.org ٻاهر واقع آهي ۽ ان ڪري ناقابل رسائي آهي. ۽ اهو آهي جتي Istio Egress بچاء لاء اچي ٿو - توهان جي ماخذ ڪوڊ ۾ معمولي تبديلي کان سواء.

هيٺ ڏنل ايگريس قاعدو Istio کي گهربل خدمت لاءِ (جيڪڏهن ضروري هجي ته پوءِ پوري انٽرنيٽ تي) ڳولا ڪرڻ تي مجبور ڪري ٿو، هن صورت ۾، httpbin.org. جئين توهان هن فائل مان ڏسي سگهو ٿا (egress_httpbin.yml)، هتي ڪارڪردگي بلڪل سادي آهي:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
باقي اهو سڀ ڪجهه هن قاعدي کي لاڳو ڪرڻ آهي:

istioctl create -f egress_httpbin.yml -n istioegress

توھان ڏسي سگھوٿا Egress قاعدا حڪم سان istioctl get egressrules:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون
۽ نيٺ، اسان ٻيهر حڪم هلائيندا آهيون زنده - ۽ اسان ڏسون ٿا ته هر شي ڪم ڪري ٿو:

Istio ۾ اونداهي لانچ: ڳجهي خدمتون

اسان کليل سوچون ٿا

جئين توهان ڏسي سگهو ٿا، Istio توهان کي ٻاهرين دنيا سان رابطي کي منظم ڪرڻ جي اجازت ڏئي ٿو. ٻين لفظن ۾، توهان اڃا تائين OpenShift خدمتون ٺاهي سگهو ٿا ۽ انهن کي Kubernetes ذريعي منظم ڪري سگهو ٿا، هر شيء کي پوڊس ۾ رکندي جيڪا ضرورت مطابق مٿي ۽ هيٺ ڪريو. ۽ ساڳئي وقت، توهان محفوظ طور تي پنهنجي ماحول جي ٻاهرين خدمتن تائين رسائي ڪري سگهو ٿا. ۽ ها، اسان هڪ ڀيرو ٻيهر ورجائيندا آهيون ته اهو سڀ ڪجهه ڪري سگهجي ٿو بغير ڪنهن به طريقي سان توهان جي ڪوڊ کي ڇڪڻ جي.

هي Istio تي سيريز ۾ آخري پوسٽ هئي. ڏسندا رهو - اڳتي ڪيتريون ئي دلچسپ شيون آهن!

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

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