Istio Service Mesh дээрх цуврал нийтлэлүүд

Бид Red Hat OpenShift болон Kubernetes-тэй хослуулсан Istio Service Mesh-ийн олон боломжуудыг харуулсан цуврал нийтлэлүүдийг эхлүүлж байна.

Istio Service Mesh дээрх цуврал нийтлэлүүд

Нэгдүгээр хэсэг, өнөөдөр:

  • Kubernetes хажуугийн савны тухай ойлголтыг тайлбарлаж, энэхүү цуврал нийтлэлийн лейтмотивийг томъёолъё. "Та кодоо юу ч өөрчлөх шаардлагагүй".
  • Istio-ийн үндсэн зүйл болох чиглүүлэлтийн дүрмийг танилцуулъя. Үйлчилгээний кодын гаднах YAML файлуудыг ашиглан микро үйлчилгээ рүү траффикийг чиглүүлэх дүрмүүд учраас бусад бүх Istio функцууд нь тэдгээрт суурилагдсан байдаг. Мөн бид Canary Deployment байршуулах схемийг авч үзэж байна. Шинэ жилийн урамшуулал – Istio дээр 10 интерактив хичээл


Удахгүй гарах хоёрдугаар хэсэг танд дараахь зүйлийг хэлэх болно.

  • Istio Pool Ejection-ийг Хэлхээ таслагчтай хослуулан хэрхэн хэрэгжүүлдэг ба Istio нь тэнцвэржүүлэгч хэлхээнээс үхсэн эсвэл муу ажиллаж байгаа подволкийг хэрхэн арилгах боломжийг танд үзүүлэх болно.
  • Бид мөн Istio-г энд хэрхэн ашиглаж болохыг харахын тулд эхний нийтлэлээс Circuit Breaker сэдвийг үзэх болно. Үйлчилгээний кодыг өчүүхэн ч өөрчлөхгүйгээр YAML тохиргооны файлууд болон терминалын командуудыг ашиглан траффикийг хэрхэн чиглүүлэх, сүлжээний алдаатай ажиллахыг бид танд үзүүлэх болно.

Гуравдугаар хэсэг:

  • Istio-д аль хэдийн суулгасан эсвэл хялбархан нэмсэн мөрдөх, хянах тухай түүх. Бид танд Prometheus, Jaeger, Grafana зэрэг хэрэгслүүдийг OpenShift масштабтай хослуулан хэрхэн бичил үйлчилгээний архитектурыг хялбар удирдахыг харуулах болно.
  • Бид алдааг хянах, шийдвэрлэхээс эхлээд тэдгээрийг системд зориудаар нэвтрүүлэх рүү шилждэг. Өөрөөр хэлбэл, бид эх кодыг өөрчлөхгүйгээр алдааны тарилгыг хэрхэн хийхийг сурсан бөгөөд энэ нь туршилтын үүднээс маш чухал юм - хэрэв та кодыг өөрөө өөрчилбөл нэмэлт алдаа гаргах эрсдэлтэй байдаг.

Эцэст нь, Istio Service Mesh дээрх эцсийн бичлэгт:

  • Харанхуй тал руугаа явцгаая. Илүү нарийвчлалтай хэлэхэд, кодыг шууд үйлдвэрлэлийн өгөгдөл дээр байрлуулж, туршиж үзсэн боловч системийн үйл ажиллагаанд ямар ч байдлаар нөлөөлөхгүй байх үед бид Dark Launch схемийг ашиглаж сурах болно. Энд л Istio-ийн урсгалыг хуваах чадвар хэрэгтэй болно. Байлдааны системийн ажиллагаанд ямар нэгэн байдлаар нөлөөлөхгүйгээр шууд үйлдвэрлэлийн өгөгдөл дээр турших чадвар нь баталгаажуулах хамгийн найдвартай арга юм.
  • Dark Launch дээр тулгуурлан бид эрсдэлийг бууруулж, шинэ кодыг үйлдвэрлэлд нэвтрүүлэхэд хялбар болгохын тулд Canary Deployment загварыг хэрхэн ашиглахыг танд үзүүлэх болно. Canary Deployment нь өөрөө шинэ зүйл биш боловч Istio танд энэ схемийг энгийн YAML файлаар хэрэгжүүлэх боломжийг олгодог.
  • Эцэст нь бид интернеттэй ажиллахдаа Istio-ийн чадавхийг ашиглахын тулд кластераас гадуур байгаа хүмүүст үйлчилгээнд нэвтрэх боломжийг олгохын тулд Istio Egress-ийг хэрхэн ашиглахыг танд үзүүлэх болно.

За ингээд явлаа...

Istio хяналт ба удирдлагын хэрэгслүүд - үйлчилгээний сүлжээнд бичил үйлчилгээг зохион байгуулахад хэрэгтэй бүх зүйл үйлчилгээний тор.

