Низа објави на Istio Service Mesh

Започнуваме серија на објави кои прикажуваат некои од многуте способности на Istio Service Mesh кога се комбинираат со Red Hat OpenShift и Kubernetes.

Низа објави на Istio Service Mesh

Прв дел, денес:

  • Ајде да го објасниме концептот на кубернетите контејнери и да го формулираме лајтмотивот на оваа серија на објави: „Не треба ништо да менувате во вашиот код“.
  • Да ја воведеме основната работа на Истио - правилата за рутирање. Сите други функции на Istio се изградени на нив, бидејќи правилата се тие што ви дозволуваат да го насочите сообраќајот кон микросервисите, користејќи YAML-датотеки надвор од кодот на услугата. Ја разгледуваме и шемата за распоредување на Canary Deployment. Новогодишен бонус – 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 со контејнери и Kubernetes

Сервисната мрежа Istio е имплементација на сè што е потребно за создавање и управување со микросервиси: следење, следење, прекинувачи, рутирање, балансирање на оптоварување, вбризгување на дефекти, повторни обиди, истекувања, пресликување, контрола на пристап, ограничување на брзината и многу повеќе. И иако денес има еден тон библиотеки за имплементација на овие функции директно во код, со Istio можете да ги добиете сите исти работи без да менувате ништо во вашиот код.

Според моделот на страничната кола, Istio работи во контејнер за Linux, кој се наоѓа во еден Кубернети-под со контролирана услуга и инјектира и извлекува функционалност и информации според дадена конфигурација. Нагласуваме дека ова е ваша сопствена конфигурација и живее надвор од вашиот код. Затоа, кодот станува многу поедноставен и пократок.

Она што е исто така важно е дека оперативната компонента на микросервисите се покажува дека на ниту еден начин не е поврзана со самиот код, што значи дека нивната работа може безбедно да се пренесе на ИТ специјалисти. Навистина, зошто развивачот треба да биде одговорен за прекинувачите и вбризгувањето на дефекти? Реагирај, да, но обработи ги и креирај ги? Ако го отстраните сето ова од кодот, програмерите ќе можат целосно да се фокусираат на функционалноста на апликацијата. И самиот код ќе стане пократок и поедноставен.

Сервисна мрежа

Istio, кој имплементира функции за управување со микроуслуги надвор од нивниот код, е концептот на Service Mesh. Со други зборови, тоа е координирана група од една или повеќе бинарни датотеки кои формираат мрежа од мрежни функции.

Како работи Istio со микросервисите

Вака изгледа работата на контејнерите на страничната кола заедно со Кубернети и Минисмена птичја перспектива: стартувајте пример од Minishift, креирајте проект за Istio (да го наречеме „istio-system“), инсталирајте ги и стартувајте ги сите компоненти поврзани со Istio. Потоа, додека креирате проекти и подлоги, додавате информации за конфигурацијата на вашите распоредувања и вашите подлоги почнуваат да го користат Istio. Поедноставен дијаграм изгледа вака:

Низа објави на Istio Service Mesh

Сега можете да ги промените поставките на Istio со цел, на пример, да организирате вбризгување на дефекти, поддршка Распоредување на канари или други функции на Istio - и сето тоа без допирање на кодот на самите апликации. Да речеме дека сакате да го пренасочите целиот веб сообраќај од корисниците на вашиот најголем клиент (Foo Corporation) до нова верзија на страницата. За да го направите ова, едноставно креирајте правило за рутирање Istio кое ќе го бара @foocorporation.com во корисничкиот ID и соодветно ќе го пренасочи. За сите други корисници, ништо нема да се промени. Во меѓувреме, мирно ќе ја тестирате новата верзија на страницата. И забележете, воопшто не треба да вклучувате програмери за ова.

И дали ќе треба скапо да платите за тоа?

Воопшто не. Istio е доста брз и е напишан Go и создава многу малку надземни трошоци. Дополнително, можната загуба во онлајн продуктивноста се компензира со зголемување на продуктивноста на програмерите. Барем во теорија: не заборавајте дека времето на програмерите е вредно. Што се однесува до трошоците за софтвер, Istio е софтвер со отворен код, така што можете да го добиете и да го користите бесплатно.

Совладете го сами

Тимот за искуство со програмери на Red Hat разви длабинска практична работа лидерство од Истио (на англиски). Работи на Linux, MacOS и Windows, а кодот е достапен во Java и Node.js.

10 интерактивни лекции на Истио

Блок 1 - За почетници

Вовед во Истио
30 минути
Ајде да се запознаеме со Service Mesh, да научиме како да инсталираме Istio во кластерот OpenShift Kubernetes.
Започнете

Распоредување на микросервиси во Истио
30 минути
Ние користиме Istio за распоредување на три микросервиси со Spring Boot и Vert.x.
Започнете

Блок 2 – средно ниво

Мониторинг и следење во Истио
60 минути
Ќе ги истражиме вградените алатки за следење на Istio, сопствените метрики и OpenTracing преку Prometheus и Grafana.
Започнете

Едноставно рутирање во Истио
60 минути
Научете како да управувате со рутирањето во Istio користејќи едноставни правила.
Започнете

Напредни правила за рутирање
60 минути
Ајде да погледнеме во паметното рутирање, контрола на пристап, балансирање на оптоварување и ограничување на стапката на Istio.
Започнете

Блок 3 – напреден корисник

Вбризгување на дефекти во Истио
60 минути
Ги проучуваме сценаријата за справување со неуспех во дистрибуирани апликации, создавајќи грешки во HTTP и доцнење на мрежата и учиме да користиме хаос инженерство за да ја вратиме околината.
Започнете

Автоматски прекинувач во Истио
30 минути
Инсталираме Siege за локации за тестирање на стрес и учиме како да обезбедиме толеранција на дефекти со помош на повторувања, прекинувач и исфрлање на базенот.
Започнете

Егрес и Истио
10 минути
Ние користиме Egress правци за да создадеме правила за интеракција на внатрешните услуги со надворешни API и услуги.
Започнете

Истио и Киали
15 минути
Научете да користите Kiali за да добиете преглед на мрежата на услуги и да ги истражите барањата и тековите на податоци.
Започнете

Меѓусебен TLS во Истио
15 минути
Ние создаваме Istio Gateway и VirtualService, потоа детално го проучуваме взаемниот TLS (mTLS) и неговите поставки.
Започнете

Блок 3.1 - Deep Dive: Istio Service Mesh за микроуслуги

Низа објави на Istio Service Mesh
За што се работи во книгата:

  • Што е сервисна мрежа?
  • Системот Istio и неговата улога во микросервисната архитектура.
  • Користење на Istio за решавање на следниве проблеми:
    • Толеранција на грешки;
    • Рутирање;
    • Тестирање за хаос;
    • Безбедност;
    • Телеметриска колекција со помош на траги, метрика и Графана.

Преземете книга

Серија статии за сервисни мрежи и Istio

Обидете се сами

Оваа серија на објави не е наменета да обезбеди длабоко нурнување во светот на Истио. Само сакаме да ве запознаеме со концептот и можеби да ве инспирираме сами да го пробате Istio. Тоа е потполно бесплатно за правење, а Red Hat ги обезбедува сите алатки што ви се потребни за да започнете со OpenShift, Kubernetes, контејнери за Linux и Istio, вклучувајќи: Развивач на Red Hat OpenShift платформа за контејнери, нашиот водич за Истио и други ресурси на нашите микространица на сервисна мрежа. Не одложувајте, започнете денес!

Правила за рутирање на Istio: насочување на барањата за услуги каде што треба да одат

openshift и Кубернети направи одлична работа со обраќање микросервисите упатени до потребните мешунки. Ова е една од причините за постоењето на Kubernetes - рутирање и балансирање на оптоварување. Но, што ако ви треба посуптилно и пософистицирано рутирање? На пример, за истовремено користење на две верзии на микросервис. Како можат овде да помогнат Правилата за рута Istio?

Правилата за рутирање се правила кои всушност го одредуваат изборот на рутата. Без оглед на нивото на сложеност на системот, општиот оперативен принцип на овие правила останува едноставен: барањата се пренасочуваат врз основа на одредени параметри и вредности на заглавието на HTTP.
Ајде да погледнеме примери:

Стандардно на Kubernetes: тривијално „50/50“

Во нашиот пример, ќе покажеме како истовремено да користите две верзии на микросервис во OpenShift, ајде да ги наречеме v1 и v2. Секоја верзија работи во сопствената подлога на Kubernetes и стандардно работи рамномерно избалансирано рутирање на круг-робин. Секој дел го добива својот дел од барања врз основа на бројот на неговите микросервисни примероци, со други зборови, реплики. Istio ви овозможува рачно да ја промените оваа рамнотежа.

