Istio Service Mesh боюнча бир катар посттор

Red Hat OpenShift жана Kubernetes менен айкалышканда Istio Service Meshтин көптөгөн мүмкүнчүлүктөрүн көрсөткөн бир катар постторду баштайбыз.

Istio Service Mesh боюнча бир катар посттор

Биринчи бөлүк, бүгүн:

  • Келгиле, Kubernetes каптал контейнерлеринин концепциясын түшүндүрүп, бул посттордун лейтмотивин түзөлү: "Сиз кодуңузда эч нерсени өзгөртүүнүн кереги жок".
  • Келгиле, Istio негизги нерсеси менен тааныштыралы - маршруттук эрежелер. Бардык башка Istio функциялары алардын үстүнө курулган, анткени бул эрежелер, тейлөө кодунан тышкары YAML файлдарын колдонуу менен микросервистерге трафикти багыттоого мүмкүндүк берет. Биз ошондой эле Canary Deployment жайылтуу схемасын карап жатабыз. Жаңы жылдык бонус – Istio боюнча 10 интерактивдүү сабак


Экинчи бөлүк, жакында, сага айтып берет:

  • Istio Pool Ejection'ди Circuit Breaker менен айкалыштырып кантип ишке ашырат жана Istio өлүк же начар иштеген поддонду балансташтыруу чынжырынан кантип алып салууга мүмкүндүк берерин көрсөтөт.
  • Istio кантип колдонсо болорун көрүү үчүн биз биринчи посттон Circuit Breaker темасын карап чыгабыз. Биз сизге 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 контейнерлер жана Kubernetes менен кантип иштейт

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

Каптал моделине ылайык, Istio биринде жайгашкан Linux контейнеринде иштейт Kubernetes-конфигурацияланган конфигурацияга ылайык функцияларды жана маалыматты инжекциялайт жана чыгарат. Бул сиздин жеке конфигурацияңыз экенин жана ал сиздин коддон тышкары жашай турганын баса белгилейбиз. Ошондуктан, код бир топ жөнөкөй жана кыска болуп калат.

Ошондой эле маанилүү нерсе, микросервистердин операциялык компоненти коддун өзүнө эч кандай байланышы жок болуп чыгат, демек, алардын иштеши IT адистерине коопсуз өткөрүлүп берилиши мүмкүн. Чынында эле, эмне үчүн иштеп чыгуучу автоматтык өчүргүчтөр жана каталарды киргизүү үчүн жооптуу болушу керек? Реакция, ооба, бирок аларды иштетип, түзөсүзбү? Эгер мунун баарын коддон алып салсаңыз, программисттер толугу менен тиркемелердин иштөөсүнө көңүл бура алышат. Ал эми коддун өзү кыскараак жана жөнөкөй болуп калат.

Кызмат тор

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

Istio микросервис менен кантип иштейт

Капталдагы контейнерлердин иши мына ушуга окшош Kubernetes и Minishift куштун көз карашы: Minishiftтин инстанциясын ишке киргизиңиз, Istio үчүн долбоор түзүңүз (келгиле, аны “istio-система” деп атайлы), Istio менен байланышкан бардык компоненттерди орнотуп, иштетиңиз. Андан кийин, сиз долбоорлорду жана подкасттарды түзүп жатканыңызда, конфигурация маалыматын жайылтууларыңызга кошосуз жана подколоруңуз Istio колдоно баштайт. Жөнөкөйлөтүлгөн диаграмма төмөнкүдөй көрүнөт:

Istio Service Mesh боюнча бир катар посттор

Эми сиз Istio жөндөөлөрүн өзгөртө аласыз, мисалы, ката инъекциясын уюштуруу, колдоо Canary Deployment же башка Istio функциялары - жана мунун бардыгы тиркемелердин кодуна тийбестен. Келгиле, сиз эң чоң кардарыңыздын (Foo Corporation) колдонуучуларынан бардык веб-трафикти сайттын жаңы версиясына багыттагыңыз келет дейли. Бул үчүн, жөн гана колдонуучу ID'синде @foocorporation.com издеп, ошого жараша багыттоочу Istio багыттоо эрежесин түзүңүз. Бардык башка колдонуучулар үчүн эч нерсе өзгөрбөйт. Ал ортодо сиз жайбаракаттык менен сайттын жаңы версиясын сынайсыз. Жана бул үчүн иштеп чыгуучуларды тартуунун кереги жок экенин белгилеңиз.

Анан ал үчүн кымбат төлөшүң керекпи?

