Kita miwiti seri kiriman sing nuduhake sawetara saka akeh kapabilitas Istio Service Mesh nalika digabungake karo Red Hat OpenShift lan Kubernetes.

Bagian siji, dina iki:
- Ayo diterangake konsep wadah sidecar Kubernetes lan formulasi leitmotif saka seri kiriman iki: "Sampeyan ora perlu ngganti apa wae ing kode sampeyan".
- Ayo ngenalake bab dhasar Istio - aturan rute. Kabeh fitur Istio liyane dibangun ing wong-wong mau, amarga iku aturan sing ngidini sampeyan ngarahake lalu lintas menyang microservices nggunakake file YAML external kanggo kode layanan. Kita uga nimbang skema penyebaran Canary Deployment. Bonus Taun Anyar - 10 piwulang interaktif ing Istio
Bagean loro, sing bakal dirilis rauh, bakal ngandhani sampeyan:
- Carane Istio ngleksanakake Pool Ejection ing kombinasi karo Circuit Breaker lan nduduhake carane Istio ngijini sampeyan kanggo mbusak polong mati utawa kurang Performing saka sirkuit mbukak wawas.
- Kita uga bakal nutupi topik Circuit Breaker saka kiriman pisanan kanggo ndeleng carane Istio bisa digunakake ing kene. Kita bakal nuduhake carane nuntun lalu lintas lan nangani kesalahan jaringan nggunakake file konfigurasi YAML lan printah terminal tanpa owah-owahan ing kode layanan sampeyan.
Bagian telu:
- A dipikir nelusuri lan ngawasi sing dibangun menyang utawa gampang ditambahake kanggo Istio. Kita bakal nuduhake sampeyan carane nggunakake alat kaya Prometheus, Jaeger, lan Grafana ing kombinasi karo OpenShift scaling kanggo gampang ngatur arsitektur microservices.
- Kita pindhah saka ngawasi lan ngolah kesalahan kanggo ngenalake menyang sistem kanthi sengaja. Ing tembung liyane, kita sinau kanggo nindakake injeksi fault tanpa ngganti kode sumber, kang penting banget saka sudut pandang testing - amarga yen sampeyan ngganti kode dhewe kanggo iki, ana risiko ngenalke kasalahan tambahan.
Pungkasan, ing kiriman pungkasan ing Istio Service Mesh:
- Ayo pindhah menyang sisih peteng. Luwih tepat, kita bakal sinau nggunakake skema Dark Launch, nalika kode kasebut disebarake lan diuji langsung ing data produksi, nanging ora mengaruhi operasi sistem kanthi cara apa wae. Iki ngendi kemampuan Istio kanggo misahake lalu lintas dadi migunani banget. Lan kemampuan kanggo nguji data produksi langsung tanpa mengaruhi operasi sistem produksi kanthi cara apa wae minangka cara sing paling yakin kanggo verifikasi.
- Mbangun ing Dark Launch, kita bakal nuduhake sampeyan carane nggunakake model Canary Deployment kanggo nyuda resiko lan streamline penyebaran kode anyar. Canary Deployment dhewe ora ana sing anyar, nanging Istio ngidini kanggo ngetrapake kanthi file YAML sing gampang.
- Pungkasan, kita bakal nuduhake sampeyan carane nggunakake Istio Egress kanggo mbukak layanan menyang wong ing njaba klompok sampeyan, supaya sampeyan bisa nggunakake kekuwatan Istio nalika nggarap internet.
Dadi, iki ...
Alat Pemantauan lan Manajemen Istio - Kabeh Sampeyan Perlu Koordinasi Layanan Mikro ing Mesh Layanan .
Apa iku Istio Service Mesh
Jaring layanan nindakake fungsi kayata ngawasi lalu lintas, kontrol akses, panemuan, keamanan, toleransi kesalahan, lan barang migunani liyane kanggo klompok layanan. Istio ngidini sampeyan nindakake kabeh iki tanpa ngganti kode layanan kasebut dhewe. Apa rahasia saka sihir? Istio nempelake proxy dhewe ing wangun wadhah sidecar kanggo saben layanan, sawise kabeh lalu lintas menyang layanan iki liwat proxy, sing, dipandu dening kabijakan sing ditemtokake, mutusake carane, kapan, lan apa lalu lintas iki kudu tekan layanan kasebut. Istio uga ngidini sampeyan ngetrapake teknik DevOps sing canggih kayata penyebaran kenari, pemutus sirkuit, injeksi kesalahan, lan liya-liyane.
Cara Kerja Istio karo Wadah lan Kubernetes
Bolong layanan Istio minangka implementasi sidecar kabeh sing dibutuhake kanggo mbangun lan ngatur layanan mikro: ngawasi, nelusuri, pemutus sirkuit, nuntun, imbangan beban, injeksi kesalahan, nyoba maneh, wektu entek, pangilonan, kontrol akses, watesan tarif, lan liya-liyane. Nalika ana akeh perpustakaan saiki kanggo ngleksanakake fitur-fitur kasebut langsung ing kode sampeyan, kanthi Istio sampeyan bisa entuk kabeh fungsi sing padha tanpa ngganti apa wae ing kode sampeyan.
Ing model sidecar, Istio mlaku ing wadhah Linux sing manggon ing siji -pod karo layanan sing dikontrol lan nyuntikake lan ngekstrak fungsi lan informasi miturut konfigurasi sing diwenehake. Ayo kula nandheske yen iki konfigurasi sampeyan dhewe lan manggon ing njaba kode sampeyan. Mulane, kode dadi luwih prasaja lan luwih cendhek.
Sing uga penting yaiku komponen operasional layanan mikro ora disambungake menyang kode kasebut, tegese operasi kasebut bisa ditransfer kanthi aman menyang spesialis IT. Pancen, kenapa pangembang kudu tanggung jawab kanggo pemutus sirkuit lan injeksi kesalahan? Reacting - ya, nanging ngolah lan nggawe? Yen sampeyan mbusak kabeh iki saka kode, programer bakal bisa fokus ing fungsi aplikasi. Lan kode kasebut bakal dadi luwih cendhek lan luwih gampang.
Jaringan layanan
Istio, sing ngetrapake fungsi manajemen layanan mikro ing njaba kode kasebut, yaiku konsep Mesh Layanan. Ing tembung liyane, iku klompok terkoordinasi siji utawa luwih binari sing mbentuk bolong fungsi jaringan.
Carane Istio Bisa karo Microservices
Iki carane kontaner sidecar bisa bebarengan karo и Saka mripat manuk kang: sampeyan muter munggah Kayata Minishift, nggawe proyek kanggo Istio (ayo disebut "istio-sistem"), lan nginstal lan mbukak kabeh komponen-related Istio. Banjur, nalika sampeyan nggawe proyek lan pods, sampeyan nambahake informasi konfigurasi menyang penyebaran, lan pods wiwit nggunakake Istio. Diagram sing disederhanakake katon kaya iki:

Sampeyan saiki bisa ngganti setelan Istio kanggo, contone, ngaktifake injeksi fault, support utawa fitur Istio liyane - kabeh tanpa ndemek kode aplikasi kasebut dhewe. Contone, sampeyan pengin ngarahake kabeh lalu lintas web saka pangguna pelanggan paling gedhe (Foo Corporation) menyang versi anyar situs kasebut. Kanggo nindakake iki, sampeyan mung kudu nggawe aturan rute Istio sing nggoleki @foocorporation.com ing ID pangguna lan nindakake pangalihan sing cocog. Kanggo kabeh pangguna liyane, ora ana sing bakal diganti. Ing sawetoro wektu, sampeyan bisa kanthi tenang nyoba versi anyar situs kasebut. Lan elinga yen sampeyan ora perlu melu pangembang kanggo nindakake iki.
Lan apa kita kudu mbayar larang kanggo iki?
Ora babar pisan. Istio cukup cepet, ditulis ing lan nggawe overhead banget sethitik. Kajaba iku, kerugian sing bisa ditindakake ing kinerja online diimbangi kanthi nambah produktivitas pangembang. Paling ora ing teori: elinga yen wektu pangembang larang. Kanggo biaya piranti lunak, Istio minangka piranti lunak sumber terbuka, mula gratis kanggo entuk lan nggunakake.
Master dhewe
Tim Pengalaman Pangembang Red Hat wis ngembangake sing jero, langsung dening Istio (ing basa Inggris). Mlaku ing Linux, MacOS, lan Windows, lan kode kasedhiya ing Jawa lan Node.js.
10 Pawulangan Interaktif ing Istio
Blok 1 - Kanggo Pamula
Pambuka kanggo Istio
30 menit
Ngerteni Service Mesh, sinau carane nginstal Istio ing kluster OpenShift Kubernetes.
Nggunakake Microservices ing Istio
30 menit
Nggunakake Istio kanggo masang telung microservices karo Spring Boot lan Vert.x.
Blok 2 - tingkat menengah
Monitoring lan Tracing ing Istio
60 menit
Jelajahi Istio ngawasi, metrik khusus, lan OpenTracing liwat Prometheus lan Grafana.
Routing prasaja ing Istio
60 menit
Sinau carane ngatur rute ing Istio nggunakake aturan prasaja.
Aturan Routing Lanjut
60 menit
Pambuka kanggo nuntun pinter Istio, kontrol akses, imbangan muatan, lan watesan tarif.
Blok 3 - pangguna sing berpengalaman
Injeksi Fault ing Istio
60 menit
Kita nyinaoni skenario nangani kegagalan ing aplikasi sing disebarake, nggawe kesalahan HTTP lan wektu tundha jaringan, lan sinau carane ngetrapake teknik chaos kanggo mulihake lingkungan.
Circuit Breaker ing Istio
30 menit
Nginstal Siege kanggo situs web tes stres lan sinau carane njamin ketahanan backend nggunakake nyoba maneh, pemutus sirkuit, lan ejeksi kolam.
Egress lan Istio
10 menit
Kita nggunakake rute Egress kanggo nggawe aturan kanggo interaksi antarane layanan internal lan API lan layanan external.
Istio lan Kiali
15 menit
Sinau carane nggunakake Kiali kanggo njupuk gambaran gedhe saka bolong layanan lan njelajah panjalukan lan aliran data.
Mutual TLS ing Istio
15 menit
Kita nggawe Istio Gateway lan VirtualService, banjur priksa kanthi tliti babagan TLS (mTLS) lan setelane.
Blok 3.1 - Nyilem jero: Istio Service Mesh kanggo Microservices

Apa buku babagan:
- Apa iku jala layanan?
- Istio lan peran ing arsitektur microservice.
- Nggunakake Istio kanggo ngatasi masalah ing ngisor iki:
- toleransi kesalahan;
- Routing;
- Pengujian chaos;
- Keamanan;
- Koleksi telemetri nggunakake tracing, metrik lan Grafana.
Service Mesh lan Istio Series
Coba dhewe
Seri kiriman iki ora dimaksudake kanggo nyilem jero menyang jagad Istio. Kita mung pengin ngenalake konsep kasebut lan bisa uga menehi inspirasi kanggo nyoba Istio dhewe. Gratis, lan Red Hat nyedhiyakake kabeh alat sing dibutuhake kanggo miwiti OpenShift, Kubernetes, wadah Linux, lan Istio, kalebu: , lan sumber daya liyane ing kita Aja tundha, miwiti dina iki!
Aturan Routing Istio: Ngarahake Panjaluk Layanan menyang Endi sing Perlu Dituju
и nindakake proyek gedhe kanggo mesthekake yen banding digawe kanggo diarahake menyang polong tengen. Iki minangka salah sawijining tujuan Kubernetes: rute lan imbangan muatan. Nanging kepiye yen sampeyan butuh rute sing luwih canggih lan canggih? Contone, nggunakake rong versi microservice ing wektu sing padha. Kepiye Aturan Rute Istio bisa mbantu ing kene?
Aturan rute yaiku aturan sing bener nemtokake pilihan rute. Preduli saka kerumitan sistem, prinsip umum aturan iki tetep prasaja: panjalukan diterusake adhedhasar parameter tartamtu lan nilai header HTTP.
Ayo ndeleng sawetara conto:
Kubernetes Default: A Trivial '50/50'
Ing conto kita, kita bakal nuduhake carane mbukak rong versi microservice ing wektu sing padha ing OpenShift, disebut v1 lan v2. Saben versi mlaku ing pod Kubernetes dhewe, lan kanthi gawan, rute round robin sing imbang kanthi rata. Saben pod entuk panjalukan adhedhasar jumlah conto layanan mikro, utawa replika sing diduweni. Istio ngidini sampeyan ngganti imbangan iki kanthi manual.
Contone, kita nggunakake rong versi layanan rekomendasi ing OpenShift, rekomendasi-v1 lan rekomendasi-v2.
Ing Figure 1, sampeyan bisa ndeleng manawa saben layanan diwakili dening siji conto, panjalukan gantian kanthi rata ing antarane: 1-2-1-2-… Iki cara kerjane routing Kubernetes kanthi standar:

Distribusi bobot antarane versi
Gambar 2 nuduhake apa sing kedadeyan yen kita nambah jumlah replika layanan v2 saka siji dadi loro (iki rampung karo printah oc skala —replicas=2 deployment/recommendation-v2). Kaya sing kita deleng, panjaluk antarane v1 lan v2 saiki dibagi dadi rasio "siji nganti telu": 1-2-2-1-2-2-...:

Nglirwakake Versi karo Istio
Istio nggampangake ngganti distribusi panyuwunan sing cocog karo kabutuhan. Contone, ngirim kabeh lalu lintas mung menyang rekomendasi-v1 kanthi file Istio yaml ing ngisor iki:

Mangkene sing kudu digatekake: polong dipilih miturut label. Ing conto kita, label v1 digunakake. Parameter "bobot: 100" tegese 100% lalu lintas bakal diarahake menyang kabeh pod layanan sing duwe label v1.
Distribusi arahan antarane versi (Panyebaran Canary)
Sabanjure, nggunakake parameter bobot, kita bisa ngarahake lalu lintas menyang polong loro, ora nggatekake jumlah instansi microservice sing mlaku ing saben. Contone, ing kene kita langsung ngarahake 90% lalu lintas menyang v1 lan 10% menyang v2:

Nuntun kapisah kanggo pangguna seluler
Pungkasan, kita bakal nuduhake carane meksa lalu lintas pangguna seluler supaya diarahake menyang layanan v2, lan kabeh liyane menyang v1. Kanggo nindakake iki, kita nggunakake ekspresi reguler kanggo nganalisa nilai pangguna-agen ing header panyuwunan:

Saiki giliran sampeyan
Conto kanthi ekspresi reguler kanggo nganalisa header kudu menehi motivasi kanggo nemokake pilihan sampeyan dhewe kanggo nggunakake aturan rute Istio. Utamane amarga kemungkinan ing kene cukup akeh, amarga nilai header bisa dibentuk ing kode sumber aplikasi.
Lan elinga, Ops, ora Dev
Kabeh sing wis ditampilake ing conto ing ndhuwur wis rampung tanpa owah-owahan cilik ing kode sumber, uga, kajaba kanggo kasus nalika perlu kanggo mbentuk header request khusus. Istio bakal migunani kanggo pangembang, sing, contone, bisa digunakake ing tahap tes, lan kanggo spesialis operasi sistem IT, sing bakal mbantu banget ing produksi.
Dadi ayo mbaleni leitmotif saka seri kiriman iki: sampeyan ora perlu ngganti apa wae ing kode sampeyan. Ora perlu nggawe gambar anyar utawa mbukak wadhah anyar. Iku kabeh dileksanakake ing njaba kode.
Nguripake imajinasi sampeyan
Bayangake wae kemungkinan ana kanggo nganalisa berita utama kanthi ekspresi biasa. Pengin pangalihan klien paling gedhe menyang versi khusus sampeyan ? Gampang! Perlu versi kapisah kanggo browser Chrome? Ora masalah! Sampeyan bisa nuntun lalu lintas adhedhasar meh kabeh ciri.
Coba dhewe
Maca babagan Istio, Kubernetes, lan OpenShift minangka salah sawijining perkara, nanging kenapa ora ndemek kabeh nganggo tangan sampeyan dhewe? tim wis nyiapake pandhuan rinci (ing basa Inggris) sing bakal mbantu sampeyan nguwasani teknologi kasebut kanthi cepet. Pandhuan uga 100% open source, mula dikirim ing domain umum. File kasebut bisa digunakake ing macOS, Linux lan Windows, lan kode sumber kasedhiya ing versi Java lan node.js (ora suwe bakal ana versi ing basa liya). Cukup mbukak repositori git sing cocog ing browser sampeyan .
Ing kirim sabanjure: nggarap masalah kanthi apik
Dina iki sampeyan wis weruh apa aturan routing Istio bisa nindakake. Saiki mbayangno nindakake perkara sing padha kanggo nangani kesalahan. Mekaten ingkang badhe kita bahas ing postingan salajengipun.
Source: www.habr.com
