全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan AlbConfigs untuk mengonfigurasi listener ALB

更新时间:Jul 06, 2025

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

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: HTTP

Blok kode berikut menunjukkan konfigurasi parameter Listeners setelah diperbarui:

# Konfigurasi parameter Listeners.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005
    protocol: HTTP
  • Port 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.

Catatan

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.

Penting

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-Length dalam 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.

Penting

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.

Penting

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.

Penting

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.

Penting

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.

Penting

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.

Penting

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