Эч нерсе эмес. Istio абдан тез жана жазылган Go жана өтө аз кошумча чыгымдарды түзөт. Мындан тышкары, онлайн өндүрүмдүүлүгүнүн мүмкүн болгон жоготуулары иштеп чыгуучулардын өндүрүмдүүлүгүнүн өсүшү менен жабылат. Жок дегенде теориялык жактан: иштеп чыгуучулардын убактысы баалуу экенин унутпаңыз. Программалык камсыздоонун баасына келсек, Istio ачык булактуу программа, андыктан аны акысыз алып, колдоно аласыз.

Аны өздөштүрүп ал

Red Hat Developer Experience Team терең практикалык программаны иштеп чыкты жетекчилик Истио тарабынан (англис тилинде). Ал 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 мүнөт
Биз Istio'нун орнотулган мониторинг куралдарын, ыңгайлаштырылган метрикасын жана Prometheus жана Grafana аркылуу OpenTracing менен таанышабыз.
баштоо

Istioдагы жөнөкөй багыттоо
60 мүнөт
Жөнөкөй эрежелерди колдонуп, Istio'до маршрутту башкарууну үйрөнүңүз.
баштоо

Маршрутизациянын өркүндөтүлгөн эрежелери
60 мүнөт
Келгиле, Istio'нун акылдуу багыттоосун, кирүү мүмкүнчүлүгүн көзөмөлдөөнү, жүктөмдү балансташтыруу жана ылдамдыкты чектөөнү карап көрөлү.
баштоо

Блок 3 - өнүккөн колдонуучу

Istio-да ката инъекциясы
60 мүнөт
Биз бөлүштүрүлгөн тиркемелердеги каталарды башкаруу сценарийлерин изилдеп, HTTP каталарын жана тармактык кечигүүлөрдү жаратып, айлана-чөйрөнү калыбына келтирүү үчүн хаос инженериясын колдонууну үйрөнөбүз.
баштоо

Istioдагы автоматтык өчүргүч
30 мүнөт
Стресс-тест сайттары үчүн Siege орнотуп, кайра ойнотууларды, автоматтык өчүргүчтөрдү жана бассейнди чыгарууну колдонуу менен арткы каталарга сабырдуулукту кантип камсыз кылууну үйрөнөбүз.
баштоо

Egress жана Istio
10 мүнөт
Биз тышкы API жана кызматтар менен ички кызматтардын өз ара аракеттенүү эрежелерин түзүү үчүн Чыгуу маршруттарын колдонобуз.
баштоо

Истио жана Киали
15 мүнөт
Кызматтын сеткасын карап чыгуу жана суроо-талап менен маалымат агымын изилдөө үчүн Kiali колдонууну үйрөнүңүз.
баштоо

Istioдагы өз ара TLS
15 мүнөт
Биз Istio Gateway жана VirtualService түзөбүз, андан кийин өз ара TLS (mTLS) жана анын жөндөөлөрүн кылдат изилдейбиз.
баштоо

Блок 3.1 - Deep Dive: Microservices үчүн Istio Service Mesh

Istio Service Mesh боюнча бир катар посттор
Китеп эмне жөнүндө:

  • Кызматтык тор деген эмне?
  • Istio системасы жана анын микросервис архитектурасындагы ролу.
  • Төмөнкү маселелерди чечүү үчүн Istio колдонуу:
    • Ката толеранттуулук;
    • Маршрутизация;
    • хаос тести;
    • коопсуздук;
    • Издерди, метрикаларды жана Графананы колдонуу менен телеметрия чогултуу.

Китепти жүктөп алуу үчүн

Кызмат торлору жана Истио боюнча макалалар сериясы

Өзүңүз аракет кылып көрүңүз

Бул посттордун сериясы Истио дүйнөсүнө терең сүңгүүнү камсыз кылуу үчүн арналган эмес. Биз жөн гана сизди концепция менен тааныштыргыбыз келет жана балким сизди Istio-ну өзүңүз сынап көрүүгө шыктандыргыбыз келет. Бул толугу менен акысыз жана Red Hat сизге OpenShift, Kubernetes, Linux контейнерлери жана Istio менен баштоо үчүн зарыл болгон бардык куралдар менен камсыз кылат, анын ичинде: Red Hat Developer OpenShift Контейнер Платформасы, Istio биздин жол жана башка ресурстарыбыз Service Meshдеги микро сайт. Кечиктирбе, бүгүн башта!

Маршруттоо эрежелери: тейлөө суроо-талаптарын алар керек болгон жерге багыттоо

