全部产品
Search
文档中心

:Konfigurasi instans ALB menggunakan AlbConfig

更新时间:Dec 06, 2025

AlbConfig adalah Definisi Sumber Daya Kustom (CRD) yang disediakan oleh Pengontrol Ingress ALB untuk mengonfigurasi instans dan pendengar Application Load Balancer (ALB). Topik ini menjelaskan cara membuat, memodifikasi, dan memperbarui AlbConfig, serta cara mengaktifkan Layanan Log Sederhana.

Lingkup

Perhatian

  • Kami menyarankan Anda menggunakan perintah kubectl edit untuk langsung memodifikasi atau memperbarui konfigurasi sumber daya. Jika Anda harus menggunakan perintah kubectl apply untuk memodifikasi atau memperbarui sumber daya, jalankan terlebih dahulu perintah kubectl diff untuk melihat pratinjau perubahan sebelum menjalankan perintah kubectl apply. Pastikan perubahannya sesuai harapan, lalu jalankan perintah kubectl apply untuk menerapkan perubahan ke kluster Kubernetes.

  • Jika Anda menggunakan plug-in jaringan Flannel, layanan backend dari Ingress ALB hanya mendukung tipe layanan NodePort dan LoadBalancer.

Membuat AlbConfig

Setiap AlbConfig berkorespondensi dengan satu instans ALB. Untuk menggunakan beberapa instans ALB, Anda harus membuat beberapa AlbConfig. Langkah-langkah berikut menjelaskan cara membuat AlbConfig.

Penting

Jika Anda memilih opsi Create New atau Use Existing untuk ALB Cloud-native Gateway Instance Source saat menginstal komponen Pengontrol Ingress ALB, Pengontrol akan secara otomatis membuat sumber daya AlbConfig bernama "alb" dan sumber daya IngressClass bernama "alb".

  1. Buat file bernama `alb.yaml` dan salin konten berikut ke dalam file tersebut. Anda kemudian dapat menggunakan file ini untuk membuat AlbConfig.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:               
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # Ganti dengan ID minimal dua vSwitch yang berada di zona berbeda dalam VPC tempat kluster berada.
          allocationId: eip-asdfas****          # Ganti dengan ID EIP Anda. Secara default, alamat IP publik akan dialokasikan secara otomatis.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****  # Ganti dengan ID minimal dua vSwitch yang berada di zona berbeda dalam VPC tempat kluster berada.
          allocationId: eip-dpfmss****          # Ganti dengan ID EIP Anda.
      listeners:
        - port: 80
          protocol: HTTP

    Parameter

    Deskripsi

    spec.config.name

    Nama instans ALB.

    spec.config.addressType

    Tipe alamat instans ALB. Nilai yang valid:

    • Internet (default): Instans ALB memiliki alamat IP publik. Nama domain diselesaikan ke alamat IP publik. Instans dapat diakses melalui Internet.

    • Intranet: Instans ALB hanya memiliki alamat IP pribadi. Nama domain diselesaikan ke alamat IP pribadi. Instans hanya dapat diakses dalam VPC-nya.

    Penting

    Parameter addressType hanya diproses saat Anda membuat instans ALB. Pembaruan pada parameter ini tidak berlaku.

    spec.config.zoneMappings

    • vSwitchId: ID vSwitch yang digunakan oleh Ingress ALB.

      • Tentukan ID minimal dua vSwitch di zona berbeda. Zona tersebut harus didukung oleh ALB. Untuk informasi selengkapnya tentang zona yang didukung, lihat Wilayah dan zona yang didukung oleh ALB.

      • vSwitch dan kluster harus berada dalam VPC yang sama.

      Penting
      • Untuk wilayah dengan zona tunggal, Anda hanya perlu menentukan satu ID vSwitch.

      • Parameter zoneMappings hanya diproses saat Anda membuat instans ALB. Pembaruan pada parameter ini tidak berlaku.

    • allocationId: Anda dapat menentukan ID EIP tempat instans ALB yang menghadap publik bergantung di zoneMappings.

      • Jika Anda tidak menentukan ID EIP, alamat IP publik akan dialokasikan secara otomatis. Sistem akan secara otomatis membuat EIP Protokol Gateway Perbatasan (BGP) (multi-line) bayar sesuai penggunaan dengan perlindungan keamanan dasar dan mengaitkan EIP tersebut dengan instans ALB. Untuk informasi selengkapnya tentang penagihan, lihat Ikhtisar penagihan ALB.

      • Anda dapat menentukan ID EIP yang sudah ada dan mengaitkannya dengan instans ALB baru.

      Penting
      • Anda hanya dapat mengaitkan EIP bayar-per-lalu-lintas yang telah dibeli dan belum ditambahkan ke instans Bandwidth Internet Bersama.

      • EIP yang dialokasikan di zona berbeda untuk instans ALB yang sama harus bertipe sama.

    Saat Anda menginstal komponen Pengontrol Ingress ALB untuk sebuah kluster, Anda dapat memilih untuk membuat AlbConfig default. Kecuali untuk vSwitchID, parameter lain dalam AlbConfig dibuat dengan konfigurasi default berikut.

    Klik untuk melihat konfigurasi default AlbConfig

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb # Nama AlbConfig.
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic # Dalam AlbConfig, Anda dapat menggunakan parameter addressAllocatedMode untuk menentukan mode IP instans ALB. Nilai yang valid adalah Dynamic (mode IP dinamis) dan Fixed (mode IP tetap).
        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. Jalankan perintah berikut untuk membuat AlbConfig:

    kubectl apply -f alb.yaml

    Output yang diharapkan:

    AlbConfig.alibabacloud.com/alb created
  3. Jalankan perintah berikut untuk melihat sumber daya AlbConfig:

    kubectl get AlbConfig

    Output yang diharapkan:

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

    Setelah Anda membuat pendengar HTTPS dan mengonfigurasi sertifikat untuknya, konten akan ditampilkan di kolom PORT&PROTOCOL dan CERTID. Kolom-kolom ini kosong secara default.

Menggunakan kembali instans ALB yang ada

Jika Anda ingin menggunakan kembali instans ALB yang sudah ada, Anda harus menentukan ID instans saat membuat AlbConfig. Instans ALB yang ada harus merupakan instans Jenis Penyimpanan Standar atau instans yang diaktifkan WAF yang dibuat di Konsol Application Load Balancer (ALB). Instans ALB dasar tidak dapat digunakan kembali. Satu instans hanya dapat digunakan kembali oleh satu kluster, dan Anda tidak dapat menggunakan kembali instans ALB yang sama untuk beberapa kluster.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: **** # ID instans ALB Jenis Penyimpanan Standar atau instans yang diaktifkan WAF yang dibuat di konsol ALB.
    forceOverride: false
    listenerForceOverride: false

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Deskripsi

id

  • Jika bidang id tidak ada atau bidang id kosong, berarti instans ALB berada dalam skenario non-penggunaan ulang. Dalam kasus ini, bidang forceOverride dan listenerForceOverride tidak berlaku.

  • Jika bidang id diatur ke nilai yang valid, instans ALB digunakan kembali.

    • Jika forceOverride diatur ke true, properti instans ALB dan pendengarnya akan ditimpa secara paksa. Konfigurasi instans ALB dan pendengarnya sepenuhnya digantikan oleh konfigurasi dalam AlbConfig yang dikirimkan.

    • Jika forceOverride diatur ke false, properti instans ALB tidak ditimpa secara paksa. Apakah properti pendengar ditimpa secara paksa ditentukan oleh bidang listenerForceOverride.

      • Jika listenerForceOverride diatur ke false, properti tidak ditimpa. Pengontrol Ingress ALB hanya mengelola pendengar yang dibuat secara otomatis berdasarkan AlbConfig di kluster. Format penamaan default untuk pendengar ini adalah ingress-auto-listener-{port}. Konfigurasi pendengar mengikuti AlbConfig. Keberadaan dan konfigurasi pendengar mandiri lainnya tidak dikelola oleh AlbConfig.

      • Jika listenerForceOverride diatur ke true, Pengontrol Ingress ALB mengelola semua pendengar instans ALB. Keberadaan dan konfigurasi pendengar mengikuti AlbConfig.

Penting

Saat menggunakan kembali instans ALB, jangan memodifikasi nama pendengar secara manual. Hal ini mencegah pendengar salah dikelola atau tidak dikelola oleh ACK. Pendengar yang dibuat atau diperbarui oleh AlbConfig dikelola oleh ACK, dan nama mereka secara default menggunakan format ingress-auto-listener-{port}. Pendengar dengan nama dalam format lain dikelola di konsol ALB.

forceOverride

Menentukan apakah akan menimpa secara paksa properti instans ALB saat menggunakan kembali instans tersebut.

  • true: menimpa properti secara paksa.

  • false: tidak menimpa properti. Jika Anda mengedit AlbConfig saat parameter ini diatur ke false, properti instans ALB tidak berubah.

listenerForceOverride

Menentukan apakah akan menimpa secara paksa properti pendengar saat menggunakan kembali instans tersebut.

  • true: menimpa properti secara paksa.

  • false: tidak menimpa properti.

Konfigurasi instans Bandwidth Internet Bersama

Setelah Anda mengaktifkan fitur ini, Anda dapat mengaitkan instans Bandwidth Internet Bersama dengan instans ALB menggunakan AlbConfig.

Catatan

Fitur ini hanya berlaku jika jenis jaringan instans ALB adalah Internet. Untuk informasi selengkapnya tentang cara membeli instans Bandwidth Internet Bersama, lihat Membuat dan mengelola instans Bandwidth Internet Bersama.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    name: alb
    addressType: Internet
    edition: Standard
    zoneMappings:
    - vSwitchId: vsw-2vcqeyvwsnd***
    - vSwitchId: vsw-2vcbhjlqu7y***
    billingConfig:
      bandWidthPackageId: cbwp-2vcjucp49otd8qolhm***  # ID instans Bandwidth Internet Bersama.

Memperbarui AlbConfig

Untuk instans ALB yang dibuat menggunakan AlbConfig, Anda dapat menggunakan perintah kubectl edit untuk memperbarui konfigurasi instans. Langkah-langkah berikut menjelaskan cara memperbarui AlbConfig.

  1. Jalankan perintah berikut untuk melihat nama AlbConfig:

    kubectl get AlbConfig

    Output yang diharapkan:

    NAME       ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb        alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m
  2. Jalankan perintah berikut untuk memodifikasi AlbConfig:

    kubectl edit albconfig <ALBCONFIG_NAME> # Ganti <ALBCONFIG_NAME> dengan nama AlbConfig.

    Dalam file konfigurasi AlbConfig, perbarui konten yang relevan. Misalnya, Anda dapat memodifikasi bidang spec.config.name untuk mengubah nama instans ALB menjadi new_alb.

    ...
     spec:
       config:
         name: new_alb # Nama yang diperbarui.
    ...

Gunakan IngressClass untuk mengaitkan AlbConfig dengan Ingress

Ingress ALB menggunakan sumber daya IngressClass Kubernetes native untuk mengaitkan AlbConfig dengan Ingress. Asosiasi ini dicapai dengan mengatur parameter tertentu dalam sumber daya IngressClass.

  1. Buat file bernama `ingress_class.yaml`, salin konten berikut ke dalam file tersebut, lalu gunakan file tersebut untuk membuat IngressClass.

    Kluster versi v1.19 dan yang 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 # Nama AlbConfig yang dikaitkan dengan IngressClass.

    Kluster versi 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
  2. Jalankan perintah berikut untuk membuat IngressClass:

    kubectl apply -f ingress_class.yaml

    Output yang diharapkan:

    ingressclass.networking.k8s.io/alb created
  3. Buat file bernama `ingress.yaml` dan salin konten berikut ke dalam file tersebut. Gunakan parameter ingressClassName untuk menentukan IngressClass bernama `alb` agar dikaitkan dengan AlbConfig.

    Kluster versi v1.19 dan yang lebih baru

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

    Kluster versi sebelum v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress
    spec:
      ingressClassName: alb
      rules:
      - http:
          paths:
          # Konfigurasi path konteks.
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # Konfigurasi path konteks.
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  4. Jalankan perintah berikut untuk membuat Ingress:

    kubectl apply -f ingress.yaml

    Output yang diharapkan:

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

Setelah menyelesaikan langkah-langkah ini, IngressClass digunakan untuk mengaitkan AlbConfig dengan Ingress.

Membuat dan menggunakan beberapa instans ALB

Jika Anda ingin menggunakan beberapa instans ALB secara bersamaan, tentukan IngressClass yang berbeda di bidang spec.ingressClassName dari sumber daya Ingress untuk mengaitkan Ingress dengan instans ALB yang berbeda.

  1. Buat file bernama `alb-2.yaml`, salin konten berikut ke dalam file tersebut, lalu gunakan file tersebut untuk membuat AlbConfig.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2        # Nama instans ALB.
        addressType: Internet  # Instans ALB memiliki alamat IP publik.
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # ID vSwitch.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. Jalankan perintah berikut untuk membuat AlbConfig:

    kubectl apply -f alb-2.yaml

    Output yang diharapkan:

    AlbConfig.alibabacloud.com/alb-2 created
  3. Buat file bernama `ingress_class2.yaml`, salin konten berikut ke dalam file tersebut, lalu gunakan file tersebut untuk membuat IngressClass.

    Kluster versi v1.19 dan yang 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 # Nama AlbConfig yang dikaitkan dengan IngressClass.

    Kluster versi 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 # Nama AlbConfig yang dikaitkan dengan IngressClass.
  4. Jalankan perintah berikut untuk membuat IngressClass:

    kubectl apply -f ingress_class2.yaml

    Output yang diharapkan:

    ingressclass.networking.k8s.io/alb-2 created
  5. Buat file bernama `ingress2.yaml` dan salin konten berikut ke dalam file tersebut. Gunakan parameter ingressClassName untuk menentukan instans ALB yang berbeda. Dalam contoh berikut, alb-2 ditentukan di bidang ingressClassName untuk mengaitkan Ingress dengan IngressClass bernama `alb-2` dan instans ALB bernama `alb-2` yang dikaitkan dengan IngressClass tersebut.

    Kluster versi v1.19 dan yang lebih baru

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

    Kluster versi sebelum v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          # Konfigurasi path konteks.
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          # Konfigurasi path konteks.
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  6. Jalankan perintah berikut untuk membuat Ingress:

    kubectl apply -f ingress2.yaml

    Output yang diharapkan:

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

Gunakan alamat IPv6

Saat membuat instans ALB, Anda dapat mengaktifkan dual-stack dengan mengatur bidang addressIpVersion ke DualStack. Ini memungkinkan dukungan untuk IPv4 dan IPv6.

Penting

Parameter addressIpVersion hanya diproses saat Anda membuat AlbConfig. Pembaruan pada parameter ini tidak berlaku.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    addressIpVersion: DualStack # Aktifkan dual-stack.
    ...

Tentukan kebijakan keamanan TLS

Saat mengonfigurasi pendengar HTTPS dalam AlbConfig, Anda dapat menentukan kebijakan keamanan TLS. Kebijakan keamanan TLS mencakup kebijakan kustom dan kebijakan default sistem. Untuk informasi selengkapnya, lihat Kebijakan keamanan TLS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1 # ID kebijakan keamanan yang ditentukan.
  #...

Aktifkan log akses di Layanan Log Sederhana

Jika Anda ingin Ingress ALB mengumpulkan log akses, Anda dapat menentukan logProject dan logStore dalam AlbConfig.

Catatan
  • Saat membuat kluster, Anda memilih untuk secara otomatis membuat proyek Layanan Log Sederhana atau menggunakan yang sudah ada. Masuk ke Konsol manajemen Container Service dan pilih Cluster List di panel navigasi sebelah kiri.Di halaman Cluster List, klik nama kluster target lalu pilih Cluster Information di panel navigasi sebelah kiri. Di tab Basic Information, Anda dapat melihat Simple Log Service Project yang dikaitkan dengan kluster tersebut.

  • Nama logStore harus dimulai dengan alb_. Jika logStore yang ditentukan tidak ada, maka akan dibuat secara otomatis.

  • Saat menggunakan kembali instans ALB yang sudah ada dan ingin mengaktifkan Layanan Log Sederhana melalui AlbConfig, Anda harus mengatur bidang forceOverride ke true untuk menimpa secara paksa properti instans ALB. Untuk informasi selengkapnya, lihat Menggunakan kembali instans ALB yang ada.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
    #...

Di tab Basic Information, klik nama di sebelah kanan Simple Log Service Project untuk melihat log akses yang dikumpulkan.

Hapus AlbConfig

Setiap AlbConfig berkorespondensi dengan satu instans ALB. Oleh karena itu, jika instans ALB dibuat menggunakan AlbConfig, Anda dapat menghapus instans ALB tersebut dengan menghapus AlbConfig.

Penting

Sebelum menghapus AlbConfig, Anda harus menghapus semua sumber daya Ingress yang terkait dengannya.

Jalankan perintah berikut untuk menghapus AlbConfig:

kubectl delete AlbConfig <AlbConfig_NAME> # Ganti <AlbConfig_NAME> dengan nama AlbConfig.

Hapus AlbConfig untuk instans ALB yang digunakan kembali

Jika Anda memilih untuk menggunakan kembali instans ALB yang sudah ada saat membuat AlbConfig, instans tersebut tidak dibuat oleh AlbConfig. Oleh karena itu, menghapus AlbConfig tidak akan menghapus instans ALB. Untuk menghapus AlbConfig untuk instans ALB yang digunakan kembali, lakukan langkah-langkah berikut.

  1. Jalankan perintah kubectl edit untuk memodifikasi AlbConfig dan menghapus semua pendengarnya. Untuk melakukan ini, hapus semua entri di bawah bidang spec.listeners.

    Penting

    Lakukan operasi ini jika versi komponen Pengontrol Ingress ALB yang diinstal di kluster Anda adalah v2.10.0-aliyun.1 atau lebih lama. Jika tidak, lewati langkah ini.

  2. Jalankan perintah berikut untuk menghapus AlbConfig:

    Penting

    Sebelum menghapus AlbConfig, Anda harus menghapus semua sumber daya Ingress yang terkait dengannya.

    kubectl delete AlbConfig <AlbConfig_NAME> # Ganti <AlbConfig_NAME> dengan nama AlbConfig.

Perbarui bidang Listeners

Istilah

  • File konfigurasi objek: File yang digunakan untuk mendefinisikan dan menggambarkan objek Kubernetes. File ini berisi spesifikasi dan informasi konfigurasi objek tersebut.

  • File konfigurasi objek yang ada: File konfigurasi objek yang telah diterapkan ke kluster Kubernetes.

  • Bidang last-applied-configuration: Bidang anotasi dalam objek Kubernetes yang mencatat konfigurasi terakhir yang diterapkan pada objek tersebut. Bidang ini tidak diperbarui secara real-time seiring perubahan konfigurasi objek.

Metode pembaruan untuk bidang Listeners

Bidang Listeners adalah konfigurasi bertipe array yang biasanya diperbarui dengan cara penggantian. Saat Anda memperbarui bidang Listeners, konfigurasi baru sepenuhnya menggantikan konfigurasi yang ada. Untuk informasi selengkapnya, lihat tabel berikut:

Nomor urut

Kondisi

Hasil

Apakah objek ada dalam file konfigurasi objek?

Apakah objek ada dalam file konfigurasi objek yang ada?

Apakah objek ada dalam bidang last-applied-configuration?

Ya

Ya

- (Tidak berlaku)

Nilai dari file konfigurasi objek diterapkan ke file konfigurasi yang ada untuk memperbarui bidang tertentu dari objek yang ada.

Ya

Tidak

- (Tidak berlaku)

Nilai dari file konfigurasi objek digunakan untuk membuat objek baru, bukan memperbarui konfigurasi objek yang ada.

Tidak

Tidak berlaku

Ya

Bidang dihapus dari file konfigurasi objek yang ada. Artinya, bidang tersebut dihapus dari konfigurasi objek yang ada. Bidang tersebut mungkin diatur ulang ke nilai default-nya.

Tidak

Ya

Tidak

Bidang dihapus dari file konfigurasi objek yang ada.

Contoh

Kode berikut menunjukkan contoh konfigurasi bidang Listeners dalam file konfigurasi objek, file konfigurasi objek yang ada, dan bidang last-applied-configuration:

# File konfigurasi objek menyediakan nilai konfigurasi yang diharapkan berikut.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005 # Tambahkan 8005.
    protocol: HTTP

# File konfigurasi objek yang ada menunjukkan konfigurasi objek yang ada.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Hapus 8002.
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8004  # Hapus 8004.
    protocol: HTTP
    
# last-applied-configuration mencatat konfigurasi terakhir yang diterapkan pada objek.
  listeners:
  - port: 8001 
    protocol: HTTP
  - port: 8002  # Hapus 8002.
    protocol: HTTP
  - port: 8003
    protocol: HTTP

Bidang Listeners AlbConfig diperbarui menjadi hasil berikut:

# Hasil file konfigurasi Listeners.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8003
    protocol: HTTP
  - port: 8005
    protocol: HTTP
  • Port 8001 dan 8003 memenuhi kondisi ① dan dipertahankan.

  • Port 8005 memenuhi kondisi ② dan ditambahkan.

  • Port 8002 memenuhi kondisi ③ dan dihapus.

  • Port 8004 memenuhi kondisi ④ dan dihapus.

Buat pendengar

Pendengar adalah titik masuk tingkat atas yang digunakan instans ALB untuk memproses lalu lintas. Instans ALB hanya dapat membuka port untuk menerima permintaan klien setelah Anda membuat pendengar.

Anda dapat mengatur port dan protocol dalam AlbConfig untuk membuat pendengar yang sesuai. Jika Anda memodifikasi port, protocol, atau properti pendengar lainnya, sistem akan menghapus pendengar asli dan membuat yang baru untuk menggantikannya.

Pendengar dapat menggunakan tiga protokol lapisan aplikasi: HTTP, HTTPS, dan QUIC.

Penting

Anda dapat menggunakan beberapa pendengar dengan protokol berbeda secara bersamaan. Namun, Anda harus mengonfigurasi anotasi dalam sumber daya Ingress untuk memastikan bahwa Ingress berlaku untuk beberapa pendengar sekaligus. Untuk informasi selengkapnya, lihat Konfigurasi port pendengar kustom.

Buat pendengar HTTP

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 80
      protocol: HTTP # Nilai yang valid untuk protocol adalah HTTP, HTTPS, dan QUIC.
  ...
Catatan

Protokol HTTP secara otomatis kompatibel dengan WebSocket. Tidak diperlukan pengaturan khusus.

Buat pendengar HTTPS

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS
  ...
Penting

Saat menggunakan pendengar HTTPS, Anda harus mengonfigurasi sertifikat. Untuk informasi selengkapnya, lihat Konfigurasi sertifikat HTTPS untuk mencapai komunikasi terenkripsi.

Buat pendengar QUIC

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: QUIC
  ...
Penting

Menggunakan pendengar QUIC memungkinkan klien mengakses layanan menggunakan protokol HTTP/3. Untuk informasi selengkapnya tentang penggunaan pendengar QUIC, lihat Gunakan pendengar QUIC untuk mendukung protokol HTTP/3.

Tentukan sertifikat

Saat mengonfigurasi ALB, jalankan perintah kubectl edit albconfig <Albconfig_Name> untuk mengaktifkan enkripsi dan verifikasi identitas untuk protokol HTTPS. Dalam AlbConfig, atur parameter certificates ke ID sertifikat yang ingin digunakan oleh pendengar. Sertifikat ini digunakan untuk mengenkripsi dan mendekripsi lalu lintas HTTPS.

Jika Anda tidak menentukan sertifikat dalam konfigurasi, pendengar tidak akan dibuat saat ALB dibuat. Sebaliknya, pendengar hanya akan dibuat setelah Ingress dikaitkan dan sertifikat ditemukan secara otomatis berdasarkan nama domain.

Untuk informasi selengkapnya tentang konfigurasi sertifikat, lihat Konfigurasi sertifikat HTTPS untuk komunikasi terenkripsi.

Penting

ALB menetapkan sertifikat pertama sebagai sertifikat default. ALB hanya menggunakan sertifikat lain untuk enkripsi permintaan jika sertifikat default telah kedaluwarsa atau tidak lagi digunakan.

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

Atur periode timeout permintaan pendengar

Anda dapat mengatur periode timeout permintaan untuk pendengar dalam AlbConfig. Nilainya ditentukan dalam detik dan dapat berkisar antara 1 hingga 600. Jika server backend gagal merespons dalam periode timeout, instans Application Load Balancer (ALB) akan berhenti menunggu dan mengembalikan kode kesalahan HTTP 504 ke klien. Jika Anda tidak menentukan periode timeout, nilai default 60 detik akan digunakan. Berikut adalah contoh file YAML.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40 # Jika Anda tidak memasukkan nilai, periode timeout default adalah 60 detik.
  ...

Gunakan fitur kompresi data

Saat fitur ini diaktifkan, instans Application Load Balancer (ALB) akan mengompresi jenis file tertentu. Nilai yang valid untuk gzipEnabled:

  • true: Mengompresi jenis file tertentu.

  • false: Tidak mengompresi jenis file apa pun.

Catatan
  • Algoritma kompresi: Jika klien mendukung kedua algoritma kompresi Brotli dan Gzip, ALB memprioritaskan algoritma Brotli yang lebih efisien. Algoritma Brotli dapat mengompresi semua jenis file. Algoritma Gzip dapat mengompresi jenis file seperti text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml, dan application/json.

  • Kondisi kompresi: Kompresi dilakukan jika Content-Length dalam header respons melebihi 1.024 byte dan Accept-Encoding dalam header permintaan klien mencakup algoritma yang didukung.

Berikut adalah contoh file YAML untuk mengaktifkan kompresi data:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true
  ...

Dapatkan alamat IP asal klien

Setelah Anda mengaktifkan fitur ini, instans ALB akan menambahkan bidang yang berisi alamat IP asal klien ke header permintaan HTTP saat meneruskan permintaan ke layanan backend. Nilai yang valid untuk XForwardedForEnabled:

  • true: Mendapatkan alamat IP asal klien.

  • false: Tidak mendapatkan alamat IP asal klien.

Penting

Anda hanya dapat mengonfigurasi parameter ini untuk pendengar HTTP dan HTTPS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    #...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # XForwardedForEnabled tidak dapat dinonaktifkan.
  #...

Dapatkan port klien

Saat fitur ini diaktifkan, instans Application Load Balancer (ALB) akan menambahkan bidang yang berisi port klien ke header permintaan HTTP saat meneruskan permintaan ke layanan backend. Nilai yang valid untuk XForwardedForClientSrcPortEnabled adalah:

  • true: Mengambil port klien.

  • false: Tidak mengambil port klien.

Penting

Anda hanya dapat mengonfigurasi parameter ini untuk pendengar HTTP dan HTTPS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
  ...

Dapatkan protokol pendengar instans ALB

Saat Anda mengaktifkan fitur ini, instans ALB akan menambahkan bidang yang berisi protokol pendengar ke header permintaan HTTP saat meneruskan permintaan ke layanan backend. Nilai yang valid untuk XForwardedForProtoEnabled:

  • true: Mengambil protokol pendengar instans.

  • false: Tidak mengambil protokol pendengar instans.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForProtoEnabled: true
  ...

Dapatkan ID instans ALB

Saat fitur ini diaktifkan, instans ALB akan menambahkan bidang yang berisi ID-nya ke header permintaan HTTP saat meneruskan permintaan ke layanan backend. Nilai yang valid untuk XForwardedForSLBIdEnabled adalah:

  • true: Mengambil ID instans SLB.

  • false: Tidak menambahkan ID instans ke header permintaan.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBIdEnabled: true
  ...

Dapatkan port pendengar instans ALB

Setelah Anda mengaktifkan fitur ini, instans ALB akan menambahkan bidang yang berisi port pendengar ke header permintaan HTTP saat meneruskan permintaan ke layanan backend. Nilai yang valid untuk XForwardedForSLBPortEnabled:

  • true: Mengambil port pendengar instans.

  • false: Tidak mengambil port pendengar instans.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForSLBPortEnabled: true
  ...

Tentukan alamat IP server proxy tepercaya

Dalam AlbConfig, gunakan item konfigurasi XForwardedForClientSourceIpsEnabled untuk memungkinkan instans ALB mendapatkan alamat IP asal klien dari bidang header X-Forwarded-For. Gunakan item konfigurasi XForwardedForClientSourceIpsTrusted untuk menentukan sekumpulan alamat IP server proxy tepercaya. Instans ALB akan menelusuri daftar alamat IP di bidang X-Forwarded-For secara terbalik dan memilih alamat IP pertama yang tidak ada dalam daftar alamat IP tepercaya sebagai alamat IP aktual klien.

Sebagai contoh, jika nilai bidang X-Forwarded-For adalah <alamat IP asal klien, proxy IP-1, proxy IP-2>, Anda dapat memasukkan proxy IP-1 dan proxy IP-2 di XForwardedForClientSourceIpsTrusted untuk mendapatkan alamat IP asal klien.

Penting

Anda hanya dapat mengonfigurasi parameter ini untuk pendengar HTTP dan HTTPS.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata: 
  name: alb
spec:
  config:
    ...
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true # true menunjukkan bahwa ALB diizinkan menemukan alamat IP asal klien dari bidang header X-Forwarded-For. Dalam hal ini, Anda harus mengonfigurasi XForwardedForClientSourceIpsTrusted dengan konten dalam format yang benar. false menunjukkan bahwa ALB tidak diizinkan menemukan alamat IP asal klien dari bidang header X-Forwarded-For.
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16  # Masukkan alamat IP atau blok CIDR dalam format yang valid dan pisahkan dengan titik koma (;). Jangan tambahkan spasi di antara alamat IP atau blok CIDR. Parameter ini hanya berlaku jika XForwardedForClientSourceIpsEnabled diatur ke true.
  ...

Konfigurasi kontrol akses berbasis ACL

Anda dapat menggunakan AlbConfig untuk mengaktifkan fitur kontrol akses untuk pendengar ALB. Hal ini memungkinkan Anda mengontrol permintaan klien secara tepat dan mengelola penerusan permintaan dengan mengatur aturan izinkan atau tolak arah masuk. Untuk informasi selengkapnya tentang daftar kontrol akses (ACL), lihat Konfigurasi ACL untuk menerapkan kontrol akses.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb
spec:
  config:
   #...
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White
  #...

Tabel berikut menjelaskan bidang-bidang tersebut.

  • aclType: Menentukan tipe ACL untuk pendengar. Nilai yang valid adalah Black untuk blacklist dan White untuk daftar putih.

  • aclEntries: Blok CIDR untuk entri kontrol akses, seperti 127.0.0.1/32.

Hapus pendengar

Sebuah instans dapat memiliki beberapa pendengar. Untuk menghapus pendengar, jalankan perintah kubectl edit albconfig <Albconfig_Name> dan hapus pendengar dari bidang albconfig.spec.listeners AlbConfig.

Penting

Sebelum menghapus pendengar, Anda harus menghapus semua Ingress yang terkait dengannya. Jika tidak, pendengar tidak dapat dihapus dan akan muncul pesan kesalahan.

# Konfigurasi sebelum menghapus pendengar.
  listeners:
  - port: 8001
    protocol: HTTP
  - port: 8002  # Hapus pendengar 8002.
    protocol: HTTP

# Konfigurasi setelah menghapus pendengar.
  listeners:
  - port: 8001
    protocol: HTTP

FAQ

Terjadi kesalahan 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 bagian spec.listener file YAML AlbConfig, simbol - menandai awal konfigurasi pendengar. Dalam contoh yang salah di sebelah kiri, tiga simbol - digunakan, yang mendefinisikan tiga pendengar terpisah. Kesalahan terjadi karena konfigurasi port tidak ada untuk certificates yang terkait dengan simbol - terakhir.

Solusi

Setiap konfigurasi pendengar harus dimulai dengan satu simbol -. Dalam contoh yang diperbaiki di sebelah kanan, simbol - sebelum certificates dihapus. Hal ini menyertakan konfigurasi sertifikat dalam konfigurasi pendengar HTTPS: 443.

Contoh salah yang menyebabkan kesalahan:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
  - certificates:  # Contoh salah: Terdapat "-" ekstra yang dikonfigurasi.
    - 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:  # "-" ekstra dihapus, sehingga konfigurasi sertifikat termasuk dalam konfigurasi pendengar HTTPS: 443.
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...