Istio-дағы қараңғы іске қосу: құпия қызметтер

«Қауіп - менің екінші атым», - деп айтатын Остин Пауэрс, халықаралық құпия адам. Бірақ супер агенттер мен барлау қызметтері жоғары бағалайтын нәрсе компьютерлік қызметтерге мүлдем сәйкес келмейді, мұнда скучинг қауіптен әлдеқайда жақсы.

Istio-дағы қараңғы іске қосу: құпия қызметтер

Istio OpenShift және Kubernetes-пен бірге микросервистерді қолдануды шынымен қызықсыз және болжамды етеді - бұл тамаша. Біз бұл туралы және тағы басқалар туралы Istio сериясының төртінші және соңғы постында айтатын боламыз.

Жалқаулық дұрыс болған кезде

Біздің жағдайда, зерігу тек қана соңғы фазада орын алады, тек отыру және процесті бақылап отыру ғана қалады. Бірақ бұл үшін алдымен бәрін конфигурациялау керек, және сізді мұнда көптеген қызықты нәрселер күтеді.

Бағдарламалық жасақтаманың жаңа нұсқасын қолдану кезінде тәуекелдерді азайтудың барлық нұсқаларын қарастырған жөн. Параллель жұмыс істеу - бұл тестілеудің өте күшті және дәлелденген тәсілі және Istio бұл үшін өндіріс жүйесіне кедергі келтірместен «құпия қызметті» (микросервистің жасырын нұсқасы) пайдалануға мүмкіндік береді. Бұл үшін тіпті арнайы термин бар - «Қараңғы іске қосу», ол өз кезегінде «трафикті шағылыстыру» бірдей шпиондық атауы бар функция арқылы іске қосылады.

Алдыңғы абзацтың бірінші сөйлемінде «шығару» емес, «орналастыру» термині қолданылатынын ескеріңіз. Сіз шынымен де микросервисіңізді қалағаныңызша қолдана аласыз және, әрине, пайдалана аласыз. Бұл қызмет трафикті қабылдау және өңдеу, нәтижелерді шығару, сонымен қатар журналдарға жазу және бақылау мүмкіндігі болуы керек. Бірақ сонымен бірге бұл қызметтің өзі өндіріске шығарылуы міндетті емес. Бағдарламалық құралды орналастыру және шығару әрқашан бірдей нәрсе емес. Сіз кез келген уақытта орналастыра аласыз, бірақ дайын болған кезде ғана шығарыңыз.

Жалығуды ұйымдастыру қызық

Барлық HTTP сұрауларын микросервис v1 ұсынысына бағыттайтын келесі Istio маршруттау ережесін қараңыз (барлық мысалдар мына жерден алынған). Istio оқулық GitHub репо), оларды бір уақытта v2 микросервисіне шағылыстыру кезінде:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Белгіге назар аударыңыз mirror: экранның төменгі жағында - бұл трафикті шағылыстыруды орнатады. Иә, бұл қарапайым!

Бұл ереженің нәтижесі өндірістік жүйеңіз (v1) кіріс сұрауларды өңдеуді жалғастырады, бірақ сұраулардың өзі v2-ге асинхронды түрде шағылыстырылады, яғни олардың толық көшірмелері сонда өтеді. Осылайша, сіз v2-ні нақты жағдайларда - нақты деректер мен трафикте - өндіріс жүйесінің жұмысына ешқандай кедергі жасамай сынай аласыз. Бұл тестілеуді ұйымдастыруды жалықтыра ма? Иә, сөзсіз. Бірақ бұл қызықты түрде жасалған.

Драма қосайық

v2 кодында кіріс сұраулар деректердің өзгеруіне әкелуі мүмкін жағдайларды қамтамасыз ету қажет екенін ескеріңіз. Сұраныстардың өзі оңай және ашық түрде бейнеленеді, бірақ сынақта өңдеу әдісін таңдау сізге байланысты – бұл біраз алаңдатады.

Маңызды ойды қайталайық

Трафик шағылысы бар құпия іске қосу (Қараңғы іске қосу/Сұраныс айнасы) кодқа ешқандай әсер етпестен орындалуы мүмкін.

Ойланатын тағам

