Ketika menggunakan layanan virtual untuk menentukan aturan routing bagi layanan yang mencakup beberapa layanan mikro atau aturan routing kompleks, layanan virtual tersebut dapat menjadi sulit dipelihara. Untuk mengurangi risiko perubahan dalam aturan routing, Service Mesh (ASM) memperkenalkan delegasi guna mengelola aturan routing secara lebih terperinci. Topik ini menjelaskan cara menggunakan beberapa layanan virtual untuk menentukan aturan routing bagi sebuah layanan. Contoh aplikasi Bookinfo digunakan dalam panduan ini.
Prasyarat
Sebuah klaster Container Service for Kubernetes (ACK) telah ditambahkan ke instance ASM versi 1.8.6.4 atau lebih baru. Untuk informasi lebih lanjut, lihat Tambahkan Klaster ke Instance ASM.
Gateway masuk telah diterapkan. Untuk informasi lebih lanjut, lihat Buat Gateway Masuk.
Aplikasi telah diterapkan di klaster ACK yang ditambahkan ke instance ASM Anda. Untuk informasi lebih lanjut, lihat Terapkan Aplikasi di Klaster ACK yang Ditambahkan ke Instance ASM.
Informasi latar belakang
Dalam Service Mesh, layanan virtual digunakan untuk menentukan aturan routing guna mengontrol trafik yang dirutekan ke layanan. Dalam skenario nyata, Anda mungkin perlu memelihara layanan virtual yang kompleks. Setiap kali Anda memodifikasi aturan routing yang ditentukan oleh layanan virtual, Anda harus memperbarui layanan virtual tersebut. Setelah aturan routing dimodifikasi, aturan tersebut dapat bertentangan satu sama lain, redundan, atau saling bergantung. Kesalahan konfigurasi aturan routing dapat mempengaruhi layanan yang diterapkan di klaster pada bidang data atau bahkan membuat semua layanan tidak dapat diakses.
ASM memperkenalkan delegasi untuk memperluas konfigurasi layanan virtual, yang memungkinkan Anda memisahkan aturan routing yang ditentukan untuk layanan. Anda dapat membagi layanan virtual menjadi layanan virtual utama dan beberapa layanan virtual sekunder. Layanan virtual utama menentukan aturan routing keseluruhan dari layanan, sedangkan setiap layanan virtual sekunder menentukan aturan routing terperinci. Layanan virtual utama dipelihara oleh administrator, sementara layanan virtual sekunder dipelihara oleh pemelihara layanan. Hal ini mengurangi risiko yang ditimbulkan oleh perubahan dalam aturan routing dan meningkatkan efisiensi penyebaran serta pembaruan layanan independen.
Catatan penggunaan
Anda hanya dapat menyetel parameter terkait delegasi di layanan virtual utama. Jika parameter terkait delegasi disetel baik di layanan virtual utama maupun sekunder, layanan virtual utama dan sekunder tidak akan berlaku.
Konfigurasi HTTPMatchRequest di layanan virtual sekunder harus merupakan subset dari konfigurasi di layanan virtual utama. Jika tidak, terdapat konflik, dan konfigurasi HTTPRoute tidak akan berlaku.
Parameter terkait delegasi hanya dapat ditentukan ketika bidang route dan redirect di layanan virtual utama dibiarkan kosong. Bidang hosts di layanan virtual sekunder juga harus dibiarkan kosong. Aturan routing yang ditentukan oleh layanan virtual sekunder digabungkan dengan aturan routing yang ditentukan oleh layanan virtual utama.
Langkah 1: Konfigurasikan gateway Istio
Masuk ke Konsol ASM.
Di panel navigasi sisi kiri, pilih .
Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.
Pada halaman detail instance ASM, pilih di panel navigasi sisi kiri. Pada halaman yang muncul, klik Create from YAML.
Pilih namespace dari daftar drop-down Namespace, salin konten berikut ke editor kode, lalu klik Create. Dalam contoh ini, namespace default digunakan.
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: bookinfo-gateway spec: selector: istio: ingressgateway # gunakan kontroler default istio servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"Setel parameter
numberke80. Pengaturan ini menentukan bahwa aplikasi Bookinfo dapat membentuk koneksi HTTP arah masuk atau keluar menggunakan port 80.
Langkah 2: Konfigurasikan layanan virtual utama
Masuk ke Konsol ASM.
Di panel navigasi sisi kiri, pilih .
Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.
Pada halaman detail instance ASM, pilih di panel navigasi sisi kiri. Pada halaman yang muncul, klik Create from YAML.
Pilih namespace dari daftar drop-down Namespace, salin konten berikut ke editor kode, lalu klik Create. Dalam contoh ini, namespace default digunakan.
Konten berikut dapat digunakan untuk membuat
delegasibernama vs-1 dan delegasi bernama vs-2. Delegasi vs-1 menentukan bahwa hanya URL permintaan yang berisi/logyang dapat digunakan untuk mengakses aplikasi Bookinfo. Delegasi vs-2 menentukan bahwa hanya URL permintaan yang berisi/yang dapat digunakan untuk mengakses aplikasi Bookinfo.apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: bookinfo namespace: default spec: gateways: - bookinfo-gateway hosts: - '*' http: - delegate: name: vs-1 namespace: ns1 match: - uri: prefix: /log - delegate: name: vs-2 namespace: ns1 match: - uri: prefix: /Deskripsi parameter di bidang delegasi:
name: nama delegasi.
namespace: namespace tempat delegasi berlaku.
Langkah 3: Konfigurasikan layanan virtual sekunder
Masuk ke Konsol ASM.
Di panel navigasi sisi kiri, pilih .
Pada halaman Mesh Management, temukan instance ASM yang ingin dikonfigurasi. Klik nama instance ASM atau klik Manage di kolom Actions.
Pada halaman detail instance ASM, pilih di panel navigasi sisi kiri. Pada halaman yang muncul, klik Create from YAML.
Pilih namespace dari daftar drop-down Namespace, salin konten berikut ke editor kode, lalu klik Create.
Dalam contoh ini, namespace ns1 digunakan. Untuk informasi lebih lanjut tentang cara membuat namespace, lihat Kelola Namespace Global.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: vs-1 namespace: ns1 spec: http: - match: - uri: exact: /login - uri: exact: /logout route: - destination: host: productpage.default.svc.cluster.local port: number: 9080metadata: menghubungkan layanan virtual sekunder dengan delegasi di layanan virtual utama. Pengaturan metadata harus sama dengan pengaturan delegasi di layanan virtual utama. Dalam sublangkah ini, pengaturan metadata sama dengan pengaturan delegasi vs-1. Ini berarti layanan virtual sekunder dihubungkan dengan delegasi vs-1.
match: menentukan kondisi filter untuk permintaan HTTP. Dalam sublangkah ini,
uridisetel keexact: /logindanexact: /logout. Pengaturan ini menentukan bahwa Anda dapat masuk atau keluar dari aplikasi Bookinfo.
Ulangi langkah-langkah sebelumnya. Di halaman Buat, pilih namespace dari daftar drop-down Namespace, salin konten berikut ke editor kode, lalu klik Create.
apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: vs-2 namespace: ns1 spec: http: - match: - uri: exact: /productpage - uri: prefix: /static - uri: prefix: /api/v1/products route: - destination: host: productpage.default.svc.cluster.local port: number: 9080metadata: menghubungkan layanan virtual sekunder dengan delegasi di layanan virtual utama. Pengaturan metadata harus sama dengan pengaturan delegasi di layanan virtual utama. Dalam sublangkah ini, pengaturan metadata sama dengan pengaturan delegasi vs-2. Ini berarti layanan virtual sekunder dihubungkan dengan delegasi vs-2.
match: menentukan kondisi filter untuk permintaan HTTP. Dalam sublangkah ini, pengaturan menentukan bahwa hanya URL permintaan yang berisi /productpage atau dimulai dengan /static atau /api/v1/products yang dapat digunakan untuk mengakses aplikasi Bookinfo.
Verifikasi hasil
Masukkan http://<alamat IP gateway masuk ASM>/productpage di bilah alamat browser.
Halaman berikut muncul. Ini berarti aplikasi Bookinfo diakses menggunakan URL permintaan yang berisi
/productpage. Hasilnya menunjukkan bahwa layanan virtual sekunder yang dihubungkan dengan delegasi vs-2 berlaku. Untuk informasi lebih lanjut tentang cara mendapatkan alamat IP gateway masuk ASM, lihat bagian "Dapatkan Alamat IP Gateway Masuk" dalam topik Gunakan Sumber Daya Istio untuk Merutekan Trafik ke Versi Layanan yang Berbeda.
Klik Sign in di pojok kanan atas. Di kotak dialog yang muncul, masukkan nama pengguna dan kata sandi yang sesuai untuk masuk ke aplikasi Bookinfo.
Halaman berikut muncul. Ini berarti Anda telah masuk ke aplikasi Bookinfo. Hasilnya menunjukkan bahwa layanan virtual sekunder yang dihubungkan dengan delegasi vs-1 berlaku.
