Gerbang multi-kluster ALB memperluas ALB Ingress ke beberapa kluster yang dikelola oleh Distributed Cloud Container Platform for Kubernetes (ACK One). Satu instans Application Load Balancer (ALB) berfungsi sebagai titik masuk terpadu yang mendistribusikan lalu lintas ke layanan backend di seluruh kluster terkait. Dalam sebagian besar kasus, gerbang multi-kluster ALB dapat digunakan seperti mode ALB Ingress single-kluster, dengan beberapa pengecualian.
Mengapa menggunakan gerbang multi-kluster
Menjalankan satu instans ALB di beberapa kluster memberikan kemampuan berikut yang tidak tersedia dalam penerapan ALB Ingress single-kluster:
Fault isolation: Lalu lintas didistribusikan ke beberapa kluster, sehingga dampak kegagalan pada satu kluster terisolasi hanya pada kluster tersebut.
Unified traffic management: Kelola aturan routing, pendengar (listeners), dan load balancing dari satu tempat, alih-alih memelihara konfigurasi Ingress terpisah untuk setiap kluster.
Consistent ingress: Terapkan fitur ALB yang sama—auto scaling, operasi fully hosted, dan manajemen bebas O&M—di semua kluster dalam instans Fleet Anda.
Cara kerja
Arsitektur ini memisahkan tanggung jawab lapisan kontrol dan bidang data:
Lapisan kontrol — ALB Ingress controller: Memantau server API terhadap perubahan pada resource Ingress dan memperbarui konfigurasi instans ALB berdasarkan aturan routing. Controller mengelola instans ALB tetapi tidak mendistribusikan lalu lintas.
Bidang data — Instans ALB: Menerima dan mendistribusikan lalu lintas masuk ke layanan backend di semua kluster terkait, berdasarkan aturan yang dikonfigurasi oleh controller.
Komponen-komponen berikut bekerja sama untuk menentukan dan mengarahkan lalu lintas:
AlbConfig: CustomResourceDefinition (CRD) yang dibuat oleh ALB Ingress controller untuk mendefinisikan konfigurasi instans ALB. Setiap AlbConfig dipetakan tepat ke satu instans ALB. Dalam mode multi-kluster, anotasi
alb.ingress.kubernetes.io/remote-clusterspada AlbConfig menentukan kluster mana saja yang dilayani oleh instans ALB tersebut.IngressClass: Mengidentifikasi controller Ingress mana yang menangani resource Ingress tertentu, memungkinkan beberapa controller beroperasi bersama dalam kluster yang sama.
Ingress: Mendefinisikan aturan routing lalu lintas eksternal dan aturan kontrol akses. ALB Ingress controller memantau perubahan pada Ingress dan memperbarui instans ALB sesuai kebutuhan.
Service: Menyediakan alamat IP virtual dan port yang stabil untuk sekelompok pod. Instans ALB mengarahkan lalu lintas ke Service tanpa perlu mengetahui perubahan individu pada pod.
Batasan
Mode multi-kluster mendukung sebagian besar fitur ALB Ingress, kecuali satu pengecualian: pemisahan lalu lintas berdasarkan bobot dan rilis canary tidak dapat digunakan secara bersamaan dalam mode multi-kluster.
| Fitur | Mode kluster tunggal | Mode multi-kluster |
|---|---|---|
| Pemisahan traffic berdasarkan bobot + rilis canary secara simultan | Didukung | Tidak didukung |
Untuk daftar lengkap anotasi yang didukung, lihat Anotasi yang didukung oleh ALB Ingress.
Konfigurasi AlbConfig
Buat AlbConfig dengan anotasi alb.ingress.kubernetes.io/remote-clusters untuk mengaitkan kluster dengan instans ALB.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: ackone-gateway-demo
annotations:
# Tentukan ID kluster yang terkait dengan gerbang multi-kluster ALB ini.
alb.ingress.kubernetes.io/remote-clusters: ${cluster1},${cluster2}
spec:
config:
name: one-alb-demo
addressType: Internet
addressAllocatedMode: Fixed
zoneMappings:
- vSwitchId: ${vsw-id1}
- vSwitchId: ${vsw-id2}
listeners:
- port: 8001
protocol: HTTPGanti placeholder berikut dengan nilai aktual:
| Placeholder | Deskripsi |
|---|---|
${cluster1},${cluster2} | ID kluster yang terkait dengan instans Fleet Anda |
${vsw-id1}, ${vsw-id2} | ID vSwitch di zona tempat instans ALB ditempatkan |
Tabel berikut menjelaskan parameter utama:
| Parameter | Wajib | Deskripsi |
|---|---|---|
metadata.name | Ya | Nama AlbConfig. |
metadata.annotations: alb.ingress.kubernetes.io/remote-clusters | Ya | Daftar ID kluster yang dipisahkan koma untuk ditambahkan ke gerbang multi-kluster ALB. Kluster tersebut harus sudah terkait dengan instans Fleet. |
spec.config.name | Tidak | Nama instans ALB. |
spec.config.addressType | Tidak | Jenis jaringan instans ALB. Nilai yang valid: Internet (default) — instans ALB dapat diakses melalui internet dan memerlukan elastic IP address (EIP) terkait; Intranet — instans ALB hanya dapat diakses dalam VPC. Saat menggunakan Internet, Anda dikenai biaya instans serta biaya bandwidth atau transfer data untuk EIP terkait. Untuk detail harga, lihat Pay-as-you-go. |
spec.config.zoneMappings | Ya | ID vSwitch untuk zona tempat instans ALB ditempatkan. vSwitch harus berada di zona yang didukung ALB dan dalam VPC yang sama dengan kluster. Jika wilayah mendukung dua zona atau lebih, tentukan vSwitch di minimal dua zona untuk ketersediaan tinggi. Untuk wilayah dan zona yang didukung, lihat Wilayah dan zona. Untuk petunjuk membuat vSwitch, lihat Buat dan kelola vSwitch. |
spec.listeners | Tidak | Port dan protokol pendengar (listener). Contoh di atas mengonfigurasi listener HTTP pada port 8001. Listener mendefinisikan cara instans ALB menerima traffic. Sertakan listener dalam AlbConfig; jika tidak, buat secara manual sebelum menggunakan ALB Ingress. |
Untuk daftar lengkap bidang AlbConfig, lihat Kamus GlobalConfiguration ALB Ingress. Untuk contoh konfigurasi, lihat Konfigurasi instans dan listener ALB.
Langkah selanjutnya
Konfigurasikan aturan routing Ingress untuk gerbang multi-kluster Anda: Konfigurasi Ingress
Pelajari tentang manajemen Service di ACK: Manajemen Service