AlbConfig adalah Custom Resource Definition (CRD) yang digunakan oleh pengontrol Ingress ALB untuk mengonfigurasi instans Application Load Balancer (ALB) dan pendengar. Topik ini menjelaskan cara membuat, memodifikasi, serta memperbarui AlbConfig, termasuk cara mengaktifkan Simple Log Service.
Prasyarat
Anda telah membuat dua vSwitch di zona berbeda. vSwitch tersebut harus berada dalam VPC yang sama dengan kluster. Untuk informasi lebih lanjut, lihat Membuat dan mengelola vSwitch.
Catatan
Kami merekomendasikan Anda menggunakan perintah
kubectl edituntuk langsung memodifikasi dan memperbarui konfigurasi sumber daya. Jika Anda harus menggunakan perintahkubectl applyuntuk memodifikasi dan memperbarui sumber daya, sebelum menjalankan perintahkubectl apply, jalankan terlebih dahulu perintahkubectl diffuntuk melihat pratinjau perubahan. Pastikan bahwa perubahan sesuai dengan yang diharapkan, lalu jalankan perintahkubectl applyuntuk menerapkan perubahan ke kluster Kubernetes.Versi lama dari Nginx Ingress Controller tidak dapat mengenali bidang
spec.ingressClassNamedalam sumber daya Ingress. Jika baik Nginx Ingress maupun ALB Ingress ada dalam sebuah kluster, versi lama dari Nginx Ingress Controller mungkin bertentangan dengan ALB Ingress atau menimpa konfigurasinya. Untuk menghindari masalah ini, lakukan peningkatan Nginx Ingress Controller ke versi terbaru, atau gunakan anotasi untuk menentukan ingressClass untuk ALB Ingress. Untuk informasi lebih lanjut, lihat Fitur lanjutan dari ALB Ingress.
Membuat AlbConfig
Sebuah AlbConfig berkorespondensi dengan satu instans ALB tetapi dapat dikaitkan dengan beberapa Ingress, menciptakan hubungan satu-ke-banyak. Untuk menggunakan beberapa instans ALB, Anda harus membuat beberapa AlbConfig. Ikuti langkah-langkah berikut untuk membuat AlbConfig.
Buat file bernama alb-test.yaml dan salin konten berikut ke dalamnya. File ini digunakan untuk membuat AlbConfig.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb-demo spec: config: name: alb-test addressAllocatedMode: Dynamic # Nilainya bisa Dynamic atau Fixed. Parameter ini menentukan mode IP dari instans ALB. addressType: Internet zoneMappings: # Untuk memastikan ketersediaan tinggi, pilih setidaknya dua vSwitch di zona yang berbeda. - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Ganti dengan ID vSwitch sebenarnya (di Zona 1). - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Ganti dengan ID vSwitch sebenarnya (di Zona 2, yang harus berbeda dari yang pertama). listeners: - port: 80 protocol: HTTPParameter
Deskripsi
spec.config.name
(Opsional) Nama instans ALB.
spec.config.addressType
(Diperlukan) Jenis alamat load balancer. Nilai valid:
Internet (default): Load balancer memiliki alamat IP publik. Nama domain diarahkan ke alamat IP publik. Load balancer dapat diakses melalui Internet.
Intranet: Load balancer hanya memiliki alamat IP pribadi. Nama domain diarahkan ke alamat IP pribadi. Load balancer hanya dapat diakses di dalam VPC tempat ia berada.
spec.config.zoneMappings
(Diperlukan) ID vSwitch untuk ALB Ingress. Di wilayah dengan beberapa zona, tentukan ID setidaknya dua vSwitch di zona yang berbeda. Untuk wilayah dengan satu zona, tentukan satu ID vSwitch. vSwitch yang ditentukan harus berada di zona yang mendukung ALB dan di VPC yang sama dengan kluster. Untuk informasi lebih lanjut tentang wilayah dan zona yang mendukung ALB, lihat Wilayah dan zona yang mendukung ALB.
PentingAnda tidak dapat memperbarui jenis alamat dan zona instans ALB. Parameter
addressTypedanzoneMappingsdalam AlbConfig hanya berlaku saat Anda membuat AlbConfig. Mereka tidak dapat diperbarui.spec.config.addressAllocatedMode(Opsional) Dalam ALBConfig, Anda dapat menggunakan parameter addressAllocatedMode untuk menentukan mode IP dari instans ALB. Nilai valid:
Dynamic: mode IP dinamis.
Fixed: mode IP statis.
Saat Anda menginstal komponen ALB Ingress Controller untuk sebuah kluster, AlbConfig dibuat secara default. Kecuali untuk vSwitchId, parameter lainnya menggunakan konfigurasi default seperti yang ditunjukkan di bawah ini.
Jalankan perintah berikut untuk membuat AlbConfig.
kubectl apply -f alb-test.yamlOutput yang diharapkan:
albconfig.alibabacloud.com/alb-demo createdJalankan perintah berikut untuk mengambil nama AlbConfig.
kubectl -n kube-system get AlbConfigOutput yang diharapkan:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb-demo alb-****** alb-******.<regionID>.alb.aliyuncs.com 443/HTTPS 11055487-cn-<regionID> 2d
Perbarui sebuah AlbConfig
Dalam Kubernetes, perintah kubectl apply melakukan pembaruan dengan menimpa, sedangkan perintah kubectl edit melakukan pembaruan tambahan pada objek yang sudah ada. Untuk mengubah konfigurasi instans Application Load Balancer (ALB) yang dibuat dari AlbConfig, gunakan perintah kubectl edit untuk melakukan pembaruan tambahan. Ikuti langkah-langkah berikut untuk memperbarui sebuah AlbConfig.
Jalankan perintah berikut untuk melihat nama AlbConfig.
kubectl -n kube-system get AlbConfigOutput yang diharapkan:
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb-demo alb-****** alb-******.<regionID>.alb.aliyuncs.com 443/HTTPS 11055487-cn-<regionID> 2dJalankan perintah berikut untuk memperbarui AlbConfig.
PentingKami merekomendasikan Anda menggunakan perintah
kubectl edituntuk memperbarui konfigurasi sumber daya secara langsung. Jika Anda harus menggunakan perintahkubectl applyuntuk memperbarui sebuah sumber daya, jalankan terlebih dahulu perintahkubectl diffuntuk melihat pratinjau perubahan. Verifikasi bahwa perubahan sesuai dengan yang diharapkan. Kemudian, gunakan perintahkubectl applyuntuk menerapkan perubahan ke kluster Kubernetes.Saat Anda menggunakan perintah
kubectl applyuntuk menimpa sebuah AlbConfig, pendengar yang ada tidak akan terpengaruh jika file YAML AlbConfig tidak berisi konfigurasipendengar. Jika konfigurasi ini ada, pendengar akan disesuaikan kembali berdasarkan konfigurasi baru. Oleh karena itu, Anda harus menentukan semua pendengar yang diperlukan, seperti pendengar umum pada port 80 dan 443.
kubectl -n kube-system edit AlbConfig alb-demoDalam file konfigurasi AlbConfig, perbarui konten sesuai kebutuhan. Sebagai contoh, ubah nama AlbConfig menjadi
test.... spec: config: name: test # Masukkan nama yang diperbarui. ...
Gunakan IngressClass untuk mengaitkan AlbConfig dengan Ingress
Anda dapat mengaitkan AlbConfig dengan Ingress menggunakan sumber daya IngressClass Kubernetes standar. Pertama, buat IngressClass, lalu gunakan untuk mengaitkan AlbConfig.
Buat file bernama alb.yaml dan salin konten berikut ke dalamnya untuk membuat IngressClass.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb-demoJalankan perintah berikut untuk membuat IngressClass.
kubectl apply -f alb.yamlOutput yang diharapkan:
ingressclass.networking.k8s.io/alb createdBuat file bernama ingress.yaml dan salin konten berikut ke dalamnya. Parameter
ingressClassNamedigunakan untuk mengaitkan AlbConfig dengan IngressClass bernama alb.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: cafe-ingress spec: ingressClassName: alb rules: - http: paths: # Konfigurasikan jalur konteks. - path: /tea pathType: ImplementationSpecific backend: service: name: tea-svc port: number: 80 # Konfigurasikan jalur konteks. - path: /coffee pathType: ImplementationSpecific backend: service: name: coffee-svc port: number: 80Jalankan perintah berikut untuk membuat Ingress.
kubectl apply -f ingress.yamlOutput yang diharapkan:
ingress.networking.k8s.io/cafe-ingress created
Setelah Anda menyelesaikan langkah-langkah ini, AlbConfig dikaitkan dengan Ingress melalui IngressClass.
Ubah nama instans ALB
Jalankan perintah berikut untuk mengubah nama instans ALB.
kubectl -n kube-system edit AlbConfig alb-demoDalam file konfigurasi, ubah nilai dari config.name. Nama baru akan berlaku secara otomatis setelah Anda menyimpan file tersebut.
...
spec:
config:
name: test # Masukkan nama yang telah diubah.
...Menggunakan alamat IPv6
Saat Anda membuat instans Application Load Balancer (ALB), Anda dapat mengaktifkan dukungan IPv6 dengan mengatur addressIpVersion bidang menjadi DualStack di dalam AlbConfig.
Bidang addressIpVersion diatur selama pembuatan instans dan tidak dapat diubah setelahnya.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
addressIpVersion: DualStack
...Tentukan kebijakan keamanan TLS
Saat Anda mengonfigurasi Pendengar HTTPS di AlbConfig, Anda dapat menentukan kebijakan keamanan TLS. Anda dapat memilih dari kebijakan kustom dan kebijakan sistem default. Untuk informasi lebih lanjut, lihat Kebijakan keamanan TLS.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
#...
listeners:
- port: 443
protocol: HTTPS
securityPolicyId: tls_cipher_policy_1_1
#...Aktifkan log akses di Simple Log Service
Untuk mengaktifkan ALB Ingress mengumpulkan log akses, Anda dapat menentukan logProject dan logStore di dalam AlbConfig.
Anda harus membuat
logProjectsecara manual karena tidak dapat dibuat secara otomatis. Untuk informasi lebih lanjut tentang cara membuatlogProject, lihat Kelola sebuah Project.Nama dari
logStoreharus dimulai denganalb_. JikalogStoreyang ditentukan tidak ada, maka akan dibuat secara otomatis.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
accessLogConfig:
logProject: "k8s-log-xz92lvykqj1siwvif****"
logStore: "alb_****"
#...Setelah Anda menyimpan konfigurasi, Anda dapat pergi ke Konsol Simple Log Service dan klik LogStore yang ditentukan untuk melihat log akses yang telah dikumpulkan.
Gunakan kembali instans ALB yang ada
Jika Anda ingin menggunakan kembali instans ALB yang ada, Anda harus menentukan ID instans ALB saat membuat AlbConfig. Instans tersebut harus berupa instans Edisi Standar atau instans dengan WAF yang dibuat di Konsol Application Load Balancer (ALB). Anda tidak dapat menggunakan kembali instans ALB Edisi Dasar. Sebuah instans ALB hanya dapat digunakan oleh satu kluster.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: reuse-alb
spec:
config:
id: **** # ID dari instans ALB Edisi Standar atau instans dengan WAF yang dibuat di konsol ALB.
forceOverride: false
listenerForceOverride: falseTabel berikut menjelaskan parameter-parameter tersebut.
Parameter | Deskripsi |
id |
Penting Dalam mode penggunaan ulang, jangan ubah nama pendengar secara manual. Hal ini mencegah pendengar dikelola atau tidak dikelola dengan benar oleh ACS. Pendengar yang dibuat atau diperbarui oleh AlbConfig dikelola oleh ACS, dan nama mereka secara default dalam format |
forceOverride | Menentukan apakah akan memaksa menimpa properti instans ALB dalam mode penggunaan ulang.
|
listenerForceOverride | Menentukan apakah akan memaksa menimpa properti pendengar dalam mode penggunaan ulang.
|
Buat Pendengar
Dalam skenario penggunaan kembali, Anda dapat menambahkan pendengar atau mengedit pengaturan pendengar yang ada dengan memodifikasi AlbConfig. Jalankan perintah kubectl edit albconfig <Albconfig_Name> dan atur port dan protocol di AlbConfig untuk membuat pendengar. port dan protocol adalah properti unik dari sebuah pendengar. Jika Anda memodifikasi port, protocol, atau properti pendengar lainnya, sistem akan menghapus pendengar asli dan membuat yang baru untuk menggantikannya.
Protokol HTTP secara otomatis kompatibel dengan WebSocket. Tidak diperlukan pengaturan khusus.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: alb-demo
spec:
config:
...
listeners:
- port: 80
protocol: HTTP # Nilai valid untuk protokol adalah HTTP, HTTPS, dan QUIC.
...Membuat dan menggunakan beberapa instans ALB
Untuk menggunakan beberapa instans ALB, tentukan IngressClasses yang berbeda di dalam Ingress menggunakan parameter spec.ingressClassName.
Buat file bernama alb-demo2.yaml dan salin konten berikut ke dalamnya untuk membuat AlbConfig.
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: demo spec: config: name: alb-demo2 # Nama dari instans ALB. addressType: Internet # Load balancer memiliki alamat IP publik. zoneMappings: # Untuk memastikan ketersediaan tinggi, pilih setidaknya dua vSwitch di zona yang berbeda. - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Ganti dengan ID vSwitch sebenarnya (di Zona 1). - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Ganti dengan ID vSwitch sebenarnya (di Zona 2, yang harus berbeda dari yang pertama).Jalankan perintah berikut untuk membuat AlbConfig.
kubectl apply -f alb-demo2.yamlOutput yang diharapkan:
AlbConfig.alibabacloud.com/demo createdBuat file bernama alb.yaml dan salin konten berikut ke dalamnya untuk membuat IngressClass.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb-demo2 spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: demoJalankan perintah berikut untuk membuat IngressClass.
kubectl apply -f alb.yamlOutput yang diharapkan:
ingressclass.networking.k8s.io/alb-demo2 createdBuat file bernama
ingress.yamldan salin konten berikut ke dalamnya. File ini menggunakan parameteringressClassNameuntuk menentukan instans ALB yang berbeda.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: demo namespace: default spec: ingressClassName: alb-demo2 rules: - host: "" http: paths: - backend: service: name: demo-service port: number: 80 path: /hello pathType: ImplementationSpecific
Atur periode waktu habis untuk permintaan koneksi Pendengar
Dalam sebuah AlbConfig, Anda dapat mengatur waktu habis untuk permintaan koneksi pada Pendengar. Waktu habis dapat diatur dari 1 hingga 180 detik. Jika server backend tidak merespons dalam periode waktu habis, load balancer akan berhenti menunggu dan mengembalikan kode kesalahan HTTP 504 kepada Klien. Jika Anda tidak menentukan waktu habis, nilai default 60 detik akan digunakan. File YAML berikut memberikan contoh.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
requestTimeout: 60
...Gunakan fitur kompresi data
Dalam sebuah AlbConfig, Anda dapat menentukan Pendengar dan mengaktifkan atau menonaktifkan kompresi data. Nilai yang valid untuk gzipEnabled adalah:
true: Mengompres tipe file tertentu.
false: Tidak mengompres tipe file apa pun.
Brotli mendukung kompresi semua tipe file. Gzip mendukung kompresi tipe file seperti text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml, dan application/json.
Berikut ini adalah contoh File YAML untuk menonaktifkan kompresi data:
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
gzipEnabled: false
...Mendapatkan Alamat IP Asal Klien
Dalam AlbConfig, Anda dapat menggunakan bidang header X-Forwarded-For untuk mendapatkan alamat IP asal klien. Nilai yang valid untuk parameter XForwardedForEnabled adalah:
true: Alamat IP asal klien diperoleh.
false: Alamat IP asal klien tidak diperoleh.
Parameter ini hanya didukung oleh pendengar HTTP dan HTTPS.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForEnabled: true
#...Memperoleh protokol pendengar dari sebuah instans
Dalam sebuah AlbConfig, Anda dapat menggunakan bidang XForwardedForProtoEnabled untuk memperoleh protokol pendengar untuk instans tersebut. Nilai yang valid adalah:
true: Memperoleh protokol pendengar untuk instans.
false: Tidak memperoleh protokol pendengar untuk instans.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForProtoEnabled: true
...Memperoleh ID dari instans load balancer
Dalam AlbConfig, Anda dapat memperoleh ID dari instans load balancer dari bidang SLB-ID pada header. Nilai yang valid untuk parameter XForwardedForSLBIdEnabled adalah:
true: ID dari instans load balancer diperoleh.
false: ID dari instans load balancer tidak diperoleh.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForSLBIdEnabled: true
...Memperoleh port pendengar dari sebuah instans
Dalam sebuah AlbConfig, Anda dapat mengonfigurasi parameter XForwardedForSLBPortEnabled untuk menentukan apakah akan menggunakan bidang X-Forwarded-Port header untuk memperoleh port pendengar dari sebuah instans. Nilai yang valid adalah:
true: Port pendengar dari instans diperoleh.
false: Port pendengar dari instans tidak diperoleh.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForSLBPortEnabled: true
...Memperoleh port klien dari instans load balancer
Dalam AlbConfig, Anda dapat menggunakan bidang header X-Forwarded-Client-srcport untuk memperoleh port klien dari instans load balancer. Nilai yang valid untuk XForwardedForClientSrcPortEnabled adalah:
true: Port klien dari instans load balancer diperoleh.
false: Port klien dari instans load balancer tidak diperoleh.
Hanya pendengar HTTP dan HTTPS yang mendukung parameter ini.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
...
listeners:
- port: 80
protocol: HTTP
xForwardedForConfig:
XForwardedForClientSrcPortEnabled: true
...Konfigurasikan kontrol akses berbasis ACL
Anda dapat menggunakan AlbConfig untuk mengaktifkan kontrol akses pada Pendengar ALB. Dengan menetapkan aturan izinkan atau tolak untuk lalu lintas masuk, Anda dapat secara tepat mengontrol permintaan klien dan mengelola penerusan permintaan. Untuk informasi lebih lanjut tentang daftar kontrol akses (ACL), lihat Kontrol akses.
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: 80
protocol: HTTPS
aclConfig:
aclEntries:
- 127.0.0.1/32
aclType: White
#...Daftar berikut menjelaskan beberapa parameter:
aclType: Menentukan tipe ACL. Nilai yang valid adalah Black untuk blacklist dan White untuk daftar putih.
aclEntries: Menentukan alamat IP atau blok CIDR untuk entri kontrol akses, seperti 127.0.0.1/32.
Hapus Instans ALB
Sebuah instans ALB berkorespondensi dengan sebuah AlbConfig. Oleh karena itu, Anda dapat menghapus instans ALB dengan menghapus AlbConfig-nya. Sebelum Anda menghapus AlbConfig, Anda harus terlebih dahulu menghapus semua Ingress yang terkait dengannya.
kubectl delete -n kube-system AlbConfig alb-demoGanti alb-demo dengan nama AlbConfig yang ingin Anda hapus.
Hapus AlbConfig dari instans ALB yang digunakan kembali
Untuk menghapus AlbConfig dari instans ALB yang digunakan kembali, ikuti langkah-langkah berikut.
Hapus semua Ingress yang terkait dengan AlbConfig.
kubectl delete -n <NAMESPACE> ingress <INGRESS_NAME> # Ganti <INGRESS_NAME> dan <NAMESPACE> dengan nama dan namespace dari Ingress yang ingin Anda hapus.Jalankan perintah
kubectl edituntuk memodifikasi AlbConfig dan menghapus semua Pendengarnya. Ini berarti menghapus semua entri di bawah bidangspec.listeners.PentingLakukan langkah ini hanya jika versi Komponen ALB Ingress Controller yang diinstal di kluster adalah v2.10.0-aliyun.1 atau lebih lama. Jika tidak, lewati langkah ini.
Hapus AlbConfig.
kubectl -n kube-system delete AlbConfig alb-demo # Ganti alb-demo dengan nama AlbConfig yang ingin Anda hapus.