Istio Service Mesh-dagi bir qator postlar

Biz Red Hat OpenShift va Kubernetes bilan birgalikda Istio Service Mesh-ning ko'plab imkoniyatlarini namoyish qiluvchi qator postlarni boshlamoqdamiz.

Istio Service Mesh-dagi bir qator postlar

Birinchi qism, bugun:

  • Keling, Kubernetes yonbosh konteynerlari tushunchasini tushuntirib beraylik va ushbu postlar seriyasining leytmotivini shakllantiramiz: "siz kodingizda biror narsani o'zgartirishingiz shart emas".
  • Keling, Istio-ning asosiy narsani - marshrutlash qoidalarini tanishtiramiz. Boshqa barcha Istio funksiyalari ular asosida qurilgan, chunki bu qoidalar xizmat kodidan tashqari YAML fayllaridan foydalangan holda mikroservislarga trafikni yo'naltirishga imkon beradi. Shuningdek, biz Canary Deployment joylashtirish sxemasini ko'rib chiqmoqdamiz. Yangi yil bonusi – Istio-da 10 ta interaktiv dars


Tez orada chiqadigan ikkinchi qism sizga quyidagilarni aytadi:

  • Qanday qilib Istio Pool Ejection-ni o'chirish to'xtatuvchisi bilan birgalikda amalga oshiradi va Istio qanday qilib muvozanatlash pallasidan o'lik yoki yomon ishlayotgan podni olib tashlashga imkon berishini namoyish etadi.
  • Shuningdek, Istio-dan bu erda qanday foydalanish mumkinligini ko'rish uchun birinchi postdagi O'chirish to'xtatuvchisi mavzusini ko'rib chiqamiz. YAML konfiguratsiya fayllari va terminal buyruqlari yordamida xizmat kodida zarracha o'zgarishlarsiz trafikni qanday yo'naltirish va tarmoq xatolarini qanday hal qilishni sizga ko'rsatamiz.

Uchinchi qism:

  • Istio-ga allaqachon o'rnatilgan yoki osongina qo'shilgan kuzatuv va monitoring haqidagi hikoya. Mikroservis arxitekturasini oson boshqarish uchun Prometey, Jaeger va Grafana kabi vositalardan OpenShift masshtablash bilan birgalikda qanday foydalanishni ko‘rsatamiz.
  • Biz xatolarni kuzatish va qayta ishlashdan ularni tizimga ataylab kiritishga o'tamiz. Boshqacha qilib aytadigan bo'lsak, biz manba kodini o'zgartirmasdan nosozlikni in'ektsiya qilishni o'rganamiz, bu sinov nuqtai nazaridan juda muhim - chunki agar siz buning uchun kodni o'zgartirsangiz, qo'shimcha xatolarni kiritish xavfi mavjud.

Nihoyat, Istio Service Mesh-dagi yakuniy postda:

  • Keling, qorong'u tomonga boraylik. Aniqrog'i, kod to'g'ridan-to'g'ri ishlab chiqarish ma'lumotlarida joylashtirilgan va sinovdan o'tkazilganda, lekin tizimning ishlashiga hech qanday ta'sir qilmasa, biz Dark Launch sxemasidan foydalanishni o'rganamiz. Bu erda Istio-ning trafikni ajratish qobiliyati foydali bo'ladi. Va jangovar tizimning ishlashiga hech qanday ta'sir qilmasdan jonli ishlab chiqarish ma'lumotlarini sinab ko'rish qobiliyati tekshirishning eng ishonchli usuli hisoblanadi.
  • Dark Launch-ga asoslanib, biz sizga xavfni kamaytirish va ishlab chiqarishga yangi kodni olishni osonlashtirish uchun Canary Deployment modelidan qanday foydalanishni ko'rsatamiz. Canary Deploymentning o'zi yangilik emas, lekin Istio sizga ushbu sxemani oddiy YAML fayllari bilan amalga oshirish imkonini beradi.
  • Va nihoyat, biz sizga Istio Egress-dan Internet bilan ishlashda Istio imkoniyatlaridan foydalanish uchun sizning klasterlaringizdan tashqarida bo'lganlarga xizmatlardan foydalanish imkoniyatini berish uchun qanday foydalanishni ko'rsatamiz.

Shunday qilib, biz boramiz ...

Istio monitoring va boshqarish vositalari - mikroservislarni xizmat tarmog'ida tashkil qilish uchun kerak bo'lgan hamma narsa xizmat ko'rsatish tarmog'i.

Istio Service Mesh nima

Xizmat tarmog'i trafik monitoringi, kirishni boshqarish, kashfiyot, xavfsizlik, xatolarga chidamlilik va xizmatlar guruhi uchun boshqa foydali narsalarni amalga oshiradi. Istio bularning barchasini xizmatlarning kodiga ozgina o'zgartirishlarsiz bajarishga imkon beradi. Sehrning siri nimada? Istio har bir xizmatga o'zining proksi-serverini yonbosh konteyneri shaklida (bu mototsikl yorlig'i) biriktiradi, shundan so'ng ushbu xizmatga bo'lgan barcha trafik proksi-server orqali o'tadi, u belgilangan siyosatlarga amal qilgan holda, ushbu trafik qanday, qachon va yo'qligini hal qiladi. umuman xizmatga kirishi kerak. Istio shuningdek, DevOpsning ilg'or usullarini, masalan, kanareykalarni joylashtirish, o'chirgichlar, nosozliklarni in'ektsiya qilish va boshqalarni amalga oshirishga imkon beradi.

Istio konteynerlar va Kubernetes bilan qanday ishlaydi

Istio xizmat ko'rsatish tarmog'i - bu mikroservislarni yaratish va boshqarish uchun zarur bo'lgan barcha narsalarni: monitoring, kuzatish, o'chirish to'xtatuvchilari, marshrutlash, yukni muvozanatlash, nosozliklarni in'ektsiya qilish, qayta urinishlar, kutish vaqti, aks ettirish, kirishni boshqarish, tezlikni cheklash va boshqalar. Garchi bugungi kunda ushbu funktsiyalarni to'g'ridan-to'g'ri kodda amalga oshirish uchun ko'plab kutubxonalar mavjud bo'lsa-da, Istio bilan siz kodingizda hech narsani o'zgartirmasdan hammasini olishingiz mumkin.

Yan vagon modeliga ko'ra, Istio bittada joylashgan Linux konteynerida ishlaydi Kubernetes-nazorat qilinadigan xizmatga ega pod va berilgan konfiguratsiyaga muvofiq funksionallik va ma'lumotlarni kiritadi va chiqaradi. Biz ta'kidlaymizki, bu sizning shaxsiy konfiguratsiyangiz va u sizning kodingizdan tashqarida yashaydi. Shunday qilib, kod ancha sodda va qisqaroq bo'ladi.

Yana bir muhim jihat shundaki, mikroservislarning operatsion komponenti kodning o'zi bilan hech qanday bog'liq emas, ya'ni ularning ishlashi IT mutaxassislariga xavfsiz tarzda o'tkazilishi mumkin. Haqiqatan ham, nima uchun ishlab chiqaruvchi o'chirgichlar va nosozliklar uchun javobgar bo'lishi kerak? Reaksiya qiling, ha, lekin ularni qayta ishlang va yaratingmi? Agar siz bularning barchasini koddan olib tashlasangiz, dasturchilar to'liq e'tiborni ilova funksionalligiga qaratishlari mumkin bo'ladi. Va kodning o'zi qisqaroq va sodda bo'ladi.

Xizmat ko'rsatish tarmog'i

Mikroservislarni koddan tashqari boshqarish funktsiyalarini amalga oshiradigan Istio bu Service Mesh tushunchasidir. Boshqacha qilib aytganda, bu tarmoq funktsiyalari tarmog'ini tashkil etuvchi bir yoki bir nechta ikkiliklarning muvofiqlashtirilgan guruhidir.

Istio mikroservislar bilan qanday ishlaydi

Bu bilan birgalikda yonbosh konteynerlarining ishi shunday ko'rinadi Kubernetes и Minishift Qushlarning ko'zi: Minishift misolini ishga tushiring, Istio uchun loyiha yarating (keling, uni “istio-tizim” deb ataymiz), Istio bilan bog'liq barcha komponentlarni o'rnating va ishga tushiring. Keyin loyihalar va podkastlarni yaratganingizda, konfiguratsiya ma'lumotlarini joylashtirishingizga qo'shasiz va podkastlaringiz Istio-dan foydalanishni boshlaydi. Soddalashtirilgan diagramma quyidagicha ko'rinadi:

Istio Service Mesh-dagi bir qator postlar

