Istio adalah service mesh sumber terbuka yang menyediakan manajemen lalu lintas, observabilitas, keamanan, dan kemampuan kebijakan. Dengan integrasi Istio dan Kubernetes, Anda dapat mengelola serta mengontrol aplikasi kontainer dengan lebih baik, meningkatkan performa, keamanan, dan keandalannya. Panduan ini menjelaskan cara menggunakan Istio untuk menyebarkan aplikasi Bookinfo di kluster Kubernetes yang dikelola sendiri dan terhubung ke Elastic Container Instance melalui VNode.
Informasi latar belakang
Istio adalah platform service mesh sumber terbuka yang digunakan untuk mengelola lalu lintas antar layanan mikro, menangani komunikasi jaringan, dan mitigasi risiko keamanan. Istio dapat diintegrasikan dengan Kubernetes untuk menyediakan manajemen lalu lintas yang standar dan aman, serta menyederhanakan penyebaran dan operasi pemeliharaan (O&M).
Bookinfo meniru entri katalog tunggal dari toko buku online, menampilkan informasi seperti deskripsi buku, detail ISBN, jumlah halaman, dan ulasan. Aplikasi ini bersifat heterogen, terdiri dari empat layanan mikro yang ditulis dalam berbagai bahasa untuk mendemonstrasikan fitur-fitur Istio. Arsitektur ujung-ke-ujung Bookinfo:

Productpage: Layanan mikro Python yang memanggil layanan Details dan Reviews untuk menghasilkan halaman. Productpage juga menyediakan fitur logon dan logoff.
Details: Layanan mikro Ruby yang menyediakan informasi buku.
Reviews: Layanan mikro Java yang menyediakan ulasan buku. Terdapat tiga versi layanan ini:
Versi 1, tidak memanggil layanan Ratings.
Versi 2, memanggil layanan Ratings dan memberi peringkat buku menggunakan satu hingga lima bintang hitam.
Versi 3, memanggil layanan Ratings dan memberi peringkat buku menggunakan satu hingga lima bintang merah.
Ratings: Layanan mikro Node.js yang menyediakan peringkat berdasarkan ulasan buku.
Untuk informasi lebih lanjut, kunjungi Istio.
Prasyarat
Panduan ini berlaku untuk kluster Kubernetes yang dikelola sendiri. Pastikan kluster Anda memenuhi kondisi berikut:
VNode telah diterapkan di kluster Kubernetes yang dikelola sendiri.
Jika kluster Kubernetes yang dikelola sendiri diterapkan di pusat data, pastikan pusat data tersebut terhubung ke Alibaba Cloud.
Jika kluster Kubernetes yang dikelola sendiri diterapkan pada instance Elastic Compute Service (ECS) dan plug-in jaringan adalah Flannel, pastikan cloud control manager (CCM) Kubernetes telah diterapkan di kluster. Hal ini memastikan bahwa Elastic Container Instance saling terhubung dengan pod pada node nyata. Untuk informasi lebih lanjut, lihat Menyebarkan CCM.
Persiapan
Instal Istio. Untuk informasi lebih lanjut, lihat Memulai.
Buat namespace dan konfigurasikan label untuk namespace tersebut.
kubectl create namespace istio-test kubectl label namespace istio-test istio-injection=enabled
Prosedur
Menyebarkan aplikasi Bookinfo
Buat file bernama bookinfo.yaml dan salin template berikut ke dalam file:
CatatanDalam contoh kode YAML berikut, nodeSelectors ditambahkan untuk menjadwalkan pod ke VNode. Anda juga dapat mengonfigurasi eci-profile untuk menjadwalkan pod ke VNode. Untuk informasi lebih lanjut, lihat Jadwalkan Pod ke VNode dan Gunakan eci-profile untuk Menjadwalkan Pod ke VNode.
Sebarkan aplikasi Bookinfo.
kubectl -n istio-test apply -f bookinfo.yamlKeluaran perintah berikut dikembalikan:

Lihat status Bookinfo.
kubectl -n istio-test get pods -o wideKeluaran perintah berikut dikembalikan:

Periksa layanan mikro Bookinfo.
kubectl -n istio-test get servicesKeluaran perintah berikut dikembalikan:

Sebarkan gateway Istio
Buat file bernama bookinfo-gateway.yaml dan salin template berikut ke dalam file:
Sebarkan gateway Istio.
kubectl -n istio-test apply -f bookinfo-gateway.yamlKeluaran perintah berikut dikembalikan:

Lihat gateway Istio.
kubectl -n istio-test get gatewayKeluaran perintah berikut dikembalikan:

Verifikasi layanan mikro Bookinfo
Peroleh alamat host gateway Istio.
Pilih Layanan Ingress Istio berdasarkan jenis kluster. Dalam panduan ini, pilih LoadBalancer sebagai Layanan Ingress Istio.
kubectl -n istio-system get service istio-ingressgatewayKeluaran perintah berikut dikembalikan:

Parameter istio-ingressgateway dari pesan yang dikembalikan menunjukkan alamat host (dalam format
IP:Port) dari Istio Ingress Gateway. Dalam panduan ini, alamat host adalah10.96.XX.XX:80.Buat pod uji untuk memverifikasi layanan mikro Bookinfo.
Buat file bernama test-pod.yaml dan salin template berikut ke dalam file:
Sebarkan pod.
kubectl apply -f test-pod.yaml
Masuk ke pod uji dan jalankan perintah berikut untuk memverifikasi layanan mikro Bookinfo.
kubectl exec -it centos -- bashcurl -s http://10.96.XX.XX:80/productpage | grep -o "<title>.*</title>"Ganti
10.96.XX.XX:80dengan alamat host yang Anda peroleh di langkah 1. Jika<title>Simple BookStore App<title>dikembalikan, Istio berjalan di VNode. Contoh keluaran perintah: