Istio Service Mesh сайтындағы жазбалар сериясы

Біз Red Hat OpenShift және Kubernetes-пен біріктірілген Istio Service Mesh мүмкіндіктерінің кейбірін көрсететін посттар сериясын бастаймыз.

Istio Service Mesh сайтындағы жазбалар сериясы

Бірінші бөлім, бүгін:

  • Kubernetes бүйірлік контейнерлерінің тұжырымдамасын түсіндіріп, осы жазбалар сериясының лейтмотивін тұжырымдаймыз: «кодыңыздағы ештеңені өзгертудің қажеті жоқ».
  • Istio негізгі нәрсе - маршруттау ережелерімен таныстырайық. Барлық басқа Istio мүмкіндіктері оларға салынған, өйткені бұл ережелер қызмет кодынан тыс YAML файлдарын пайдалана отырып, трафикті микросервистерге бағыттауға мүмкіндік береді. Біз сондай-ақ Canary Deployment орналастыру схемасын қарастырамыз. Жаңа жылдық бонус – Istio-да 10 интерактивті сабақ


Жақында шығатын екінші бөлім сізге мынаны айтады:

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

Үшінші бөлім:

  • Кірістірілген немесе Istio-ға оңай қосылған бақылау және бақылау туралы әңгіме. Микросервис архитектурасын оңай басқару үшін Prometheus, Jaeger және Grafana сияқты құралдарды OpenShift масштабтауымен бірге пайдалану жолын көрсетеміз.
  • Біз қателерді бақылау мен өңдеуден оларды жүйеге әдейі енгізуге көшеміз. Басқаша айтқанда, біз бастапқы кодты өзгертпестен қате инъекцияны қалай жасау керектігін үйренеміз, бұл тестілеу тұрғысынан өте маңызды - өйткені егер сіз бұл үшін кодты өзгертсеңіз, қосымша қателерді енгізу қаупі бар.

Соңында, Istio Service Mesh сайтындағы соңғы жазбада:

  • Қараңғы жаққа барайық. Дәлірек айтқанда, біз Dark Launch схемасын пайдалануды үйренеміз, бұл кодты тікелей өндіріс деректерінде қолданып, сынақтан өткізгенде, бірақ жүйенің жұмысына ешқандай әсер етпейтін болады. Бұл жерде Истионың трафикті бөлу мүмкіндігі пайдалы болады. Жауынгерлік жүйенің жұмысына қандай да бір әсер етпей, тікелей өндіріс деректерінде сынау мүмкіндігі - бұл тексерудің ең сенімді әдісі.
  • Dark Launch негізінде біз тәуекелді азайту және жаңа кодты өндіріске енгізуді жеңілдету үшін Canary Deployment үлгісін қалай пайдалану керектігін көрсетеміз. Canary Deployment өзі жаңалық емес, бірақ Istio бұл схеманы қарапайым YAML файлдарымен жүзеге асыруға мүмкіндік береді.
  • Соңында, біз Istio Egress-ті Интернетпен жұмыс істеу кезінде Istio мүмкіндіктерін пайдалану үшін кластерлеріңізден тыс адамдарға қызметтерге қол жеткізу үшін қалай пайдалану керектігін көрсетеміз.

Сонымен, біз барамыз ...

Istio бақылау және басқару құралдары – микросервистерді қызмет торында реттеу үшін қажет нәрсенің бәрі қызмет көрсету торы.

Istio Service Mesh дегеніміз не

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

Istio контейнерлермен және Кубернеттермен қалай жұмыс істейді

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

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

Сондай-ақ маңызды нәрсе - микросервистердің операциялық құрамдас бөлігі кодтың өзімен ешқандай байланысы жоқ, яғни олардың жұмысын АТ мамандарына қауіпсіз түрде беруге болады. Шынында да, неліктен әзірлеуші ​​автоматты ажыратқыштар мен ақауларды инъекциялау үшін жауапты болуы керек? Реакция, иә, бірақ оларды өңдеп, жасау керек пе? Егер сіз мұның бәрін кодтан алып тастасаңыз, бағдарламашылар қолданбаның функционалдығына толығымен назар аудара алады. Ал кодтың өзі қысқа және қарапайым болады.

Қызмет көрсету торы

Микросервистерді кодынан тыс басқару функцияларын жүзеге асыратын Istio - бұл Service Mesh тұжырымдамасы. Басқаша айтқанда, бұл желі функцияларының торын құрайтын бір немесе бірнеше екілік файлдардың келісілген тобы.

Istio микросервистермен қалай жұмыс істейді

Бүйірлік контейнерлердің жұмысы осылай көрінеді Kubernetes и Шағын ауыстыру құс көзқарасы: Minishift данасын іске қосыңыз, Istio үшін жоба жасаңыз («istio-жүйе» деп атаймыз), Istio-ға қатысты барлық компоненттерді орнатыңыз және іске қосыңыз. Содан кейін жобалар мен подкасттарды жасағанда, орналастыруларға конфигурация ақпаратын қосасыз және подкасттар Istio пайдалана бастайды. Жеңілдетілген диаграмма келесідей көрінеді:

