Runtuyan tulisan dina Istio Service Mesh

Kami ngamimitian séri tulisan anu nunjukkeun sababaraha seueur kamampuan Istio Service Mesh nalika digabungkeun sareng Red Hat OpenShift sareng Kubernetes.

Runtuyan tulisan dina Istio Service Mesh

Bagian kahiji, dinten ieu:

  • Hayu urang ngajelaskeun konsép wadah sidecar Kubernetes sareng rumuskeun leitmotif tina séri tulisan ieu: "Anjeun teu kedah ngarobih nanaon dina kode anjeun".
  • Hayu urang ngenalkeun hal dasar Istio - aturan routing. Sadaya fitur Istio anu sanés diwangun dina éta, sabab éta mangrupikeun aturan anu ngamungkinkeun anjeun ngarahkeun lalu lintas kana jasa mikro, nganggo file YAML éksternal kana kode jasa. Kami ogé nganggap skéma penyebaran Canary Deployment. Bonus Taun Anyar - 10 palajaran interaktif dina Istio


Bagian kadua, datang pas, bakal ngabejaan Anjeun:

  • Kumaha Istio ngalaksanakeun Pool Ejection dina kombinasi sareng Circuit Breaker sareng bakal nunjukkeun kumaha Istio ngamungkinkeun anjeun ngahapus pod anu maot atanapi goréng tina sirkuit balancing.
  • Kami ogé bakal ningali topik Circuit Breaker tina tulisan anu munggaran pikeun ningali kumaha Istio tiasa dianggo di dieu. Kami bakal nunjukkeun anjeun kumaha jalanna lalu lintas sareng nanganan kasalahan jaringan nganggo file konfigurasi YAML sareng paréntah terminal tanpa parobihan sakedik dina kode jasa.

Bagian katilu:

  • Carita ngeunaan ngalacak sareng ngawaskeun, anu parantos diwangun atanapi gampang ditambah kana Istio. Kami bakal nunjukkeun anjeun kumaha ngagunakeun alat sapertos Prometheus, Jaeger, sareng Grafana dina kombinasi sareng skala OpenShift pikeun gampang ngatur arsitéktur microservice.
  • Urang ngalih tina ngawaskeun sareng nanganan kasalahan pikeun ngenalkeunana kana sistem sacara ngahaja. Dina basa sejen, urang diajar kumaha carana ngalakukeun suntik lepat tanpa ngarobah kodeu sumber, nu penting pisan tina sudut pandang nguji - sabab lamun ngarobah kodeu sorangan pikeun ieu, aya résiko ngenalkeun kasalahan tambahan.

Tungtungna, dina pos ahir dina Istio Service Mesh:

  • Hayu urang ka Sisi Gelap. Langkung tepatna, urang bakal diajar ngagunakeun skéma Peluncuran Gelap, nalika kodeu disebarkeun sareng diuji langsung dina data produksi, tapi henteu mangaruhan operasi sistem dina cara naon waé. Ieu dimana kamampuan Istio pikeun ngabagi lalu lintas tiasa dianggo. Sareng kamampuan pikeun nguji data produksi langsung tanpa mangaruhan operasi sistem tempur ku cara naon waé nyaéta metode verifikasi anu paling ngayakinkeun.
  • Ngawangun dina Peluncuran Gelap, kami bakal nunjukkeun anjeun kumaha ngagunakeun modél Canary Deployment pikeun ngirangan résiko sareng ngagampangkeun ngadamel kode énggal kana produksi. Canary Deployment sorangan tebih ti anyar, tapi Istio ngidinan Anjeun pikeun nerapkeun skéma ieu kalawan ngan basajan file YAML.
  • Tungtungna, kami bakal nunjukkeun anjeun kumaha ngagunakeun Istio Egress pikeun masihan aksés kana jasa ka jalma anu aya di luar klaster anjeun pikeun ngagunakeun kamampuan Istio nalika damel sareng Internét.