openshift и Kubernetes чечүү боюнча мыкты иш микросервис талап кылынган бактарга багытталат. Бул Kubernetes бар себептеринин бири болуп саналат - багыттоо жана жүк баланстоо. Бирок сизге кылдат жана татаал маршрутизация керек болсочы? Мисалы, бир эле учурда микросервистин эки версиясын колдонуу. Istio Маршрут эрежелери бул жерде кантип жардам бере алат?

Маршруттук эрежелер - бул маршрутту тандоону аныктоочу эрежелер. Системанын татаалдыгынын деңгээлине карабастан, бул эрежелердин жалпы иштөө принциби жөнөкөй бойдон калууда: суроо-талаптар белгилүү бир параметрлердин жана HTTP баш маанисинин негизинде багытталат.
Мисалдарды карап көрөлү:

Kubernetes демейки: арзыбаган "50/50"

Биздин мисалда биз OpenShiftте микросервистин эки версиясын бир убакта кантип колдонууну көрсөтөбүз, аларды v1 жана v2 деп атайлы. Ар бир версия өзүнүн Kubernetes подъездинде иштейт жана демейки боюнча ал бирдей тең салмактуу тегерек робиндик маршрутту иштетет. Ар бир поддон өзүнүн микросервис инстанцияларынын, башкача айтканда, репликалардын санына жараша суроо-талаптардын үлүшүн алат. Istio бул балансты кол менен өзгөртүүгө мүмкүндүк берет.

Келгиле, биз OpenShift, сунуш-v1 жана сунуш-v2 боюнча сунуштоо кызматыбыздын эки версиясын орноттук дейли.
Сүрөттө. 1-сүрөттө көрсөтүлгөндөй, ар бир кызмат бир инстанцияда көрсөтүлгөндө, сурамдар алардын ортосунда бирдей алмашып турат: 1-2-1-2-... Кубернетес багыттоо демейки боюнча ушундай иштейт:

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 багыттоо эрежелерин өзүңүздүн колдонууларыңызды табууга түрткү бериши керек. Мындан тышкары, бул жерде мүмкүнчүлүктөр абдан кенен, анткени баш маанилери колдонмонун баштапкы кодунда түзүлүшү мүмкүн.

Жана Дев эмес, Ops экенин унутпаңыз

Жогорудагы мисалдарда биз көрсөткөн нерселердин баары баштапкы коддо кичине өзгөрүүлөрсүз жасалат, өзгөчө суроо-талаптын аталыштарын түзүү зарыл болгон учурларды кошпогондо. Istio, мисалы, аны тестирлөө стадиясында колдоно ала турган иштеп чыгуучуларга жана IT тутумдарын иштетүү боюнча адистерге да пайдалуу болот, алар үчүн өндүрүштө чоң жардам берет.

Ошентип, келгиле, бул посттордун лейтмотивин кайталайлы: кодуңузда эч нерсени өзгөртүүнүн кереги жок. Жаңы сүрөттөрдү куруунун же жаңы контейнерлерди ишке киргизүүнүн кереги жок. Мунун баары коддон тышкары ишке ашырылат.

Фантазияңызды колдонуңуз

Кадимки сөз айкаштарын колдонуу менен баш талдоо мүмкүнчүлүктөрүн элестетип көрүңүз. Эң чоң кардарыңызды сиздин өзгөчө версияңызга багыттоону каалайсызбы микросервис? Оңой! Chrome браузери үчүн өзүнчө версия керекпи? Көйгөй эмес! Сиз трафикти дээрлик бардык мүнөздөмөлөргө ылайык багыттай аласыз.

Өзүңүз аракет кылып көрүңүз

Istio, Kubernetes жана OpenShift жөнүндө окуу бир нерсе, бирок эмне үчүн бардыгына өзүңүз тийбейсиз? Команда Red Hat Developer программасы Бул технологияларды мүмкүн болушунча тезирээк өздөштүрүүгө жардам бере турган деталдуу колдонмону (англис тилинде) даярдады. Колдонмо дагы 100% ачык булак, ошондуктан ал коомдук доменде жайгаштырылган. Файл macOS, Linux жана Windows системаларында иштейт жана булак коду Java жана node.js версияларында жеткиликтүү (башка тилдердеги версиялар жакында чыгат). Жөн гана браузериңизде тиешелүү git репозиторийди ачыңыз Red Hat Developer Demo.

Кийинки постто: биз көйгөйлөрдү сонун иштеп чыгабыз

Бүгүн сиз Istio маршруттук эрежелери эмне кыла аларын көрдүңүз. Эми ошол эле нерсени элестетиңиз, бирок каталарды иштетүүгө карата гана. Бул тууралуу кийинки постто сөз кылабыз.

Source: www.habr.com

Комментарий кошуу