Satu siri siaran di Istio Service Mesh

Kami memulakan satu siri siaran yang mempamerkan beberapa daripada banyak keupayaan Mesh Perkhidmatan Istio apabila digabungkan dengan Red Hat OpenShift dan Kubernetes.

Satu siri siaran di Istio Service Mesh

Bahagian satu, hari ini:

  • Mari jelaskan konsep bekas kereta sampingan Kubernetes dan rumuskan motif leit bagi siri siaran ini: "anda tidak perlu menukar apa-apa dalam kod anda".
  • Mari kita perkenalkan perkara asas Istio - peraturan penghalaan. Semua ciri Istio lain dibina di atasnya, kerana peraturan yang membolehkan anda mengarahkan trafik ke perkhidmatan mikro, menggunakan fail YAML di luar kod perkhidmatan. Kami juga sedang mempertimbangkan skim penggunaan Canary Deployment. Bonus Tahun Baru – 10 pelajaran interaktif di Istio


Bahagian kedua, akan datang tidak lama lagi, akan memberitahu anda:

  • Cara Istio melaksanakan Pool Ejection dalam kombinasi dengan Pemutus Litar dan akan menunjukkan cara Istio membenarkan anda mengeluarkan pod mati atau berprestasi buruk daripada litar pengimbangan.
  • Kami juga akan melihat topik Pemutus Litar dari siaran pertama untuk melihat bagaimana Istio boleh digunakan di sini. Kami akan menunjukkan kepada anda cara untuk menghalakan trafik dan mengendalikan ralat rangkaian menggunakan fail konfigurasi YAML dan arahan terminal tanpa perubahan sedikit pun dalam kod perkhidmatan.

Bahagian ketiga:

  • Cerita tentang pengesanan dan pemantauan, yang sudah terbina dalam atau mudah ditambahkan pada Istio. Kami akan menunjukkan kepada anda cara menggunakan alatan seperti Prometheus, Jaeger dan Grafana dalam kombinasi dengan penskalaan OpenShift untuk mengurus seni bina perkhidmatan mikro dengan mudah.
  • Kami beralih daripada memantau dan mengendalikan ralat kepada memasukkannya ke dalam sistem dengan sengaja. Dalam erti kata lain, kami belajar cara melakukan suntikan kesalahan tanpa menukar kod sumber, yang sangat penting dari sudut pandangan ujian - kerana jika anda menukar kod itu sendiri untuk ini, terdapat risiko untuk memperkenalkan ralat tambahan.

Akhirnya, dalam jawatan terakhir di Istio Service Mesh:

  • Mari pergi ke Sisi Gelap. Lebih tepat lagi, kita akan belajar menggunakan skema Pelancaran Gelap, apabila kod itu digunakan dan diuji terus pada data pengeluaran, tetapi tidak menjejaskan operasi sistem dalam apa jua cara. Di sinilah keupayaan Istio untuk memecah trafik berguna. Dan keupayaan untuk menguji data pengeluaran langsung tanpa menjejaskan operasi sistem tempur dalam apa jua cara adalah kaedah pengesahan yang paling meyakinkan.
  • Berdasarkan Pelancaran Gelap, kami akan menunjukkan kepada anda cara menggunakan model Canary Deployment untuk mengurangkan risiko dan menjadikannya lebih mudah untuk memasukkan kod baharu ke dalam pengeluaran. Canary Deployment sendiri adalah jauh daripada baharu, tetapi Istio membenarkan anda melaksanakan skim ini dengan hanya fail YAML yang mudah.
  • Akhir sekali, kami akan menunjukkan kepada anda cara menggunakan Istio Egress untuk memberikan akses kepada perkhidmatan kepada mereka yang berada di luar kelompok anda untuk menggunakan keupayaan Istio apabila bekerja dengan Internet.

Jadi, di sini kita pergi...

Alat pemantauan dan pengurusan Istio - semua yang anda perlukan untuk mengatur perkhidmatan mikro dalam jaringan perkhidmatan jaringan perkhidmatan.

