Peluncuran peteng ing Istio: Layanan Rahasia

"Bahaya iku jeneng tengahku," ujare Austin Powers, wong misterius internasional. Nanging apa sing dianggep dhuwur dening agen super lan layanan intelijen ora cocog kanggo layanan komputer, ing ngendi bosen luwih apik tinimbang bebaya.

Peluncuran peteng ing Istio: Layanan Rahasia

Lan Istio, bebarengan karo OpenShift lan Kubernetes, nggawe deploying microservices saestu mboseni lan bisa diprediksi - lan iku apik. Kita bakal ngomong babagan iki lan liya-liyane ing kirim kaping papat lan pungkasan ing seri Istio.

Nalika bosen bener

Ing kasus kita, bosen mung ana ing tahap pungkasan, nalika mung lungguh lan nonton proses kasebut. Nanging kanggo iki, sampeyan kudu ngatur kabeh dhisik, lan akeh perkara sing menarik nunggu sampeyan ing kene.

Nalika masang versi anyar saka piranti lunak, iku worth considering kabeh opsi kanggo nyilikake resiko. Mlaku ing podo karo iku cara banget kuat lan buktiaken test, lan Istio ngijini sampeyan kanggo nggunakake "layanan rahasia" (versi didhelikake microservice) kanggo nindakake iki tanpa ngganggu sistem produksi. Malah ana istilah khusus kanggo iki - "Peluncuran Peteng", sing banjur diaktifake kanthi fungsi kanthi jeneng "traffic mirroring" sing padha.

Elinga yen ukara pisanan paragraf sadurunge nggunakake istilah "nyebar" tinimbang "rilis". Sampeyan kudu bener-bener bisa nyebarake-lan, mesthi, nggunakake-layanan mikro sampeyan asring kaya sing dikarepake. Layanan iki kudu bisa nampa lan ngolah lalu lintas, ngasilake asil, lan uga nulis menyang log lan ngawasi. Nanging ing wektu sing padha, layanan iki dhewe ora kudu diluncurake menyang produksi. Nyebarake lan ngeculake piranti lunak ora mesthi padha. Sampeyan bisa nyebarake kapan wae, nanging mung diluncurake yen sampeyan siyap.

Ngatur bosen iku menarik

Deleng aturan rute Istio ing ngisor iki, sing ngarahake kabeh panjalukan HTTP menyang rekomendasi microservice v1 (kabeh conto dijupuk saka Istio Tutorial GitHub repo), nalika bebarengan nggambarake menyang microservice v2 rekomendasi:

Peluncuran peteng ing Istio: Layanan Rahasia
Pay manungsa waΓ© menyang label mirror: ing sisih ngisor layar - iki sing nyetel kaca lalu lintas. Ya, iku sing prasaja!

Asil saka aturan iki yaiku sistem produksi sampeyan (v1) bakal terus ngolah panjaluk sing mlebu, nanging panjaluk kasebut bakal dicerminake kanthi ora sinkron menyang v2, yaiku, duplikat lengkap bakal ana. Kanthi cara iki, sampeyan bisa nyoba v2 ing kahanan nyata - ing data nyata lan lalu lintas - tanpa ngganggu operasi sistem produksi. Apa iki nggawe pangaturan tes mboseni? Ya, mesthi. Nanging ditindakake kanthi cara sing menarik.

Ayo nambah drama

Wigati dimangerteni menawa ing kode v2 perlu kanggo nyedhiyani kahanan ing ngendi panjalukan mlebu bisa mimpin kanggo owah-owahan data. Panjaluk kasebut digambarake kanthi gampang lan transparan, nanging pilihan metode pangolahan ing tes terserah sampeyan - lan iki rada kuwatir.

Ayo mbaleni titik penting

Bukak rahasia kanthi pangilon lalu lintas (Peluncuran Gelap / Panjaluk Mirroring) bisa ditindakake tanpa mengaruhi kode kanthi cara apa wae.

Panganan kanggo mikir

Apa yen panggonan ing ngendi panjalukan mirrored ngirim sawetara ora kanggo v1, nanging kanggo v2? Contone, siji persen kabeh panjalukan utawa mung panjaluk saka klompok pangguna tartamtu. Banjur, wis ndeleng cara kerja v2, mboko sithik transfer kabeh panjaluk menyang versi anyar. Utawa kosok balene, bali kabeh menyang v1 yen ana masalah karo v2. Aku iki diarani Canary Deployment. bali menyang pertambangan, lan yen asalΓ© saka Rusia, mbokmenawa bakal ngemot referensi kanggo kucing), lan saiki kita bakal nliti iki kanthi luwih rinci.