Endi siz Istio sozlamalarini tartibda o'zgartirishingiz mumkin, masalan, nosozliklarni kiritish, qo'llab-quvvatlashni tashkil qilish Kanareykalarni joylashtirish yoki boshqa Istio xususiyatlari - va bularning barchasi ilovalarning kodiga tegmasdan. Aytaylik, siz eng katta mijozingiz (Foo Corporation) foydalanuvchilaridan barcha veb-trafikni saytning yangi versiyasiga yo'naltirmoqchisiz. Buning uchun foydalanuvchi identifikatorida @foocorporation.com ni qidiradigan va shunga mos ravishda yo'naltiruvchi Istio marshrutlash qoidasini yarating. Boshqa barcha foydalanuvchilar uchun hech narsa o'zgarmaydi. Ayni paytda siz saytning yangi versiyasini xotirjamlik bilan sinab ko'rasiz. Shuni esda tutingki, buning uchun umuman ishlab chiquvchilarni jalb qilishingiz shart emas.

Va buning uchun siz juda qimmat to'lashingiz kerakmi?

Arzimaydi. Istio juda tez va yozilgan Go va juda kam yuk hosil qiladi. Bundan tashqari, onlayn mahsuldorlikning mumkin bo'lgan yo'qolishi ishlab chiquvchilarning mahsuldorligini oshirish bilan qoplanadi. Hech bo'lmaganda nazariy jihatdan: ishlab chiquvchilarning vaqti qimmatli ekanligini unutmang. Dasturiy ta'minot narxiga kelsak, Istio ochiq kodli dasturiy ta'minot, shuning uchun siz uni bepul olishingiz va ishlatishingiz mumkin.

O'zingiz o'zlashtiring

Red Hat Developer Experience Team chuqur amaliy qo‘llanmani ishlab chiqdi etakchilik Istio tomonidan (ingliz tilida). U Linux, MacOS va Windows tizimlarida ishlaydi va kod Java va Node.js da mavjud.

Istio-da 10 ta interfaol darslar

Blok 1 - Yangi boshlanuvchilar uchun

Istio bilan tanishtirish
30 daqiqa
Keling, Service Mesh bilan tanishamiz, Istio-ni OpenShift Kubernetes klasteriga qanday o'rnatishni o'rganamiz.
Boshlamoq

Istio-da mikroservislarni joylashtirish
30 daqiqa
Spring Boot va Vert.x bilan uchta mikroservisni joylashtirish uchun Istio-dan foydalanamiz.
Boshlamoq

2-blok - o'rta daraja

Istioda monitoring va kuzatish
60 daqiqa
Biz Prometey va Grafana orqali Istio-ning o'rnatilgan monitoring vositalari, maxsus ko'rsatkichlar va OpenTracing bilan tanishamiz.
Boshlamoq

Istio-da oddiy marshrutlash
60 daqiqa
Oddiy qoidalar yordamida Istio-da marshrutlashni qanday boshqarishni bilib oling.
Boshlamoq

Kengaytirilgan marshrutlash qoidalari
60 daqiqa
Keling, Istio-ning aqlli marshrutini, kirishni boshqarishni, yukni muvozanatlashini va tezligini cheklashni ko'rib chiqaylik.
Boshlamoq

Blok 3 - ilg'or foydalanuvchi

Istioda nosozliklarni in'ektsiya qilish
60 daqiqa
Biz taqsimlangan ilovalarda xatoliklarni bartaraf etish stsenariylarini o'rganamiz, HTTP xatolarini va tarmoq kechikishlarini yaratamiz va atrof-muhitni tiklash uchun xaos muhandisligidan foydalanishni o'rganamiz.
Boshlamoq

Istiodagi o'chirgich
30 daqiqa
Biz Stress test saytlari uchun Siege-ni o'rnatamiz va takrorlashlar, avtomatik o'chirgichlar va hovuzni chiqarishdan foydalanib, orqa qismdagi nosozliklarga chidamliligini qanday ta'minlashni o'rganamiz.
Boshlamoq

Egress va Istio
10 daqiqa
Biz Egress marshrutlaridan ichki xizmatlarning tashqi API va xizmatlar bilan oʻzaro aloqasi qoidalarini yaratish uchun foydalanamiz.
Boshlamoq

Istio va Kiali
15 daqiqa
Xizmat ko'rsatish tarmog'i haqida umumiy ma'lumot olish va so'rov va ma'lumotlar oqimlarini o'rganish uchun Kiali'dan foydalanishni o'rganing.
Boshlamoq

Istio'da o'zaro TLS
15 daqiqa
Biz Istio Gateway va VirtualService ni yaratamiz, keyin o'zaro TLS (mTLS) va uning sozlamalarini batafsil o'rganamiz.
Boshlamoq