Apakah itu Istio Service Mesh

Jaringan perkhidmatan melaksanakan fungsi seperti pemantauan lalu lintas, kawalan akses, penemuan, keselamatan, toleransi kesalahan dan perkara berguna lain untuk sekumpulan perkhidmatan. Istio membolehkan anda melakukan semua ini tanpa sedikit pun perubahan pada kod perkhidmatan itu sendiri. Apakah rahsia sihir? Istio melampirkan proksinya sendiri pada setiap perkhidmatan dalam bentuk bekas kereta sisi (kereta sampingan ialah kereta sampingan motosikal), selepas itu semua trafik ke perkhidmatan ini melalui proksi, yang, berpandukan dasar yang ditentukan, memutuskan bagaimana, bila dan sama ada trafik ini harus mencapai perkhidmatan sama sekali. Istio juga memungkinkan untuk melaksanakan teknik DevOps lanjutan seperti penempatan kenari, pemutus litar, suntikan kerosakan dan banyak lagi.

Cara Istio berfungsi dengan bekas dan Kubernetes

Jaring perkhidmatan Istio ialah pelaksanaan kereta sampingan bagi semua yang diperlukan untuk mencipta dan mengurus perkhidmatan mikro: pemantauan, pengesanan, pemutus litar, penghalaan, pengimbangan beban, suntikan kerosakan, percubaan semula, tamat masa, pencerminan, kawalan akses, pengehadan kadar dan banyak lagi. Dan walaupun hari ini terdapat satu tan perpustakaan untuk melaksanakan fungsi ini secara langsung dalam kod, dengan Istio anda boleh mendapatkan semua perkara yang sama tanpa mengubah apa-apa dalam kod anda.

Menurut model sidecar, Istio berjalan dalam bekas Linux, yang terletak di dalam satu Kubernetes-pod dengan perkhidmatan terkawal dan menyuntik serta mengekstrak fungsi dan maklumat mengikut konfigurasi yang diberikan. Kami menekankan bahawa ini adalah konfigurasi anda sendiri, dan ia hidup di luar kod anda. Oleh itu, kod menjadi lebih mudah dan lebih pendek.

Apa yang penting juga ialah komponen operasi perkhidmatan mikro ternyata tidak berkaitan dengan kod itu sendiri, yang bermaksud operasi mereka boleh dipindahkan dengan selamat kepada pakar IT. Sesungguhnya, mengapa pemaju perlu bertanggungjawab untuk pemutus litar dan suntikan kerosakan? Bertindak balas, ya, tetapi memprosesnya dan menciptanya? Jika anda mengalih keluar semua ini daripada kod, pengaturcara akan dapat menumpukan sepenuhnya pada fungsi aplikasi. Dan kod itu sendiri akan menjadi lebih pendek dan lebih mudah.

Jaringan perkhidmatan

Istio, yang melaksanakan fungsi untuk mengurus perkhidmatan mikro di luar kod mereka, ialah konsep Mesh Perkhidmatan. Dalam erti kata lain, ia adalah kumpulan terkoordinasi satu atau lebih binari yang membentuk rangkaian fungsi rangkaian.

Cara Istio berfungsi dengan perkhidmatan mikro

Beginilah rupa kerja bekas sidecar bersempena Kubernetes ΠΈ Anjakan kecil pandangan mata burung: lancarkan contoh Minishift, buat projek untuk Istio (mari kita panggil "istio-system"), pasang dan jalankan semua komponen berkaitan Istio. Kemudian, semasa anda membuat projek dan pod, anda menambah maklumat konfigurasi pada penempatan anda dan pod anda mula menggunakan Istio. Gambar rajah yang dipermudahkan kelihatan seperti ini:

Satu siri siaran di Istio Service Mesh

