Anda dapat menyetel parameter Listeners dari sebuah AlbConfig untuk mengonfigurasi pendengar pada instance Application Load Balancer (ALB). Topik ini menjelaskan parameter Listeners dan cara menggunakan AlbConfig untuk membuat, memodifikasi, serta memperbarui pendengar.
Prasyarat
Sebuah kluster ACS telah dibuat. Untuk informasi lebih lanjut, lihat Buat kluster ACS.
Dua vSwitch yang berada di zona berbeda telah dibuat dan ditempatkan dalam virtual private cloud (VPC) yang sama dengan kluster ACK. Pastikan zona didukung oleh Application Load Balancer (ALB). Untuk informasi lebih lanjut, lihat Buat dan kelola vSwitches.
Kontroler Ingress ALB telah diinstal di kluster ACS. Untuk informasi lebih lanjut, lihat Kelola kontroler Ingress ALB.
Sebuah AlbConfig dan IngressClass telah dibuat. Untuk informasi lebih lanjut, lihat Buat AlbConfig dan Buat IngressClass.
Sebuah klien kubectl terhubung ke kluster. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dari kluster dan gunakan kubectl untuk terhubung ke kluster.
Deskripsi parameter Listeners
Istilah
File konfigurasi objek: File yang mendefinisikan konfigurasi objek Kubernetes.
File konfigurasi objek live: File konfigurasi objek yang telah diterapkan di kluster Kubernetes.
last-applied-configuration: Anotasi objek Kubernetes. Anotasi mencatat konten konfigurasi terbaru dari objek tersebut. Anotasi tidak diperbarui secara real-time ketika konfigurasi objek diperbarui.
Metode pembaruan untuk parameter Listeners
Parameter Listeners bertipe array. Dalam kebanyakan kasus, Anda dapat memperbarui parameter Listeners dengan mengganti bidang dalam array. Saat memperbarui parameter Listeners, bidang tersebut diganti dengan bidang baru yang Anda tentukan. Tabel berikut menjelaskan aturan tersebut.
No. | Kondisi | Hasil | ||
Pendengar ada di file konfigurasi objek | Pendengar ada di file konfigurasi objek live | Pendengar ada di anotasi last-applied-configuration | ||
1 | Ya | Ya | - (Tidak relevan) | Pendengar dipertahankan di file konfigurasi objek live. |
2 | Ya | Tidak | - (Tidak relevan) | Pendengar ditambahkan ke file konfigurasi objek live. |
3 | Tidak | - (Tidak relevan) | Ya | Pendengar dihapus dari file konfigurasi objek live. Namun, bidang pendengar mungkin diatur ulang ke pengaturan default. |
4 | Tidak | Ya | Tidak | Pendengar dihapus dari file konfigurasi objek live. |
Contoh
Contoh berikut menunjukkan isi file konfigurasi objek, file konfigurasi objek live, dan anotasi last-applied-configuration:
Isi file konfigurasi objek.
listeners: - port: 8001 protocol: HTTP - port: 8003 protocol: HTTP - port: 8005 # Tambahkan port 8005. protocol: HTTPIsi file konfigurasi objek live.
listeners: - port: 8001 protocol: HTTP - port: 8002 # Hapus port 8002. protocol: HTTP - port: 8003 protocol: HTTP - port: 8004 # Hapus port 8004. protocol: HTTPIsi anotasi
last-applied-configuration.listeners: - port: 8001 protocol: HTTP - port: 8002 # Hapus port 8002. protocol: HTTP - port: 8003 protocol: HTTP
Blok kode berikut menunjukkan konfigurasi parameter Listeners setelah diperbarui:
listeners:
- port: 8001
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8005
protocol: HTTPTabel berikut menjelaskan parameter-parameter tersebut.
Port | Aturan | Hasil |
8001 | Port 8001 dan port 8003 sesuai dengan Aturan 1, yang berarti kondisi berikut terpenuhi:
| Dipertahankan |
8003 | ||
8005 | Port 8005 sesuai dengan Aturan 2, yang berarti kondisi berikut terpenuhi:
| Ditambahkan |
8002 | Port 8002 sesuai dengan Aturan 3, yang berarti kondisi berikut terpenuhi:
| Dihapus |
8004 | Port 8004 sesuai dengan Aturan 4, yang berarti kondisi berikut terpenuhi:
| Dihapus |
Buat pendengar
Instance ALB menggunakan pendengar untuk menerima dan meneruskan permintaan eksternal berdasarkan informasi lapisan aplikasi dari permintaan tersebut.
Jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Anda dapat mengonfigurasi parameter port dan protocol untuk membuat pendengar. Parameter port dan protocol adalah satu-satunya pengenal pendengar. Jika Anda memodifikasi parameter port atau protocol, sistem akan menghapus pendengar asli dan membuat pendengar berdasarkan konfigurasi baru.
HTTP kompatibel dengan WebSocket. Tidak diperlukan konfigurasi tambahan.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
...
listeners:
- port: 80
protocol: HTTP # Nilai valid: HTTP, HTTPS, dan QUIC.
...Tentukan sertifikat
Untuk mengaktifkan enkripsi dan otentikasi pada pendengar HTTPS saat membuat instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, tentukan ID sertifikat di parameter certificates dari AlbConfig.
Jika Anda tidak menentukan sertifikat di parameter tersebut, tidak ada pendengar HTTPS yang dibuat saat sistem membuat instance ALB. Sistem menunggu hingga Ingress dikaitkan dengan pendengar dan Ingress secara otomatis menemukan sertifikat berdasarkan nama domain yang ditentukan dalam konfigurasi Ingress. Ini berarti pembuatan pendengar tertunda karena penemuan otomatis sertifikat berdasarkan nama domain.
Untuk informasi lebih lanjut tentang cara mengonfigurasi sertifikat, lihat Konfigurasikan sertifikat HTTPS untuk komunikasi terenkripsi.
ALB menggunakan sertifikat pertama yang Anda tentukan sebagai sertifikat default. ALB menggunakan sertifikat default untuk mengenkripsi permintaan hingga sertifikat kedaluwarsa atau tidak lagi memenuhi persyaratan. Dalam hal ini, ALB menggunakan sertifikat lain untuk mengenkripsi permintaan.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
...
listeners:
- caEnabled: false
certificates:
- CertificateId: 756****-cn-hangzhou # ID sertifikat.
IsDefault: true
port: 443
protocol: HTTPS
...Konfigurasikan kebijakan keamanan TLS kustom
Untuk mengonfigurasi kebijakan keamanan TLS kustom, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Kemudian, konfigurasikan parameter securityPolicyId untuk menentukan ID kebijakan keamanan. Anda dapat menentukan kebijakan keamanan TLS saat mengonfigurasi pendengar HTTPS di AlbConfig. Kebijakan keamanan TLS kustom dan default didukung. Untuk informasi lebih lanjut, lihat Kebijakan Keamanan TLS.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
...
listeners:
- port: 443
protocol: HTTPS
securityPolicyId: tls_cipher_policy_1_1 # ID kebijakan keamanan.
...Tetapkan periode batas waktu koneksi untuk pendengar
Untuk menetapkan periode batas waktu koneksi untuk pendengar, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Kemudian, konfigurasikan parameter requestTimeout. Ini mencegah klien menunggu respons terlalu lama.
Jika server backend tidak merespons dalam periode batas waktu setelah klien mengirimkan permintaan ke server, ALB mengembalikan kode kesalahan HTTP 504 ke klien.
Nilai valid untuk requestTimeout: 1 hingga 180. Unit: detik.
Nilai default untuk requestTimeout: 60.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
requestTimeout: 60 # Periode batas waktu koneksi untuk pendengar. Nilai valid: 1 hingga 180. Jika Anda meninggalkan parameter kosong, nilai default digunakan.
...Konfigurasikan kompresi data
Kompresi data dapat mengurangi ukuran file untuk meningkatkan efisiensi transmisi dan kinerja jaringan. Untuk mengonfigurasi kompresi data, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Kemudian, konfigurasikan parameter gzipEnabled untuk mengaktifkan kompresi data untuk pendengar. Brotli dan Gzip adalah dua algoritma kompresi yang umum digunakan.
Brotli mendukung semua jenis file.
Gzip mendukung jenis file berikut: text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml, dan application/json.
Blok kode berikut menyediakan contoh konfigurasi AlbConfig yang menonaktifkan kompresi data:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
gzipEnabled: false # Nilai true mengaktifkan kompresi data untuk jenis file tertentu. Nilai false menonaktifkan kompresi data.
...Pertahankan alamat IP klien
Untuk mempertahankan alamat IP klien, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Kemudian, konfigurasikan parameter X-Forwarded-For untuk mengaktifkan pelestarian alamat IP klien.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForEnabled: true # Nilai true mengaktifkan pelestarian alamat IP klien. Nilai false menonaktifkan pelestarian alamat IP klien.
...Ambil protokol pendengaran yang digunakan oleh instance ALB
Untuk mengambil protokol pendengaran yang digunakan oleh instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, konfigurasikan parameter X-Forwarded-For untuk mengambil protokol pendengaran yang digunakan oleh instance ALB.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForProtoEnabled: true # Nilai true mengambil protokol pendengaran yang digunakan oleh instance ALB. Nilai true tidak mengambil protokol pendengaran yang digunakan oleh instance ALB.
...Ambil ID instance ALB
Untuk mengambil ID instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, konfigurasikan parameter XForwardedForSLBIdEnabled untuk mengambil ID instance ALB.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForSLBIdEnabled: true # Nilai true mengambil ID instance ALB. Nilai true tidak mengambil ID instance ALB.
...Ambil port pendengaran instance ALB
Untuk mengambil port pendengaran instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, konfigurasikan parameter XForwardedForSLBPortEnabled untuk mengambil port pendengaran instance ALB.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForSLBPortEnabled: true # Nilai true mengambil port pendengaran instance ALB. Nilai false tidak mengambil port pendengaran instance ALB.
...Tentukan alamat IP proksi tepercaya
Untuk menentukan alamat IP proksi tepercaya untuk instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Konfigurasikan parameter XForwardedForClientSourceIpsEnabled untuk mengizinkan instance ALB mengambil alamat IP klien dari header X-Forwarded-For. Kemudian, konfigurasikan parameter XForwardedForClientSourceIpsTrusted untuk menentukan daftar alamat IP proksi tepercaya. Dengan cara ini, instance ALB melintasi alamat IP di header X-Forwarded-For dari alamat IP paling kanan ke alamat IP paling kiri. Alamat IP pertama yang tidak ada dalam daftar alamat IP tepercaya dianggap sebagai alamat IP klien. Permintaan dari alamat IP klien dibatasi.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForClientSourceIpsEnabled: true # Nilai true mengizinkan instance ALB mengambil alamat IP klien dari header X-Forwarded-For. Jika Anda menetapkan nilai ke true, Anda harus mengonfigurasi parameter XForwardedForClientSourceIpsTrusted dalam format yang valid. Nilai false melarang instance ALB mengambil alamat IP klien dari header X-Forwarded-For.
XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16 # Masukkan alamat IP atau blok CIDR yang valid. Parameter ini hanya berlaku jika XForwardedForClientSourceIpsEnabled disetel ke true.
...Konfigurasikan ACL jaringan
Untuk mengonfigurasi daftar kontrol akses jaringan (ACL) untuk pendengar instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, konfigurasikan parameter aclConfig untuk mengaktifkan ACL jaringan. Ini memungkinkan Anda menerapkan kontrol akses granular pada permintaan klien. Anda dapat mengonfigurasi ACL jaringan untuk mengizinkan atau menolak akses dari alamat IP atau blok CIDR tertentu. Untuk informasi lebih lanjut, lihat Konfigurasikan ACL untuk mengaktifkan kontrol akses.
apiVersion: alibabacloud.com/v1kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTPS
aclConfig: # Aktifkan ACL jaringan untuk pendengar.
aclEntries:
- 127.0.0.1/32 # Blok CIDR yang ingin Anda tambahkan ke aturan ACL untuk kontrol akses.
aclType: White # Jenis ACL jaringan. Nilai valid: Black (daftar hitam) dan White (daftar putih).
...Hapus pendengar
Sebuah instance ALB mungkin memiliki beberapa pendengar. Untuk menghapus pendengar dari instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, hapus pendengar dari parameter albconfig.spec.listeners.
Sebelum menghapus pendengar, Anda harus melepas semua Ingress dari pendengar tersebut. Jika tidak, Anda gagal menghapus pendengar dan sistem akan menampilkan kesalahan.
# Sebelum penghapusan.
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # Hapus port pendengaran 8002.
protocol: HTTP
# Setelah penghapusan.
listeners:
- port: 8001
protocol: HTTP