Istio Service Mesh-də bir sıra yazılar

Red Hat OpenShift və Kubernetes ilə birlikdə Istio Service Mesh-in bir çox xüsusiyyətlərini nümayiş etdirən bir sıra yazılara başlayırıq.

Istio Service Mesh-də bir sıra yazılar

Bu gün birinci hissə:

  • Gəlin Kubernetes yan vaqon konteynerləri konsepsiyasını izah edək və bu yazılar silsiləsinin leytmotivini formalaşdıraq: "kodunuzda heç nəyi dəyişməyə ehtiyac yoxdur".
  • Istio-nun əsas şeyini - marşrutlaşdırma qaydalarını təsəvvür edək. Bütün digər Istio xüsusiyyətləri onların üzərində qurulmuşdur, çünki bu, xidmət kodundan kənar YAML fayllarından istifadə edərək trafiki mikroservislərə yönləndirməyə imkan verən qaydalardır. Canary Deployment yerləşdirmə sxemini də nəzərdən keçiririk. Yeni il bonusu - 10 İnteraktiv İstio Dərsləri


Tezliklə çıxacaq ikinci hissə sizə xəbər verəcək:

  • Istio Pool Ejection-ı Circuit Breaker ilə birlikdə necə həyata keçirir və Istio-nun balans sxemindən boş və ya zəif işləyən podu çıxarmağa necə imkan verdiyini nümayiş etdirir.
  • Istio-nun burada necə istifadə olunacağına dair ilk yazıdan Circuit Breaker mövzusuna da baxacağıq. Biz YAML konfiqurasiya faylları və terminal əmrlərindən istifadə edərək xidmət kodunda ən kiçik dəyişiklik olmadan trafikin necə istiqamətləndirilməsini və şəbəkə xətalarını idarə etməyi göstərəcəyik.

Üçüncü hissə:

  • Artıq quraşdırılmış və ya asanlıqla Istio-ya əlavə edilmiş izləmə və monitorinq haqqında hekayə. Mikroservis arxitekturanızı asanlıqla idarə etmək üçün OpenShift miqyası ilə birlikdə Prometheus, Jaeger və Grafana kimi alətlərdən necə istifadə edəcəyinizi sizə göstərəcəyik.
  • Biz səhvləri izləməkdən və idarə etməkdən onları qəsdən sistemə daxil etməyə keçirik. Başqa sözlə, mənbə kodunu dəyişdirmədən səhv inyeksiya etməyi öyrənirik, bu, sınaq baxımından çox vacibdir - çünki bunun üçün kodun özünü dəyişdirsəniz, əlavə səhvlər təqdim etmək riski var.

Nəhayət, Istio Service Mesh-dəki son yazıda:

  • Qaranlıq tərəfə gedək. Daha doğrusu, kod birbaşa istehsal məlumatlarında yerləşdirildikdə və sınaqdan keçirildikdə, lakin sistemin işinə heç bir şəkildə təsir etmədikdə, Dark Launch sxemindən istifadə etməyi öyrənəcəyik. Istio-nun trafiki bölmək qabiliyyəti burada lazımlı olur. Döyüş sisteminin işinə heç bir təsir göstərmədən canlı istehsal məlumatları üzərində sınaq keçirmək imkanı yoxlamaq üçün ən inandırıcı üsuldur.
  • Dark Launch-a əsaslanaraq, riski azaltmaq və yeni kodun yerləşdirilməsini asanlaşdırmaq üçün Canary Deployment modelindən necə istifadə edəcəyinizi sizə göstərəcəyik. Canary Deployment özü yeni deyil, lakin Istio sizə bu sxemi sadə YAML faylları ilə həyata keçirməyə imkan verir.
  • Yekun olaraq, İnternetlə işləyərkən Istio-nun imkanlarından istifadə etmək üçün klasterlərinizdən kənarda olanlara xidmətlərə çıxış əldə etmək üçün Istio Egress-dən necə istifadə edəcəyimizi göstərəcəyik.

Beləliklə, gedək ...

Istio monitorinq və idarəetmə alətləri dəsti - mikroservisləri xidmət şəbəkəsində əlaqələndirmək üçün lazım olan hər şey xidmət mesh.

Istio Service Mesh nədir

