Apa Istio? Jaring layanan Kubernetes menjelaskan

Arsitektur layanan mikro memecahkan beberapa masalah tetapi memperkenalkan yang lain. Membagi aplikasi menjadi layanan independen menyederhanakan pengembangan, pembaruan, dan penskalaan. Pada saat yang sama, ini memberi Anda lebih banyak bagian bergerak untuk dihubungkan dan diamankan. Mengelola semua layanan jaringan - load balancing, manajemen lalu lintas, otentikasi dan otorisasi, dll. - bisa menjadi sangat rumit. 

Ada istilah kolektif untuk ruang berjaringan ini antara layanan di cluster Kubernetes Anda: mesh layanan . Proyek Google, Istio, adalah tentang memberi Anda cara untuk mengelola mesh layanan cluster Anda sebelum berubah menjadi semak berduri.

Apa itu mesh layanan?

Dengan grup aplikasi jaringan mana pun, ada banyak perilaku umum yang cenderung bermunculan di sekitarnya. Teknik load balancing, misalnya: Ada beberapa kasus ketika sekelompok layanan berjaringan tidak membutuhkannya. Selain itu, kemampuan untuk menguji A / B kombinasi layanan yang berbeda, atau untuk menyiapkan otentikasi ujung ke ujung di seluruh rantai layanan. Perilaku ini secara kolektif disebut sebagai  jaring layanan.

Mengelola mesh layanan tidak boleh diserahkan kepada layanan itu sendiri. Tak satu pun dari mereka berada dalam posisi yang baik untuk melakukan sesuatu yang top-down, dan itu seharusnya bukan pekerjaan mereka. Lebih baik memiliki sistem terpisah yang berada di antara layanan dan jaringan yang mereka ajak bicara. Sistem ini akan menyediakan dua fungsi utama:

  1. Cegah layanan itu sendiri dari berurusan dengan seluk-beluk pengelolaan lalu lintas jaringan — load balancing, perutean, percobaan ulang, dll.
  2. Menyediakan lapisan abstraksi untuk admin, sehingga mudah untuk memberlakukan keputusan tingkat tinggi tentang lalu lintas jaringan di kluster — kontrol kebijakan, metrik dan logging, penemuan layanan, komunikasi antar-layanan yang aman melalui TLS, dan sebagainya.

Komponen mesh layanan Istio

Istio berfungsi sebagai mesh layanan dengan menyediakan dua bagian arsitektur dasar untuk cluster Anda, bidang data dan bidang kontrol .

Bidang data menangani lalu lintas jaringan antara layanan di mesh. Semua lalu lintas ini dicegat dan dialihkan oleh sistem proxy jaringan. Dalam kasus Istio, proxy disediakan oleh proyek sumber terbuka bernama Envoy. Komponen kedua di bidang data, Mixer, mengumpulkan telemetri dan statistik dari Envoy dan aliran lalu lintas layanan-ke-layanan.

Bidang kendali, inti Istio, mengelola dan mengamankan bidang data. Ini mengkonfigurasi proxy Envoy dan Mixers yang memberlakukan kebijakan jaringan untuk layanan, seperti siapa yang dapat berbicara dengan siapa dan kapan. Bidang kontrol juga menyediakan lapisan abstraksi terprogram untuk bidang data dan semua perilakunya.

Tiga layanan Istio lainnya melengkapi campuran:

Pilot Istio

Istio Pilot mengambil aturan untuk perilaku lalu lintas yang disediakan oleh bidang kontrol, dan mengubahnya menjadi konfigurasi yang diterapkan oleh Envoy, berdasarkan bagaimana hal-hal tersebut dikelola secara lokal. Pilot akan memungkinkan Istio bekerja dengan sistem orkestrasi yang berbeda selain Kubernetes, tetapi berperilaku konsisten di antara keduanya. 

Benteng Istio

Citadel mengontrol otentikasi dan manajemen identitas antar layanan.

Istio Galley

Gallery menggunakan konfigurasi yang ditentukan pengguna untuk Istio dan mengubahnya menjadi konfigurasi yang valid untuk komponen bidang kontrol lainnya. Ini adalah elemen lain yang memungkinkan Istio menggunakan sistem orkestrasi berbeda secara transparan.

Kemampuan mesh layanan Istio

Manfaat pertama dan paling berharga yang diberikan Istio adalah abstraksi — cara untuk menangani kompleksitas mesh layanan pada jarak yang cukup jauh. Anda dapat membuat perubahan apa pun pada mesh secara terprogram dengan memerintahkan Istio. Layanan yang terhubung ke mesh tidak perlu diprogram ulang dari dalam untuk mengikuti kebijakan atau kuota jaringan baru, dan ruang jaringan di antara keduanya juga tidak perlu disentuh secara langsung.

Selain itu, Istio memungkinkan Anda melakukan perubahan non-destruktif atau tentatif pada konfigurasi jaringan cluster. Jika Anda ingin meluncurkan tata letak jaringan baru, secara keseluruhan atau sebagian, atau menguji A / B konfigurasi saat ini dengan yang baru, Istio memungkinkan Anda melakukan ini dengan cara top-down. Anda juga dapat membatalkan perubahan tersebut jika ternyata tidak sehat.

Keuntungan ketiga adalah observabilitas. Istio memberikan statistik dan pelaporan mendetail tentang apa yang terjadi antara container dan node cluster. Jika ada masalah yang tidak terduga, jika ada sesuatu yang tidak sesuai dengan kebijakan, atau jika perubahan yang Anda buat ternyata kontraproduktif, Anda akan dapat mengetahuinya dalam waktu singkat.

Istio juga menyediakan cara untuk memenuhi pola umum yang Anda lihat di mesh layanan. Salah satu contohnya adalah pola pemutus sirkuit, cara untuk mencegah layanan dibombardir dengan permintaan jika bagian belakang melaporkan masalah dan tidak dapat memenuhi permintaan secara tepat waktu. Istio menyediakan pola pemutus sirkuit sebagai bagian dari pustaka standar penegakan kebijakannya.

Terakhir, sementara Istio bekerja paling langsung dan mendalam dengan Kubernetes, ia dirancang untuk menjadi platform independen. Istio menggunakan standar terbuka yang sama dengan yang diandalkan oleh Kubernetes sendiri. Istio juga dapat bekerja dengan cara yang berdiri sendiri pada sistem individu, atau pada sistem orkestrasi lain seperti Mesos dan Nomad.

Bagaimana memulai dengan Istio

Jika Anda sudah memiliki pengalaman dengan Kubernetes, cara yang baik untuk mempelajari Istio adalah dengan menggunakan cluster Kubernetes — bukan yang sudah diproduksi! —Dan menginstal Istio di atasnya melalui diagram Helm. Kemudian Anda dapat menerapkan aplikasi contoh yang mendemonstrasikan fitur Istio umum seperti manajemen lalu lintas cerdas dan telemetri. Ini akan memberi Anda pengalaman tingkat dasar dengan Istio sebelum menerapkannya untuk tugas mesh layanan pada cluster aplikasi Anda.

Red Hat, yang telah berinvestasi di Istio sebagai bagian dari proyek OpenShift yang didukung oleh Kubernetes, menawarkan tutorial yang akan memandu Anda melalui skenario penerapan dan pengelolaan Istio yang umum.