"Xavf - bu mening ikkinchi ismim", - deydi Ostin Pauers, xalqaro sirli odam. Ammo super agentlar va razvedka xizmatlari tomonidan yuqori baholanadigan narsa kompyuter xizmatlari uchun umuman mos kelmaydi, bu erda zerikish xavfdan ko'ra yaxshiroqdir.
Va Istio, OpenShift va Kubernetes bilan birgalikda mikroservislarni o'rnatishni haqiqatan ham zerikarli va oldindan aytib bo'ladigan qiladi - va bu ajoyib. Bu va boshqa ko'p narsalar haqida biz Istio seriyasining to'rtinchi va oxirgi postida gaplashamiz.
Zerikish to'g'ri bo'lganda
Bizning holatda, zerikish faqat yakuniy bosqichda sodir bo'ladi, faqat o'tirish va jarayonni kuzatish qoladi. Ammo buning uchun siz avval hamma narsani sozlashingiz kerak va bu erda sizni juda ko'p qiziqarli narsalar kutmoqda.
Dasturiy ta'minotingizning yangi versiyasini o'rnatishda xavflarni minimallashtirish uchun barcha variantlarni ko'rib chiqishga arziydi. Parallel ishlash - bu sinovning juda kuchli va tasdiqlangan usuli va Istio ishlab chiqarish tizimiga aralashmasdan buni amalga oshirish uchun "maxfiy xizmat" (mikroservisingizning yashirin versiyasi) dan foydalanishga imkon beradi. Buning uchun hatto maxsus atama ham mavjud - "Dark Launch", bu o'z navbatida "trafikni aks ettirish" ayg'oqchi nomiga ega funksiya bilan faollashtirilgan.
E'tibor bering, oldingi bandning birinchi jumlasi "ozod qilish" emas, balki "joylashtirish" atamasidan foydalanadi. Siz haqiqatan ham mikroservisingizni xohlagancha tez-tez o'rnatishingiz va, albatta, foydalanishingiz mumkin. Ushbu xizmat trafikni qabul qilish va qayta ishlash, natijalarni ishlab chiqarish, shuningdek, jurnallarga yozish va monitoring qilish imkoniyatiga ega bo'lishi kerak. Ammo shu bilan birga, ushbu xizmatning o'zi ishlab chiqarishga chiqarilishi shart emas. Dasturiy ta'minotni joylashtirish va chiqarish har doim ham bir xil narsa emas. Siz xohlagan vaqtda joylashtirishingiz mumkin, lekin faqat tayyor bo'lganingizda qo'yib yuboring.
Zerikishni tashkil qilish qiziq
Quyidagi Istio marshrutlash qoidasini ko'rib chiqing, u barcha HTTP so'rovlarini mikroservis tavsiyasi v1 ga yo'naltiradi (barcha misollar
Yorliqga e'tibor bering mirror:
ekranning pastki qismida - bu trafik aks ettirishni o'rnatadi. Ha, bu juda oddiy!
Ushbu qoidaning natijasi shundaki, ishlab chiqarish tizimingiz (v1) kiruvchi so'rovlarni qayta ishlashni davom ettiradi, lekin so'rovlarning o'zi asinxron ravishda v2 ga aks ettiriladi, ya'ni ularning to'liq dublikatlari u erga boradi. Shunday qilib, siz v2 ni real sharoitda - real ma'lumotlar va trafikda - ishlab chiqarish tizimining ishlashiga hech qanday aralashmasdan sinab ko'rishingiz mumkin. Bu testlarni tashkil qilishni zerikarli qiladimi? Ha, albatta. Lekin bu qiziqarli tarzda qilingan.
Keling, drama qo'shamiz
E'tibor bering, v2 kodida kiruvchi so'rovlar ma'lumotlar o'zgarishiga olib kelishi mumkin bo'lgan vaziyatlarni ko'rsatish kerak. So'rovlarning o'zi osongina va shaffof tarzda aks ettiriladi, ammo testda ishlov berish usulini tanlash sizga bog'liq - va bu biroz tashvishli.
Keling, bir muhim fikrni takrorlaylik
Trafik aks ettirish (Dark Launch/Request Mirroring) bilan maxfiy ishga tushirish kodga hech qanday ta'sir qilmasdan amalga oshirilishi mumkin.
O'ylash uchun ovqat
Agar so'rovlar aks ettirilgan joy ularning ba'zilarini v1 ga emas, balki v2 ga yuborsa-chi? Misol uchun, barcha so'rovlarning bir foizi yoki faqat ma'lum bir foydalanuvchilar guruhining so'rovlari. Va keyin, v2 qanday ishlashiga qarab, asta-sekin barcha so'rovlarni yangi versiyaga o'tkazing. Yoki aksincha, v1 da biror narsa noto'g'ri bo'lsa, hamma narsani v2 ga qaytaring. Menimcha, bu Canary Deployment deb ataladi.
Istio-da Canary Deployment: ishga tushirishni soddalashtirish
Ehtiyotkorlik bilan va asta-sekin
Canary Deployment deployment modelining mohiyati juda oddiy: dasturiy ta'minotingizning yangi versiyasini ishga tushirganingizda (bizning holimizda, mikroservis), avval siz kichik foydalanuvchilar guruhiga unga kirish huquqini berasiz. Agar hamma narsa yaxshi bo'lsa, siz yangi versiya ishlay boshlagunga qadar bu guruhni asta-sekin oshirasiz yoki agar bo'lmasa - oxir-oqibat barcha foydalanuvchilarni unga ko'chirasiz. O'ylab va asta-sekin yangi versiyani joriy qilish va foydalanuvchilarni unga boshqariladigan tarzda almashtirish orqali siz xavflarni kamaytirishingiz va fikr-mulohazalarni maksimal darajada oshirishingiz mumkin.
Albatta, Istio so'rovlarni aqlli marshrutlash uchun bir nechta yaxshi variantlarni taklif qilish orqali Canary Deployment-ni soddalashtiradi. Va ha, bularning barchasi sizning manba kodingizga hech qanday tarzda tegmasdan amalga oshirilishi mumkin.
Brauzerni filtrlash
ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠ΅Π² ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ β ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠΎΠΏΡΡΡΠΈΠΌ, Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π½Π° v2 ΡΡ ΠΎΠ΄ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² Safari. ΠΠΎΡ ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΡΡ:
Keling, ushbu marshrutlash qoidasini qo'llaymiz va keyin buyruqni ishlatamiz curl
Biz mikroservisga real so'rovlarni tsiklda simulyatsiya qilamiz. Skrinshotda ko'rib turganingizdek, ularning barchasi v1 ga o'tadi:
v2 da trafik qayerda? Bizning misolimizda barcha so'rovlar faqat o'z buyruq satridan kelganligi sababli, u oddiygina mavjud emas. Ammo yuqoridagi ekranning pastki satrlariga e'tibor bering: bu biz Safari brauzeridan so'rovni bajarganimizga reaktsiya bo'lib, u o'z navbatida buni amalga oshirdi:
Cheksiz quvvat
Biz allaqachon yozgan edikki, muntazam ifodalar marshrutlash so'rovlari uchun juda kuchli imkoniyatlar beradi. Quyidagi misolni ko'rib chiqing (u nima qilishini tushunasiz deb o'ylaymiz):
Hozircha siz oddiy iboralar nima qilishi mumkinligi haqida tasavvurga egasiz.
Aqlli harakat qiling
Aqlli marshrutlash, xususan muntazam iboralar yordamida paket sarlavhalarini qayta ishlash trafikni o'zingiz xohlagan tarzda boshqarish imkonini beradi. Va bu yangi kodni amalga oshirishni sezilarli darajada osonlashtiradi - bu oddiy, kodning o'zini o'zgartirishni talab qilmaydi va agar kerak bo'lsa, hamma narsani tezda avvalgidek qaytarish mumkin.
Qiziqmi?
Kompyuteringizda Istio, Kubernetes va OpenShift bilan tajriba qilishni xohlaysizmi? Jamoa
β
Istio Egress: yodgorlik do'koni orqali chiqing
Red Hat OpenShift va Kubernetes bilan birgalikda Istio-dan foydalanib, siz mikroservislar bilan hayotingizni ancha osonlashtirasiz. Istio-ning xizmat ko'rsatish tarmog'i Kubernetes podslarida yashiringan va sizning kodingiz (asosan) izolyatsiyada ishlaydi. Ishlash, o'zgartirish qulayligi, kuzatuv va boshqalar - bularning barchasi yonbosh konteynerlaridan foydalanish tufayli foydalanish oson. Ammo agar sizning mikroservisingiz OpenShift-Kubernetes tizimidan tashqarida joylashgan boshqa xizmatlar bilan bog'lanishi kerak bo'lsa-chi?
Bu erda Istio Egress yordamga keladi. Xulosa qilib aytganda, bu sizga Kubernetes pods tizimingizning bir qismi bo'lmagan resurslarga (o'qing: "xizmatlar") kirish imkonini beradi. Agar siz qo'shimcha konfiguratsiyani amalga oshirmasangiz, Istio Egress muhitida trafik faqat podalar klasteri ichida va ichki IP-jadvallarga asoslangan bunday klasterlar o'rtasida yo'naltiriladi. Va bunday pupatsiya, agar siz tashqaridan xizmatlarga kirishga muhtoj bo'lmasangiz, ajoyib ishlaydi.
Egress sizga yuqoridagi IP-jadvallarni chetlab o'tishga imkon beradi, Egress qoidalari yoki bir qator IP manzillar asosida.
Aytaylik, bizda httpbin.org/headers manziliga GET so'rovini yuboradigan Java dasturi bor.
(httpbin.org - bu chiquvchi xizmat so'rovlarini sinab ko'rish uchun qulay manba.)
Agar siz buyruq satriga kirsangiz curl http://httpbin.org/headers
, biz quyidagilarni ko'ramiz:
Yoki brauzerda xuddi shu manzilni ochishingiz mumkin:
Ko'rib turganingizdek, u erda joylashgan xizmat shunchaki unga o'tkazilgan sarlavhalarni qaytaradi.
Biz importni to'g'ridan-to'g'ri almashtiramiz
Keling, ushbu xizmatning tizimimizdan tashqaridagi Java kodini olamiz va uni o'zimiz ishga tushiramiz, eslaylik, Istio o'rnatilgan. (Muloqot orqali buni o'zingiz qilishingiz mumkin curl egresshttpbin-istioegress.$(minishift ip).nip.io
, shundan so'ng biz buni ekranda ko'ramiz:
Voy, nima bo'ldi? Hammasi shunchaki ishladi. Topilmadi nimani anglatadi? Biz buni faqat uning uchun qildik curl
.
IP jadvallarini butun Internetga kengaytirish
Buning uchun Istioni ayblash (yoki rahmat qilish) kerak. Axir, Istio - bu aniqlash va marshrutlash uchun mas'ul bo'lgan yonbosh konteynerlari (va biz avvalroq gaplashgan boshqa ko'p narsalar). Shu sababli, IP-jadvallar faqat sizning klaster tizimingizda nima borligini biladi. Va httpbin.org tashqarida joylashgan va shuning uchun unga kirish mumkin emas. Va bu erda Istio Egress yordamga keladi - manba kodingizga zarracha o'zgarishsiz.
Quyidagi Egress qoidasi Istio-ni kerakli xizmatni qidirishga majbur qiladi (agar kerak bo'lsa, butun Internet bo'ylab), bu holda httpbin.org. Ushbu fayldan (egress_httpbin.yml) ko'rib turganingizdek, bu erda funksionallik juda oddiy:
Faqatgina ushbu qoidani qo'llash qoladi:
istioctl create -f egress_httpbin.yml -n istioegress
Buyruq yordamida chiqish qoidalarini ko'rishingiz mumkin istioctl get egressrules
:
Va nihoyat, biz yana buyruqni bajaramiz kΔ±vrΔ±m - va biz hamma narsa ishlayotganini ko'ramiz:
Biz ochiq fikrdamiz
Ko'rib turganingizdek, Istio sizga tashqi dunyo bilan o'zaro aloqani tashkil qilish imkonini beradi. Boshqacha qilib aytadigan bo'lsak, siz hali ham OpenShift xizmatlarini yaratishingiz va ularni Kubernetes orqali boshqarishingiz mumkin, bunda hamma narsani kerak bo'lganda kattalashadigan va kichraytiradigan podslarda saqlaysiz. Va shu bilan birga, siz atrof-muhitingizdan tashqari xizmatlarga xavfsiz kirishingiz mumkin. Ha, yana bir bor takrorlaymizki, bularning barchasi sizning kodingizga hech qanday tegmasdan amalga oshirilishi mumkin.
Bu Istio-dagi seriyadagi so'nggi post edi. Bizni kuzatib boring - oldinda juda ko'p qiziqarli narsalar bor!
Manba: www.habr.com