Serangkaian kiriman ing Istio Service Mesh

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

Serangkaian kiriman ing Istio Service Mesh

Bagian siji, dina iki:

  • Ayo diterangake konsep wadhah 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 ngijini sampeyan kanggo ngarahake lalu lintas menyang microservices, nggunakake file YAML external kanggo kode layanan. Kita uga nimbang skema penyebaran Canary Deployment. Bonus Taun Anyar - 10 pelajaran interaktif ing Istio


Bagian loro, sing bakal teka, bakal ngandhani sampeyan:

  • Carane Istio ngleksanakake Pool Ejection ing kombinasi karo Circuit Breaker lan bakal nduduhake carane Istio ngijini sampeyan kanggo mbusak polong mati utawa kurang Performing saka sirkuit wawas.
  • Kita uga bakal ndeleng topik Circuit Breaker saka kiriman pisanan kanggo ndeleng carane Istio bisa digunakake ing kene. Kita bakal nuduhake sampeyan carane nuntun lalu lintas lan nangani kesalahan jaringan nggunakake file konfigurasi YAML lan printah terminal tanpa owah-owahan ing kode layanan.

Bagian telu:

  • Crita babagan nelusuri lan ngawasi, sing wis dibangun utawa gampang ditambahake menyang Istio. Kita bakal nuduhake sampeyan carane nggunakake alat kaya Prometheus, Jaeger, lan Grafana kanthi kombinasi skala OpenShift kanggo ngatur arsitektur layanan mikro kanthi gampang.
  • Kita pindhah saka ngawasi lan nangani kesalahan kanggo ngenalake menyang sistem kanthi sengaja. Ing tembung liyane, kita sinau carane nindakake injeksi fault tanpa ngganti kode sumber, kang penting banget saka sudut pandang testing - awit yen sampeyan ngganti kode dhewe kanggo iki, ana risiko ngenalaken kasalahan tambahan.

Pungkasan, ing kiriman pungkasan ing Istio Service Mesh:

  • Ayo 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 pamisah lalu lintas migunani. Lan kemampuan kanggo nguji data produksi langsung tanpa mengaruhi operasi sistem pertempuran kanthi cara apa wae minangka cara verifikasi sing paling yakin.
  • Mbangun ing Dark Launch, kita bakal nuduhake sampeyan carane nggunakake model Canary Deployment kanggo nyuda resiko lan nggawe luwih gampang kanggo njaluk kode anyar menyang produksi. Canary Deployment dhewe adoh saka anyar, nanging Istio ngidini sampeyan ngetrapake skema iki kanthi file YAML sing gampang.
  • Pungkasan, kita bakal nuduhake sampeyan carane nggunakake Istio Egress kanggo menehi akses menyang layanan kanggo wong-wong sing ana ing njaba klompok sampeyan supaya bisa nggunakake kemampuan Istio nalika nggarap Internet.

Dadi, iki ...

Alat pemantauan lan manajemen Istio - kabeh sing sampeyan butuhake kanggo ngatur layanan mikro ing bolong layanan layanan bolong.

Apa iku Istio Service Mesh

A bolong layanan nindakake fungsi kayata ngawasi lalu lintas, kontrol akses, panemuan, keamanan, toleransi fault lan liyane migunani kanggo klompok layanan. Istio ngidini sampeyan nindakake kabeh iki tanpa ngganti kode layanan kasebut dhewe. Apa rahasia sihir? Istio masang proxy dhewe kanggo saben layanan ing wangun wadhah sidecar (sidecar minangka sidecar motor), sawise kabeh lalu lintas menyang layanan iki liwat proxy, kang, dipandu dening kawicaksanan tartamtu, mutusakΓ© carane, nalika lan apa lalu lintas iki. kudu tekan layanan ing kabeh. Istio uga ndadekake bisa ngetrapake teknik DevOps sing canggih kayata penyebaran kenari, pemutus sirkuit, injeksi kesalahan lan liya-liyane.

Carane Istio dianggo karo kontaner lan Kubernetes