Istio Service Mesh гэж юу вэ

Үйлчилгээний сүлжээ нь замын хөдөлгөөний хяналт, хандалтын хяналт, илрүүлэлт, аюулгүй байдал, алдааг тэсвэрлэх чадвар зэрэг үйлчилгээнүүдэд хэрэгтэй бусад зүйлсийг хэрэгжүүлдэг. Istio нь үйлчилгээний кодыг өчүүхэн ч өөрчлөхгүйгээр энэ бүхнийг хийх боломжийг танд олгоно. Ид шидийн нууц юу вэ? Istio нь үйлчилгээ тус бүрт өөрийн проксиг хажуугийн хайрцаг хэлбэрээр хавсаргадаг (хажуугийн тэрэг бол мотоциклийн хажуугийн тэрэг), үүний дараа энэ үйлчилгээнд чиглэсэн бүх урсгал проксигоор дамждаг бөгөөд энэ нь заасан бодлогыг удирдан чиглүүлж, энэ урсгалыг хэрхэн, хэзээ, эсэхийг шийддэг. үйлчилгээнд огт хүрэх ёстой. Istio нь мөн канар байрлуулах, таслуур, алдааны тарилга болон бусад олон дэвшилтэт DevOps техникийг хэрэгжүүлэх боломжийг олгодог.

Istio контейнер болон Кубернетестэй хэрхэн ажилладаг вэ

Istio үйлчилгээний тор нь микро үйлчилгээг бий болгох, удирдахад шаардлагатай бүх зүйлийн хажуугийн хэрэглүүр юм: хяналт тавих, мөрдөх, таслуур, чиглүүлэлт хийх, ачааллыг тэнцвэржүүлэх, алдаа гаргах, дахин оролдох, завсарлага, толин тусгал хийх, хандалтын хяналт, хурдыг хязгаарлах гэх мэт. Хэдийгээр өнөөдөр эдгээр функцийг шууд кодоор хэрэгжүүлэх олон тооны номын сангууд байгаа ч Istio-ийн тусламжтайгаар та кодоо юу ч өөрчлөхгүйгээр ижил зүйлийг авах боломжтой.

Хажуугийн машины загварын дагуу Istio нь Линукс контейнерт ажилладаг бөгөөд нэг саванд байрладаг Kubernetes-хяналттай үйлчилгээ бүхий pod нь өгөгдсөн тохиргооны дагуу функц болон мэдээллийг шахаж, гаргаж авдаг. Энэ нь таны өөрийн тохиргоо бөгөөд таны кодоос гадуур амьдардаг гэдгийг бид онцолж байна. Тиймээс код нь илүү хялбар, богино болдог.

Мөн чухал зүйл бол микро үйлчилгээний үйл ажиллагааны бүрэлдэхүүн хэсэг нь кодтой ямар ч холбоогүй бөгөөд энэ нь тэдний ажиллагааг мэдээллийн технологийн мэргэжилтнүүдэд аюулгүй шилжүүлэх боломжтой гэсэн үг юм. Үнэн хэрэгтээ, яагаад хөгжүүлэгч нь хэлхээний таслуур болон алдааны тарилгыг хариуцах ёстой гэж? Хариулах, тийм ээ, гэхдээ тэдгээрийг боловсруулж, үүсгэх үү? Хэрэв та энэ бүгдийг кодноос хасвал програмистууд програмын үйл ажиллагаанд бүрэн анхаарлаа хандуулах боломжтой болно. Мөн код нь өөрөө богино, хялбар болно.

Үйлчилгээний тор

Istio нь микро үйлчилгээг кодоос нь гадуур удирдах функцуудыг хэрэгжүүлдэг бөгөөд энэ нь Service Mesh гэсэн ойлголт юм. Өөрөөр хэлбэл, энэ нь сүлжээний функцүүдийн сүлжээг бүрдүүлдэг нэг буюу хэд хэдэн хоёртын файлуудын зохицуулалттай бүлэг юм.

Istio нь бичил үйлчилгээтэй хэрхэн ажилладаг

Хажуугийн савны ажил үүнтэй уялдуулан ийм харагдаж байна Kubernetes и Minishift шувууны нүдээр харах: Minishift-ийн жишээг эхлүүлэх, Istio-д зориулж төсөл үүсгэх (үүнийг "istio-system" гэж нэрлэе), Istio-тэй холбоотой бүх бүрэлдэхүүн хэсгүүдийг суулгаж ажиллуул. Дараа нь та төсөл болон pods үүсгэх үедээ тохиргооны мэдээллийг байршуулалтдаа нэмж, таны pods Istio-г ашиглаж эхэлнэ. Хялбаршуулсан диаграмм дараах байдалтай байна.