Сұраулар шағылыстырылатын орын олардың кейбірін v1 емес, v2-ге жіберсе ше? Мысалы, барлық сұраулардың бір пайызы немесе тек белгілі бір пайдаланушылар тобының сұраулары. Содан кейін, v2 қалай жұмыс істейтініне қарап, барлық сұрауларды біртіндеп жаңа нұсқаға ауыстырыңыз. Немесе керісінше, v1-де бірдеңе дұрыс болмаса, барлығын v2-ге қайтарыңыз. Менің ойымша, бұл Canary Deployment деп аталады. кен өндіруге қайта оралады, және егер ол орыс тілінен шыққан болса, онда сілтеме болуы мүмкін мысықтар), енді біз мұны толығырақ қарастырамыз.

Istio-да Canary Deployment: іске қосуды жеңілдету

Мұқият және біртіндеп

Canary Deployment орналастыру моделінің мәні өте қарапайым: бағдарламалық жасақтаманың жаңа нұсқасын (біздің жағдайда микросервис) іске қосқан кезде, алдымен пайдаланушылардың шағын тобына оған рұқсат бересіз. Егер бәрі ойдағыдай болса, жаңа нұсқа жұмыс істей бастағанша бұл топты баяу көбейтесіз немесе олай болмаса, барлық пайдаланушыларды оған көшіресіз. Жаңа нұсқаны мұқият және бірте-бірте енгізу және оған пайдаланушыларды бақыланатын түрде ауыстыру арқылы сіз тәуекелдерді азайтып, кері байланысты барынша арттыра аласыз.

Әрине, Istio интеллектуалды сұранысты бағыттау үшін бірнеше жақсы опцияларды ұсына отырып, Canary Deployment қызметін жеңілдетеді. Және иә, мұның барлығын бастапқы кодқа кез келген жолмен қол тигізбестен жасауға болады.

Браузерді сүзу

Ең қарапайым маршруттау критерийлерінің бірі браузер негізіндегі қайта бағыттау болып табылады. v2 нұсқасына Safari браузерлерінің сұраулары ғана өтуін қалайсыз делік. Бұл қалай орындалды:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Осы маршруттау ережесін қолданып, содан кейін пәрменді қолданайық curl Біз микросервиске нақты сұрауларды циклде имитациялаймыз. Скриншотта көріп отырғаныңыздай, олардың барлығы v1 нұсқасына өтеді:

Istio-дағы қараңғы іске қосу: құпия қызметтер
v2-де трафик қай жерде? Біздің мысалда барлық сұраулар тек біздің пәрмен жолымыздан келгендіктен, ол жай жоқ. Бірақ жоғарыдағы экрандағы төменгі жолдарға назар аударыңыз: бұл Safari браузерінен сұрауды орындағанымызға реакция, ол өз кезегінде мынаны жасады:

Istio-дағы қараңғы іске қосу: құпия қызметтер

Шексіз қуат

Тұрақты өрнектер сұраныстарды бағыттау үшін өте қуатты мүмкіндіктер беретінін бұрын жазғанбыз. Келесі мысалды қараңыз (біз оның не істейтінін түсінесіз деп ойлаймыз):

Istio-дағы қараңғы іске қосу: құпия қызметтер
Сізде тұрақты тіркестер не істей алатыны туралы түсінік бар шығар.

Ақылды әрекет ету

Ақылды маршруттау, атап айтқанда, тұрақты өрнектерді пайдалана отырып, пакет тақырыптарын өңдеу трафикті өзіңіз қалаған жолмен басқаруға мүмкіндік береді. Және бұл жаңа кодты енгізуді айтарлықтай жеңілдетеді - бұл қарапайым, ол кодтың өзін өзгертуді қажет етпейді және қажет болған жағдайда бәрін бұрынғыдай тез қайтаруға болады.

Қызықты ма?

Компьютеріңізде Istio, Kubernetes және OpenShift-пен тәжірибе жасағыңыз келе ме? Команда Red Hat әзірлеушілер тобы тамаша дайындады оқулық осы тақырып бойынша және барлық ілеспе файлдарды жалпыға қолжетімді етті. Сондықтан әрі қарай жүріңіз және өзіңізді ештеңеден бас тартпаңыз.

Istio Egress: кәдесыйлар дүкені арқылы шығу

Istio-ны Red Hat OpenShift және Kubernetes-пен бірге пайдалану арқылы микросервистермен өміріңізді әлдеқайда жеңілдетуге болады. Istio қызмет көрсету торы Kubernetes қосқыштарының ішінде жасырылған және сіздің кодыңыз (негізінен) оқшауланған күйде жұмыс істейді. Өнімділік, өзгертудің қарапайымдылығы, бақылау және т.б. – мұның барлығы бүйірлік контейнерлерді пайдаланудың арқасында пайдалану оңай. Бірақ микросервис OpenShift-Kubernetes жүйесінен тыс орналасқан басқа қызметтермен байланысуы қажет болса ше?