Да речеме дека распоредивме две верзии на нашата услуга за препораки на OpenShift, препораки-v1 и препораки-в2.
На сл. Слика 1 покажува дека кога секоја услуга е претставена во еден пример, барањата наизменично се менуваат меѓу нив: 1-2-1-2-... Вака стандардно функционира рутирањето на Кубернет:

Низа објави на Istio Service Mesh

Пондерирана дистрибуција помеѓу верзиите

На сл. Слика 2 покажува што се случува ако го зголемите бројот на реплики на услугата v2 од една на две (ова се прави со скалата oc — replicas=2 команда за распоредување/препорака-v2). Како што можете да видите, барањата помеѓу v1 и v2 сега се поделени во сооднос еден до три: 1-2-2-1-2-2-…:

Низа објави на Istio Service Mesh

Игнорирај ја верзијата користејќи Istio

Istio го олеснува менувањето на распределбата на барањата на начин на кој ни е потребен. На пример, испратете го целиот сообраќај само до препораките-v1 користејќи ја следнава датотека Istio yaml:

Низа објави на Istio Service Mesh

Овде треба да обрнете внимание на ова: мешунките се избираат според етикетите. Нашиот пример користи ознака v1. Параметарот „тежина: 100“ значи дека 100% од сообраќајот ќе биде насочен кон сите сервисни подлоги што имаат ознака v1.

Дистрибуција на директиви помеѓу верзии (Canary Deployment)

Следно, користејќи го параметарот тежина, можете да го насочите сообраќајот кон двата подлога, игнорирајќи го бројот на примероци на микросервис што се извршуваат во секоја од нив. На пример, овде насочуваме 90% од сообраќајот кон v1 и 10% кон v2:

Низа објави на Istio Service Mesh

Одделно рутирање за мобилни корисници

Како заклучок, ќе покажеме како да го присилиме сообраќајот на мобилните корисници да биде насочен кон услугата v2, а сите други до v1. За да го направите ова, ние користиме регуларни изрази за да ја анализираме вредноста на корисничкиот агент во заглавието на барањето:

Низа објави на Istio Service Mesh

Сега е твој ред

Примерот со редовни изрази за парсирање на заглавија треба да ве мотивира да ги пронајдете сопствените употреби на правилата за рутирање на Istio. Покрај тоа, можностите овде се доста обемни, бидејќи вредностите на заглавието може да се формираат во изворниот код на апликацијата.

И запомнете дека Ops, не Dev

Сè што покажавме во горенаведените примери е направено без најмали промени во изворниот код, добро, освен во оние случаи кога е неопходно да се генерираат специјални заглавија на барања. Istio ќе биде корисен како за програмерите, кои, на пример, ќе можат да го користат во фазата на тестирање, така и за специјалистите за работа на ИТ системи, на кои многу ќе им помогне во производството.

Значи, да го повториме лајтмотивот на оваа серија на објави: не треба да менувате ништо во вашиот код. Нема потреба да се градат нови слики или да се лансираат нови контејнери. Сето ова е имплементирано надвор од кодот.

Користете ја вашата имагинација

Само замислете ги можностите за анализа на заглавијата со користење на регуларни изрази. Сакате да го пренасочите вашиот најголем клиент на специјална верзија на вашата микроуслуги? Лесно! Ви треба посебна верзија за прелистувачот Chrome? Нема проблем! Можете да го насочувате сообраќајот според речиси секоја карактеристика.

Обидете се сами

Читањето за Istio, Kubernetes и OpenShift е една работа, но зошто да не допрете сè сами? Тим Програма за програмери на Red Hat подготви детален водич (на англиски) кој ќе ви помогне да ги совладате овие технологии што е можно побрзо. Упатството е исто така 100% со отворен код, па затоа е објавено во јавен домен. Датотеката работи на macOS, Linux и Windows, а изворниот код е достапен во Java и node.js верзии (верзии на други јазици наскоро). Само отворете го соодветното складиште за git во вашиот прелистувач Демо за програмери на Red Hat.

Во следниот пост: убаво ги решаваме проблемите

Денес видовте што можат да направат правилата за рутирање на Istio. Сега замислете го истото, но само во однос на справувањето со грешки. Токму за ова ќе зборуваме во следниот пост.

Извор: www.habr.com

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