Apa itu Istio? Jaringan perkhidmatan Kubernetes menjelaskan

Senibina perkhidmatan mikro menyelesaikan beberapa masalah tetapi memperkenalkan yang lain. Membahagi aplikasi ke perkhidmatan bebas memudahkan pengembangan, kemas kini, dan penskalaan. Pada masa yang sama, ia memberi anda lebih banyak bahagian bergerak untuk disambungkan dan dilindungi. Menguruskan semua perkhidmatan rangkaian - pengimbangan beban, pengurusan lalu lintas, pengesahan dan kebenaran, dan lain-lain - dapat menjadi sangat kompleks. 

Terdapat istilah kolektif untuk ruang jaringan ini antara perkhidmatan di kluster Kubernetes anda: jaringan perkhidmatan . Projek Google, Istio, adalah tentang memberi anda cara untuk menguruskan jaringan perkhidmatan kluster anda sebelum berubah menjadi bramble-snarl.

Apakah mesh perkhidmatan?

Dengan sekumpulan aplikasi rangkaian, terdapat banyak tingkah laku biasa yang cenderung muncul di sekitarnya. Load balancing, misalnya: Terdapat beberapa kes di mana sekumpulan perkhidmatan rangkaian tidak memerlukannya. Begitu juga, dapat menguji A / B pelbagai kombinasi perkhidmatan, atau untuk mengatur pengesahan dari hujung ke hujung merentasi rangkaian perkhidmatan. Tingkah laku ini secara kolektif disebut sebagai  jaringan perkhidmatan.

Menguruskan jaringan perkhidmatan tidak boleh diserahkan kepada perkhidmatan itu sendiri. Tak satu pun dari mereka berada dalam posisi yang baik untuk melakukan sesuatu dari atas ke bawah, dan sebenarnya itu bukan tugas mereka. Lebih baik mempunyai sistem berasingan yang terletak di antara perkhidmatan dan rangkaian yang mereka hubungi. Sistem ini akan menyediakan dua fungsi utama:

  1. Jauhkan perkhidmatan daripada tidak berurusan dengan kelancaran menguruskan lalu lintas rangkaian - pengimbangan beban, penghalaan, percubaan semula, dll
  2. Berikan lapisan abstraksi untuk pentadbir, menjadikannya mudah untuk membuat keputusan peringkat tinggi mengenai lalu lintas rangkaian dalam kluster — kawalan dasar, metrik dan pembalakan, penemuan perkhidmatan, komunikasi antara perkhidmatan yang selamat melalui TLS, dan sebagainya.

Komponen mesh perkhidmatan Istio

Istio berfungsi sebagai jaringan perkhidmatan dengan menyediakan dua kepingan asas seni bina untuk kluster anda, satah data dan satah kawalan .

Pesawat data menangani trafik rangkaian antara perkhidmatan dalam jaringan. Semua trafik ini dipintas dan diarahkan oleh sistem proksi rangkaian. Dalam kes Istio, proksi disediakan oleh projek sumber terbuka yang dipanggil Envoy. Komponen kedua dalam bidang data, Mixer, mengumpulkan telemetri dan statistik dari Envoy dan aliran lalu lintas perkhidmatan ke perkhidmatan.

Bidang kawalan, teras Istio, mengurus dan mengamankan satah data. Ia mengkonfigurasi proksi Envoy dan Mixer yang menguatkuasakan dasar rangkaian untuk perkhidmatan, seperti siapa yang boleh bercakap dengan siapa dan kapan. Bidang kawalan juga menyediakan lapisan abstraksi terprogram untuk satah data dan semua tingkah lakunya.

Tiga perkhidmatan Istio lain melengkapkan gabungan:

Juruterbang Istio

Pilot Istio mengambil peraturan untuk tingkah laku lalu lintas yang disediakan oleh pesawat kawalan, dan mengubahnya menjadi konfigurasi yang diterapkan oleh Envoy, berdasarkan bagaimana perkara tersebut diuruskan secara tempatan. Juruterbang akan membenarkan Istio bekerja dengan sistem orkestrasi yang berbeza selain Kubernetes, tetapi berkelakuan secara konsisten di antara mereka. 

Benteng Istio

Citadel mengawal pengesahan dan pengurusan identiti antara perkhidmatan.

Istio Galley

Galeri mengambil konfigurasi yang ditentukan pengguna untuk Istio dan mengubahnya menjadi konfigurasi yang sah untuk komponen satah kawalan yang lain. Ini adalah elemen lain yang membolehkan Istio menggunakan sistem orkestrasi berbeza dengan telus.

Keupayaan mesh perkhidmatan Istio

Manfaat pertama dan paling berharga yang diberikan Istio adalah pengambilan - cara untuk menangani kerumitan jaringan servis sepanjang jarak. Anda boleh membuat perubahan pada jaringan secara teratur dengan memerintahkan Istio. Perkhidmatan yang disambungkan ke jaringan tidak perlu diprogram ulang dari dalam untuk mengikuti kebijakan jaringan baru atau kuota, dan ruang rangkaian di antara mereka tidak perlu disentuh secara langsung.

Di samping itu, Istio membolehkan anda melakukan perubahan yang tidak merosakkan atau tentatif pada konfigurasi rangkaian kluster. Sekiranya anda ingin melancarkan susun atur rangkaian baru, secara keseluruhan atau sebahagian, atau A / B menguji konfigurasi semasa dengan yang baru, Istio membolehkan anda melakukan ini dengan cara top-down. Anda juga boleh mengembalikan perubahan tersebut sekiranya berubah menjadi tidak sihat.

Kelebihan ketiga ialah pemerhatian. Istio menyediakan statistik terperinci dan pelaporan mengenai apa yang berlaku antara bekas dan kluster nod. Sekiranya terdapat masalah yang tidak dijangka, jika ada yang tidak mematuhi dasar, atau jika perubahan yang anda buat ternyata tidak produktif, anda dapat mengetahui tentangnya dalam jangka pendek.

Istio juga menyediakan cara untuk memenuhi corak umum yang anda lihat dalam jaringan servis. Salah satu contohnya ialah pola pemutus litar, cara untuk mengelakkan perkhidmatan daripada dihujani permintaan jika bahagian belakang melaporkan masalah dan tidak dapat memenuhi permintaan tepat pada waktunya. Istio menyediakan corak pemutus litar sebagai sebahagian daripada pustaka penguatkuasaan dasar.

Akhirnya, sementara Istio berfungsi paling langsung dan mendalam dengan Kubernetes, Istio dirancang untuk bebas dari platform. Istio menggunakan standard terbuka yang sama yang diandalkan oleh Kubernetes. Istio juga dapat berfungsi secara tersendiri pada sistem individu, atau pada sistem orkestrasi lain seperti Mesos dan Nomad.

Bagaimana untuk memulakan dengan Istio

Sekiranya anda sudah berpengalaman dengan Kubernetes, cara yang baik untuk belajar Istio adalah dengan mengambil kluster Kubernetes - belum ada yang dihasilkan! - dan pasang Istio di atasnya melalui carta Helm. Kemudian anda boleh menggunakan contoh aplikasi yang menunjukkan ciri Istio biasa seperti pengurusan lalu lintas pintar dan telemetri. Ini akan memberi anda pengalaman di permukaan tanah dengan Istio sebelum menggunakannya untuk tugas-tugas mesh pada kluster aplikasi anda.

Red Hat, yang telah melabur di Istio sebagai sebahagian daripada projek OpenShift bertenaga Kubernetes, menawarkan tutorial yang akan memandu anda melalui senario penggunaan dan pengurusan Istio yang biasa.