Blok 3.1 - Deep Dive: Mikroservislar uchun Istio Service Mesh

Istio Service Mesh-dagi bir qator postlar
Kitob nima haqida:

  • Xizmat tarmog'i nima?
  • Istio tizimi va uning mikroservis arxitekturasidagi roli.
  • Quyidagi muammolarni hal qilish uchun Istio-dan foydalanish:
    • Xatolarga chidamlilik;
    • Marshrutlash;
    • Xaos sinovi;
    • Xavfsizlik;
    • Izlar, o'lchovlar va Grafana yordamida telemetriya to'plami.

Kitob yuklab olish uchun

Xizmat meshlari va Istio haqida maqolalar turkumi

O'zingizni sinab ko'ring

Ushbu postlar seriyasi Istio dunyosiga chuqur sho'ng'ishni ta'minlash uchun mo'ljallanmagan. Biz sizni kontseptsiya bilan tanishtirmoqchimiz va ehtimol sizni Istio-ni o'zingiz sinab ko'rishingizga ilhomlantirmoqchimiz. Buni qilish mutlaqo bepul va Red Hat OpenShift, Kubernetes, Linux konteynerlari va Istio bilan ishlashni boshlash uchun barcha zarur vositalarni taqdim etadi, jumladan: Red Hat Developer OpenShift konteyner platformasi, Istio bo'yicha qo'llanmamiz va boshqa manbalarimiz Service Mesh-dagi mikrosayt. Kechiktirmang, bugun boshlang!

Istio marshrutlash qoidalari: xizmat so'rovlarini kerakli joyga yo'naltirish

openshift и Kubernetes murojaat qilish uchun ajoyib ish qiling mikroservislar kerakli bo'laklarga yo'naltiriladi. Bu Kubernetes mavjudligining sabablaridan biri - marshrutlash va yukni muvozanatlash. Agar sizga yanada nozik va murakkab marshrut kerak bo'lsa-chi? Masalan, bir vaqtning o'zida mikroservisning ikkita versiyasidan foydalanish. Istio Marshrut qoidalari bu erda qanday yordam berishi mumkin?

Marshrut qoidalari - bu marshrutni tanlashni aniqlaydigan qoidalar. Tizimning murakkabligi darajasidan qat'i nazar, ushbu qoidalarning umumiy ishlash printsipi oddiy bo'lib qoladi: so'rovlar ma'lum parametrlar va HTTP sarlavhasi qiymatlari asosida yo'naltiriladi.
Keling, misollarni ko'rib chiqaylik:

Kubernetes standarti: ahamiyatsiz "50/50"

Bizning misolimizda biz OpenShift-da mikroservisning ikkita versiyasini bir vaqtning o'zida qanday ishlatishni ko'rsatamiz, keling, ularni v1 va v2 deb ataymiz. Har bir versiya o'zining Kubernetes podasida ishlaydi va sukut bo'yicha u teng muvozanatli aylanma yo'nalishni boshqaradi. Har bir pod mikroservis nusxalari soniga qarab so'rovlar ulushini oladi, boshqacha qilib aytganda, replikalar. Istio ushbu balansni qo'lda o'zgartirishga imkon beradi.

Aytaylik, biz tavsiyalar xizmatimizning ikkita versiyasini OpenShift, tavsiya-v1 va tavsiya-v2-da ishlatdik.
Shaklda. 1-rasmda ko'rsatilgandek, har bir xizmat bir misolda taqdim etilganda, so'rovlar ular o'rtasida teng ravishda almashinadi: 1-2-1-2-... Kubernetes marshrutlash sukut bo'yicha shunday ishlaydi:

Istio Service Mesh-dagi bir qator postlar

Versiyalar orasidagi vaznli taqsimot

Shaklda. 2-rasmda v2 xizmat nusxalari sonini bittadan ikkitaga ko'paytirsangiz nima bo'lishini ko'rsatadi (bu oc shkalasi —replicas=2 deployment/recommendation-v2 buyrug'i bilan amalga oshiriladi). Ko'rib turganingizdek, v1 va v2 o'rtasidagi so'rovlar endi birdan uchga nisbatda bo'lingan: 1-2-2-1-2-2-…:

Istio Service Mesh-dagi bir qator postlar

Istio-dan foydalangan holda versiyani e'tiborsiz qoldiring