Janten, hayu urang angkat ...

Alat ngawaskeun sareng manajemén Istio - sadayana anu anjeun peryogikeun pikeun ngatur microservices dina bolong jasa jaring jasa.

Naon Istio Service Mesh

Bolong jasa ngalaksanakeun fungsi sapertos ngawaskeun lalu lintas, kontrol aksés, panemuan, kaamanan, kasabaran kasalahan sareng hal-hal anu mangpaat pikeun sakelompok jasa. Istio ngidinan Anjeun pikeun ngalakukeun sagala ieu tanpa parobahan slightest kana kode tina jasa sorangan. Naon rusiah sihir? Istio nempelkeun proxy sorangan ka unggal jasa dina bentuk wadah sidecar (sidecar mangrupakeun sidecar motor), nu satutasna sagala lalulintas keur layanan ieu ngaliwatan proxy, nu, dipandu ku kawijakan husus, mutuskeun kumaha, iraha jeung naha lalulintas ieu. kedah ngahontal jasa pisan. Istio ogé ngamungkinkeun pikeun nerapkeun téknik DevOps canggih sapertos panyebaran kanari, pemutus sirkuit, suntik sesar sareng seueur anu sanésna.

Kumaha Istio jalan kalawan peti jeung Kubernetes

Bolong jasa Istio mangrupikeun palaksanaan sidecar tina sadayana anu diperyogikeun pikeun nyiptakeun sareng ngatur jasa mikro: ngawaskeun, ngalacak, pemutus sirkuit, rute, balancing beban, suntik sesar, percobaan deui, waktosna, mirroring, kontrol aksés, ngawatesan laju sareng seueur deui. Sarta sanajan kiwari aya ton perpustakaan pikeun nerapkeun fungsi ieu langsung dina kode, kalawan Istio anjeun bisa meunang sagala hal anu sarua tanpa ngarobah nanaon dina kode Anjeun.

Numutkeun kana modél sidecar, Istio dijalankeun dina wadah Linux, anu aya dina hiji Kubernetes-pod kalawan layanan dikawasa sarta injects na extracts fungsionalitas sarta informasi nurutkeun konfigurasi dibikeun. Urang ngantebkeun yén ieu téh konfigurasi sorangan, sarta hirup di luar kode Anjeun. Ku alatan éta, kode jadi leuwih basajan tur pondok.

Anu penting ogé nyaéta komponén operasional microservices tétéla henteu aya hubunganana sareng kodeu sorangan, anu hartosna operasina tiasa aman ditransfer ka spesialis IT. Mémang, naha pamekar kedah nanggung jawab pikeun pemutus sirkuit sareng suntik sesar? Réaksi, leres, tapi ngolah sareng nyiptakeunana? Upami anjeun miceun sadayana ieu tina kodeu, programer bakal tiasa pinuh fokus kana fungsionalitas aplikasi. Sareng kodeu sorangan bakal langkung pondok sareng saderhana.

Jaring jasa

Istio, anu ngalaksanakeun fungsi pikeun ngatur microservices di luar kode maranéhanana, nyaéta konsép Service Mesh. Kalayan kecap sanésna, éta mangrupikeun grup anu ngagabung tina hiji atanapi langkung binér anu ngabentuk bolong fungsi jaringan.

Kumaha Istio jalan kalawan microservices

Ieu naon karya wadah sidecar kasampak kawas ditéang jeung Kubernetes и Minishift view panon manuk urang: ngajalankeun hiji conto Minishift, nyieun hiji proyék pikeun Istio (hayu urang sebut wae "istio-sistem"), install tur ngajalankeun sakabeh komponen nu patali Istio. Teras, nalika anjeun nyiptakeun proyék sareng pods, anjeun nambihan inpormasi konfigurasi kana panyebaran anjeun, sareng pod anjeun mimiti nganggo Istio. Diagram saderhana sapertos kieu:

Runtuyan tulisan dina Istio Service Mesh

Ayeuna anjeun bisa ngarobah setelan Istio dina urutan, contona, pikeun ngatur suntik sesar, rojongan Panyebaran Kanaria atanapi fitur Istio anu sanés - sareng sadaya ieu tanpa ngarampa kodeu aplikasi sorangan. Anggap anjeun hoyong alihan sadaya lalu lintas wéb ti pangguna klien panggedéna anjeun (Foo Corporation) kana versi situs anu énggal. Jang ngalampahkeun ieu, cukup nyieun hiji aturan routing Istio nu bakal néangan @foocorporation.com dina ID pamaké sarta alihan sasuai. Pikeun sakabéh pamaké séjén, nanaon bakal robah. Samentara éta, anjeun bakal tenang nguji versi anyar loka éta. Sareng perhatikeun yén anjeun henteu kedah ngalibetkeun pamekar pisan pikeun ieu.

Sarta anjeun bakal kudu mayar dearly pikeun eta?

Henteu pisan. Istio cukup gancang sareng diserat Go sarta nyiptakeun saeutik pisan overhead. Salaku tambahan, kamungkinan leungitna produktivitas online diimbangi ku paningkatan produktivitas pamekar. Sahenteuna dina téori: ulah hilap yén waktos pamekar berharga. Sedengkeun pikeun biaya parangkat lunak, Istio mangrupikeun parangkat lunak open source, janten anjeun tiasa kéngingkeun sareng nganggo gratis.

Ngawasaan sorangan

Tim Pangalaman Pangembang Red Hat parantos ngembangkeun panangan anu jero kapamimpinan ku Istio (dina basa Inggris). Éta dijalankeun dina Linux, MacOS sareng Windows, sareng kodeu sayogi dina Java sareng Node.js.

10 palajaran interaktif dina Istio

Blok 1 - Pikeun Beginners

Bubuka pikeun Istio
30 menit
Hayu urang kenal sareng Service Mesh, diajar kumaha carana masang Istio dina klaster OpenShift Kubernetes.
Mimitian

Deploying microservices di Istio
30 menit
Kami nganggo Istio pikeun nyebarkeun tilu jasa mikro sareng Spring Boot sareng Vert.x.
Mimitian

Blok 2 - tingkat panengah

Ngawaskeun sareng ngalacak di Istio
60 menit
Kami bakal ngajalajah alat ngawaskeun Istio, métrik khusus, sareng OpenTracing via Prometheus sareng Grafana.
Mimitian

Routing basajan dina Istio
60 menit
Diajar kumaha ngatur routing di Istio ngagunakeun aturan basajan.
Mimitian

Aturan routing canggih
60 menit
Hayu urang tingali rute pinter Istio, kontrol aksés, balancing beban sareng wates laju.
Mimitian

Blok 3 - pamaké canggih

Sesar suntik di Istio
60 menit
Urang diajar skenario penanganan kagagalan dina aplikasi disebarkeun, nyieun kasalahan HTTP na reureuh jaringan, sarta diajar ngagunakeun rékayasa rusuh pikeun mulangkeun lingkungan.
Mimitian

Circuit breaker di Istio
30 menit
Kami masang Siege pikeun situs tés setrés sareng diajar kumaha mastikeun kasabaran kasalahan backend nganggo replays, circuit breaker sareng ejection kolam renang.
Mimitian

Egress jeung Istio
10 menit
Kami nganggo rute Egress pikeun nyiptakeun aturan pikeun interaksi jasa internal sareng API sareng jasa éksternal.
Mimitian

Istio jeung Kiali
15 menit
Diajar ngagunakeun Kiali pikeun meunangkeun tinjauan bolong jasa sareng ngajalajah pamundut sareng aliran data.
Mimitian

Silih TLS di Istio
15 menit
Kami nyiptakeun Istio Gateway sareng VirtualService, teras urang diajar silih TLS (mTLS) sareng setélanna sacara rinci.
Mimitian

Blok 3.1 - jero beuleum: Istio Service bolong pikeun Microservices

Runtuyan tulisan dina Istio Service Mesh
Naon buku ngeunaan:

  • Naon ari jasa bolong?
  • Sistem Istio sareng peranna dina arsitéktur microservice.
  • Ngagunakeun Istio pikeun ngajawab masalah ieu:
    • Kasalahan toleransi;
    • Routing;
    • nguji rusuh;
    • Kasalametan;
    • Koléksi telemétri nganggo jejak, métrik sareng Grafana.

Ngundeur buku

Runtuyan artikel dina meshes jasa jeung Istio

Coba sorangan

runtuyan tulisan ieu teu dimaksudkeun pikeun nyadiakeun beuleum jero kana dunya Istio. Kami ngan ukur hoyong ngenalkeun anjeun kana konsép sareng panginten tiasa masihan inspirasi anjeun pikeun nyobian Istio pikeun diri anjeun. Éta leres-leres gratis, sareng Red Hat nyayogikeun sadaya alat anu anjeun peryogikeun pikeun ngamimitian sareng OpenShift, Kubernetes, wadah Linux, sareng Istio, kalebet: Red Hat Pamekar OpenShift Wadahna Platform, pituduh kami ka Istio jeung sumber sejenna dina urang microsite on Service bolong. Tong reureuh, mimitian ayeuna!

Aturan routing Istio: ngarahkeun pamundut jasa dimana aranjeunna kedah angkat

openshift и Kubernetes ngalakukeun hiji pakasaban alus teuing tina alamat microservices dialihkeun ka polong anu diperyogikeun. Ieu salah sahiji alesan pikeun ayana Kubernetes - routing na load balancing. Tapi kumaha upami anjeun peryogi rute anu langkung halus sareng canggih? Contona, pikeun sakaligus ngagunakeun dua versi microservice a. Kumaha Aturan Rute Istio tiasa ngabantosan di dieu?

Aturan routing nyaéta aturan anu sabenerna nangtukeun pilihan jalur. Paduli tingkat pajeulitna sistem, prinsip operasi umum aturan ieu tetep basajan: requests anu routed dumasar kana parameter tangtu jeung nilai header HTTP.
Hayu urang nempo conto:

Kubernetes standar: trivial "50/50"

Dina conto urang, urang bakal nunjukkeun kumaha sakaligus nganggo dua vérsi microservice dina OpenShift, hayu urang nyauran aranjeunna v1 sareng v2. Unggal versi dijalankeun dina pod Kubernetes sorangan, sareng sacara standar ngajalankeun rute round robin anu saimbang. Unggal pod nampi bagian tina pamundut dumasar kana jumlah instansi microservice na, dina basa sejen, réplika. Istio ngidinan Anjeun pikeun ngarobah kasaimbangan ieu sacara manual.

Anggap urang nyebarkeun dua vérsi jasa rekomendasi kami dina OpenShift, rekomendasi-v1 sareng rekomendasi-v2.
Dina Gbr. Angka 1 nunjukkeun yén nalika unggal jasa diwakilan dina hiji conto, pamundut silih ganti antara aranjeunna: 1-2-1-2-... Ieu kumaha jalanna Kubernetes sacara standar:

Runtuyan tulisan dina Istio Service Mesh

Distribusi beurat antara versi

Dina Gbr. Gambar 2 nunjukkeun naon anu bakal kajadian upami anjeun ningkatkeun jumlah réplika jasa v2 tina hiji ka dua (ieu dilakukeun ku skala oc -replicas=2 deployment/recommendation-v2 command). Sakumaha anjeun tiasa tingali, pamundut antara v1 sareng v2 ayeuna dibagi kana rasio hiji-ka-tilu: 1-2-2-1-2-2-…:

Runtuyan tulisan dina Istio Service Mesh

Teu malire versi maké Istio

Istio ngagampangkeun ngarobih distribusi pamundut ku cara anu urang peryogikeun. Salaku conto, kirimkeun sadaya lalu lintas ngan ka rekomendasi-v1 nganggo file Istio yaml ieu:

Runtuyan tulisan dina Istio Service Mesh

Di dieu anjeun kedah nengetan ieu: polong dipilih dumasar kana labél. Contona urang ngagunakeun labél v1. Parameter "beurat: 100" hartosna yén 100% lalulintas bakal dialihkeun ka sadaya pods jasa anu gaduh labél v1.

Distribusi diréktif antara versi (Panyebaran Canary)

Salajengna, ngagunakeun parameter beurat, anjeun tiasa ngarahkeun lalulintas ka duanana pods, ignoring jumlah instansi microservice ngajalankeun di unggal sahijina. Contona, di dieu urang ngarahkeun 90% lalulintas ka v1 jeung 10% ka v2:

Runtuyan tulisan dina Istio Service Mesh

Routing misah pikeun pamaké mobile

Dina kacindekan, urang bakal nunjukkeun kumaha maksakeun lalu lintas pangguna sélulér pikeun dialihkeun ka layanan v2, sareng anu sanés ka v1. Jang ngalampahkeun ieu, kami nganggo ungkapan biasa pikeun nganalisis nilai agén-pamaké dina lulugu pamundut:

Runtuyan tulisan dina Istio Service Mesh

Ayeuna giliran anjeun

Conto kalayan éksprési biasa pikeun lulugu parsing kedah memotivasi anjeun pikeun milari kagunaan anjeun tina aturan rute Istio. Leuwih ti éta, kamungkinan di dieu cukup luas, sabab nilai header tiasa dibentuk dina kode sumber aplikasi.

Sareng émut yén Ops, sanés Dev

Sagalana nu urang némbongkeun dina conto di luhur dipigawé tanpa parobahan slightest dina kode sumber, sumur, iwal eta kasus lamun perlu pikeun ngahasilkeun headers pamundut husus. Istio bakal mangpaat boh pikeun pamekar, anu, contona, bakal tiasa make eta dina tahap nguji, sarta ka spesialis dina operasi sistem IT, keur saha eta bakal greatly mantuan dina produksi.

Janten hayu urang malikan leitmotif séri tulisan ieu: anjeun teu perlu ngarobah nanaon dina kode Anjeun. Henteu kedah ngawangun gambar énggal atanapi ngaluncurkeun wadah énggal. Sadaya ieu dilaksanakeun di luar kode.

Paké imajinasi anjeun

Bayangkeun waé kamungkinan analisa header nganggo ekspresi biasa. Hoyong alihan konsumén pangbadagna anjeun ka versi husus Anjeun microservices? Gampang! Peryogi versi anu misah pikeun browser Chrome? Henteu masalah! Anjeun tiasa rute lalulintas nurutkeun ampir sagala ciri.

Coba sorangan

Maca ngeunaan Istio, Kubernetes sareng OpenShift mangrupikeun hiji hal, tapi naha henteu nyabak sadayana nyalira? Tim Program pamekar Red Hat parantos nyiapkeun pituduh anu lengkep (dina basa Inggris) anu bakal ngabantosan anjeun ngawasa téknologi ieu gancang-gancang. Manual oge 100% open source, ku kituna dipasang dina domain publik. Berkasna tiasa dianggo dina macOS, Linux sareng Windows, sareng kodeu sumberna sayogi dina versi Java sareng node.js (versi dina basa sanés bakal datang). Buka Repository git anu aya dina panyungsi anjeun Demo pamekar Hat beureum.

Dina postingan salajengna: urang ngabéréskeun masalah kalayan saé

Dinten anjeun ningali naon aturan routing Istio tiasa ngalakukeun. Ayeuna ngabayangkeun hal anu sarua, tapi ngan dina hubungan penanganan kasalahan. Ieu persis naon urang bakal ngobrol ngeunaan dina pos salajengna.

sumber: www.habr.com

Tambahkeun komentar