All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan instans ALB dengan AlbConfig

Last Updated:Jun 18, 2026

Buat, konfigurasikan, dan gunakan kembali instans ALB serta pendengar melalui CRD AlbConfig, dengan dukungan IPv6, log akses Simple Log Service (SLS), kebijakan TLS, dan ACL jaringan.

Prasyarat

Untuk menggunakan ALB Ingress dengan cluster khusus ACK, berikan izin yang diperlukan ke kluster terlebih dahulu.

Catatan penggunaan

  • Untuk memodifikasi konfigurasi resource, gunakan kubectl edit. Jika Anda menggunakan kubectl apply, jalankan kubectl diff terlebih dahulu untuk melihat pratinjau perubahan sebelum menerapkannya.

  • Jika kluster Anda menggunakan plugin jaringan Flannel, layanan backend untuk ALB Ingress harus bertipe NodePort atau LoadBalancer.

Parameter utama sekilas

Parameter AlbConfig yang umum digunakan:

Parameter

Tipe

Bawaan

Hanya saat pembuatan

Deskripsi

spec.config.name

string

Tidak

Nama instans ALB

spec.config.addressAllocatedMode

string

Dynamic

Tidak

Mengatur mode IP instans ALB. Nilai yang valid: Dynamic (mode IP dinamis, bawaan) dan Fixed (mode IP tetap).

spec.config.addressType

string

Internet

Ya

Internet (publik) atau Intranet (internal-VPC)

spec.config.addressIpVersion

string

Ya

Atur ke DualStack untuk mengaktifkan IPv4/IPv6 dual stack

spec.config.zoneMappings

array

Ya

ID vSwitch (minimal dua, di zona berbeda)

spec.config.edition

string

Standard

Tidak

Edisi Instance ALB

spec.config.id

string

Tidak

ID instans ALB yang ada untuk digunakan kembali

spec.config.forceOverride

boolean

false

Tidak

Apakah akan menimpa atribut instans ALB yang digunakan kembali

spec.config.listenerForceOverride

boolean

false

Tidak

Apakah akan menimpa atribut pendengar dari instans yang digunakan kembali

spec.config.accessLogConfig.logProject

string

Tidak

Proyek log SLS

spec.config.accessLogConfig.logStore

string

Tidak

Logstore SLS (harus diawali dengan alb_)

spec.config.billingConfig.bandWidthPackageId

string

Tidak

ID instans Internet Shared Bandwidth

spec.listeners[].port

integer

Tidak

Port pendengar

spec.listeners[].protocol

string

Tidak

HTTP, HTTPS, atau QUIC

spec.listeners[].requestTimeout

integer

60

Tidak

Timeout respons backend dalam detik (1–600)

spec.listeners[].gzipEnabled

boolean

false

Tidak

Aktifkan kompresi Gzip/Brotli

Konfigurasi instans ALB

Buat AlbConfig

Setiap AlbConfig mengonfigurasi satu instans ALB. Untuk menggunakan beberapa instans ALB, buat satu AlbConfig untuk setiap instans.

Penting

Saat Anda menginstal ALB Ingress Controller dan memilih Create atau Select Existing untuk Gateway Source, controller secara otomatis membuat AlbConfig bernama alb dan IngressClass bernama alb.

  1. Buat alb.yaml dengan konten berikut:

    Parameter

    Deskripsi

    spec.config.name

    Nama instans ALB.

    spec.config.addressType

    Internet (bawaan): IP publik. Intranet: hanya internal-VPC. Hanya saat pembuatan; tidak dapat diubah nanti.

    spec.config.zoneMappings

    Minimal dua vSwitch di zona yang didukung ALB berbeda, dalam VPC yang sama dengan kluster. Hanya saat pembuatan; tidak dapat diubah nanti. Wilayah single-zone hanya memperbolehkan satu vSwitch.

    spec.config.zoneMappings[].allocationId

    (Opsional) ID EIP untuk diasosiasikan dengan instans ALB. Jika dihilangkan, EIP BGP (multi-ISP) bayar sesuai penggunaan dibuat secara otomatis. Hanya EIP bayar sesuai penggunaan (bayar-berdasarkan-transfer-data) yang tidak berada dalam instans Internet Shared Bandwidth yang didukung. EIP untuk zona berbeda harus bertipe sama.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # Ganti dengan ID vSwitch Anda.
          allocationId: eip-asdfas****            # Ganti dengan ID EIP Anda. Jika dihilangkan, EIP ditetapkan secara otomatis.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
          allocationId: eip-dpfmss****
      listeners:
        - port: 80
          protocol: HTTP

    Pengaturan AlbConfig bawaan (kecuali vSwitchId):

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:
        - vSwitchId: #...
        - vSwitchId: #...
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. Terapkan konfigurasi:

    kubectl apply -f alb.yaml

    Output yang diharapkan:

    AlbConfig.alibabacloud.com/alb created
  3. Verifikasi AlbConfig:

    PORT&PROTOCOL dan CERTID kosong hingga Anda mengonfigurasi pendengar HTTPS dan sertifikat.
    kubectl get AlbConfig

    Output yang diharapkan:

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m

Perbarui AlbConfig

  1. Daftar AlbConfig Anda:

    kubectl get AlbConfig
  2. Edit AlbConfig:

    kubectl edit albconfig <ALBCONFIG_NAME>

    Sebagai contoh, untuk mengganti nama instans ALB menjadi new_alb:

    spec:
      config:
        name: new_alb

Hapus AlbConfig

Menghapus AlbConfig akan menghapus instans ALB yang terkait.

Penting

Hapus semua Ingress yang diasosiasikan dengan AlbConfig sebelum menghapusnya.

kubectl delete AlbConfig <AlbConfig_NAME>

Bind instans Internet Shared Bandwidth

Untuk mengikat instans Internet Shared Bandwidth ke instans ALB, atur billingConfig.bandWidthPackageId:

Ini hanya berlaku untuk instans ALB yang menghadap internet. Untuk membeli instans Internet Shared Bandwidth, lihat Buat Internet Shared Bandwidth.
spec:
  config:
    name: alb
    addressType: Internet
    edition: Standard
    zoneMappings:
    - vSwitchId: vsw-2vcqeyvwsnd***
    - vSwitchId: vsw-2vcbhjlqu7y***
    billingConfig:
      bandWidthPackageId: cbwp-2vcjucp49otd8qolhm***

Buat dan gunakan beberapa instans ALB

Untuk menggunakan beberapa instans ALB, buat AlbConfig dan IngressClass terpisah untuk setiap instans.

  1. Buat alb-2.yaml:

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. Terapkan:

    kubectl apply -f alb-2.yaml
  3. Buat ingress_class2.yaml:

    Kluster v1.19 dan lebih baru

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2

    Kluster sebelum v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2
  4. Terapkan:

    kubectl apply -f ingress_class2.yaml
  5. Buat ingress2.yaml. Atur ingressClassName ke IngressClass untuk instans ALB target:

    Kluster v1.19 dan lebih baru

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port:
                  number: 80

    Kluster sebelum v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  6. Terapkan:

    kubectl apply -f ingress2.yaml

Asosiasikan AlbConfig dengan Ingress menggunakan IngressClass

Gunakan IngressClass untuk mengikat AlbConfig ke ALB Ingress.

Buat IngressClass

Buat ingress_class.yaml:

Kluster v1.19 dan lebih baru

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: alb
spec:
  controller: ingress.k8s.alibabacloud/alb
  parameters:
    apiGroup: alibabacloud.com
    kind: AlbConfig
    name: alb

Kluster sebelum v1.19

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: alb
spec:
  controller: ingress.k8s.alibabacloud/alb
  parameters:
    apiGroup: alibabacloud.com
    kind: AlbConfig
    name: alb

Terapkan:

kubectl apply -f ingress_class.yaml

Output yang diharapkan:

ingressclass.networking.k8s.io/alb created

Buat Ingress yang mereferensikan IngressClass

Buat ingress.yaml dan atur ingressClassName ke nama IngressClass:

Kluster v1.19 dan lebih baru

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /tea
        pathType: ImplementationSpecific
        backend:
          service:
            name: tea-svc
            port:
              number: 80
      - path: /coffee
        pathType: ImplementationSpecific
        backend:
          service:
            name: coffee-svc
            port:
              number: 80

Kluster sebelum v1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80

Terapkan:

kubectl apply -f ingress.yaml

Output yang diharapkan:

ingress.networking.k8s.io/cafe-ingress created

Manajemen instans ALB yang digunakan kembali

Gunakan kembali instans ALB yang ada

Atur spec.config.id untuk menggunakan kembali instans ALB yang ada. Instans Standard dan instans yang diaktifkan WAF dari Konsol ALB didukung; instans Basic tidak dapat digunakan kembali. Satu instans ALB hanya dapat digunakan kembali oleh satu kluster.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: ****
    forceOverride: false
    listenerForceOverride: false

Cara interaksi antara id, forceOverride, dan listenerForceOverride:

id

forceOverride

listenerForceOverride

Hasil

Tidak diatur

Instans ALB tidak digunakan kembali. forceOverride dan listenerForceOverride tidak berpengaruh.

Atur

true

Atribut instans ALB dan pendengar ditimpa.

Atur

false

false

Saat listenerForceOverride bernilai false, ALB Ingress Controller hanya mengelola pendengar yang dibuat secara otomatis oleh AlbConfig (bernama ingress-auto-listener-{port}). Pendengar yang dibuat secara manual tidak dikelola oleh AlbConfig.

Atur

false

true

Atribut instans ALB tidak ditimpa. Controller mengelola semua pendengar. Keberadaan dan konfigurasi pendengar ditentukan oleh AlbConfig.

Penting

Jangan mengganti nama pendengar pada instans ALB yang digunakan kembali. Pendengar bernama ingress-auto-listener-{port} dikelola oleh ACK; pendengar dengan nama lain dikelola di Konsol ALB.

Hapus AlbConfig dari instans ALB yang digunakan kembali

Menghapus AlbConfig dari instans ALB yang digunakan kembali tidak menghapus instans ALB itu sendiri.

  1. Untuk ALB Ingress Controller 2.10.0-aliyun.1 atau lebih lama: jalankan kubectl edit untuk menghapus semua entri dari spec.listeners, yang akan menghapus pendengar yang dikonfigurasi melalui AlbConfig. Untuk versi lebih baru dari 2.10.0-aliyun.1, lewati langkah ini.

  2. Hapus semua Ingress yang diasosiasikan dengan AlbConfig, lalu hapus AlbConfig:

    kubectl delete AlbConfig <AlbConfig_NAME>

Konfigurasi lanjutan

Aktifkan SLS untuk mengumpulkan log akses

Atur logProject dan logStore dalam spec.config.accessLogConfig:

spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
Nilai logStore harus diawali dengan alb_. Jika Logstore yang ditentukan tidak ada, yang baru akan dibuat secara otomatis.
Temukan proyek log di Konsol ACK di bagian Cluster Information > Basic Information.
Untuk mengaktifkan SLS pada instans ALB yang digunakan kembali, atur forceOverride: true.

Setelah diaktifkan, klik nama proyek di samping Log Service Project pada Basic Information untuk melihat log di SLS.

Aktifkan IPv6

Atur addressIpVersion: DualStack untuk mengaktifkan IPv4/IPv6 dual stack:

Penting

addressIpVersion hanya berlaku saat pembuatan dan tidak dapat diubah nanti.

spec:
  config:
    addressIpVersion: DualStack

Konfigurasi pendengar

Buat pendengar

Atur port dan protocol dalam spec.listeners untuk menentukan cara ALB menerima traffic. Protokol yang didukung: HTTP, HTTPS, dan Quick UDP Internet Connections (QUIC).

Penting

Memodifikasi port atau protocol akan menghapus pendengar yang ada dan membuat yang baru. Untuk mengonfigurasi beberapa pendengar dengan protokol berbeda, tambahkan anotasi yang diperlukan ke Ingress Anda.

Pendengar HTTP

spec:
  listeners:
    - port: 80
      protocol: HTTP
HTTP mendukung WebSocket secara native. Tidak diperlukan konfigurasi tambahan.

Pendengar HTTPS

spec:
  listeners:
    - port: 443
      protocol: HTTPS
Penting

Pendengar HTTPS memerlukan sertifikat.

Pendengar QUIC

spec:
  listeners:
    - port: 443
      protocol: QUIC
Penting

Pendengar QUIC menerima permintaan HTTP/3 dari klien.

Tentukan sertifikat

Untuk menambahkan sertifikat ke pendengar HTTPS, jalankan kubectl edit albconfig <Albconfig_Name> dan atur bidang certificates:

spec:
  listeners:
  - caEnabled: false
    certificates:
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
    port: 443
    protocol: HTTPS

Jika tidak ada sertifikat bawaan yang ditentukan, ALB Ingress menggunakan sertifikat pertama sebagai bawaan.

Jika tidak ada sertifikat yang ditentukan, pembuatan pendengar ditunda hingga Ingress diasosiasikan dan sertifikat ditemukan secara otomatis berdasarkan nama domain.

Lihat Konfigurasikan sertifikat HTTPS untuk komunikasi terenkripsi.

Hapus pendengar

Jalankan kubectl edit albconfig <Albconfig_Name> dan hapus entri pendengar dari spec.listeners.

Penting

Putuskan asosiasi semua Ingress dari pendengar sebelum menghapusnya. Jika tidak, penghapusan akan gagal dengan error.

Sebagai contoh, untuk menghapus pendengar pada port 8002:

# Sebelum
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP

# Setelah
listeners:
- port: 8001
  protocol: HTTP

Cara pembaruan pendengar bekerja

