Дарк Лаунцх у Истио: Сецрет Сервицес

„Опасност је моје средње име“, говорио је Остин Пауерс, међународни мистериозни човек. Али оно што високо цене супер агенти и обавештајне службе уопште није погодно за компјутерске услуге, где је досада много боља од опасности.

Дарк Лаунцх у Истио: Сецрет Сервицес

А Истио, заједно са ОпенСхифт-ом и Кубернетес-ом, чини примену микросервиса заиста досадним и предвидљивим – и то је сјајно. О овоме и много више причаћемо у четвртом и последњем посту у серији Истио.

Када је досада права

У нашем случају, досада се јавља тек у завршној фази, када остаје само да седимо и посматрамо процес. Али за ово морате прво све да конфигуришете, а овде вас чека много занимљивих ствари.

Приликом постављања нове верзије вашег софтвера, вреди размотрити све опције за минимизирање ризика. Паралелно покретање је веома моћан и доказан начин тестирања, а Истио вам омогућава да користите „тајну услугу“ (скривену верзију вашег микросервиса) да бисте то урадили без мешања у производни систем. За ово постоји чак и посебан термин - „Тамно покретање“, које се заузврат активира функцијом са једнако шпијунским називом „пресликавање саобраћаја“.

Имајте на уму да прва реченица претходног параграфа користи термин „распоређивање“ уместо „ослободити“. Заиста би требало да будете у могућности да примените – и, наравно, да користите – своју микроуслугу онолико често колико желите. Ова услуга мора бити у стању да прима и обрађује саобраћај, производи резултате, као и да пише у дневнике и надгледа. Али у исто време, сама ова услуга не мора бити пуштена у производњу. Примена и издавање софтвера нису увек иста ствар. Можете да примените кад год желите, али пустите тек када сте спремни.

Организовање досаде је занимљиво

Погледајте следеће Истио правило рутирања, које усмерава све ХТТП захтеве на препоруку микросервиса в1 (сви примери преузети са Истио Туториал ГитХуб репо), док их истовремено пресликава на микросервис препоруке в2:

Дарк Лаунцх у Истио: Сецрет Сервицес
Обратите пажњу на етикету mirror: на дну екрана - то је оно што поставља пресликавање саобраћаја. Да, тако је једноставно!

Резултат овог правила ће бити да ће ваш производни систем (в1) наставити да обрађује долазне захтеве, али ће сами захтеви бити асинхроно пресликани на в2, односно њихови комплетни дупликати ће ићи тамо. На овај начин можете тестирати в2 у реалним условима - на стварним подацима и саобраћају - без ометања на било који начин у раду производног система. Да ли ово чини организовање тестирања досадним? Да дефинитивно. Али то се ради на занимљив начин.

Хајде да додамо драму

Имајте на уму да је у коду в2 неопходно предвидети ситуације у којима долазни захтеви могу довести до промене података. Сами захтеви се огледају лако и транспарентно, али избор методе обраде у тесту је на вама – и то је помало забрињавајуће.

Поновимо једну важну тачку

Тајно покретање са пресликавањем саобраћаја (Дарк Лаунцх/Рекуест Мирроринг) може се извршити без утицаја на код на било који начин.

Дајем динар за то што мислиш

Шта ако место где се пресликавају захтеви пошаље неке од њих не на в1, већ на в2? На пример, један проценат свих захтева или само захтева одређене групе корисника. А онда, већ гледајући како в2 функционише, постепено пренесите све захтеве у нову верзију. Или обрнуто, вратите све на в1 ако нешто крене наопако са в2. Мислим да се зове Цанари Деплоимент. враћа се рударству, а да је руског порекла, вероватно би садржала референцу на мачке), а сада ћемо ово детаљније погледати.

Цанари имплементација у Истио: поједностављење пуштања у рад

Пажљиво и постепено

Суштина Цанари Деплоимент модела имплементације је изузетно једноставна: када покренете нову верзију свог софтвера (у нашем случају, микросервис), прво му дајете приступ малој групи корисника. Ако све прође како треба, полако повећавате ову групу док нова верзија не почне да делује, или – ако не иде – на крају мигрирате све кориснике у њу. Промишљеним и постепеним увођењем нове верзије и пребацивањем корисника на њу на контролисан начин, можете смањити ризике и максимизирати повратне информације.

Наравно, Истио поједностављује Цанари Деплоимент нудећи неколико добрих опција за интелигентно рутирање захтева. И да, све ово се може урадити без додиривања вашег изворног кода на било који начин.

Филтрирање претраживача

Један од најједноставнијих критеријума рутирања је преусмеравање засновано на претраживачу. Рецимо да желите да само захтеви из Сафари прегледача иду у в2. Ево како се то ради:

Дарк Лаунцх у Истио: Сецрет Сервицес
Хајде да применимо ово правило рутирања и онда употребимо команду curl Симулираћемо стварне захтеве микросервису у петљи. Као што можете видети на снимку екрана, сви они иду на в1:

Дарк Лаунцх у Истио: Сецрет Сервицес
Где је саобраћај на в2? Пошто у нашем примеру сви захтеви долазе само из наше командне линије, она једноставно не постоји. Али обратите пажњу на доње редове на екрану изнад: ово је реакција на чињеницу да смо извршили захтев из прегледача Сафари, који је заузврат произвео ово:

Дарк Лаунцх у Истио: Сецрет Сервицес

Неограничена моћ

Већ смо писали да регуларни изрази пружају веома моћне могућности за рутирање захтева. Погледајте следећи пример (мислимо да ћете разумети шта ради):

Дарк Лаунцх у Истио: Сецрет Сервицес
До сада вероватно имате идеју шта регуларни изрази могу да ураде.

Делујте паметно

Паметно рутирање, посебно обрада заглавља пакета помоћу регуларних израза, омогућава вам да управљате саобраћајем онако како желите. А ово у великој мери поједностављује имплементацију новог кода - једноставно је, не захтева промену самог кода, а ако је потребно, све се може брзо вратити како је било.

Заинтересовани?

Да ли сте жељни експериментисања са Истио, Кубернетес и ОпенСхифт на свом рачунару? Тим Ред Хат тим програмера припремио одличан уџбеник на ову тему и учинио јавно доступним све пропратне фајлове. Зато само напред и не ускраћујте себи ништа.

Истио Егресс: излаз кроз сувенирницу

Коришћењем Истио-а заједно са Ред Хат ОпенСхифт-ом и Кубернетес-ом, можете учинити свој живот са микроуслугама много лакшим. Истио сервисна мрежа је скривена унутар Кубернетес подова, а ваш код ради (углавном) изоловано. Перформансе, лакоћа промене, праћење итд. – све ово је лако за коришћење захваљујући употреби контејнера за бочне приколице. Али шта ако ваш микросервис треба да комуницира са другим услугама које се налазе изван вашег ОпенСхифт-Кубернетес система?

Овде Истио Егресс долази у помоћ. Укратко, једноставно вам омогућава приступ ресурсима (читај: „услуге“) који нису део вашег система Кубернетес подова. Ако не извршите додатну конфигурацију, онда се у Истио Егресс окружењу саобраћај усмерава само унутар кластера подова и између таквих кластера на основу интерних ИП табела. И такво пупирање функционише одлично све док вам није потребан приступ услугама споља.

Егресс вам омогућава да заобиђете горе наведене ИП табеле, било на основу Егресс правила или на основу низа ИП адреса.

Рецимо да имамо Јава програм који шаље ГЕТ захтев на хттпбин.орг/хеадерс.

(хттпбин.орг је само згодан ресурс за тестирање одлазних захтева за услугу.)

Ако унесете на командној линији curl http://httpbin.org/headers, видећемо следеће:

Дарк Лаунцх у Истио: Сецрет Сервицес
Или можете да отворите исту адресу у претраживачу:

Дарк Лаунцх у Истио: Сецрет Сервицес
Као што видите, услуга која се тамо налази једноставно враћа заглавља која су јој прослеђена.

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

Сада хајде да узмемо Јава код ове услуге, ван нашег система, и да га покренемо сами, где је, подсетимо, инсталиран Истио. (То можете учинити сами тако што ћете контактирати наш Истио водич.) Након што смо направили одговарајућу слику и покренули је на ОпенСхифт платформи, позваћемо ову услугу командом curl egresshttpbin-istioegress.$(minishift ip).nip.io, након чега ћемо видети ово на екрану:

Дарк Лаунцх у Истио: Сецрет Сервицес
Упс, шта се десило? Све је само функционисало. Шта значи Није пронађено? Само смо то урадили за њега curl.

Проширивање ИП табела на цео Интернет

Истио треба окривити (или захвалити) за ово. На крају крајева, Истио су само бочни контејнери који су одговорни за откривање и рутирање (и много других ствари о којима смо раније говорили). Из тог разлога, ИП табеле знају само шта је унутар вашег система кластера. А хттпбин.орг се налази споља и стога је недоступан. И ту Истио Егресс долази у помоћ - без и најмање промене у вашем изворном коду.

Егресс правило у наставку приморава Истио да тражи (ако је потребно, онда на целом Интернету) тражену услугу, у овом случају, хттпбин.орг. Као што можете видети из ове датотеке (егресс_хттпбин.имл), функционалност овде је прилично једноставна:

Дарк Лаунцх у Истио: Сецрет Сервицес
Остаје само да примените ово правило:

istioctl create -f egress_httpbin.yml -n istioegress

Можете погледати Егресс правила помоћу команде istioctl get egressrules:

Дарк Лаунцх у Истио: Сецрет Сервицес
И коначно, поново покрећемо команду Цурл – и видимо да све функционише:

Дарк Лаунцх у Истио: Сецрет Сервицес

Размишљамо отворено

Као што видите, Истио вам омогућава да организујете интеракцију са спољним светом. Другим речима, још увек можете да креирате ОпенСхифт услуге и управљате њима преко Кубернетеса, држећи све у подовима који се повећавају и смањују по потреби. У исто време, можете безбедно да приступите услугама изван вашег окружења. И да, још једном понављамо да се све ово може урадити без додиривања вашег кода на било који начин.

Ово је био последњи пост у серији на Истио-у. Останите са нама - чека нас много занимљивих ствари!

Извор: ввв.хабр.цом

Додај коментар