Xidmət şəbəkəsi trafikin monitorinqi, girişə nəzarət, kəşf, təhlükəsizlik, nasazlığa dözümlülük və digər faydalı funksiyalar kimi bir qrup xidmətlər üçün tətbiq edilir. Istio bütün bunları xidmətlərin kodunda ən kiçik dəyişiklik etmədən etməyə imkan verir. Sehrliliyin sirri nədir? Istio, hər bir xidmətə öz proksisini yan vaqon konteyneri şəklində əlavə edir (sifariş motosikletin yan arabasıdır), bundan sonra bu xidmətə gedən bütün trafik göstərilən siyasətləri rəhbər tutaraq, bunun necə, nə vaxt və olub olmadığına qərar verən proxydən keçir. trafik ümumiyyətlə xidmətə çatmalıdır. Istio həmçinin sizə kanareyka yerləşdirmələri, elektrik açarları, nasazlıqların vurulması və s. kimi qabaqcıl DevOps üsullarını tətbiq etmək imkanı verir.

Istio konteynerlər və Kubernetes ilə necə işləyir

Istio xidmət şəbəkəsi mikroservislər yaratmaq və idarə etmək üçün sizə lazım olan hər şeyin yan avtomobil tətbiqidir: monitorinq, izləmə, elektrik açarları, marşrutlaşdırma, yük balansı, nasazlığın inyeksiyası, təkrar cəhdlər, fasilələr, güzgüləmə, girişə nəzarət, sürətin məhdudlaşdırılması və s.. Bu gün bu xüsusiyyətləri birbaşa kodda həyata keçirmək üçün tonlarla kitabxanalar olsa da, Istio ilə kodunuzda heç nəyi dəyişmədən eyni şeyi əldə edə bilərsiniz.

Yan araba modelinə görə, Istio birində yerləşən Linux konteynerində işləyir Kubernetes-nəzarət olunan xidmətə malik pod və verilmiş konfiqurasiyaya uyğun olaraq funksionallıq və məlumatı həyata keçirir (inyeksiya edir) və çıxarır (çıxarır). Biz vurğulayırıq ki, bu sizin öz konfiqurasiyanızdır və kodunuzdan kənarda yaşayır. Beləliklə, kod daha sadə və daha qısa olur.

Daha da vacibi odur ki, mikroxidmətlərin əməliyyat komponenti heç bir şəkildə kodun özü ilə əlaqəli deyil, yəni onların əməliyyatı təhlükəsiz şəkildə İT mütəxəssislərinə ötürülə bilər. Həqiqətən, niyə bir tərtibatçı elektrik açarları və nasazlıqların vurulması üçün cavabdeh olmalıdır? Reaksiya verin, bəli, amma onları emal edib yaratmaq? Bütün bunları koddan çıxarsanız, proqramçılar tam şəkildə tətbiqin funksionallığına diqqət yetirə bilərlər. Və kodun özü daha qısa və sadə olacaq.

Xidmət şəbəkəsi

Mikroservislərin idarəetmə funksiyalarını kodlarından kənar həyata keçirən Istio - bu Service Mesh konsepsiyasıdır. Başqa sözlə, bu, şəbəkə funksiyalarının şəbəkəsini təşkil edən bir və ya daha çox binarların əlaqələndirilmiş qrupudur.

Istio mikroservislərlə necə işləyir

Yan vaqon konteynerləri belə işləyir Kubernetes и mini növbə quş baxışı: Minishift instansiyasını işə salın, Istio layihəsi yaradın (gəlin onu "istio-sistem" adlandıraq), Istio ilə əlaqəli bütün komponentləri quraşdırın və işə salın. Sonra, layihələr və podlar yaratdıqca, yerləşdirmələrinizə konfiqurasiya məlumatı əlavə edin və podlarınız Istio-dan istifadə etməyə başlayır. Sadələşdirilmiş diaqram bu kimi görünür:

Istio Service Mesh-də bir sıra yazılar

İndi siz Istio parametrlərini dəyişdirə bilərsiniz, məsələn, səhv inyeksiya, dəstək təşkil etmək Canary Deployment və ya Istio-nun digər xüsusiyyətləri - və bütün bunlar tətbiqlərin koduna toxunmadan. Deyək ki, siz ən böyük müştərinizin (Foo Corporation) istifadəçilərindən bütün veb trafikini saytınızın yeni versiyasına yönləndirmək istəyirsiniz. Sizə lazım olan tək şey istifadəçi ID-də @foocorporation.com-u axtaran və müvafiq olaraq yönləndirən Istio marşrutlaşdırma qaydası yaratmaqdır. Bütün digər istifadəçilər üçün heç nə dəyişməyəcək. Bu arada siz sakitcə saytın yeni versiyasını sınaqdan keçirəcəksiniz. Qeyd edək ki, bunun üçün tərtibatçıları cəlb etmək tamamilə lazım deyil.

Və bunun üçün nə qədər ödəməlisən?

Dəyməz. Istio olduqca sürətlidir, yazılmışdır Go və çox kiçik bir yük yaradır. Bundan əlavə, onlayn məhsuldarlığın mümkün itkisi developer məhsuldarlığının artması ilə kompensasiya edilir. Ən azı nəzəri cəhətdən: inkişaf etdiricilərin vaxtının dəyərli olduğunu unutmayın. Proqram xərcləri baxımından Istio açıq mənbəli proqramdır, ona görə də onu əldə etmək və istifadə etmək pulsuzdur.

Bunu özünüz idarə edin

Red Hat Developer Experience Team dərin praktiki iş hazırlayıb bələdçi Istio tərəfindən (İngilis dilində). O, Linux, MacOS və Windows sistemlərində işləyir və kod Java və Node.js ləzzətlərində gəlir.

10 İnteraktiv Istio Dərsləri

Blok 1 - Yeni başlayanlar üçün

Istio-ya giriş
30 dəqiqə
Biz Service Mesh ilə tanış oluruq, Kubernetes OpenShift klasterində Istio-nun necə qurulacağını öyrənirik.
Poçt

Istio-da mikroservislərin yerləşdirilməsi
30 dəqiqə
Spring Boot və Vert.x ilə üç mikroservisi yerləşdirmək üçün Istio-dan istifadə edirik.
Poçt

Blok 2 - orta səviyyə

Istio-da monitorinq və izləmə
60 dəqiqə
Istio-nun daxili monitorinq alətlərini, fərdi ölçülərini və Prometheus və Grafana vasitəsilə OpenTracing-i araşdırın.
Poçt

Istio-da sadə marşrutlaşdırma
60 dəqiqə
Sadə qaydalardan istifadə edərək Istio-da marşrutu idarə etməyi öyrənin.
Poçt

Qabaqcıl marşrutlaşdırma qaydaları
60 dəqiqə
Istio-da smart marşrutlaşdırma, girişə nəzarət, yük balansı və sürətin məhdudlaşdırılması ilə tanış oluruq.
Poçt

Blok 3 - Qabaqcıl İstifadəçi

Istio-da nasazlıq enjeksiyonu
60 dəqiqə
Biz paylanmış tətbiqlərdə uğursuzluqların idarə edilməsi ssenarilərini, HTTP xətaları və şəbəkə gecikmələrini öyrənirik və ətraf mühiti bərpa etmək üçün xaos mühəndisliyini necə tətbiq etməyi öyrənirik.
Poçt

Istio-da Circuit Breaker
30 dəqiqə
Stress test saytları üçün Siege quraşdırırıq və təkrar cəhdlər, elektrik açarı və hovuzun çıxarılmasından istifadə edərək arxa tərəfdəki nasazlığa dözümlülüyünü necə təmin etməyi öyrənirik.
Poçt

Egress və Istio
10 dəqiqə
Daxili xidmətlərin xarici API və xidmətlərlə qarşılıqlı əlaqəsi üçün qaydalar yaratmaq üçün Egress marşrutlarından istifadə edirik.
Poçt

Istio və Kiali
15 dəqiqə
Xidmət şəbəkəsinin böyük şəklini əldə etmək və sorğu və məlumat axınını öyrənmək üçün Kiali-dən necə istifadə edəcəyinizi öyrənmək.
Poçt

Istio-da qarşılıqlı TLS
15 dəqiqə
Istio Gateway və VirtualService yaradırıq, sonra qarşılıqlı TLS (mTLS) və onun parametrlərini ətraflı öyrənirik.
Poçt

Qutu 3.1 - Dərin Dalış: Mikroservislər üçün Istio Service Mesh

Istio Service Mesh-də bir sıra yazılar
Kitab nə haqqındadır:

  • Xidmət şəbəkəsi nədir.
  • Istio sistemi və onun mikroservis memarlığında rolu.
  • Aşağıdakı tapşırıqlar üçün Istio-dan istifadə edin:
    • Səhvlərə dözümlülük;
    • marşrutlaşdırma;
    • Xaos testi;
    • Təhlükəsizlik;
    • İzləmə, metrika və Grafana istifadə edərək telemetriya toplusu.

Kitab yükləmək üçün

Xidmət şəbəkələri və Istio haqqında məqalələr seriyası

Özünüz cəhd edin

Bu yazılar seriyası Istio dünyasına dərin bir dalış təmin etmək üçün nəzərdə tutulmayıb. Biz sadəcə sizi konsepsiyanın özü ilə tanış etmək və bəlkə də Istio-nu özünüz sınamaq üçün sizə ilham vermək istəyirik. Bu tamamilə pulsuzdur və Red Hat OpenShift, Kubernetes, Linux konteynerləri və Istio ilə işə başlamaq üçün lazım olan bütün alətləri təmin edir, o cümlədən: Red Hat Developer OpenShift Konteyner Platforması, Istio-ya bələdçimiz və digər resurslarımız xidmət mesh mikro saytı. Gecikməyin, bu gün başlayın!

Istio Marşrutlaşdırma Qaydaları: Xidmət Sorğularını Doğru Yerə Yönləndirmək

OpenShift и Kubernetes ilə məşğul olmaqda əladır mikroservislər tələb olunan podlara yönləndirilir. Bu, Kubernetes mövcudluğunun məqsədlərindən biridir - marşrutlaşdırma və yük balansı. Bəs sizə daha incə və mürəkkəb marşrutlaşdırma lazımdırsa? Məsələn, eyni zamanda mikroservisin iki versiyasını istifadə etmək. İstio Marşrut Qaydaları burada necə kömək edə bilər?

Marşrutlaşdırma qaydaları əslində marşrutun seçilməsini müəyyən edən qaydalardır. Sistemin mürəkkəbliyindən asılı olmayaraq, bu qaydaların arxasında duran ümumi prinsip sadə olaraq qalır: sorğular müəyyən parametrlər və HTTP başlıq dəyərlərinə əsasən yönləndirilir.
Nümunələrə baxaq:

Kubernetes Defolt: Önəmsiz "50/50"

Nümunəmizdə OpenShift-də mikroservisin iki versiyasını eyni vaxtda necə istifadə edəcəyimizi göstərəcəyik, gəlin onları v1 və v2 adlandıraq. Hər bir versiya öz Kubernetes podunda işləyir və bərabər balanslaşdırılmış dairəvi marşrut marşrutu burada standart olaraq işləyir. Hər bir pod mikroservis instansiyalarının, başqa sözlə, replikaların sayına görə sorğu payını alır. Istio bu balansı əl ilə dəyişməyə imkan verir.

Tutaq ki, tövsiyə xidmətimizin iki versiyasını, tövsiyə-v1 və tövsiyə-v2-ni OpenShift-də yerləşdirdik.
Əncirdə. Şəkil 1 göstərir ki, hər bir xidmət bir instansiyada təqdim edildikdə, sorğular onların arasında bərabər şəkildə bölünür: 1-2-1-2-… Kubernetes marşrutlaşdırması defolt olaraq belə işləyir:

Istio Service Mesh-də bir sıra yazılar

Versiyalar Arasında Çəkili Paylanma

Əncirdə. Şəkil 2 v2 xidmət replikalarının sayını birdən ikiyə artırsanız nə baş verəcəyini göstərir (bu, oc miqyası --replicas=2 yerləşdirmə/tövsiyə-v2 əmri ilə edilir). Gördüyünüz kimi, v1 və v2 arasındakı sorğular indi birdən üçə nisbətdə bölünür: 1-2-2-1-2-2-…:

Istio Service Mesh-də bir sıra yazılar

Istio ilə versiyaya məhəl qoymayın

Istio, sorğuların paylanmasını ehtiyac duyduğumuz şəkildə dəyişdirməyi asanlaşdırır. Məsələn, aşağıdakı Istio yaml faylı ilə bütün trafiki yalnız tövsiyə-v1-ə göndərin:

Istio Service Mesh-də bir sıra yazılar

Burada buna diqqət yetirmək lazımdır: podlar etiketlərə görə seçilir. Bizim nümunəmizdə v1 etiketindən istifadə olunur. "Çəki: 100" parametri o deməkdir ki, trafikin 100%-i v1 etiketi olan bütün xidmət bölmələrinə yönləndiriləcək.

Versiyalar arasında direktiv paylama (Canary Deployment)

Bundan əlavə, çəki parametrindən istifadə edərək, hər birində işləyən mikroservis nümunələrinin sayına məhəl qoymadan trafiki hər iki bölməyə yönəldə bilərsiniz. Məsələn, burada biz birbaşa olaraq trafikin 90%-ni v1-ə, 10%-ni isə v2-yə yönəldirik:

Istio Service Mesh-də bir sıra yazılar

Ayrı-ayrı mobil istifadəçi marşrutu

Sonda biz mobil istifadəçilərin trafikini v2 xidmətinə, bütün digər istifadəçiləri isə v1-ə yönləndirməyə necə məcbur edəcəyimizi göstərəcəyik. Bunu etmək üçün sorğu başlığında istifadəçi-agent dəyərini təhlil etmək üçün müntəzəm ifadələrdən istifadə edirik:

Istio Service Mesh-də bir sıra yazılar

İndi növbə sənindir

Başlıqları təhlil etmək üçün regex nümunəsi sizi Istio-nun marşrutlaşdırma qaydalarını tətbiq etməyin öz yollarınızı araşdırmaq üçün motivasiya etməlidir. Üstəlik, buradakı imkanlar çox genişdir, çünki başlıq dəyərləri tətbiqlərin mənbə kodunda formalaşdırıla bilər.

Və unutmayın ki, Dev deyil, Ops

Yuxarıdakı nümunələrdə göstərdiyimiz hər şey, xüsusi sorğu başlıqlarının formalaşdırılması lazım olduğu hallar istisna olmaqla, mənbə kodunda ən kiçik dəyişiklik olmadan edilir. Istio həm, məsələn, sınaq mərhələsində istifadə edə biləcək tərtibatçılar, həm də istehsalda böyük köməklik göstərəcək İT sistem operatorları üçün faydalı olacaq.

Beləliklə, bu yazılar silsiləsinin mövzusunu təkrarlayaq: kodunuzda heç nəyi dəyişməyə ehtiyac yoxdur. Yeni şəkillər yaratmağa və ya yeni konteynerləri işə salmağa ehtiyac yoxdur. Bütün bunlar koddan kənarda həyata keçirilir.

təxəyyülünüzü işə salın

Sadəcə başlıqları müntəzəm ifadələrlə təhlil etməyin perspektivlərini təsəvvür edin. Ən böyük müştərinizi xüsusi bir versiyaya yönləndirmək istəyirsiniz mikroservislər? Asanlıqla! Chrome brauzeri üçün ayrıca versiyaya ehtiyacınız varmı? Problem deyil! Trafikin demək olar ki, hər hansı bir xüsusiyyətinə uyğun olaraq marşrutlaşdıra bilərsiniz.

Özünüz cəhd edin

Istio, Kubernetes və OpenShift haqqında oxumaq bir şeydir, amma niyə özünüzə toxunmayasınız? Komanda Red Hat Developer Proqramı bu texnologiyaları mümkün qədər tez mənimsəməyə kömək edəcək ətraflı bələdçi (ingilis dilində) hazırlamışdır. Bələdçi də 100% açıq mənbədir, ona görə də ictimai domendədir. Fayl macOS, Linux və Windows sistemlərində işləyir və mənbə kodu Java və node.js versiyalarında mövcuddur (tezliklə daha çox dil olacaq). Sadəcə olaraq brauzerinizdə müvafiq git repozitoriyasını açın Red Hat Developer Demo.

Növbəti yazıda: problemləri gözəl şəkildə həll etmək

Bu gün siz Istio marşrutlaşdırma qaydalarının nə edə biləcəyini gördünüz. İndi eyni şeyi təsəvvür edin, ancaq səhvlərin idarə olunması ilə əlaqədar. Növbəti yazıda məhz bu barədə danışacağıq.

Mənbə: www.habr.com

Добавить комментарий