Pendahuluan
Mengamankan dan memantau beban kerja adalah prioritas utama saat bekerja dengan layanan mikro. Pemantauan adalah tugas yang sulit bila dilakukan secara manual. Pengembang perlu mengonfigurasi setiap layanan untuk memastikan komunikasi yang aman di dalam sistem. Selain itu, mereka perlu memantau pertukaran, yang membutuhkan waktu. Waktu yang bisa dihabiskan untuk mengembangkan aplikasi itu sendiri.
Sebagai gantinya, ada solusi yang lebih sederhana – menggunakan platform mesh layanan seperti Istio .
Dalam tutorial ini, Anda akan mempelajari tentang Istio, arsitekturnya, dan cara penggunaannya.
Apa itu Istio? – Mendefinisikan Istio Service Mesh
Istio adalah implementasi jala layanan sumber terbuka yang mengelola komunikasi dan berbagi data antar layanan mikro. Platform ditambahkan untuk mengurangi kerumitan pengelolaan layanan jaringan.
Setelah terinstal, ia menyuntikkan proxy ke dalam pod Kubernetes, di sebelah wadah aplikasi. Setiap proxy dikonfigurasi untuk mencegat permintaan dan mengarahkan lalu lintas ke layanan yang sesuai saat menerapkan kebijakan.
Mengapa perlu jaring layanan?
Beralih dari arsitektur monolitik ke layanan mikro, pengembang mendapatkan kesempatan untuk membangun aplikasi yang sangat fleksibel, tangguh, dan dapat diskalakan dalam siklus hidup pengembangan perangkat lunak yang jauh lebih cepat. Meskipun arsitektur layanan mikro memiliki banyak manfaat, evolusi dalam pengembangan aplikasi juga membawa tantangan tertentu.
Karena arsitektur terdiri dari banyak layanan individu yang bekerja bersama, penting untuk memastikan komunikasi yang lancar. Komponen otonom ini berbicara satu sama lain melalui API. Namun, mengelola arus lalu lintas dan panggilan API membutuhkan banyak waktu dan upaya dari tim pengembangan.
Ada kebutuhan akan solusi pihak ketiga yang memungkinkan anggota tim untuk fokus pada pengembangan logika layanan daripada logika jaringan. Oleh karena itu, mesh layanan seperti Istio dirancang untuk mengelola lapisan jaringan komunikasi layanan-ke-layanan.
Arsitektur Istio
Arsitektur Istio mencakup dua komponen utama:
- Pesawat kontrol. Komponen ini digunakan untuk mengonfigurasi dan mengelola proxy di bidang data.
- bidang data. Elemen kedua dari Istio mencakup semua proxy sespan yang dimasukkan ke dalam pod.
Pesawat Kontrol
Sebelum versi 1.5, pesawat kontrol adalah sekelompok komponen yang berbeda – Pilot, Citadel, dan Galley. Istio 1.5 memperkenalkan Istiod , bidang kontrol yang menggabungkan komponen yang disebutkan di atas menjadi satu. Istiod menyederhanakan konfigurasi dan pengoperasian mesh layanan.
Layanan Istio di bidang kontrol meliputi:
- Perintis menggunakan Envoy API untuk berkomunikasi dengan sespan Envoy. Ini bertanggung jawab atas manajemen lalu lintas, perutean, dan penemuan layanan.
- Benteng menyediakan komunikasi yang aman antar layanan dengan mengelola autentikasi pengguna, sertifikat, dan manajemen kredensial.
- Galley bertanggung jawab atas manajemen konfigurasi, penyerapan, distribusi, dan pemrosesan.
Data Plane
Bidang data terdiri dari Utusan proxy ditempatkan ke dalam pod sebagai sespan. Mereka berinteraksi dengan dan mengelola lalu lintas untuk semua layanan dalam sistem. Ini termasuk mengontrol semua komunikasi jaringan antar layanan mikro.
Karena ditambahkan sebagai sidecar, tidak perlu mendesain ulang arsitektur aplikasi untuk mengimplementasikan proxy.
Proxy mengontrol lalu lintas dengan menetapkan aturan perutean (untuk HTTP, gRPC, TCP) dan menerapkan TLS dan enkripsi lalu lintas.
Semua lalu lintas melewati proxy Utusan. Oleh karena itu, komponen ini mengumpulkan data dalam jumlah besar dan memberikan wawasan berharga tentang lalu lintas bisnis Anda.
Proksi utusan menyediakan:
- Penemuan layanan dinamis
- Penimbangan beban
- Pemeriksaan kesehatan
- Penghentian TLS
- Proxy HTTP/2 dan gRPC
- Pemutus sirkuit
- Peluncuran bertahap dengan pembagian traffic berbasis persentase
- Injeksi kesalahan
- Metrik yang kaya
Fitur Istio
Fitur platform yang paling penting adalah:
1. Kontrol Lalu Lintas
Fitur utama Istio adalah perannya dalam manajemen lalu lintas. Ini mengontrol aliran lalu lintas antar layanan dengan menerapkan aturan perutean melalui proxy Envoy-nya. Dengan menggunakan proxy, Istio mengarahkan lalu lintas dan panggilan API tanpa membuat perubahan apa pun pada layanan itu sendiri. Hal ini memungkinkan pengguna untuk melakukan peluncuran canary, peluncuran bertahap, dan pengujian A/B.
2. Keterlihatan
Platform mengontrol dan mengamati semua lalu lintas masuk dan keluar dalam lapisan jaringan. Oleh karena itu, ia mengumpulkan sejumlah besar data yang memberikan wawasan yang berguna untuk pengembangan di masa mendatang.
3. Keamanan
Sementara pengembang mengamankan aplikasi dari potensi ancaman dan peretasan, Istio mengizinkan, mengautentikasi, dan mengenkripsi semua komunikasi internal. Pod dan layanan berbicara satu sama lain dan mentransfer data berdasarkan kebijakan Istio.
Kelebihan dan Kerugian Istio
Untuk membantu Anda memutuskan apakah akan menerapkan Istio ke dalam arsitektur layanan mikro atau tidak, lihat beberapa kelebihan dan kekurangannya.
Keuntungan
- Memberikan wawasan tentang masalah kinerja jaringan.
- Mengamankan komunikasi layanan-ke-layanan dan pod-to-pod.
- Menerapkan aturan dan kebijakan perutean yang mengelola komunikasi dan transfer data.
- Mengaktifkan penerapan canary dan pengujian A/B.
Kekurangan
- Istio memakan waktu lama untuk menyiapkan dan mengimplementasikannya.
- Selain itu, sulit untuk mengonfigurasi file .yaml untuk memastikan penyiapan yang benar dan komunikasi terenkripsi.