Istio Service Mesh дээрх цуврал нийтлэлүүд

Одоо та Istio тохиргоог дарааллаар нь өөрчлөх боломжтой, жишээлбэл, алдааны тарилга, дэмжлэгийг зохион байгуулах Канарын байршуулалт эсвэл бусад 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 минут
Бид Istio-г Spring Boot болон Vert.x-тэй гурван микро үйлчилгээг ашиглахад ашигладаг.
Эхлээрэй

2-р блок - дунд түвшин

Istio дахь хяналт, мөрдөх
60 минут
Бид Prometheus болон Grafana-аар дамжуулан Istio-ийн суурилуулсан хяналтын хэрэгсэл, захиалгат хэмжүүр, OpenTracing-ийг судлах болно.
Эхлээрэй

Istio дахь энгийн чиглүүлэлт
60 минут
Энгийн дүрмүүдийг ашиглан Istio дээр чиглүүлэлтээ хэрхэн удирдах талаар суралц.
Эхлээрэй

Нарийвчилсан чиглүүлэлтийн дүрэм
60 минут
Istio-ийн ухаалаг чиглүүлэлт, хандалтын хяналт, ачааллыг тэнцвэржүүлэх, хурдны хязгаарлалт зэргийг харцгаая.
Эхлээрэй

Блок 3 - дэвшилтэт хэрэглэгч

Istio дахь алдаа шахах
60 минут
Бид тархсан програмууд дахь бүтэлгүйтэл, HTTP алдаа, сүлжээний саатал үүсгэх хувилбаруудыг судалж, хүрээлэн буй орчныг сэргээхэд эмх замбараагүй инженерчлэлийг ашиглаж сурдаг.
Эхлээрэй

Istio дахь хэлхээний таслуур
30 минут
Бид стресс тестийн сайтуудад зориулж Siege-г суулгаж, дахин тоглуулах, таслуур болон усан сангаас гаргах зэргийг ашиглан арын хэсгийн алдааг тэсвэрлэх чадварыг хэрхэн хангах талаар суралцдаг.
Эхлээрэй

Эгресс ба Истио
10 минут
Бид гадаад API болон үйлчилгээнүүдтэй дотоод үйлчилгээнүүдийн харилцан үйлчлэлийн дүрмийг бий болгохын тулд Egress маршрутуудыг ашигладаг.
Эхлээрэй

Истио ба Киали
15 минут
Үйлчилгээний сүлжээний тоймыг авах, хүсэлт, өгөгдлийн урсгалыг судлахын тулд Kiali-г ашиглаж сур.
Эхлээрэй

Istio дахь харилцан TLS
15 минут
Бид Istio Gateway болон VirtualService-ийг бүтээж, дараа нь харилцан TLS (mTLS) болон түүний тохиргоог нарийвчлан судалдаг.
Эхлээрэй

Блок 3.1 - Гүн шумбах: Microservices-д зориулсан Istio Service Mesh

Istio Service Mesh дээрх цуврал нийтлэлүүд
Ном юуны тухай вэ:

  • Үйлчилгээний тор гэж юу вэ?
  • Istio систем ба түүний бичил үйлчилгээний архитектурт гүйцэтгэх үүрэг.
  • Дараах асуудлуудыг шийдвэрлэхийн тулд Istio-г ашигла.
    • Алдааг тэсвэрлэх чадвар;
    • Чиглүүлэлт;
    • Эмх замбараагүй байдлын туршилт;
    • Аюулгүй байдал;
    • Мөр, хэмжүүр болон Графана ашиглан телеметрийн цуглуулга.

Ном татаж авахын тулд

Үйлчилгээний тор болон Istio-ийн талаархи цуврал нийтлэлүүд

Өөрөө туршаад үзээрэй

Энэхүү цуврал нийтлэл нь Истиогийн ертөнцөд гүн гүнзгий нэвтэрч орох зорилгогүй юм. Бид зүгээр л танд концепцийг танилцуулж, магадгүй Istio-г өөрөө туршиж үзэхэд тань урам зориг өгөхийг хүсч байна. Үүнийг хийх нь бүрэн үнэ төлбөргүй бөгөөд Red Hat нь OpenShift, Kubernetes, Linux контейнер, Istio-г ашиглаж эхлэхэд шаардлагатай бүх хэрэгслээр хангадаг. Үүнд: Red Hat хөгжүүлэгч OpenShift контейнер платформ, манай Истиогийн хөтөч и другие ресурсы на нашем Service Mesh дээрх бичил сайт. Бүү хойшлуул, өнөөдрөөс эхэл!

Istio чиглүүлэлтийн дүрмүүд: үйлчилгээний хүсэлтийг шаардлагатай газарт нь чиглүүлэх

