Оғози торик дар Истио: Хадамоти махфӣ

Остин Пауэрс, як марди байналмиллалии асрор, «хатар номи миёнаи ман аст». Аммо он чизе, ки аз ҷониби суперагентҳо ва хадамоти иктишофӣ эҳтироми баланд доранд, барои хидматҳои компютерӣ тамоман мувофиқ нест, ки дар он ҷо дилтангӣ аз хатар беҳтар аст.

Оғози торик дар Истио: Хадамоти махфӣ

Ва Istio, дар якҷоягӣ бо OpenShift ва Kubernetes, ҷойгиркунии микросервисҳоро воқеан дилгиркунанда ва пешгӯинашаванда месозад - ва ин олиҷаноб аст. Мо дар бораи ин ва бисёр чизҳои дигар дар мақолаи чорум ва ниҳоии силсилаи Истио сӯҳбат хоҳем кард.

Вақте ки дилтангӣ дуруст аст

Дар ҳолати мо, дилтангӣ танҳо дар марҳилаи ниҳоӣ, вақте ки танҳо нишастан ва тамошо кардани раванд боқӣ мемонад. Аммо барои ин шумо бояд аввал ҳама чизро танзим кунед ва дар ин ҷо шуморо бисёр чизҳои ҷолиб интизоранд.

Ҳангоми ҷойгиркунии версияи нави нармафзори шумо, ба назар гирифтани ҳамаи имконоти кам кардани хатарҳо зарур аст. Кори мувозӣ як роҳи хеле пурқувват ва санҷидашудаи озмоиш аст ва Истио ба шумо имкон медиҳад, ки "хизматрасонии махфӣ" (нусхаи пинҳонии микросервиси шумо) -ро бидуни дахолат ба системаи истеҳсолӣ истифода баред. Барои ин ҳатто як истилоҳи махсус вуҷуд дорад - "Ифтитоҳи торикӣ", ки дар навбати худ бо функсия бо номи ҷосусии якхела "оинасозии трафик" фаъол карда мешавад.

Лутфан таваҷҷӯҳ намоед, ки дар ҷумлаи аввали параграфи қаблӣ истилоҳи “ҷойгир кардан” ба ҷои “озод кардан” истифода мешавад. Шумо воқеан бояд қодир бошед, ки микросервиси худро ҳар қадаре ки мехоҳед, ҷойгир кунед ва албатта истифода баред. Ин хидмат бояд қодир бошад, ки трафикро қабул ва коркард кунад, натиҷаҳоро ба даст орад ва инчунин ба гузоришҳо нависад ва назорат кунад. Аммо дар баробари ин худи ин хизматрасонй ба истедсолот баровардан лозим нест. Ҷойгир кардан ва баровардани нармафзор на ҳамеша як чиз аст. Шумо метавонед ҳар вақте ки хоҳед, ҷойгир кунед, аммо танҳо вақте ки шумо омодаед, озод кунед.

Ташкили хастагӣ ҷолиб аст

Ба қоидаҳои масири зерини Istio назар андозед, ки ҳамаи дархостҳои HTTP-ро ба тавсияи v1 хидматрасонии хурд равона мекунад (ҳама мисолҳо аз Истио дарсӣ GitHub репо), ҳангоми инъикоси онҳо ба микросервиси тавсиявии v2:

Оғози торик дар Истио: Хадамоти махфӣ
Ба нишона диққат диҳед mirror: дар поёни экран - маҳз ҳамин аст, ки инъикоси трафикро муқаррар мекунад. Бале, ин қадар оддӣ аст!

Натиҷаи ин қоида ин аст, ки системаи истеҳсолии шумо (v1) коркарди дархостҳои воридотро идома медиҳад, аммо худи дархостҳо ба таври асинхронӣ ба v2 инъикос карда мешаванд, яъне нусхаҳои пурраи онҳо ба он ҷо хоҳанд рафт. Бо ин роҳ, шумо метавонед v2-ро дар шароити воқеӣ - дар бораи маълумоти воқеӣ ва трафик - бидуни ҳеҷ гуна дахолат ба кори системаи истеҳсолӣ озмоиш кунед. Оё ин ташкили санҷишро дилгиркунанда мекунад? Ҳа, бешубҳа. Аммо он ба таври ҷолиб анҷом дода шудааст.

Биёед драмаро илова кунем

Лутфан таваҷҷӯҳ намоед, ки дар коди v2 ҳолатҳоеро пешбинӣ кардан лозим аст, ки дархостҳои воридотӣ метавонанд ба тағирёбии маълумот оварда расонанд. Худи дархостҳо ба осонӣ ва шаффоф инъикос карда мешаванд, аммо интихоби усули коркард дар санҷиш ба шумо вобаста аст - ва ин каме нигаронкунанда аст.

Як нуктаи муҳимро такрор мекунем

Оғози махфӣ бо инъикоси трафик (Оғози торик/Оинаи дархост) метавонад бидуни таъсир ба код ба ҳеҷ ваҷҳ анҷом дода шавад.

Хӯрок барои андеша

Чӣ мешавад, агар ҷойе, ки дархостҳо инъикос мешаванд, баъзеи онҳоро на ба v1, балки ба v2 мефиристад? Масалан, як фоизи тамоми дархостҳо ё танҳо дархостҳо аз гурӯҳи муайяни корбарон. Ва он гоҳ, аллакай ба он нигоҳ кунед, ки чӣ тавр v2 кор мекунад, тадриҷан ҳамаи дархостҳоро ба версияи нав интиқол диҳед. Ё баръакс, агар дар v1 чизе хато кунад, ҳама чизро ба v2 баргардонед. Ман фикр мекунам, ки он Canary Deployment номида мешавад. ба истихроҷи маъдан бармегардад, ва агар он аз русӣ мебуд, эҳтимол дорад истинод ба гурбахо), ва ҳоло мо инро муфассалтар дида мебароем.

Ҷойгиркунии канарӣ дар Истио: содда кардани ба истифода додан

Бодиққат ва тадриҷан

Моҳияти модели густариши Canary Deployment бениҳоят содда аст: вақте ки шумо версияи нави нармафзори худро (дар ҳолати мо, микросервис) оғоз мекунед, шумо аввал ба он ба гурӯҳи хурди корбарон дастрасӣ медиҳед. Агар ҳама чиз хуб бошад, шумо ин гурӯҳро оҳиста-оҳиста зиёд мекунед, то он даме, ки версияи нав ба кор шурӯъ кунад, ё агар ин тавр нашавад - дар ниҳоят ҳамаи корбаронро ба он интиқол диҳед. Бо тафаккур ва тадриҷан ҷорӣ кардани версияи нав ва ба таври назоратшаванда иваз кардани корбарон, шумо метавонед хатарҳоро кам кунед ва фикру мулоҳизаҳоро ҳадди аксар афзоиш диҳед.

Албатта, Istio ҷойгиркунии Canary-ро тавассути пешниҳоди якчанд имконоти хуб барои масири интеллектуалии дархост содда мекунад. Ва ҳа, ҳамаи инро бе даст нарасондан ба рамзи сарчашмаи худ ба ҳеҷ ваҷҳ анҷом додан мумкин аст.

Филтр кардани браузер

Яке аз соддатарин меъёрҳои масир ин масир дар асоси браузер мебошад. Фарз мекунем, ки шумо мехоҳед танҳо дархостҳои браузерҳои Safari ба v2 гузаред. Ин аст, ки чӣ тавр иҷро карда мешавад:

Оғози торик дар Истио: Хадамоти махфӣ
Биёед ин қоидаи масирро татбиқ кунем ва сипас фармонро истифода барем curl Мо дархостҳои воқеиро ба микросервис дар як давр тақлид мекунем. Тавре ки шумо дар скриншот мебинед, ҳамаи онҳо ба v1 мераванд:

Оғози торик дар Истио: Хадамоти махфӣ
Трафик дар v2 дар куҷост? Азбаски дар мисоли мо ҳама дархостҳо танҳо аз сатри фармони худи мо омадаанд, он танҳо вуҷуд надорад. Аммо ба сатрҳои поёнии экрани боло диққат диҳед: ин вокуниш ба он аст, ки мо дархостро аз браузери Safari иҷро кардем, ки дар навбати худ инҳоро ба вуҷуд овард:

Оғози торик дар Истио: Хадамоти махфӣ

Қувваи бемаҳдуд

Мо аллакай навишта будем, ки ифодаҳои муқаррарӣ барои дархостҳои масир имкониятҳои хеле пурқувватро фароҳам меоранд. Ба мисоли зерин нигаред (мо фикр мекунем, ки шумо фаҳмед, ки ин чӣ кор мекунад):

Оғози торик дар Истио: Хадамоти махфӣ
Ҳоло шумо шояд тасаввуроте дошта бошед, ки ибораҳои муқаррарӣ чӣ кор карда метавонанд.

Ақл амал кунед

Масири интеллектуалӣ, махсусан коркарди сарлавҳаҳои бастаҳо бо истифода аз ифодаҳои муқаррарӣ, ба шумо имкон медиҳад, ки трафикро тавре, ки мехоҳед, идора кунед. Ва ин татбиқи коди навро хеле осон мекунад - ин оддӣ аст, он тағир додани худи кодро талаб намекунад ва агар лозим бошад, ҳама чизро зуд ба мисли пештара баргардонидан мумкин аст.

Манфиатдоред?

Оё шумо мехоҳед дар компютери худ бо Istio, Kubernetes ва OpenShift озмоиш кунед? Дастаи Дастаи таҳиягарони Red Hat аъло тайёр кард китоби дарсӣ оид ба ин мавзӯъ ва ҳама файлҳои ҳамроҳро дастраси умум гардониданд. Пас, пеш равед ва аз худ чизеро инкор накунед.

Истио Эгресс: баромадан аз мағозаи тӯҳфаҳо

Бо истифода аз Istio дар якҷоягӣ бо Red Hat OpenShift ва Kubernetes, шумо метавонед ҳаёти худро бо хидматрасониҳои хурд хеле осонтар кунед. Шабакаи хидматрасонии Истио дар дохили қуттиҳои Kubernetes пинҳон аст ва рамзи шумо (асосан) дар алоҳидагӣ кор мекунад. Иҷрои кор, осонии ивазкунӣ, пайгирӣ ва ғайра – ҳамаи ин ба шарофати истифодаи контейнерҳои канорӣ истифода бурдан осон аст. Аммо чӣ мешавад, агар микросервиси шумо бояд бо дигар хидматҳое, ки берун аз системаи OpenShift-Kubernetes ҷойгиранд, муошират кунад?

Дар ин чо Истио Эгресс ба ёрй меояд. Хулоса, он ба шумо имкон медиҳад, ки ба захираҳо (хонед: "хизматҳо") дастрасӣ пайдо кунед, ки қисми системаи қуттиҳои Kubernetes нестанд. Агар шумо конфигуратсияи иловагиро иҷро накунед, он гоҳ дар муҳити Istio Egress трафик танҳо дар дохили кластери подҳо ва байни чунин кластерҳо дар асоси ҷадвалҳои дохилии IP равона карда мешавад. Ва чунин pupation хуб кор мекунад, то даме ки шумо ба хидматҳо аз берун ниёз надоред.

Хуруҷ ба шумо имкон медиҳад, ки дар асоси қоидаҳои Egress ё як қатор суроғаҳои IP аз ҷадвалҳои дар боло зикршуда IP гузаред.

Фарз мекунем, ки мо як барномаи Java дорем, ки ба httpbin.org/headers дархости GET медиҳад.

(httpbin.org як манбаи қулай барои санҷиши дархостҳои содиротӣ мебошад.)

Агар шумо дар сатри фармон ворид шавед curl http://httpbin.org/headers, мо инҳоро мебинем:

Оғози торик дар Истио: Хадамоти махфӣ
Ё шумо метавонед ҳамон суроғаро дар браузер кушоед:

Оғози торик дар Истио: Хадамоти махфӣ
Тавре ки шумо мебинед, хидмате, ки дар он ҷо ҷойгир аст, танҳо сарлавҳаҳои ба он интиқолшударо бармегардонад.

Мо воридотро сари вант иваз мекунем

Акнун биёед рамзи Java-и ин хидматро, ки берун аз системаи мост, гирем ва онро мустақилона иҷро кунем, ки дар он ҷо Istio насб шудааст. (Шумо метавонед ин корро тавассути тамос дастури Истио мо.) Пас аз сохтани тасвири мувофиқ ва он дар платформаи OpenShift, мо ин хидматро бо фармон даъват мекунем curl egresshttpbin-istioegress.$(minishift ip).nip.io, пас аз он мо инро дар экран мебинем:

Оғози торик дар Истио: Хадамоти махфӣ
Оҳ, чӣ шуд? Ҳама чиз танҳо кор кард. Наёфтан чӣ маъно дорад? Мо инро танҳо барои ӯ кардем curl.

Васеъ кардани ҷадвалҳои IP ба тамоми Интернет

Истиро барои ин гунахкор (ё ташаккур) кардан лозим аст. Дар ниҳоят, Истио танҳо контейнерҳои паҳлӯӣ аст, ки барои ошкор ва масир масъуланд (ва бисёр чизҳои дигаре, ки мо қаблан гуфта будем). Аз ин сабаб, ҷадвалҳои IP танҳо медонанд, ки дар дохили системаи кластери шумо чӣ мавҷуд аст. Ва httpbin.org дар берун ҷойгир аст ва аз ин рӯ дастнорас аст. Ва ин аст, ки Истио Эгресс ба наҷот меояд - бе ягон тағирот дар коди сарчашмаи шумо.

Қоидаи Egress дар зер Istio-ро маҷбур мекунад, ки хидмати лозимаро дар ин ҳолат httpbin.org ҷустуҷӯ кунад (агар лозим бошад, дар тамоми Интернет). Тавре ки шумо аз ин файл мебинед (egress_httpbin.yml), функсия дар ин ҷо хеле содда аст:

Оғози торик дар Истио: Хадамоти махфӣ
Танҳо татбиқи ин қоида боқӣ мемонад:

istioctl create -f egress_httpbin.yml -n istioegress

Шумо метавонед қоидаҳои Egressро бо фармон дидан кунед istioctl get egressrules:

Оғози торик дар Истио: Хадамоти махфӣ
Ва ниҳоят, мо фармонро дубора иҷро мекунем лаблабу - ва мо мебинем, ки ҳама чиз кор мекунад:

Оғози торик дар Истио: Хадамоти махфӣ

Мо ошкоро фикр мекунем

Тавре ки шумо мебинед, Истио ба шумо имкон медиҳад, ки ҳамкорӣ бо ҷаҳони беруна ташкил карда шавад. Ба ибораи дигар, шумо ба ҳар ҳол метавонед хидматҳои OpenShift эҷод кунед ва онҳоро тавассути Kubernetes идора кунед ва ҳама чизро дар подкастҳо нигоҳ доред, ки миқёси лозимаро боло ва поён мекунанд. Ва ҳамзамон, шумо метавонед ба хидматҳои берунии муҳити худ бехатар дастрасӣ пайдо кунед. Ва ҳа, мо бори дигар такрор мекунем, ки ҳамаи инро бе даст нарасондани рамзи шумо ба ҳеҷ ваҷҳ анҷом додан мумкин аст.

Ин охирин паём дар силсила дар Истио буд. Огоҳ бошед - бисёр чизҳои ҷолиб дар пешанд!

Манбаъ: will.com

Илова Эзоҳ