Kini anda boleh menukar tetapan Istio mengikut urutan, contohnya, untuk mengatur suntikan kesalahan, sokongan Penggunaan Canary atau ciri Istio lain - dan semua ini tanpa menyentuh kod aplikasi itu sendiri. Katakan anda mahu mengubah hala semua trafik web daripada pengguna pelanggan terbesar anda (Foo Corporation) kepada versi baharu tapak tersebut. Untuk melakukan ini, cuma buat peraturan penghalaan Istio yang akan mencari @foocorporation.com dalam ID pengguna dan ubah hala dengan sewajarnya. Untuk semua pengguna lain, tiada apa yang akan berubah. Sementara itu, anda akan menguji versi baharu tapak tersebut dengan tenang. Dan ambil perhatian bahawa anda tidak perlu melibatkan pembangun sama sekali untuk ini.

Dan adakah anda perlu membayar mahal untuk itu?

Tidak sama sekali. Istio agak pantas dan ditulis dalam Go dan menghasilkan sedikit overhed. Di samping itu, kemungkinan kehilangan produktiviti dalam talian diimbangi oleh peningkatan dalam produktiviti pembangun. Sekurang-kurangnya dalam teori: jangan lupa bahawa masa pembangun adalah berharga. Bagi kos perisian, Istio adalah perisian sumber terbuka, jadi anda boleh mendapatkan dan menggunakannya secara percuma.

Kuasai sendiri

Pasukan Pengalaman Pembangun Red Hat telah membangunkan hands-on yang mendalam panduan oleh Istio (dalam bahasa Inggeris). Ia berjalan pada Linux, MacOS dan Windows, dan kod itu tersedia dalam Java dan Node.js.

10 pelajaran interaktif di Istio

Blok 1 - Untuk Pemula

Pengenalan kepada Istio
30 minit
Mari kita berkenalan dengan Service Mesh, ketahui cara memasang Istio dalam kelompok OpenShift Kubernetes.
Mulakan

Menggunakan perkhidmatan mikro di Istio
30 minit
Kami menggunakan Istio untuk menggunakan tiga perkhidmatan mikro dengan Spring Boot dan Vert.x.
Mulakan

Blok 2 – peringkat pertengahan

Pemantauan dan pengesanan di Istio
60 minit
Kami akan meneroka alat pemantauan terbina dalam Istio, metrik tersuai dan OpenTracing melalui Prometheus dan Grafana.
Mulakan

Penghalaan mudah di Istio
60 minit
Ketahui cara mengurus penghalaan dalam Istio menggunakan peraturan mudah.
Mulakan

Peraturan laluan lanjutan
60 minit
Mari kita lihat penghalaan pintar, kawalan akses, pengimbangan beban dan pengehadan kadar Istio.
Mulakan

Blok 3 – pengguna lanjutan

Suntikan Kesalahan di Istio
60 minit
Kami mengkaji senario pengendalian kegagalan dalam aplikasi yang diedarkan, mencipta ralat HTTP dan kelewatan rangkaian, dan belajar menggunakan kejuruteraan huru-hara untuk memulihkan persekitaran.
Mulakan

Pemutus Litar di Istio
30 minit
Kami memasang Siege untuk tapak ujian tekanan dan mempelajari cara memastikan toleransi kerosakan bahagian belakang menggunakan ulang tayang, pemutus litar dan lontar kolam.
Mulakan

Egress dan Istio
10 minit
Kami menggunakan laluan Egress untuk mencipta peraturan untuk interaksi perkhidmatan dalaman dengan API dan perkhidmatan luaran.
Mulakan

Istio dan Kiali
15 minit
Belajar menggunakan Kiali untuk mendapatkan gambaran keseluruhan jaringan perkhidmatan dan meneroka permintaan dan aliran data.
Mulakan

TLS bersama di Istio
15 minit
Kami mencipta Istio Gateway dan Perkhidmatan Maya, kemudian kami mengkaji TLS (mTLS) bersama dan tetapannya secara terperinci.
Mulakan

Block 3.1 - Deep Dive: Istio Service Mesh for Microservices

Satu siri siaran di Istio Service Mesh
Apakah buku tentang:

  • Apakah jaringan perkhidmatan?
  • Sistem Istio dan peranannya dalam seni bina perkhidmatan mikro.
  • Menggunakan Istio untuk menyelesaikan masalah berikut:
    • Toleransi kesalahan;
    • Penghalaan;
    • Ujian huru-hara;
    • Keselamatan;
    • Pengumpulan telemetri menggunakan jejak, metrik dan Grafana.

Muat turun buku

Siri artikel mengenai jaringan perkhidmatan dan Istio

Cuba sendiri

Siri siaran ini tidak bertujuan untuk menyelami dunia Istio secara mendalam. Kami hanya ingin memperkenalkan anda kepada konsep dan mungkin memberi inspirasi kepada anda untuk mencuba Istio sendiri. Ia benar-benar percuma untuk dilakukan dan Red Hat menyediakan semua alatan yang anda perlukan untuk bermula dengan OpenShift, Kubernetes, bekas Linux dan Istio, termasuk: Platform Kontena OpenShift Pembangun Red Hat, panduan kami ke Istio dan sumber lain pada kami tapak mikro pada Service Mesh. Jangan berlengah, mulakan hari ini!

Peraturan penghalaan Istio: mengarahkan permintaan perkhidmatan ke mana mereka perlu pergi

anjakan terbuka ΠΈ Kubernetes melakukan kerja yang sangat baik untuk menangani perkhidmatan mikro disalurkan ke pod yang diperlukan. Ini adalah salah satu sebab kewujudan Kubernetes - penghalaan dan pengimbangan beban. Tetapi bagaimana jika anda memerlukan penghalaan yang lebih halus dan canggih? Contohnya, untuk menggunakan dua versi perkhidmatan mikro secara serentak. Bagaimanakah Peraturan Laluan Istio boleh membantu di sini?

Peraturan laluan adalah peraturan yang sebenarnya menentukan pilihan laluan. Tanpa mengira tahap kerumitan sistem, prinsip operasi am peraturan ini kekal mudah: permintaan dihalakan berdasarkan parameter tertentu dan nilai pengepala HTTP.
Mari lihat contoh:

Kubernetes lalai: remeh "50/50"

Dalam contoh kami, kami akan menunjukkan cara menggunakan dua versi perkhidmatan mikro secara serentak dalam OpenShift, mari kita panggil mereka v1 dan v2. Setiap versi dijalankan dalam pod Kubernetesnya sendiri, dan secara lalai ia menjalankan penghalaan pusingan sekata seimbang. Setiap pod menerima bahagian permintaannya berdasarkan bilangan contoh perkhidmatan mikronya, dengan kata lain, replika. Istio membolehkan anda menukar baki ini secara manual.

Katakan kami menggunakan dua versi perkhidmatan pengesyoran kami pada OpenShift, pengesyoran-v1 dan pengesyoran-v2.
Dalam Rajah. Rajah 1 menunjukkan bahawa apabila setiap perkhidmatan diwakili dalam satu contoh, permintaan bertukar sama rata antara mereka: 1-2-1-2-... Beginilah cara penghalaan Kubernetes berfungsi secara lalai:

Satu siri siaran di Istio Service Mesh

Pengagihan wajaran antara versi

Dalam Rajah. Rajah 2 menunjukkan perkara yang berlaku jika anda menambah bilangan replika perkhidmatan v2 daripada satu kepada dua (ini dilakukan dengan skala oc β€”replicas=2 perintah deployment/recommendation-v2). Seperti yang anda lihat, permintaan antara v1 dan v2 kini dibahagikan dalam nisbah satu hingga tiga: 1-2-2-1-2-2-…:

Satu siri siaran di Istio Service Mesh

Abaikan versi menggunakan Istio

Istio memudahkan untuk menukar pengedaran permintaan mengikut cara yang kami perlukan. Sebagai contoh, hantar semua trafik hanya kepada pengesyoran-v1 menggunakan fail Istio yaml berikut:

Satu siri siaran di Istio Service Mesh

Di sini anda perlu memberi perhatian kepada perkara ini: pod dipilih mengikut label. Contoh kami menggunakan label v1. Parameter "berat: 100" bermakna 100% daripada trafik akan dihalakan ke semua pod perkhidmatan yang mempunyai label v1.

Pengagihan arahan antara versi (Penggunaan Canary)

Seterusnya, menggunakan parameter berat, anda boleh mengarahkan trafik ke kedua-dua pod, mengabaikan bilangan tika perkhidmatan mikro yang dijalankan dalam setiap pod. Sebagai contoh, di sini kami mengarahkan 90% trafik ke v1 dan 10% ke v2:

Satu siri siaran di Istio Service Mesh

Penghalaan berasingan untuk pengguna mudah alih

Kesimpulannya, kami akan menunjukkan cara untuk memaksa trafik pengguna mudah alih dihalakan ke perkhidmatan v2, dan orang lain ke v1. Untuk melakukan ini, kami menggunakan ungkapan biasa untuk menganalisis nilai ejen pengguna dalam pengepala permintaan:

Satu siri siaran di Istio Service Mesh

Sekarang giliran awak

Contoh dengan ungkapan biasa untuk menghurai pengepala seharusnya mendorong anda untuk mencari penggunaan peraturan penghalaan Istio anda sendiri. Selain itu, kemungkinan di sini agak luas, kerana nilai pengepala boleh dibentuk dalam kod sumber aplikasi.

Dan ingat bahawa Ops, bukan Dev

Semua yang kami tunjukkan dalam contoh di atas dilakukan tanpa sedikit pun perubahan dalam kod sumber, kecuali untuk kes-kes apabila perlu untuk menjana pengepala permintaan khas. Istio akan berguna kepada pemaju, yang, sebagai contoh, akan dapat menggunakannya pada peringkat ujian, dan kepada pakar dalam pengendalian sistem IT, yang mana ia akan sangat membantu dalam pengeluaran.

Jadi mari kita ulangi leitmotif siri siaran ini: anda tidak perlu menukar apa-apa dalam kod anda. Tidak perlu membina imej baharu atau melancarkan bekas baharu. Semua ini dilaksanakan di luar kod.

Gunakan imaginasi anda

Bayangkan sahaja kemungkinan analisis pengepala menggunakan ungkapan biasa. Ingin mengubah hala pelanggan terbesar anda ke versi istimewa anda perkhidmatan mikro? Dengan mudah! Perlukan versi berasingan untuk penyemak imbas Chrome? Tiada masalah! Anda boleh mengarahkan lalu lintas mengikut hampir semua ciri.

Cuba sendiri

Membaca tentang Istio, Kubernetes dan OpenShift adalah satu perkara, tetapi mengapa tidak menyentuh semuanya sendiri? Pasukan Program Pembangun Red Hat telah menyediakan panduan terperinci (dalam bahasa Inggeris) yang akan membantu anda menguasai teknologi ini secepat mungkin. Manual ini juga 100% sumber terbuka, jadi ia disiarkan dalam domain awam. Fail ini berfungsi pada macOS, Linux dan Windows, dan kod sumber tersedia dalam versi Java dan node.js (versi dalam bahasa lain akan datang tidak lama lagi). Cuma buka repositori git yang sepadan dalam penyemak imbas anda Demo Pembangun Red Hat.

Dalam siaran seterusnya: kami menyelesaikan masalah dengan cantik

Hari ini anda melihat perkara yang boleh dilakukan oleh peraturan penghalaan Istio. Sekarang bayangkan perkara yang sama, tetapi hanya berkaitan dengan pengendalian ralat. Inilah sebenarnya yang akan kita bincangkan dalam entri seterusnya.

Sumber: www.habr.com

Tambah komen