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
Pengontrol Ingress ALB telah diinstal di kluster. Untuk informasi selengkapnya, lihat Mengelola pengontrol Ingress ALB.
CatatanUntuk menggunakan Ingress ALB guna mengakses layanan yang diterapkan di kluster khusus ACK, Anda harus terlebih dahulu memberikan izin yang dibutuhkan oleh pengontrol Ingress ALB kepada kluster tersebut. Untuk informasi selengkapnya, lihat Memberikan akses kluster khusus ACK ke pengontrol Ingress ALB.
Perhatian
Kami menyarankan Anda menggunakan perintah
kubectl edituntuk langsung memodifikasi atau memperbarui konfigurasi sumber daya. Jika Anda harus menggunakan perintahkubectl applyuntuk memodifikasi atau memperbarui sumber daya, jalankan terlebih dahulu perintahkubectl diffuntuk melihat pratinjau perubahan sebelum menjalankan perintahkubectl apply. Pastikan perubahannya sesuai harapan, lalu jalankan perintahkubectl applyuntuk 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.
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".
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: HTTPParameter
Deskripsi
spec.config.nameNama instans ALB.
spec.config.addressTypeTipe 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.
PentingParameter
addressTypehanya diproses saat Anda membuat instans ALB. Pembaruan pada parameter ini tidak berlaku.spec.config.zoneMappingsvSwitchId: 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.
PentingUntuk wilayah dengan zona tunggal, Anda hanya perlu menentukan satu ID vSwitch.
Parameter
zoneMappingshanya 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.
PentingAnda 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.Jalankan perintah berikut untuk membuat AlbConfig:
kubectl apply -f alb.yamlOutput yang diharapkan:
AlbConfig.alibabacloud.com/alb createdJalankan perintah berikut untuk melihat sumber daya AlbConfig:
kubectl get AlbConfigOutput yang diharapkan:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 28mCatatanSetelah Anda membuat pendengar HTTPS dan mengonfigurasi sertifikat untuknya, konten akan ditampilkan di kolom
PORT&PROTOCOLdanCERTID. 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: falseTabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi |
|
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 |
| Menentukan apakah akan menimpa secara paksa properti instans ALB saat menggunakan kembali instans tersebut.
|
| Menentukan apakah akan menimpa secara paksa properti pendengar saat menggunakan kembali instans tersebut.
|
Konfigurasi instans Bandwidth Internet Bersama
Setelah Anda mengaktifkan fitur ini, Anda dapat mengaitkan instans Bandwidth Internet Bersama dengan instans ALB menggunakan AlbConfig.
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.
Jalankan perintah berikut untuk melihat nama AlbConfig:
kubectl get AlbConfigOutput yang diharapkan:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 28mJalankan 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.nameuntuk mengubah nama instans ALB menjadinew_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.
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: albJalankan perintah berikut untuk membuat IngressClass:
kubectl apply -f ingress_class.yamlOutput yang diharapkan:
ingressclass.networking.k8s.io/alb createdBuat file bernama `ingress.yaml` dan salin konten berikut ke dalam file tersebut. Gunakan parameter
ingressClassNameuntuk 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: 80Kluster 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: 80Jalankan perintah berikut untuk membuat Ingress:
kubectl apply -f ingress.yamlOutput 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.
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****Jalankan perintah berikut untuk membuat AlbConfig:
kubectl apply -f alb-2.yamlOutput yang diharapkan:
AlbConfig.alibabacloud.com/alb-2 createdBuat 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.Jalankan perintah berikut untuk membuat IngressClass:
kubectl apply -f ingress_class2.yamlOutput yang diharapkan:
ingressclass.networking.k8s.io/alb-2 createdBuat file bernama `ingress2.yaml` dan salin konten berikut ke dalam file tersebut. Gunakan parameter
ingressClassNameuntuk menentukan instans ALB yang berbeda. Dalam contoh berikut,alb-2ditentukan di bidangingressClassNameuntuk 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: 80Kluster 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: 80Jalankan perintah berikut untuk membuat Ingress:
kubectl apply -f ingress2.yamlOutput 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.
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.
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
logStoreharus dimulai denganalb_. JikalogStoreyang 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
forceOverrideketrueuntuk 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.
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.
Jalankan perintah
kubectl edituntuk memodifikasi AlbConfig dan menghapus semua pendengarnya. Untuk melakukan ini, hapus semua entri di bawah bidangspec.listeners.PentingLakukan 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.
Jalankan perintah berikut untuk menghapus AlbConfig:
PentingSebelum 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: HTTPBidang Listeners AlbConfig diperbarui menjadi hasil berikut:
# Hasil file konfigurasi Listeners.
listeners:
- port: 8001
protocol: HTTP
- port: 8003
protocol: HTTP
- port: 8005
protocol: HTTPPort 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.
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.
...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
...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
...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.
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.
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-Lengthdalam header respons melebihi 1.024 byte danAccept-Encodingdalam 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.
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.
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.
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 adalahBlackuntuk blacklist danWhiteuntuk 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.
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: HTTPFAQ
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: | Contoh yang diperbaiki: |