Bolong layanan Istio minangka implementasi sidecar kabeh sing dibutuhake kanggo nggawe lan ngatur layanan mikro: ngawasi, nelusuri, pemutus sirkuit, rute, imbangan beban, injeksi kesalahan, nyoba maneh, wektu entek, mirroring, kontrol akses, watesan tarif lan liya-liyane. Lan sanajan saiki ana akeh perpustakaan kanggo ngleksanakake fungsi kasebut langsung ing kode, kanthi Istio sampeyan bisa entuk kabeh sing padha tanpa ngganti apa wae ing kode sampeyan.

Miturut model sidecar, Istio mlaku ing wadhah Linux, sing ana ing siji Kubernetes-pod karo layanan kontrol lan injects lan extract fungsi lan informasi miturut konfigurasi diwenehi. We nandheske sing iki konfigurasi dhewe, lan urip ing njaba kode. Mulane, kode dadi luwih prasaja lan luwih cendhek.

Sing penting yaiku komponen operasional layanan mikro ora ana gandhengane karo kode kasebut, tegese operasi kasebut bisa ditransfer kanthi aman menyang spesialis IT. Pancen, kenapa pangembang kudu tanggung jawab kanggo pemutus sirkuit lan injeksi kesalahan? Reaksi, ya, nanging proses 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.

Service bolong

Istio, sing ngetrapake fungsi kanggo ngatur layanan mikro ing njaba kode kasebut, yaiku konsep Service Mesh. Ing tembung liyane, iku klompok terkoordinasi siji utawa luwih binari sing mbentuk bolong fungsi jaringan.

Carane Istio dianggo karo microservices

Iki minangka karya kontainer sidecar bebarengan karo Kubernetes ΠΈ Minishift tampilan mripat manuk: miwiti Kayata saka Minishift, nggawe project kanggo Istio (ayo disebut "istio-sistem"), 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:

Serangkaian kiriman ing Istio Service Mesh

Saiki sampeyan bisa ngganti setelan Istio supaya, contone, kanggo ngatur injeksi fault, support Penyebaran Canary utawa fitur Istio liyane - lan kabeh iki tanpa ndemek kode aplikasi kasebut dhewe. Contone, sampeyan pengin ngarahake kabeh lalu lintas web saka pangguna klien paling gedhe (Foo Corporation) menyang versi anyar situs kasebut. Kanggo nindakake iki, mung nggawe aturan rute Istio sing bakal nggoleki @foocorporation.com ing ID pangguna lan pangalihan sing cocog. Kanggo kabeh pangguna liyane, ora ana sing bakal diganti. Ing sawetoro wektu, sampeyan bakal kanthi tenang nyoba versi anyar situs kasebut. Lan elinga yen sampeyan ora perlu melu pangembang kanggo iki.

Lan sampeyan kudu mbayar larang?

Ora babar pisan. Istio cukup cepet lan ditulis ing Go lan nggawe overhead banget sethitik. Kajaba iku, kemungkinan mundhut produktivitas online diimbangi kanthi nambah produktivitas pangembang. Paling ora ing teori: aja lali yen wektu pangembang iku penting. Kanggo biaya piranti lunak, Istio minangka piranti lunak sumber terbuka, mula sampeyan bisa entuk lan nggunakake kanthi gratis.

Master dhewe

Tim Pengalaman Pangembang Red Hat wis ngembangake hands-on sing jero nuntun dening Istio (ing basa Inggris). Iku mlaku ing Linux, MacOS lan Windows, lan kode kasedhiya ing Jawa lan Node.js.

10 piwulang interaktif ing Istio

Blok 1 - Kanggo Pamula

Pambuka kanggo Istio
30 menit
Ayo dadi kenalan karo Service Mesh, sinau carane nginstal Istio ing OpenShift Kubernetes cluster.
Miwiti

Nganggo layanan mikro ing Istio
30 menit
Kita nggunakake Istio kanggo masang telung microservices karo Spring Boot lan Vert.x.
Miwiti

Blok 2 - tingkat menengah

Ngawasi lan nelusuri ing Istio
60 menit
Kita bakal njelajah alat ngawasi sing dibangun ing Istio, metrik khusus, lan OpenTracing liwat Prometheus lan Grafana.
Miwiti