Бұл жерде Истио Эгресс көмекке келеді. Бір сөзбен айтқанда, ол жай ғана Kubernetes қосқыштар жүйесіне кірмейтін ресурстарға («қызметтерді» оқыңыз) қол жеткізуге мүмкіндік береді. Қосымша конфигурацияны орындамасаңыз, Istio Egress ортасында трафик ішкі IP кестелеріне негізделген подкасттар кластері ішінде және осындай кластерлер арасында ғана бағытталады. Ал мұндай қуыршақ сізге сырттан қызметтерге қол жеткізуді қажет етпейінше жақсы жұмыс істейді.

Egress шығу ережелеріне немесе IP мекенжайларының ауқымына негізделген жоғарыдағы IP кестелерін айналып өтуге мүмкіндік береді.

Бізде httpbin.org/headers мекенжайына GET сұрауын жасайтын Java бағдарламасы бар делік.

(httpbin.org - шығыс қызмет сұрауларын тексеруге арналған ыңғайлы ресурс.)

Пәрмен жолына кірсеңіз curl http://httpbin.org/headers, біз келесілерді көреміз:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Немесе сол мекенжайды браузерде ашуға болады:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Көріп отырғаныңыздай, онда орналасқан қызмет оған берілген тақырыптарды қайтарады.

Біз импортты бірден ауыстырамыз

Енді біздің жүйеден тыс осы қызметтің Java кодын алайық және оны Istio орнатылған жерде өзіміз іске қосайық. (Мұны өзіңіз хабарласу арқылы жасай аласыз біздің Istio оқу құралы.) Тиісті кескінді құрастырып, оны OpenShift платформасында іске қосқаннан кейін біз бұл қызметті пәрменмен шақырамыз. curl egresshttpbin-istioegress.$(minishift ip).nip.io, содан кейін біз оны экранда көреміз:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Ой, не болды? Барлығы жай ғана жұмыс істеді. Табылмады нені білдіреді? Біз оны жай ғана ол үшін жасадық curl.

IP кестелерін бүкіл Интернетке кеңейту

Бұл үшін Истиоды кінәлау (немесе алғыс айту) керек. Ақыр соңында, Istio - бұл анықтауға және бағыттауға жауап беретін бүйірлік контейнерлер (және біз бұрын айтқан басқа да көптеген нәрселер). Осы себепті IP кестелері кластерлік жүйеңіздің ішінде не бар екенін ғана біледі. Ал httpbin.org сыртта орналасқан, сондықтан оған кіру мүмкін емес. Міне, Истио Эгресс көмекке келеді - бастапқы кодыңызға шамалы өзгеріссіз.

Төмендегі Egress ережесі Istio-ны қажетті қызметті іздеуге (қажет болса, бүкіл Интернетте) мәжбүрлейді, бұл жағдайда httpbin.org. Бұл файлдан (egress_httpbin.yml) көріп тұрғаныңыздай, мұндағы функционалдылық өте қарапайым:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Бұл ережені қолдану ғана қалады:

istioctl create -f egress_httpbin.yml -n istioegress

Шығу ережелерін пәрмен арқылы көруге болады istioctl get egressrules:

Istio-дағы қараңғы іске қосу: құпия қызметтер
Соңында біз пәрменді қайтадан іске қосамыз бұралу – және біз бәрі жұмыс істейтінін көреміз:

Istio-дағы қараңғы іске қосу: құпия қызметтер

Біз ашық ойлаймыз

Көріп отырғаныңыздай, Istio сыртқы әлеммен өзара әрекеттесуді ұйымдастыруға мүмкіндік береді. Басқаша айтқанда, сіз әлі де OpenShift қызметтерін жасай аласыз және оларды Kubernetes арқылы басқара аласыз, барлығын қажетінше үлкейтетін және кішірейтетін бөлімдерде сақтай аласыз. Сонымен қатар, сіз қоршаған ортаңыздан тыс қызметтерге қауіпсіз қол жеткізе аласыз. Және иә, мұның барлығын сіздің кодыңызға ешқандай қол тигізбестен жасауға болатынын тағы бір рет қайталаймыз.

Бұл Istio сериясындағы соңғы жазба болды. Бізбен бірге болыңыз - алда көптеген қызықты нәрселер бар!

Ақпарат көзі: www.habr.com

пікір қалдыру