Kami memulai serangkaian posting di mana kami akan menunjukkan beberapa dari banyak fitur dari mesh layanan Istio Service Mesh dalam kombinasi dengan Red Hat OpenShift dan Kubernetes.

Bagian Satu, Hari Ini:
- Mari kita jelaskan konsep wadah sespan Kubernetes dan rumuskan leitmotif seri posting ini: "Anda tidak perlu mengubah apa pun dalam kode Anda" .
- Bayangkan hal dasar Istio - aturan routing. Mereka membangun semua fitur lain dari Istio, karena itu adalah aturan yang memungkinkan Anda mengarahkan lalu lintas ke layanan Microsoft, menggunakan file YAML eksternal ke kode layanan untuk ini. Kami juga melihat skema penyebaran untuk Canary Deployment. Bonus Tahun Baru - 10 Pelajaran Istio Interaktif
Bagian dua akan memberi tahu Anda:
- Bagaimana Istio mengimplementasikan Pool Ejection bersamaan dengan Circuit Breaker dan mendemonstrasikan bagaimana Istio menghilangkan pod yang rusak atau berfungsi buruk dari skema balancing.
- Dan kami akan membahas topik Pemutus Sirkuit dari pos pertama tentang bagaimana Istio dapat digunakan di sini. Kami menunjukkan cara merutekan lalu lintas dan menangani kesalahan jaringan menggunakan file konfigurasi YAML dan perintah terminal tanpa sedikitpun perubahan dalam kode layanan.
Bagian tiga :
- Sebuah kisah tentang pelacakan dan pemantauan yang sudah ada di dalam atau mudah ditambahkan ke Istio. Kami akan menunjukkan kepada Anda cara menggunakan alat-alat seperti Prometheus, Jaeger, dan Grafana dalam kombinasi dengan penskalaan OpenShift untuk dengan mudah mengelola arsitektur layanan-mikro Anda.
- Kami bergerak dari pemantauan dan penanganan kesalahan ke memperkenalkan mereka ke dalam sistem dengan sengaja. Dengan kata lain, kita belajar melakukan injeksi kesalahan tanpa mengubah kode sumber, yang sangat penting dari sudut pandang pengujian - karena jika Anda mengubah kode itu sendiri untuk ini, ada risiko memasukkan kesalahan tambahan.
Akhirnya,
di pos terakhir di Istio Service Mesh:
- Mari kita beralih ke Sisi Gelap. Lebih tepatnya, kita akan belajar menggunakan skema Peluncuran Kegelapan ketika kode disebarkan dan diuji langsung pada data produksi, tetapi tidak mempengaruhi operasi sistem. Di sinilah kemampuan Istio untuk membagikan lalu lintas berguna. Dan kemampuan untuk melakukan pengujian pada data produksi langsung tanpa mempengaruhi kinerja sistem tempur adalah cara paling meyakinkan untuk memverifikasinya.
- Mulai dari Dark Launch, kami akan menunjukkan cara menggunakan model Canary Deployment untuk mengurangi risiko dan menyederhanakan komisioning kode baru. Canary Deployment sendiri jauh dari berita, tetapi Istio memungkinkan Anda untuk mengimplementasikan skema ini hanya dengan file YAML yang sederhana.
- Sebagai kesimpulan, kami akan menunjukkan cara menggunakan Istio Egress untuk memberikan akses ke layanan kepada mereka yang berada di luar kelompok Anda untuk menggunakan kemampuan Istio saat bekerja dengan Internet.
Jadi, itu dimulai ...
Alat pemantauan dan kontrol Istio - semua yang Anda butuhkan untuk mengoordinasikan layanan - layanan microsoft di service mesh .Apa grid layanan Istio
Grid layanan mengimplementasikan fungsi untuk sekelompok layanan seperti pemantauan lalu lintas, kontrol akses, penemuan, keamanan, toleransi kesalahan, dan hal-hal berguna lainnya. Istio memungkinkan Anda untuk melakukan semua ini tanpa sedikit pun perubahan dalam kode layanan itu sendiri. Apa rahasia sihir? Istio menghubungkan ke masing-masing layanan proxy-nya dalam bentuk wadah sespan (sespan adalah kereta dorong sepeda motor), setelah semua lalu lintas ke layanan ini melewati proxy, yang, dipandu oleh kebijakan yang telah ditetapkan, memutuskan bagaimana, kapan dan apakah lalu lintas ini harus mencapai layanan sama sekali. Istio juga memungkinkan untuk menerapkan teknik-teknik DevOps canggih seperti penyebaran kenari, pemutus sirkuit, injeksi kesalahan, dan banyak lainnya.
Cara Istio bekerja dengan wadah dan Kubernet
Grid layanan Istio adalah implementasi sespan dari semua yang Anda butuhkan untuk membuat dan mengelola layanan microser: pemantauan, pelacakan, pemutus sirkuit, perutean, penyeimbangan beban, injeksi kesalahan, coba lagi, timeout, mirroring, kontrol akses, batas kecepatan dan banyak lagi lain. Dan meskipun hari ini ada banyak perpustakaan untuk mengimplementasikan fungsi-fungsi ini secara langsung dalam kode, dengan Istio Anda bisa mendapatkan hal yang sama tanpa mengubah apa pun dalam kode Anda.
Menurut model sespan, Istio berjalan dalam wadah Linux, yang terletak di pod
Kubernetes yang sama dengan layanan terkontrol dan menyuntikkan dan mengekstrak fungsionalitas dan informasi sesuai dengan konfigurasi yang diberikan. Kami menekankan bahwa ini adalah konfigurasi Anda sendiri, dan itu tinggal di luar kode Anda. Karena itu, kode menjadi lebih mudah dan lebih pendek.
Yang lebih penting, komponen operasional dari layanan microser dalam hal ini sama sekali tidak terhubung dengan kode itu sendiri, yang berarti bahwa operasi mereka dapat dengan aman ditransfer ke spesialis IT. Bahkan, mengapa pengembang harus bertanggung jawab atas pemutus sirkuit dan injeksi kesalahan? Bereaksi - ya, tetapi proses dan buat mereka? Jika Anda menghapus semua ini dari kode, pemrogram akan dapat sepenuhnya berkonsentrasi pada fungsionalitas aplikasi. Dan kode itu sendiri akan menjadi lebih pendek dan lebih mudah.
Grid layanan
Istio, yang mengimplementasikan fungsi-fungsi manajemen layanan-mikro di luar kode mereka, adalah konsep kisi-kisi layanan Service Mesh. Dengan kata lain, itu adalah kelompok terkoordinasi dari satu atau lebih binari yang membentuk jaringan fungsi jaringan.
Bagaimana Istio bekerja dengan layanan microser
Berikut ini cara wadah sespan bekerja bersama dengan
Kubernetes dan
Minishift dari pandangan mata: luncurkan instance Minishift, buat proyek untuk Istio (sebut saja "sistem-istio"), instal dan jalankan semua komponen yang terkait dengan Istio. Kemudian, ketika proyek dan pod dibuat, tambahkan informasi konfigurasi ke penyebaran Anda, dan pod Anda mulai menggunakan Istio. Diagram yang disederhanakan terlihat seperti ini:
Sekarang Anda dapat mengubah pengaturan Istio menjadi, misalnya, mengatur injeksi kesalahan, dukungan untuk
Canary Deployment atau fitur-fitur lain dari Istio - semua ini tanpa menyentuh kode aplikasi itu sendiri. Misalkan Anda ingin mengalihkan semua lalu lintas web dari pengguna klien terbesar Anda (Foo Corporation) ke versi situs yang baru. Untuk melakukan ini, cukup buat aturan perutean Istio yang akan mencari @ foocorporation.com di ID pengguna dan melakukan pengalihan yang sesuai. Untuk semua pengguna lain, tidak ada yang akan berubah. Sementara itu, Anda akan dengan tenang menguji versi situs yang baru. Dan perhatikan, Anda tidak perlu menarik pengembang untuk ini.
Dan Anda harus membayar mahal untuk ini?
Tidak semuanya. Istio bekerja sangat cepat, ditulis dalam
Go dan menciptakan overhead yang sangat kecil. Selain itu, kemungkinan hilangnya produktivitas online diimbangi dengan peningkatan produktivitas pengembang. Setidaknya dalam teori: jangan lupa bahwa waktu pengembangan itu mahal. Sedangkan untuk biaya perangkat lunak, Istio adalah perangkat lunak open source, sehingga Anda dapat memperoleh dan menggunakannya secara gratis.
Belajar untuk diri sendiri
Tim Pengalaman Pengembang Red Hat telah mengembangkan
panduan praktis yang mendalam untuk Istio (dalam bahasa Inggris). Ini berjalan di Linux, MacOS, dan Windows, dan kode disajikan dalam Java dan Node.js.
10 pelajaran interaktif tentang Istio
Blok 1 - Untuk Pemula
Pengantar Istio30 menit
Kami berkenalan dengan Service Mesh, belajar cara menginstal Istio di cluster OpenShift Kubernetes.
MulaiMenyebarkan Layanan Mikro di Istio30 menit
Kami menggunakan Istio untuk menyebarkan tiga layanan microsoft dengan Spring Boot dan Vert.x.
MulaiBlok 2 - Menengah
Pemantauan dan Penelusuran di Istio60 menit
Kami menjelajahi alat pemantauan bawaan, metrik khusus, dan OpenTracing melalui Prometheus dan Grafana.
MulaiRouting mudah di Istio60 menit
Pelajari cara mengelola perutean di Istio dengan aturan sederhana.
MulaiAturan Routing Lanjut60 menit
Memperkenalkan perutean Istio yang cerdas, kontrol akses, penyeimbangan muatan, dan pembatasan kecepatan.
MulaiBlok 3 - Pengguna Lanjutan
Injeksi Kesalahan dalam Istio60 menit
Kami mempelajari skenario failover dalam aplikasi terdistribusi, membuat kesalahan HTTP dan penundaan jaringan, dan mempelajari cara menggunakan teknik chaos untuk memulihkan lingkungan.
MulaiCircuit Breaker di Istio30 menit
Instal Siege untuk situs-situs pengujian stres dan pelajari cara memberikan ketahanan backend dengan pengulangan, pemutus sirkuit, dan pelepasan pool.
MulaiEgress dan Istio10 menit
Kami menggunakan rute Egress untuk membuat aturan untuk interaksi layanan internal dengan API dan layanan eksternal.
MulaiIstio dan Kiali15 menit
Kami belajar menggunakan Kiali untuk mendapatkan gambaran umum tentang kotak layanan dan mempelajari aliran permintaan dan data.
MulaiSaling TLS dalam Istio
15 menit
Kami membuat Istio Gateway dan VirtualService, kemudian kami mempelajari secara detail TLS bersama (mTLS) dan pengaturannya.
MulaiBlok 3.1 - Deep Immersion: Istio Service Mesh untuk Layanan Mikro

Tentang apa buku itu:
- Apa yang dimaksud dengan service mesh layanan.
- Sistem istio dan perannya dalam arsitektur layanan mikro.
- Menggunakan Istio untuk memecahkan masalah berikut:
- Toleransi kesalahan;
- Routing
- Pengujian kekacauan;
- Keamanan;
- Koleksi telemetri menggunakan tracing, metrik dan Grafana.
Unduh bukuSeri artikel tentang kisi-kisi layanan dan Istio
Coba sendiri
Seri posting ini tidak dimaksudkan untuk memberikan pencelupan yang mendalam di dunia Istio. Kami hanya ingin memperkenalkan Anda dengan konsep itu sendiri dan mungkin menginspirasi Anda untuk mencoba Istio sendiri. Ini dapat dilakukan sepenuhnya gratis, dan Red Hat menyediakan semua alat yang diperlukan untuk mulai menjelajahi OpenShift, Kubernetes, wadah Linux dan Istio, yaitu:
Platform RedShop OpenShift Container Container ,
panduan Istio kami dan sumber daya lainnya di
situs mikro kami
di Layanan Mesh . Jangan menunda, mulailah hari ini!
Aturan perutean Istio: kami mengarahkan permintaan layanan ke tempat yang kami butuhkan
OpenShift dan
Kubernetes melakukan pekerjaan yang sangat baik untuk merutekan panggilan
microservice ke pod yang benar. Ini adalah salah satu tujuan dari Kubernet - routing dan load balancing. Tetapi bagaimana jika Anda membutuhkan perutean yang lebih halus dan lebih canggih? Misalnya, untuk menggunakan dua versi microservice secara bersamaan. Bagaimana Peraturan Rute Istio membantu di sini?
Aturan perutean adalah aturan yang, pada kenyataannya, menentukan pilihan rute. Pada tingkat kompleksitas sistem apa pun, prinsip umum pengoperasian aturan ini tetap sederhana: permintaan dialihkan berdasarkan parameter tertentu dan nilai header HTTP.
Mari kita lihat contoh-contohnya:
Kubernet default: sepele "50 hingga 50"
Dalam contoh kita, kita akan menunjukkan cara menggunakan dua versi microservice secara bersamaan di OpenShift, sebut saja mereka v1 dan v2. Setiap versi berjalan di pod Kubernetes-nya sendiri, dan secara default ia bekerja perutean round robin yang seimbang. Setiap pod menerima bagian permintaannya dengan jumlah instance layanan-mikronya, dengan kata lain, replika. Istio juga memungkinkan Anda untuk mengubah saldo ini secara manual.
Misalkan kita menggunakan dua versi layanan rekomendasi kami pada OpenShift, Recommendation-v1 dan Recommendation-v2.
Dalam gbr. Gambar 1 menunjukkan bahwa ketika setiap layanan disajikan dalam satu contoh, permintaan secara bergantian di antara mereka: 1-2-1-2- ... Ini adalah cara perutean Kubernetes bekerja secara default:
Distribusi tertimbang antar versi
Dalam gbr. Gambar 2 menunjukkan apa yang terjadi jika Anda menambah jumlah replika layanan v2 dari satu ke dua (ini dilakukan dengan skala oc - replika = 2 penyebaran / rekomendasi-perintah v2). Seperti yang Anda lihat, permintaan antara v1 dan v2 sekarang dibagi dalam hubungan satu-ke-tiga: 1-2-2-1-2-2-2- ...:
Abaikan versi menggunakan Istio
Istio memudahkan untuk mengubah distribusi permintaan dengan cara yang kita butuhkan. Misalnya, kirim semua lalu lintas hanya ke rekomendasi-v1 menggunakan file Istio yaml berikut:
Di sini perlu untuk memperhatikan ini: polong dipilih sesuai dengan label. Dalam contoh kita, label v1 digunakan. Parameter “weight: 100” berarti bahwa 100% dari lalu lintas akan dialihkan ke semua pod layanan yang memiliki label v1.
Distribusi direktori antar versi (Canary Deployment)
Selanjutnya, dengan menggunakan parameter bobot, Anda dapat mengarahkan lalu lintas ke kedua pod, mengabaikan jumlah instance layanan mikro yang berjalan di masing-masing pod. Misalnya, di sini kami mengarahkan 90% lalu lintas ke v1 dan 10% ke v2:
Perutean terpisah dari pengguna seluler
Sebagai kesimpulan, kami akan menunjukkan cara memaksa lalu lintas pengguna seluler ke layanan v2, dan sisanya ke v1. Untuk melakukan ini, menggunakan ekspresi reguler, kami menganalisis nilai agen-pengguna di header permintaan:
Sekarang giliranmu
Contoh dengan ekspresi reguler untuk menganalisis tajuk seharusnya memotivasi Anda untuk mencari opsi sendiri untuk menerapkan aturan perutean Istio. Selain itu, kemungkinan di sini sangat luas, karena nilai header dapat dibentuk dalam kode sumber aplikasi.
Dan ingat Ops itu, bukan Dev
Segala sesuatu yang kami tunjukkan dalam contoh di atas dilakukan tanpa sedikit pun perubahan dalam kode sumber, well, kecuali untuk kasus-kasus ketika diperlukan untuk membentuk header permintaan khusus. Istio akan berguna baik untuk pengembang yang, misalnya, akan dapat menggunakannya pada tahap pengujian, dan untuk spesialis dalam pengoperasian sistem TI, yang ia akan sangat membantu dalam produksi.
Jadi
mari kita ulangi leitmotif dari seri posting ini:
Anda tidak perlu mengubah apa pun dalam kode Anda . Tidak perlu mengumpulkan gambar baru atau meluncurkan wadah baru. Semua ini diterapkan di luar kode.
Nyalakan imajinasinya
Bayangkan saja perspektif analisis pos dengan ekspresi reguler. Ingin mengarahkan pelanggan terbesar Anda ke versi khusus dari layanan
microser Anda? Mudah! Perlu versi terpisah untuk browser Chrome? Tidak masalah! Anda dapat merutekan lalu lintas dengan hampir semua karakteristiknya.
Coba sendiri
Membaca tentang Istio, Kubernetes, dan OpenShift adalah satu hal, tetapi mengapa tidak menyentuhnya dengan tangan Anda sendiri? Tim
Program Pengembang Red Hat telah menyiapkan manual terperinci (dalam bahasa Inggris) yang akan membantu Anda dengan cepat menguasai teknologi ini. Manual ini juga 100% open source, sehingga tersedia untuk umum. File berfungsi di macOS, Linux, dan Windows, dan kode sumbernya ada dalam versi di Java dan node.js (versi dalam bahasa lain akan segera). Cukup buka repositori git
Red Hat Developer Demo yang sesuai di browser Anda.
Dalam posting berikutnya: kami menyelesaikan masalah dengan indah
Hari ini Anda melihat apa yang bisa dilakukan oleh aturan perutean Istio. Sekarang bayangkan hal yang sama, tetapi hanya terkait dengan penanganan kesalahan. Inilah yang akan kita bicarakan di posting selanjutnya.