Array listeners direkonsiliasi dengan membandingkan konfigurasi baru terhadap status live dan anotasi last-applied-configuration:

Dalam konfigurasi baru

Dalam konfigurasi live

Dalam last-applied-configuration

Hasil

Ya

Ya

Pendengar dipertahankan.

Ya

Tidak

Pendengar ditambahkan.

Tidak

Ya

Pendengar dihapus. Bidang mungkin diatur ulang ke nilai bawaan.

Tidak

Ya

Tidak

Pendengar dihapus.

Contoh:

Diberikan tiga status berikut:

# Konfigurasi baru
listeners:
- port: 8001
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8005  # Baru
  protocol: HTTP

# Konfigurasi live
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8004
  protocol: HTTP

# last-applied-configuration
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP

Setelah menerapkan konfigurasi baru:

listeners:
- port: 8001  # Dipertahankan (ada di konfigurasi baru dan live)
  protocol: HTTP
- port: 8003  # Dipertahankan (ada di konfigurasi baru dan live)
  protocol: HTTP
- port: 8005  # Ditambahkan (ada di konfigurasi baru, tidak ada di live)
  protocol: HTTP
# Port 8002: dihapus (tidak ada di konfigurasi baru, ada di last-applied-configuration)
# Port 8004: dihapus (tidak ada di konfigurasi baru, ada di live, tidak ada di last-applied-configuration)

Atur periode timeout koneksi

Atur requestTimeout untuk mengontrol berapa lama ALB menunggu respons backend sebelum mengembalikan HTTP 504 ke klien. Rentang valid: 1–600 detik. Bawaan: 60 detik.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40

Konfigurasi pendengar lanjutan

Konfigurasikan kompresi data

Atur gzipEnabled: true untuk mengaktifkan kompresi. Semua tipe file mendukung kompresi Brotli. Tipe file berikut juga mendukung kompresi Gzip: text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml, dan application/json.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true

Pertahankan alamat IP klien

ALB menambahkan alamat IP klien ke header X-Forwarded-For sebelum meneruskan permintaan ke backend.

Penting

Tersedia hanya untuk pendengar HTTP dan HTTPS.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # Parameter ini tidak dapat diatur ke false.

Ambil metadata koneksi klien

Gunakan xForwardedForConfig untuk menambahkan metadata klien dan pendengar ke header permintaan yang diteruskan ke backend. Semua bidang di bawah tersedia untuk pendengar HTTP dan HTTPS.

Bidang

Saat diatur ke true

XForwardedForClientSrcPortEnabled

Menambahkan port yang digunakan klien untuk terhubung ke instans ALB.

XForwardedForProtoEnabled

Menambahkan protokol pendengar yang digunakan oleh instans ALB.

XForwardedForSLBIdEnabled

Menambahkan ID instans ALB.

XForwardedForSLBPortEnabled

Menambahkan port pendengaran instans ALB.

Contoh — tambahkan keempat header:

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
      XForwardedForProtoEnabled: true
      XForwardedForSLBIdEnabled: true
      XForwardedForSLBPortEnabled: true

Ambil alamat IP klien dari rantai proxy tepercaya

Atur XForwardedForClientSourceIpsEnabled: true untuk mengekstrak IP klien asli dari X-Forwarded-For saat permintaan melewati beberapa proxy. Gunakan XForwardedForClientSourceIpsTrusted untuk mencantumkan IP proxy tepercaya atau blok CIDR. ALB menjelajahi X-Forwarded-For dari kanan ke kiri dan menganggap IP non-tepercaya pertama sebagai IP klien.

Sebagai contoh, jika X-Forwarded-For adalah <IP klien, proxy-1, proxy-2>, tambahkan proxy-1 dan proxy-2 ke daftar tepercaya.

Penting

Tersedia hanya untuk pendengar HTTP dan HTTPS.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16

Konfigurasikan kebijakan keamanan TLS kustom

Atur securityPolicyId pada pendengar HTTPS untuk menerapkan kebijakan keamanan TLS bawaan atau kustom.

spec:
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1

Konfigurasikan alamat IP proxy tepercaya

Lihat Tentukan alamat IP proxy tepercaya.

Konfigurasikan ACL jaringan

Gunakan aclConfig untuk mengizinkan atau menolak traffic dari alamat IP atau blok CIDR tertentu di tingkat pendengar.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White

Parameter

Deskripsi

aclType

White: allowlist — hanya IP yang tercantum yang dapat mengakses pendengar. Black: blocklist — IP yang tercantum ditolak aksesnya.

aclEntries

Alamat IP atau blok CIDR yang disertakan dalam aturan ACL. Contoh: 127.0.0.1/32.

Lihat Konfigurasikan ACL.