Istio so'rovlar taqsimotini bizga kerakli tarzda o'zgartirishni osonlashtiradi. Masalan, quyidagi Istio yaml fayli yordamida barcha trafikni faqat tavsiya-v1 ga yuboring:

Istio Service Mesh-dagi bir qator postlar

Bu erda siz bunga e'tibor berishingiz kerak: podlar teglar bo'yicha tanlanadi. Bizning misolimiz v1 yorlig'idan foydalanadi. "Og'irligi: 100" parametri trafikning 100% v1 yorlig'iga ega bo'lgan barcha xizmat podslariga yo'naltirilishini bildiradi.

Versiyalar o'rtasida direktiv taqsimot (Canary Deployment)

Keyinchalik, vazn parametridan foydalanib, ularning har birida ishlaydigan mikroservis misollari sonini e'tiborsiz qoldirib, trafikni ikkala podkaga yo'naltirishingiz mumkin. Masalan, biz trafikning 90 foizini v1 ga va 10 foizini v2 ga yo'naltiramiz:

Istio Service Mesh-dagi bir qator postlar

Mobil foydalanuvchilar uchun alohida marshrutlash

Xulosa qilib, biz mobil foydalanuvchi trafigini v2 xizmatiga, qolganlarni esa v1 xizmatiga yo'naltirishga qanday majburlashni ko'rsatamiz. Buning uchun so'rov sarlavhasidagi foydalanuvchi-agent qiymatini tahlil qilish uchun oddiy iboralardan foydalanamiz:

Istio Service Mesh-dagi bir qator postlar

Endi sizning navbatingiz

Sarlavhalarni tahlil qilish uchun odatiy iboralar bilan misol sizni Istio marshrutlash qoidalaridan o'zingizning foydalanishingizni topishga undashi kerak. Bundan tashqari, bu erda imkoniyatlar juda keng, chunki sarlavha qiymatlari dasturning manba kodida shakllantirilishi mumkin.

Shuni esda tutingki, Dev emas, Ops

Yuqoridagi misollarda biz ko'rsatgan hamma narsa dastlabki kodda ozgina o'zgarishlarsiz amalga oshiriladi, maxsus so'rov sarlavhalarini yaratish zarur bo'lgan holatlar bundan mustasno. Istio, masalan, sinov bosqichida foydalanishi mumkin bo'lgan ishlab chiquvchilar uchun ham, ishlab chiqarishda katta yordam beradigan IT tizimlaridan foydalanish bo'yicha mutaxassislar uchun ham foydali bo'ladi.

Shunday qilib, keling, ushbu postlar seriyasining leytmotivini takrorlaymiz: kodingizda biror narsani o'zgartirishingiz shart emas. Yangi tasvirlarni yaratish yoki yangi konteynerlarni ishga tushirishning hojati yo'q. Bularning barchasi koddan tashqarida amalga oshiriladi.

Tasavvuringizdan foydalaning

Oddiy iboralar yordamida sarlavhalarni tahlil qilish imkoniyatlarini tasavvur qiling. Sizning eng katta mijozingizni maxsus versiyangizga yo'naltirishni xohlaysizmi mikroservislar? Osonlik bilan! Chrome brauzeri uchun alohida versiya kerakmi? Muammo emas! Siz deyarli har qanday xususiyatga ko'ra trafikni yo'naltirishingiz mumkin.

O'zingizni sinab ko'ring

Istio, Kubernetes va OpenShift haqida o'qish bir narsa, lekin nima uchun hamma narsaga o'zingiz tegmaysiz? Jamoa Red Hat Developer dasturi ushbu texnologiyalarni imkon qadar tezroq o'zlashtirishingizga yordam beradigan batafsil qo'llanma (ingliz tilida) tayyorladi. Qo'llanma ham 100% ochiq manba hisoblanadi, shuning uchun u jamoat mulkida joylashtirilgan. Fayl macOS, Linux va Windows tizimlarida ishlaydi va manba kodi Java va node.js versiyalarida mavjud (tez orada boshqa tillardagi versiyalar). Brauzeringizda mos keladigan git omborini oching Red Hat Developer Demo.

Keyingi postda: biz muammolarni chiroyli tarzda hal qilamiz

Bugun siz Istio marshrutlash qoidalari nima qila olishini ko'rdingiz. Endi xuddi shu narsani tasavvur qiling, lekin faqat xatolarni hal qilish bilan bog'liq. Aynan shu narsa haqida keyingi postda gaplashamiz.

Manba: www.habr.com

a Izoh qo'shish