Anda dapat menyetel parameter Listeners dalam sebuah AlbConfig untuk mengonfigurasi listener pada instance Application Load Balancer (ALB). Topik ini menjelaskan parameter Listeners dan cara menggunakan AlbConfig untuk membuat, memodifikasi, serta memperbarui listener.
Prasyarat
Dua vSwitch yang berada di zona berbeda telah dibuat dan diterapkan dalam virtual private cloud (VPC) yang sama dengan klaster ACK. Pastikan zona didukung oleh Application Load Balancer (ALB). Untuk informasi lebih lanjut, lihat Buat dan Kelola vSwitches.
Kontroler Ingress ALB telah diinstal di klaster. Untuk informasi lebih lanjut, lihat Kelola Kontroler Ingress ALB.
CatatanUntuk menggunakan ALB Ingress untuk mengakses Layanan yang diterapkan di klaster khusus ACK, Anda perlu memberikan izin yang diperlukan oleh kontroler Ingress ALB kepada klaster tersebut terlebih dahulu. Untuk informasi lebih lanjut, lihat Otorisasi Klaster Khusus ACK untuk Mengakses Kontroler Ingress ALB.
Sebuah AlbConfig telah dibuat. Untuk informasi lebih lanjut, lihat Buat Sebuah AlbConfig.
Klien kubectl telah terhubung ke klaster ACK. Untuk informasi lebih lanjut, lihat Dapatkan File kubeconfig dari Klaster dan Gunakan kubectl untuk Terhubung ke Klaster.
Deskripsi parameter Listeners
Istilah
File Konfigurasi Objek: File yang mendefinisikan konfigurasi objek Kubernetes.
File Konfigurasi Objek Live: File konfigurasi objek yang telah diterapkan di klaster Kubernetes.
last-applied-configuration: Anotasi objek Kubernetes. Anotasi mencatat konten konfigurasi terbaru dari objek. 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-bidang diganti dengan bidang baru yang Anda tentukan. Tabel berikut menjelaskan aturan-aturan tersebut.
No. | Kondisi | Hasil | ||
Listener ada di file konfigurasi objek | Listener ada di file konfigurasi objek live | Listener ada di anotasi last-applied-configuration | ||
1 | Ya | Ya | - (Tidak relevan) | Listener dipertahankan di file konfigurasi objek live. |
2 | Ya | Tidak | - (Tidak relevan) | Listener ditambahkan ke file konfigurasi objek live. |
3 | Tidak | - (Tidak relevan) | Ya | Listener dihapus dari file konfigurasi objek live. Namun, bidang listener mungkin diatur ulang ke pengaturan default. |
4 | Tidak | Ya | Tidak | Listener 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: HTTP
# Isi 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: HTTP
# Isi anotasi last-applied-configuration.
listeners:
- port: 8001
protocol: HTTP
- port: 8002 # Hapus port 8002.
protocol: HTTP
- port: 8003
protocol: HTTPBlok kode berikut menunjukkan konfigurasi parameter Listeners setelah diperbarui:
# Konfigurasi parameter Listeners.
listeners:
- port: 8001
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8005
protocol: HTTPPort 8001 dan port 8003 sesuai dengan Aturan 1. Oleh karena itu, mereka dipertahankan.
Port 8005 sesuai dengan Aturan 2. Oleh karena itu, ia ditambahkan.
Port 8002 sesuai dengan Aturan 3. Oleh karena itu, ia dihapus.
Port 8004 sesuai dengan Aturan 4. Oleh karena itu, ia dihapus.
Buat listener
Instance ALB menggunakan listener untuk menerima dan meneruskan permintaan eksternal berdasarkan informasi lapisan aplikasi dari permintaan.
Jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Anda dapat mengonfigurasi parameter port dan protocol untuk membuat listener. Parameter port dan protocol adalah pengenal utama listener. Jika Anda memodifikasi parameter port atau protocol, sistem akan menghapus listener asli dan membuat listener baru berdasarkan konfigurasi terbaru.
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
Jika Anda ingin mengaktifkan enkripsi dan otentikasi untuk listener 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 listener HTTPS yang dibuat saat sistem membuat instance ALB. Sistem menunggu hingga Ingress terasosiasi dengan listener dan Ingress secara otomatis menemukan sertifikat berdasarkan nama domain yang ditentukan dalam konfigurasi Ingress. Ini berarti pembuatan listener tertunda karena penemuan otomatis sertifikat berdasarkan nama domain.
Untuk informasi lebih lanjut tentang cara mengonfigurasi sertifikat, lihat Konfigurasikan Sertifikat untuk Komunikasi Terenkripsi melalui HTTPS.
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
Jika Anda ingin 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 listener 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 listener
Jika Anda ingin menetapkan periode batas waktu koneksi untuk listener, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Kemudian, konfigurasikan parameter requestTimeout.
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 listener. Nilai valid: 1 hingga 180. Jika Anda biarkan parameter kosong, nilai default digunakan.
...Konfigurasikan tag listener
Jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk mengedit file AlbConfig. Tambahkan parameter tags di bawah bagian konfigurasi listener. Contoh konfigurasi:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default1
spec:
config:
name: alb-test1
addressType: Internet
zoneMappings:
- vSwitchId: vsw-rj9qsvwfjcmtbyvt0xxx
- vSwitchId: vsw-rj99o3wge24iq2ehtxxx
listeners:
- port: 80
protocol: HTTP
tags:
- key: "key"
value: "value1"Konfigurasikan kompresi data
Kompresi data dapat mengurangi ukuran file untuk meningkatkan efisiensi transmisi dan kinerja jaringan. Jika Anda ingin mengonfigurasi kompresi data, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig. Kemudian, konfigurasikan parameter gzipEnabled untuk mengaktifkan kompresi data untuk listener. 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.
Hanya jika nilai
Content-Lengthdalam respons melebihi 1.024 byte, kompresi data dipicu.
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.
Parameter ini tersedia untuk listener HTTP dan HTTPS.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForEnabled: true # Parameter ini tidak dapat disetel ke false.
...Ambil protokol pendengaran yang digunakan oleh instance ALB
Jika Anda ingin 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.
Parameter ini tersedia untuk listener HTTP dan HTTPS.
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
Jika Anda ingin 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.
Parameter ini tersedia untuk listener HTTP dan HTTPS.
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
Jika Anda ingin 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.
Parameter ini tersedia untuk listener HTTP dan HTTPS.
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
Jika Anda ingin 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.
Parameter ini tersedia untuk listener HTTP dan HTTPS.
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 nilainya 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 saat XForwardedForClientSourceIpsEnabled disetel ke true.
...Konfigurasikan ACL jaringan
Jika Anda ingin mengonfigurasi daftar kontrol akses jaringan (ACL) untuk listener 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/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
aclConfig: # Aktifkan ACL jaringan untuk listener.
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 listener
Instance ALB mungkin memiliki beberapa listener. Untuk menghapus listener instance ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk memodifikasi AlbConfig yang digunakan untuk mengonfigurasi instance ALB. Kemudian, hapus listener dari parameter albconfig.spec.listeners.
Sebelum Anda menghapus listener, Anda harus memutuskan semua Ingress dari listener tersebut. Jika tidak, Anda akan gagal menghapus listener 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