Penyebaran Canary ing Istio: nyederhanakake komisioning

Kasebut kanthi teliti lan bertahap

Inti saka model penyebaran Canary Deployment gampang banget: nalika sampeyan miwiti versi anyar piranti lunak sampeyan (ing kasus kita, layanan mikro), sampeyan kudu menehi akses menyang klompok cilik pangguna. Yen kabeh dadi apik, alon-alon nambah grup iki nganti versi anyar wiwit tumindak munggah, utawa - yen ora - pungkasanipun migrasi kabeh pangguna menyang. Kanthi mikir lan mboko sithik ngenalake versi anyar lan ngganti pangguna kanthi cara sing dikontrol, sampeyan bisa nyuda risiko lan nggedhekake umpan balik.

Mesthine, Istio nyederhanakake Penyebaran Canary kanthi nawakake sawetara pilihan sing apik kanggo nuntun panjaluk sing cerdas. Lan ya, kabeh iki bisa ditindakake tanpa ndemek kode sumber kanthi cara apa wae.

Nyaring browser

Salah sawijining kritΓ©ria rute sing paling gampang yaiku pangalihan adhedhasar browser. Contone, sampeyan mung pengin panjaluk saka browser Safari kanggo pindhah menyang v2. Mangkene carane ditindakake:

Peluncuran peteng ing Istio: Layanan Rahasia
Ayo ngetrapake aturan rute iki banjur gunakake perintah kasebut curl Kita bakal simulasi panjalukan nyata kanggo microservice ing daur ulang. Kaya sing sampeyan deleng ing gambar, kabeh menyang v1:

Peluncuran peteng ing Istio: Layanan Rahasia
Endi lalu lintas ing v2? Wiwit ing conto kita kabeh panjalukan teka mung saka baris printah kita dhewe, iku mung ora ana. Nanging perhatikan garis ngisor ing layar ing ndhuwur: iki minangka reaksi kanggo kasunyatan manawa kita nindakake panjaluk saka browser Safari, sing banjur ngasilake:

Peluncuran peteng ing Istio: Layanan Rahasia

daya Unlimited

Kita wis nulis manawa ekspresi reguler nyedhiyakake kemampuan sing kuat banget kanggo panjaluk rute. Delengen conto ing ngisor iki (aku mikir sampeyan bakal ngerti apa sing ditindakake):

Peluncuran peteng ing Istio: Layanan Rahasia
Saiki sampeyan bisa uga duwe ide babagan ekspresi reguler sing bisa ditindakake.

Tumindak Pinter

Nuntun cerdas, utamane ngolah header paket nggunakake ekspresi reguler, ngidini sampeyan ngarahake lalu lintas kanthi cara sing dikarepake. Lan iki nemen nyederhanakake implementasine saka kode anyar - iku prasaja, ora mbutuhake ngganti kode dhewe, lan yen perlu, kabeh bisa cepet bali kaya.

kasengsem?

Apa sampeyan pengin eksprimen karo Istio, Kubernetes lan OpenShift ing komputer sampeyan? Tim Tim Pangembang Red Hat disiapake apik banget buku teks babagan topik iki lan nggawe kabeh file sing kasedhiya kanggo umum. Dadi maju lan aja nolak apa-apa.
 

Istio Egress: metu liwat toko souvenir

Kanthi nggunakake Istio bebarengan karo Red Hat OpenShift lan Kubernetes, sampeyan bisa nggawe urip luwih gampang karo layanan mikro. Bolong layanan Istio didhelikake ing pods Kubernetes, lan kode sampeyan mlaku (biasane) kanthi ora ana. Kinerja, ease saka owah-owahan, nelusuri, etc. - kabeh iki gampang kanggo nggunakake thanks kanggo nggunakake kontaner sidecar. Nanging kepiye yen layanan mikro sampeyan kudu komunikasi karo layanan liyane sing ana ing njaba sistem OpenShift-Kubernetes sampeyan?