Nuntun prasaja ing Istio
60 menit
Sinau carane ngatur rute ing Istio nggunakake aturan prasaja.
Miwiti

Aturan routing majeng
60 menit
Ayo goleki rute cerdas Istio, kontrol akses, imbangan muatan lan watesan tarif.
Miwiti

Blok 3 - pangguna majeng

Injeksi Fault ing Istio
60 menit
Kita sinau skenario nangani kegagalan ing aplikasi sing disebarake, nggawe kesalahan HTTP lan tundha jaringan, lan sinau nggunakake teknik chaos kanggo mulihake lingkungan.
Miwiti

Circuit Breaker ing Istio
30 menit
Kita instal Siege kanggo situs testing kaku lan sinau carane kanggo mesthekake toleransi fault backend nggunakake muter maneh, mbobol sirkuit lan ejection blumbang.
Miwiti

Egress lan Istio
10 menit
Kita nggunakake rute Egress kanggo nggawe aturan kanggo interaksi layanan internal karo API lan layanan external.
Miwiti

Istio lan Kiali
15 menit
Sinau nggunakake Kiali kanggo entuk ringkesan bolong layanan lan njelajah panjaluk lan aliran data.
Miwiti

Mutual TLS ing Istio
15 menit
Kita nggawe Istio Gateway lan VirtualService, banjur sinau bebarengan TLS (mTLS) lan setelan ing rinci.
Miwiti

Blok 3.1 - Nyilem jero: Istio Service Mesh kanggo Microservices

Serangkaian kiriman ing Istio Service Mesh
Apa buku babagan:

  • Apa iku jala layanan?
  • Sistem Istio lan peran ing arsitektur microservice.
  • Nggunakake Istio kanggo ngatasi masalah ing ngisor iki:
    • toleransi kesalahan;
    • Routing;
    • Pengujian chaos;
    • Keamanan;
    • Koleksi telemetri nggunakake jejak, metrik lan Grafana.

Ngundhuh buku

Seri artikel babagan meshes layanan lan Istio

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. Iki pancen gratis, lan Red Hat nyedhiyakake kabeh alat sing dibutuhake kanggo miwiti OpenShift, Kubernetes, wadah Linux, lan Istio, kalebu: Pangembang Red Hat OpenShift Container Platform, guide kita kanggo Istio lan sumber daya liyane ing kita microsite ing Service Mesh. Aja tundha, miwiti dina iki!

Aturan rute Istio: ngarahake panjalukan layanan menyang ngendi wae

openshift ΠΈ Kubernetes nindakake pakaryan sing apik kanggo ngatasi layanan mikro diarahake menyang polong sing dibutuhake. Iki minangka salah sawijining alasan kanggo orane Kubernetes - routing lan load balancing. Nanging kepiye yen sampeyan butuh rute sing luwih halus lan canggih? Contone, kanggo bebarengan nggunakake rong versi microservice. Kepiye Aturan Rute Istio bisa mbantu ing kene?

Aturan rute yaiku aturan sing bener nemtokake pilihan rute. Preduli saka tingkat kerumitan sistem, prinsip operasi umum saka aturan kasebut tetep prasaja: panjalukan diterusake adhedhasar parameter tartamtu lan nilai header HTTP.
Ayo ndeleng conto:

Kubernetes standar: trivial "50/50"

Ing conto kita, kita bakal nuduhake carane nggunakake rong versi microservice ing OpenShift bebarengan, ayo padha nelpon v1 lan v2. Saben versi lumaku ing pod Kubernetes dhewe, lan kanthi gawan nganggo rute round robin sing seimbang. Saben pod nampa panjalukane adhedhasar jumlah conto layanan mikro, kanthi tembung liya, replika. Istio ngidini sampeyan ngganti imbangan iki kanthi manual.

Contone, kita nggunakake rong versi layanan rekomendasi ing OpenShift, rekomendasi-v1 lan rekomendasi-v2.
Ing Fig. Figure 1 nuduhake yen saben layanan dituduhake ing siji conto, panjalukan sulih roto-roto antarane wong-wong mau: 1-2-1-2-... Iki cara Kubernetes nuntun dianggo minangka standar:

Serangkaian kiriman ing Istio Service Mesh

Distribusi bobot antarane versi

Ing Fig. Gambar 2 nuduhake apa sing kedadeyan yen sampeyan nambahake jumlah replika layanan v2 saka siji dadi loro (iki rampung karo skala oc β€”replicas=2 deployment/recommendation-v2 printah). Kaya sing sampeyan ngerteni, panjaluk antarane v1 lan v2 saiki dibagi dadi rasio siji-kanggo-telu: 1-2-2-1-2-2-…:

Serangkaian kiriman ing Istio Service Mesh

Nglirwakake versi nggunakake Istio

Istio nggampangake ngganti distribusi panjalukan kanthi cara sing dibutuhake. Contone, kirim kabeh lalu lintas mung menyang rekomendasi-v1 nggunakake file Istio yaml ing ngisor iki:

Serangkaian kiriman ing Istio Service Mesh

Kene sampeyan kudu menehi perhatian marang iki: polong dipilih miturut label. Contone kita nggunakake label v1. Parameter "bobot: 100" tegese 100% lalu lintas bakal dialihake menyang kabeh pod layanan sing duwe label v1.

Distribusi arahan antarane versi (Panyebaran Canary)

Sabanjure, nggunakake parameter bobot, sampeyan bisa ngarahake lalu lintas menyang polong loro, ora nggatekake jumlah instansi microservice sing mlaku ing saben-saben. Contone, ing kene kita ngarahake 90% lalu lintas menyang v1 lan 10% menyang v2:

Serangkaian kiriman ing Istio Service Mesh

Nuntun kapisah kanggo pangguna seluler

Ing kesimpulan, kita bakal nuduhake carane meksa lalu lintas pangguna seluler supaya diarahake menyang layanan v2, lan wong liya menyang v1. Kanggo nindakake iki, kita nggunakake ekspresi reguler kanggo nganalisa nilai pangguna-agen ing header panyuwunan:

Serangkaian kiriman ing Istio Service Mesh

Saiki giliran sampeyan

Conto kanthi ekspresi reguler kanggo parsing header kudu menehi motivasi kanggo nemokake panggunaan aturan rute Istio dhewe. Kajaba iku, kemungkinan ing kene cukup akeh, amarga nilai header bisa dibentuk ing kode sumber aplikasi.

Lan elinga Ops, dudu Dev

Kabeh sing dituduhake ing conto ing ndhuwur wis rampung tanpa owah-owahan sethithik ing kode sumber, kajaba kanggo kasus kasebut nalika perlu kanggo ngasilake header panyuwunan khusus. Istio bakal migunani kanggo pangembang, sing, contone, bakal bisa digunakake ing tahap tes, lan kanggo spesialis ing 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. Kabeh iki dileksanakake ing njaba kode.

Gunakake imajinasi sampeyan

Bayangake kemungkinan analisis header nggunakake ekspresi reguler. Pengin pangalihan pelanggan paling gedhe menyang versi khusus sampeyan layanan mikro? Gampang! Perlu versi kapisah kanggo browser Chrome? Ora masalah! Sampeyan bisa nuntun lalu lintas miturut meh kabeh karakteristik.

Coba dhewe

Maca babagan Istio, Kubernetes lan OpenShift minangka salah sawijining perkara, nanging kenapa ora ndemek kabeh dhewe? tim Program Pangembang Red Hat wis nyiapake pandhuan rinci (ing basa Inggris) sing bakal mbantu sampeyan nguwasani teknologi kasebut kanthi cepet. Manual 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 (versi ing basa liya bakal teka). Cukup mbukak repositori git sing cocog ing browser sampeyan Demo Pangembang Red Hat.

Ing kirim sabanjure: kita ngatasi masalah kanthi apik

Dina iki sampeyan ndeleng apa sing bisa ditindakake dening aturan rute Istio. Saiki mbayangno bab sing padha, nanging mung ana hubungane karo penanganan kesalahan. Iki persis apa sing bakal kita bahas ing kirim sabanjure.

Source: www.habr.com

Add a comment