Service Mesh Alibaba Cloud terintegrasi dengan Application Load Balancer (ALB) untuk kluster Container Service for Kubernetes (ACK) yang menggunakan plugin jaringan Terway pada bidang data. Integrasi ini menyederhanakan tata kelola layanan, memastikan komunikasi antarlayanan yang aman dan terotentikasi, menyediakan observabilitas mesh, serta mengurangi beban kerja Pengembangan dan Operasi. Topik ini menjelaskan cara mengintegrasikan Service Mesh (ASM) dengan ALB.
Prasyarat
-
Sebuah kluster ACK telah ditambahkan ke instans ASM Anda, dan instans ASM serta kluster ACK memenuhi persyaratan berikut:
-
Instans ASM: Edisi Perusahaan.
-
Kluster ACK:
-
Tipe plugin jaringan adalah Terway.
-
Versi komponen Cloud Controller Manager (CCM) adalah v1.9.3.313-g748f81e-aliyun atau lebih baru. Untuk informasi selengkapnya, lihat Cloud Controller Manager.
-
Komponen ALB Ingress Controller telah diinstal. Untuk informasi selengkapnya, lihat Manage components.
-
-
-
Injeksi proxy sidecar otomatis telah diaktifkan untuk namespace default. Untuk informasi selengkapnya, lihat Enable automatic injection.
-
Gerbang masuk telah dibuat dengan parameter CLB instance type diatur ke Private Access dan Service Port diatur ke 80. Untuk informasi selengkapnya, lihat Create an ingress gateway.
Langkah 1: Deploy aplikasi contoh
Jalankan perintah berikut pada kluster bidang data untuk mendeploy aplikasi contoh Bookinfo. Untuk informasi selengkapnya, lihat Deploy an application in a cluster associated with an ASM instance.
kubectl apply -f https://raw.githubusercontent.com/istio/istio/master/samples/bookinfo/platform/kube/bookinfo.yaml
Langkah 2: Buat resource Istio
Anda akan membuat resource Gateway dan VirtualService untuk tujuan pengujian.
-
Buat resource Gateway.
-
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi kiri, pilih .
-
Pada halaman Gateway, klik Create.
Pada bagian Basic Information, pilih
defaultuntuk Namespace dan masukkanbookinfo-gatewayuntuk Name. Pada bagian Apply to Gateway, tambahkan label dengan kunciistiodan nilaiingressgateway. Pada bagian Service, masukkanhttpuntuk Name, masukkan80untuk Port, dan pilih HTTP untuk Protocol. Lalu, klik Create. -
Klik Preview untuk meninjau file YAML resource Gateway. Setelah memastikan konfigurasi sudah benar, klik OK. Lalu, klik Create di bagian bawah halaman Create.
-
-
Buat VirtualService dan atur routing.
-
Pada halaman detail instans ASM, pilih di panel navigasi kiri.
-
Pada halaman VirtualService, klik Create untuk mengonfigurasi layanan virtual untuk bookinfo-gateway.
Atur Namespace ke default dan Name ke bookinfo. Matikan sakelar Apply to all Sidecars, lalu tambahkan bookinfo-gateway ke aturan gateway. Pada bagian HTTP Route, tambahkan aturan pencocokan berikut: pencocokan URI eksak
/productpage, pencocokan awalan URI/static, pencocokan URI eksak/login, pencocokan URI eksak/logout, dan pencocokan awalan URI/api/v1/products. Atur nama layanan tujuan rute ke productpage dan port ke 9080. Lalu, klik Create. -
Di bagian bawah halaman Create, klik Preview untuk melihat file YAML. Setelah memastikan konfigurasi sudah benar, klik Submit. Lalu, di bagian bawah halaman Create, klik Create.
-
Langkah 3: Buat objek AlbConfig
Skenario 1: Integrasikan instans ALB yang sudah ada
-
Masuk ke Konsol ALB dan dapatkan ID instans ALB Anda.
-
Buat file bernama alb-demo.yaml dengan konten berikut.
Ganti
config.iddengan ID instans ALB Anda.apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: default spec: config: id: alb-xxxxx forceOverride: false -
Jalankan perintah berikut untuk membuat objek AlbConfig.
kubectl apply -f alb-demo.yaml
Skenario 2: Integrasikan instans ALB baru
-
Buat file bernama alb-demo.yaml dengan konten berikut. Untuk informasi selengkapnya, lihat Expose services by using an ALB Ingress.
Contoh ini secara otomatis membuat instans ALB bernama alb-demo.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: default spec: config: name: alb-demo addressType: Internet zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** - vSwitchId: vsw-uf6nun9tql5t8nh15****Parameter
Description
spec.config.nameNama instans ALB.
addressType(Wajib) Tipe alamat load balancer. Nilai yang valid:
-
Internet (default): Load balancer memiliki Alamat IP publik. Rekaman DNS diselesaikan ke Alamat IP publik, dan load balancer dapat diakses melalui Internet.
-
Intranet: Load balancer hanya memiliki Alamat IP pribadi. Rekaman DNS diselesaikan ke Alamat IP pribadi, dan load balancer hanya dapat diakses dari dalam VPC tempatnya dideploy.
zoneMappings(Wajib) ID vSwitch untuk ALB Ingress. Anda harus menentukan minimal dua ID vSwitch yang berada di zona ketersediaan berbeda. vSwitch yang ditentukan harus berada di zona ketersediaan yang didukung oleh ALB. Untuk informasi tentang wilayah dan zona yang didukung, lihat Regions and zones supported by ALB. Untuk informasi cara membuat vSwitch, lihat Create and manage vSwitches.
-
-
Jalankan perintah berikut untuk membuat objek AlbConfig.
kubectl apply -f alb-demo.yaml
Langkah 4: Buat resource IngressClass
-
Buat file bernama alb.yaml dan salin konten berikut ke dalamnya.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: default scope: Cluster -
Jalankan perintah berikut untuk membuat resource IngressClass.
kubectl apply -f alb.yamlOutput yang diharapkan:
ingressclass.networking.k8s.io/alb created
Langkah 5: Buat resource Ingress
Layanan untuk gerbang masuk ASM berjalan di namespace istio-system. Anda harus membuat resource Ingress di namespace istio-system yang sama pada kluster bidang data Anda (kluster ACK). Port harus konsisten dengan port 80 yang telah Anda konfigurasikan untuk gerbang masuk ASM.
-
Buat file bernama asm-gateway-ingress.yaml dan salin konten berikut ke dalam file tersebut.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: asm-gateway-ingress namespace: istio-system spec: ingressClassName: alb rules: - http: paths: - backend: service: name: istio-ingressgateway port: number: 80 path: /* pathType: ImplementationSpecific -
Jalankan perintah berikut untuk membuat resource Ingress.
kubectl apply -f asm-gateway-ingress.yaml
Langkah 6: Uji akses
-
Jalankan perintah berikut untuk mendapatkan alamat Ingress.
kubectl get ing -n istio-systemOutput yang diharapkan:
NAME CLASS HOSTS ADDRESS PORTS AGE asm-gateway-ingress alb * alb-xxxx.xxxx.alb.aliyuncs.com 80 18hAlamat Ingress adalah
alb-xxxx.xxxx.alb.aliyuncs.com. -
Akses gerbang masuk ASM.
-
Metode 1: Akses gerbang ASM menggunakan alamat instans Ingress yang Anda peroleh pada langkah sebelumnya:
http://alb-xxxx.xxxx.alb.aliyuncs.com/productpage. -
Metode 2: Masuk ke Konsol ALB dan akses gerbang ASM menggunakan Alamat IP publik instans ALB atau nama domain yang terikat dengannya. Pada halaman detail instans di Konsol ALB, lihat informasi dasar instans ALB alb-demo. Di bagian zona ketersediaan di bawah, Anda dapat menemukan Elastic IP Address (EIP) untuk setiap zona ketersediaan.
-