Iki ngendi Istio Egress teka kanggo ngluwari. Cekakipun, sampeyan mung ngidini sampeyan ngakses sumber daya (waca: "layanan") sing dudu bagean saka sistem pod Kubernetes sampeyan. Yen sampeyan ora nindakake konfigurasi tambahan, banjur ing Istio Egress lalu lintas lingkungan routed mung ing kluster pods lan antarane kluster kuwi adhedhasar tabel IP internal. Lan pupation kasebut bisa digunakake kanthi apik yen sampeyan ora butuh akses menyang layanan saka njaba.

Egress ngidini sampeyan ngliwati tabel IP ing ndhuwur, adhedhasar aturan Egress utawa ing sawetara alamat IP.

Ayo kita duwe program Java sing nggawe panjaluk GET menyang httpbin.org/headers.

(httpbin.org mung minangka sumber daya sing trep kanggo nguji panjalukan layanan sing metu.)

Yen sampeyan ngetik ing baris printah curl http://httpbin.org/headers, kita bakal weruh ing ngisor iki:

Peluncuran peteng ing Istio: Layanan Rahasia
Utawa sampeyan bisa mbukak alamat sing padha ing browser:

Peluncuran peteng ing Istio: Layanan Rahasia
Kaya sing sampeyan ngerteni, layanan sing ana ing kana mung ngasilake header sing diwenehake.

Kita ngganti impor langsung

Saiki ayo njupuk kode Java saka layanan iki, njaba sistem kita, lan mbukak dhewe, ngendi, kelingan, Istio wis diinstal. (Sampeyan bisa nindakake iki dhewe kanthi ngubungi tutorial Istio kita.) Sawise nggawe gambar sing cocog lan diluncurake ing platform OpenShift, kita bakal nelpon layanan iki kanthi prentah curl egresshttpbin-istioegress.$(minishift ip).nip.io, sawise iku kita bakal weruh iki ing layar:

Peluncuran peteng ing Istio: Layanan Rahasia
Adhuh, ana apa? Kabeh mung bisa. Apa tegese Ora Ditemokake? Kita mung nindakake kanggo dheweke curl.

Ngluwihi tabel IP menyang kabeh Internet

Istio kudu disalahake (utawa matur nuwun) kanggo iki. Sawise kabeh, Istio mung wadhah sidecar sing tanggung jawab kanggo deteksi lan nuntun (lan akeh perkara liyane sing wis dirembug sadurunge). Mulane, tabel IP mung ngerti apa sing ana ing sistem kluster sampeyan. Lan httpbin.org dumunung ing njaba lan mulane ora bisa diakses. Lan ing kene Istio Egress teka kanggo ngluwari - tanpa owah-owahan sethithik ing kode sumber sampeyan.

Aturan Egress ing ngisor iki meksa Istio kanggo nggoleki (yen perlu, banjur ing kabeh Internet) kanggo layanan sing dibutuhake, ing kasus iki, httpbin.org. Minangka sampeyan bisa ndeleng saka file iki (egress_httpbin.yml), fungsi ing kene cukup prasaja:

Peluncuran peteng ing Istio: Layanan Rahasia
Kabeh sing isih ana yaiku ngetrapake aturan iki:

istioctl create -f egress_httpbin.yml -n istioegress

Sampeyan bisa ndeleng aturan Egress karo printah istioctl get egressrules:

Peluncuran peteng ing Istio: Layanan Rahasia
Lan pungkasanipun, kita mbukak printah maneh nggulung - lan kita ndeleng manawa kabeh bisa digunakake:

Peluncuran peteng ing Istio: Layanan Rahasia

Kita mikir kanthi terbuka

Kaya sing sampeyan ngerteni, Istio ngidini sampeyan ngatur interaksi karo jagad njaba. Ing tembung liyane, sampeyan isih bisa nggawe layanan OpenShift lan ngatur liwat Kubernetes, tetep kabeh ing pods sing ukuran munggah lan mudhun yen perlu. Lan ing wektu sing padha, sampeyan bisa kanthi aman ngakses layanan njaba lingkungan sampeyan. Lan ya, kita mbaleni maneh yen kabeh iki bisa ditindakake tanpa ndemek kode sampeyan kanthi cara apa wae.

Iki minangka kiriman pungkasan ing seri ing Istio. Tetep dirungokake - ana akeh perkara sing menarik ing ngarep!

Source: www.habr.com

Add a comment