All Products
Search
Document Center

Container Service for Kubernetes:Konfigurasikan instans ALB dengan AlbConfig

Last Updated:Aug 29, 2026

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

Prasyarat

  • ALB Ingress Controller telah diinstal di kluster Anda.

  • Dua vSwitch di zona berbeda yang didukung ALB telah dibuat dalam VPC yang sama dengan kluster ACK Anda.

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

Catatan penggunaan

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

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

  • Instans ALB yang dibuat oleh AlbConfig merupakan resource terkelola yang dikendalikan oleh ALB Ingress Controller. Jangan memodifikasi instans ini secara langsung di konsol ALB (misalnya, jangan mengubah tag, ACL, log akses, atau pengaturan timeout di konsol). Perubahan di konsol akan ditimpa oleh loop rekonsiliasi controller atau dapat menyebabkan error. Untuk memperbarui konfigurasi instans ALB terkelola, modifikasi resource AlbConfig di kluster Anda. Controller secara otomatis menyinkronkan perubahan tersebut ke instans ALB.

Parameter utama sekilas

Parameter AlbConfig yang umum digunakan:

Parameter

Tipe

Bawaan

Hanya Pembuatan

Deskripsi

spec.config.name

string

Tidak

Nama instans ALB

spec.config.addressAllocatedMode

string

Dynamic

Tidak

Mengatur mode IP instans ALB. Nilai 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

Edition instans 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 instans yang digunakan kembali

spec.config.accessLogConfig.logProject

string

Tidak

Proyek log SLS

spec.config.accessLogConfig.logStore

string

Tidak

Penyimpanan log SLS (harus diawali dengan alb_)

spec.config.billingConfig.bandWidthPackageId

string

Tidak

ID instans Bandwidth Internet Bersama

spec.listeners[].port

integer

Tidak

Port pendengar

spec.listeners[].protocol

string

Tidak

HTTP, HTTPS, atau QUIC

spec.listeners[].requestTimeout

integer

60

Tidak

Timeout permintaan 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 per 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 file alb.yaml dengan konten berikut:

    Parameter

    Deskripsi

    spec.config.name

    Nama instans ALB. Nama ini harus unik dalam kluster.

    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 memerlukan satu vSwitch.

    spec.config.zoneMappings[].allocationId

    (Opsional) ID EIP untuk diasosiasikan dengan instans ALB. Jika dihilangkan, EIP BGP (multi-ISP) bayar sesuai penggunaan akan dibuat secara otomatis. Hanya EIP bayar sesuai penggunaan (bayar-berdasarkan-transfer-data) yang tidak termasuk dalam instans Bandwidth Internet Bersama 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 akan ditetapkan secara otomatis.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
          allocationId: eip-dpfmss****
      listeners:
        - port: 80
          protocol: HTTP

    Pengaturan bawaan AlbConfig (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

Jika instans ALB dibuat dengan AlbConfig, menghapus AlbConfig akan menghapus instans ALB tersebut.

Penting

Hapus semua Ingress yang diasosiasikan dengan AlbConfig sebelum menghapusnya.

kubectl delete AlbConfig <AlbConfig_NAME>

Asosiasikan instans Bandwidth Internet Bersama

Untuk mengasosiasikan instans Bandwidth Internet Bersama ke instans ALB, atur billingConfig.bandWidthPackageId:

Ini hanya berlaku untuk instans ALB yang menghadap internet. Untuk membeli instans Bandwidth Internet Bersama, lihat Buat Bandwidth Internet Bersama.
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 file 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 file 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 file 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 file 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 file 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 Standar 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, dan hanya oleh satu AlbConfig dalam kluster tersebut.

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

Ketika 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 penyimpanan log yang ditentukan tidak ada, penyimpanan log 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, protocol, atau atribut lain pendengar 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

# Sesudah
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.

Catatan
  • Algoritma kompresi: Jika klien mendukung Brotli dan Gzip, ALB menggunakan Brotli karena lebih efisien.

  • Kondisi kompresi: ALB hanya mengompres respons ketika header respons Content-Length melebihi 1.024 byte dan header permintaan Accept-Encoding dari klien mencakup algoritma kompresi yang sesuai.

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.

  • XForwardedForEnabled diaktifkan secara bawaan dan tidak dapat dinonaktifkan.

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

Praktik terbaik untuk lingkungan dengan beberapa lapisan proxy: Meskipun XForwardedForEnabled: true menyebarkan header X-Forwarded-For secara bawaan, nilai IP dapat dipalsukan ketika permintaan melewati beberapa proxy. Di lingkungan produksi dengan beberapa lapisan proxy, gunakan XForwardedForClientSourceIpsEnabled: true bersama dengan XForwardedForClientSourceIpsTrusted untuk mengambil alamat IP klien dari rantai proxy tepercaya.

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 ketika 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: blacklist — IP yang tercantum ditolak aksesnya.

aclEntries

Alamat IP atau blok CIDR yang dimasukkan ke aturan ACL. Contoh: 127.0.0.1/32.

Lihat Konfigurasikan ACL.

Pemecahan masalah

Error saat menyimpan file YAML AlbConfig: alb: listener port number must between [1:65535], or you should set listen port explicitly in listener config.

Penyebab

Dalam file YAML AlbConfig, simbol - di bagian spec.listener menandai awal konfigurasi pendengar tunggal. Pada contoh salah di kiri, tiga simbol - digunakan, yang mendefinisikan tiga pendengar. Error terjadi karena bagian certificates untuk entri - terakhir tidak memiliki konfigurasi port.

Solusi

Setiap konfigurasi pendengar harus dimulai dengan tanda hubung (-). Pada contoh yang diperbaiki di kanan, tanda hubung (-) sebelum certificates dihapus, sehingga konfigurasi sertifikat menjadi bagian dari pendengar HTTPS: 443.

Contoh salah:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
  - certificates:  # Salah: Tanda hubung ekstra ini mendefinisikan pendengar ketiga.
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...

Contoh yang diperbaiki:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
    certificates:  # Benar: Tanda hubung ekstra dihapus agar konfigurasi sertifikat termasuk dalam pendengar HTTPS: 443.
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...

Mengapa perubahan pada jenis jaringan (addressType) atau vSwitch (zoneMappings.vSwitchId) instans ALB tidak berlaku saat dilakukan melalui file YAML AlbConfig?

Penyebab

Anda tidak dapat mengubah jenis jaringan atau konfigurasi vSwitch instans Application Load Balancer (ALB) dengan memodifikasi addressType atau zoneMappings.vSwitchId dalam file YAML AlbConfig-nya.

image

Solusi

Pertama, nonaktifkan mode baca-saja konfigurasi untuk instans tersebut di konsol ALB. Lalu, ubah secara manual jenis jaringan atau konfigurasi vSwitch instans ALB. Setelah konfigurasi diubah, aktifkan kembali mode baca-saja konfigurasi.

  1. Masuk ke konsol ALB. Di wilayah tujuan, klik ID instans yang sesuai dengan status.loadBalancer.id dalam file AlbConfig.

  2. Di tab Instance Details, pada bagian Instance Information, klik Disable Configuration Read-only Mode dan konfirmasi.

  3. Klik Change Network Type atau Modify Zone/Subnet untuk mengubah jenis jaringan atau konfigurasi vSwitch instans ALB.

  4. Setelah selesai melakukan perubahan, aktifkan kembali configuration read-only mode.

Error pendengar HTTPS: empty https listener default certs

Penyebab

Pendengar HTTPS dikonfigurasi dalam AlbConfig, tetapi tidak ada ID sertifikat yang ditentukan dalam bidang certificates. Controller tidak dapat membuat pendengar karena tidak ada Ingress yang diasosiasikan untuk menemukan sertifikat secara otomatis berdasarkan nama domain.

Solusi

  • Metode 1 (Direkomendasikan): Tentukan ID sertifikat dalam bidang certificates untuk pendengar HTTPS. Untuk informasi lebih lanjut, lihat tentukan sertifikat.

    listeners:
    - port: 443
      protocol: HTTPS
      certificates:
      - CertificateId: <your-certificate-id>  # Ganti dengan ID sertifikat Anda yang sebenarnya.
        IsDefault: true
  • Metode 2: Dalam AlbConfig, konfigurasikan pendengar HTTP pada port 80 dan buat resource Ingress yang diasosiasikan dengan nama domain target. Setelah Ingress dibuat, ALB Ingress Controller secara otomatis menemukan sertifikat dari Ingress berdasarkan nama domain dan melampirkannya ke pendengar HTTPS.