Istio Service Mesh сайтындағы жазбалар сериясы

Енді сіз Istio параметрлерін ретімен өзгерте аласыз, мысалы, ақауды инъекциялауды ұйымдастыру, қолдау көрсету Canary Deployment немесе басқа Istio мүмкіндіктері - және мұның бәрі қолданбалардың кодына қол тигізбестен. Ең үлкен клиенттің (Foo Corporation) пайдаланушыларынан барлық веб-трафикті сайттың жаңа нұсқасына қайта бағыттағыңыз келеді делік. Мұны істеу үшін жай ғана пайдаланушы идентификаторында @foocorporation.com іздейтін және сәйкес қайта бағыттайтын Istio бағыттау ережесін жасаңыз. Барлық басқа пайдаланушылар үшін ештеңе өзгермейді. Осы уақыт ішінде сіз сайттың жаңа нұсқасын сабырмен сынайсыз. Бұл үшін әзірлеушілерді мүлде тартудың қажеті жоқ екенін ескеріңіз.

Және ол үшін қымбат төлеуге тура келеді ме?

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

Оны өзіңіз меңгеріңіз

Red Hat Developer Experience Team тереңдетілген тәжірибелік бағдарламаны әзірледі көшбасшылық Istio (ағылшын тілінде). Ол Linux, MacOS және Windows жүйелерінде жұмыс істейді, ал код Java және Node.js жүйелерінде қол жетімді.

Istio бойынша 10 интерактивті сабақ

1-блок - Жаңадан бастаушыларға арналған

Istio-ға кіріспе
30 минут
Service Mesh-пен танысайық, OpenShift Kubernetes кластерінде Istio орнату жолын білейік.
бастау

Istio ішінде микросервистерді қолдану
30 минут
Spring Boot және Vert.x көмегімен үш микросервисті қолдану үшін Istio пайдаланамыз.
бастау

2-блок – орта деңгей

Istio-да бақылау және қадағалау
60 минут
Біз Prometheus және Grafana арқылы Istio-ның кірістірілген бақылау құралдарын, теңшелетін көрсеткіштерді және OpenTracing қызметін зерттейміз.
бастау

Istio-да қарапайым маршруттау
60 минут
Қарапайым ережелерді қолдана отырып, Istio жүйесінде маршруттауды басқаруды үйреніңіз.
бастау

Жетілдірілген маршруттау ережелері
60 минут
Istio-ның смарт маршруттауын, кіруді басқаруды, жүктемені теңестіруді және жылдамдықты шектеуді қарастырайық.
бастау

3-блок – озық пайдаланушы

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

Истиодағы автоматты ажыратқыш
30 минут
Біз Siege-ті стресс-тестілеу сайттары үшін орнатамыз және қайта ойнатулар, автоматты ажыратқыш және пулды шығару арқылы сервердегі ақауларға төзімділікті қалай қамтамасыз ету керектігін үйренеміз.
бастау

Egress және Istio
10 минут
Біз ішкі қызметтердің сыртқы API интерфейстерімен және қызметтерімен өзара әрекеттесу ережелерін жасау үшін Egress маршруттарын қолданамыз.
бастау

Истио және Киали
15 минут
Қызмет торын шолу және сұрау мен деректер ағындарын зерттеу үшін Kiali қолданбасын пайдалануды үйреніңіз.
бастау

Istio ішіндегі өзара TLS
15 минут
Біз Istio Gateway және VirtualService жасаймыз, содан кейін өзара TLS (mTLS) және оның параметрлерін егжей-тегжейлі зерттейміз.
бастау

Блок 3.1 - Терең сүңгу: Микросервистерге арналған Istio Service Mesh

Istio Service Mesh сайтындағы жазбалар сериясы
Кітап не туралы:

  • Қызмет көрсету торы дегеніміз не?
  • Istio жүйесі және оның микросервис архитектурасындағы рөлі.
  • Келесі мәселелерді шешу үшін Istio пайдалану:
    • Ақауларға төзімділік;
    • Маршруттау;
    • Хаос сынағы;
    • Қауіпсіздік;
    • Тректерді, метриканы және Grafana көмегімен телеметрия жинағы.

Кітапты жүктеу үшін

Қызмет торлары және Istio туралы мақалалар сериясы

Өзіңіз көріңіз

Бұл жазбалар сериясы Истио әлеміне терең бойлауды қамтамасыз етуге арналмаған. Біз сізді концепциямен таныстырғымыз келеді және Istio-ны өзіңіз үшін қолдануға шабыттандырамыз. Мұны істеу толығымен тегін және Red Hat OpenShift, Kubernetes, Linux контейнерлері және Istio бағдарламаларын іске қосу үшін барлық қажетті құралдарды ұсынады, соның ішінде: Red Hat әзірлеушісінің OpenShift контейнерлік платформасы, Истиоға біздің гид және басқа да ресурстарымыз Қызмет торындағы микросайт. Кешіктірмеңіз, бүгіннен бастаңыз!

Istio маршруттау ережелері: қызмет сұрауларын қажет жерге бағыттау

openshift и Kubernetes шешуде тамаша жұмыс жасаңыз микросервис қажетті тармақтарға бағытталады. Бұл Kubernetes болуының себептерінің бірі - маршруттау және жүктемені теңестіру. Бірақ сізге неғұрлым нәзік және күрделі маршруттау қажет болса ше? Мысалы, микросервистің екі нұсқасын бір уақытта пайдалану үшін. Istio Route Rules мұнда қалай көмектесе алады?

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

Kubernetes әдепкі: тривиальды "50/50"

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

OpenShift, ұсыныс-v1 және ұсыныс-v2 нұсқаларында ұсыныс қызметіміздің екі нұсқасын қолдандық делік.
Суретте. 1-суретте әрбір қызмет бір данада ұсынылғанда сұраулар олардың арасында біркелкі кезектесетінін көрсетеді: 1-2-1-2-... Әдепкі бойынша Kubernetes маршрутизациясы осылай жұмыс істейді:

Istio Service Mesh сайтындағы жазбалар сериясы

Нұсқалар арасындағы салмақты бөлу

Суретте. 2-сурет v2 қызмет репликаларының санын бірден екіге көбейтсеңіз не болатынын көрсетеді (бұл oc шкаласымен орындалады —репликалар=2 орналастыру/ұсыным-v2 пәрмені). Көріп отырғаныңыздай, v1 және v2 арасындағы сұраулар енді бір-үш қатынасында бөлінеді: 1-2-2-1-2-2-…:

Istio Service Mesh сайтындағы жазбалар сериясы

Istio көмегімен нұсқаны елемеу

Istio сұраныстардың таралуын бізге қажетті жолмен өзгертуді жеңілдетеді. Мысалы, келесі Istio yaml файлын пайдаланып, барлық трафикті тек ұсыныс-v1 нұсқасына жіберіңіз:

Istio Service Mesh сайтындағы жазбалар сериясы

Мұнда сіз мынаған назар аударуыңыз керек: бағандар белгілерге сәйкес таңдалады. Біздің мысалда v1 белгісі қолданылады. "Салмақ: 100" параметрі трафиктің 100% v1 белгісі бар барлық қызмет подкасттарына бағытталатынын білдіреді.

Нұсқалар арасында директиваны бөлу (Canary Deployment)

Әрі қарай, салмақ параметрін пайдаланып, олардың әрқайсысында іске қосылған микросервис даналарының санын елемей, трафикті екі бөлімге де бағыттай аласыз. Мысалы, мұнда біз трафиктің 90%-ын v1-ге және 10%-ын v2-ге бағыттаймыз:

Istio Service Mesh сайтындағы жазбалар сериясы

Мобильді пайдаланушылар үшін бөлек маршруттау

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

Istio Service Mesh сайтындағы жазбалар сериясы

Енді сіздің кезегіңіз

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

Есіңізде болсын, Dev емес, Ops

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

Олай болса, осы жазбалар сериясының лейтмотивін қайталайық: кодыңызда ештеңені өзгертудің қажеті жоқ. Жаңа кескіндерді салудың немесе жаңа контейнерлерді іске қосудың қажеті жоқ. Мұның бәрі кодтан тыс жүзеге асырылады.

Қиялыңызды пайдаланыңыз

Тұрақты өрнектерді пайдаланып тақырыпты талдау мүмкіндіктерін елестетіп көріңіз. Ең үлкен тұтынушыңызды арнайы нұсқаңызға қайта бағыттағыңыз келеді микросервис? Оңай! Chrome браузері үшін бөлек нұсқасы керек пе? Проблема емес! Сіз трафикті кез келген сипаттамаға сәйкес бағыттай аласыз.

Өзіңіз көріңіз

Istio, Kubernetes және OpenShift туралы оқу бір нәрсе, бірақ неге бәрін өзіңіз қозғамасқа? Команда Red Hat әзірлеушілер бағдарламасы осы технологияларды мүмкіндігінше тез меңгеруге көмектесетін егжей-тегжейлі нұсқаулықты (ағылшын тілінде) дайындады. Нұсқаулық сонымен қатар 100% ашық бастапқы болып табылады, сондықтан ол қоғамдық доменде орналастырылған. Файл macOS, Linux және Windows жүйелерінде жұмыс істейді, ал бастапқы код Java және node.js нұсқаларында қолжетімді (басқа тілдердегі нұсқалар жақын арада шығады). Браузеріңізде сәйкес git репозиторийін ашыңыз Red Hat әзірлеуші ​​​​демо.

Келесі постта: біз есептерді әдемі шығарамыз

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

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

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