нээлттэй ээлж и Kubernetes хаяглах ажлыг маш сайн хий бичил үйлчилгээ шаардлагатай хонхорцог руу чиглүүлнэ. Энэ нь Kubernetes-ийн оршин тогтнох шалтгаануудын нэг юм - чиглүүлэлт ба ачааллын тэнцвэржүүлэх. Гэхдээ танд илүү нарийн, боловсронгуй чиглүүлэлт хэрэгтэй бол яах вэ? Жишээлбэл, микро үйлчилгээний хоёр хувилбарыг нэгэн зэрэг ашиглах. Istio Route Rules энд хэрхэн туслах вэ?

Чиглүүлэлтийн дүрмүүд нь маршрутын сонголтыг бодитоор тодорхойлдог дүрмүүд юм. Системийн нарийн төвөгтэй байдлын түвшингээс үл хамааран эдгээр дүрмийн ерөнхий зарчим нь энгийн хэвээр байна: хүсэлтийг тодорхой параметрүүд болон HTTP толгойн утгууд дээр үндэслэн чиглүүлдэг.
Жишээнүүдийг харцгаая:

Kubernetes өгөгдмөл: өчүүхэн "50/50"

Бидний жишээн дээр бид OpenShift дээр микро үйлчилгээний хоёр хувилбарыг хэрхэн нэгэн зэрэг ашиглахыг харуулах болно, тэдгээрийг v1 ба v2 гэж нэрлэе. Хувилбар бүр өөрийн Kubernetes pod-д ажилладаг бөгөөд анхдагч байдлаар энэ нь жигд тэнцвэртэй дугуй чиглүүлэлтээр ажилладаг. Под бүр өөрийн микро үйлчилгээний тохиолдлын тоо, өөрөөр хэлбэл хуулбар дээр үндэслэн хүсэлтийн хувийг хүлээн авдаг. Istio нь энэ үлдэгдлийг гараар өөрчлөх боломжийг танд олгоно.

Бид OpenShift, зөвлөмж-v1 болон зөвлөмж-v2 дээр зөвлөмж үйлчилгээний хоёр хувилбарыг суулгасан гэж бодъё.
Зураг дээр. Зураг 1-ээс харахад үйлчилгээ бүрийг нэг инстантаар төлөөлөх үед хүсэлтүүд хоорондоо жигд ээлжлэн солигддог: 1-2-1-2-... Kubernetes чиглүүлэлт нь анхдагчаар ингэж ажилладаг:

Istio Service Mesh дээрх цуврал нийтлэлүүд

Хувилбаруудын хооронд жинлэсэн хуваарилалт

Зураг дээр. Хэрэв та v2 үйлчилгээний хуулбарын тоог нэгээс хоёр болгон нэмэгдүүлбэл юу болохыг Зураг 2-т харуулав (энэ нь oc scale —replicas=2 deployment/recommendation-v2 командын тусламжтайгаар хийгддэг). Таны харж байгаагаар v1 болон v2 хоорондох хүсэлтүүд одоо нэгээс гуравт хуваагдаж байна: 1-2-2-1-2-2-…:

Istio Service Mesh дээрх цуврал нийтлэлүүд

Istio ашиглан хувилбарыг үл тоомсорлох

Istio нь хүсэлтийн хуваарилалтыг бидэнд хэрэгтэй байдлаар өөрчлөхөд хялбар болгодог. Жишээлбэл, дараах Istio yaml файлыг ашиглан бүх урсгалыг зөвхөн зөвлөмж-v1 рүү илгээнэ үү:

Istio Service Mesh дээрх цуврал нийтлэлүүд

Энд та үүнийг анхаарч үзэх хэрэгтэй: хонхорцог шошгоны дагуу сонгогддог. Бидний жишээнд v1 шошгыг ашигладаг. "Жин: 100" параметр нь траффикийн 100% нь v1 шошготой бүх үйлчилгээний хэсэг рүү чиглэнэ гэсэн үг.

Хувилбаруудын хоорондох удирдамж хуваарилалт (Канарын байршуулалт)

Дараа нь жингийн параметрийг ашигласнаар та тус бүрд ажиллаж байгаа микро үйлчилгээний тохиолдлын тоог үл тоомсорлож, трафикийг хоёуланд нь чиглүүлж болно. Жишээлбэл, бид энд траффикийн 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 Developer Demo.

Дараагийн бичлэгт: Бид асуудлыг маш сайхан боловсруулдаг

Өнөөдөр та Istio чиглүүлэлтийн дүрэм юу хийж болохыг харлаа. Одоо ижил зүйлийг төсөөлөөд үз дээ, гэхдээ зөвхөн алдаа засахтай холбоотой. Яг энэ тухай бид дараагийн нийтлэлдээ ярих болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх