Routing Lapisan 7 di Service Mesh (ASM) mengarahkan lalu lintas berdasarkan path URI dan header permintaan. Sebelum mengonfigurasi aturan routing, siapkan lingkungan ASM Anda dan sebarkan beban kerja contoh yang dirujuk dalam tutorial routing.
Topik ini mencakup dua langkah: pastikan instans ASM, kluster ACK, dan injeksi sidecar Anda siap, lalu sebarkan layanan contoh yang digunakan dalam tutorial routing.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Instans Service Mesh (ASM) Enterprise Edition. Lihat Buat instans ASM.
PentingPada bagian Dataplane Mode di halaman Create Service Mesh, jangan pilih Enable Ambient Mesh mode. Fitur routing Lapisan 7 dalam panduan ini memerlukan mode sidecar.
Kluster Container Service for Kubernetes (ACK). Buat kluster khusus ACK atau kluster ACK yang dikelola.
Injeksi proxy sidecar otomatis diaktifkan untuk namespace
default. Lihat bagian "Enable automatic sidecar proxy injection" dalam Manage global namespaces.
Sebarkan beban kerja contoh
Tutorial routing Lapisan 7 menggunakan empat layanan contoh. Sebarkan hanya layanan yang diperlukan untuk tutorial yang akan Anda ikuti.
| Layanan | Tujuan | Mendengarkan pada |
|---|---|---|
| helloworld | Layanan multi-versi (v1, v2) untuk menguji routing berbasis versi dan pemisahan traffic | Port 5000 |
| sleep | Pod client dengan curl untuk mengirim permintaan uji ke layanan lain dalam mesh | Port 80 |
| HTTPBin | Titik akhir pengujian HTTP yang mengembalikan detail permintaan (header, path, metode) kepada pemanggil | Port 8000 |
| NGINX | Server web statis untuk menguji aturan routing dasar | Port 8000 |
Sambungkan kubectl ke kluster ACK Anda menggunakan file kubeconfig, lalu ikuti bagian-bagian berikut.
Sebarkan layanan helloworld
helloworld menjalankan dua versi (v1 dan v2) dari aplikasi yang sama. Hal ini membuatnya cocok untuk menguji routing berbasis versi dan pemisahan lalu lintas.
Simpan YAML berikut sebagai
helloworld-application.yaml:Sebarkan layanan tersebut:
kubectl apply -f helloworld-application.yamlVerifikasi penerapan: Output yang diharapkan: Nilai
READYsebesar2/2menunjukkan bahwa baik kontainer aplikasi maupun proxy sidecar sedang berjalan.kubectl get pods -l app=helloworldNAME READY STATUS RESTARTS AGE helloworld-v1-xxxxxxxxx-xxxxx 2/2 Running 0 30s helloworld-v2-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Sebarkan layanan sleep
sleep bertindak sebagai pod client. Layanan ini tetap menganggur dan menyediakan lingkungan curl untuk mengirim permintaan uji ke layanan lain dalam mesh.
Simpan YAML berikut sebagai
sleep-application.yaml:Sebarkan layanan tersebut:
kubectl apply -f sleep-application.yamlVerifikasi penerapan: Output yang diharapkan:
kubectl get pods -l app=sleepNAME READY STATUS RESTARTS AGE sleep-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Sebarkan layanan HTTPBin
HTTPBin mengembalikan detail permintaan—header, path URI, dan metode. Gunakan layanan ini untuk memverifikasi bahwa aturan routing meneruskan permintaan ke tujuan yang benar.
Simpan YAML berikut sebagai
httpbin-application.yaml:Sebarkan layanan tersebut:
kubectl apply -f httpbin-application.yamlVerifikasi penerapan: Output yang diharapkan:
kubectl get pods -l app=httpbinNAME READY STATUS RESTARTS AGE httpbin-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Sebarkan layanan NGINX
NGINX menyajikan konten statis. Gunakan layanan ini dalam tutorial yang menunjukkan routing path URI dasar.
Simpan YAML berikut sebagai
nginx.yaml:Sebarkan layanan tersebut:
kubectl apply -f nginx.yamlVerifikasi penerapan: Output yang diharapkan:
kubectl get pods -l app=nginxNAME READY STATUS RESTARTS AGE nginx-xxxxxxxxx-xxxxx 2/2 Running 0 30s
Verifikasi semua penerapan
Setelah Anda menyebarkan layanan yang diperlukan, pastikan semua Pod berjalan dengan injeksi sidecar:
kubectl get podsSetiap Pod harus menampilkan 2/2 pada kolom READY. Hal ini menegaskan bahwa baik kontainer aplikasi maupun proxy sidecar Istio telah diinjeksikan dan berjalan.