MseIngressConfig adalah Custom Resource Definition (CRD) yang disediakan oleh MSE Ingress Controller untuk mengelola siklus hidup instans gateway cloud-native MSE serta mengonfigurasi opsi pendengar Ingress dan pengaturan global. Topik ini menjelaskan penggunaan umum MseIngressConfig, termasuk cara membuat, menggunakan kembali, dan menghapus instans gateway cloud-native MSE, mengonfigurasi daftar hitam dan daftar putih IP tingkat instans global untuk kontrol akses, mengaktifkan log Simple Log Service (SLS), dan mengaktifkan pelacakan OpenTelemetry.
Informasi latar belakang
MSE Ingress Controller mendengarkan sumber daya MseIngressConfig yang dibuat dalam kluster. Sistem ini secara dinamis mempertahankan siklus hidup instans gateway cloud-native yang sesuai dan asosiasinya dengan kluster ACK yang dikelola, kluster ACK Serverless, atau kluster ACS.
Dengan berinteraksi dengan API Server dari kluster ACK yang dikelola, kluster ACK Serverless, atau kluster ACS, lapisan kontrol gateway cloud-native MSE dapat mendeteksi perubahan pada sumber daya Ingress dan memperbarui aturan routing gateway secara dinamis. Saat permintaan diterima, gateway cloud-native MSE mencocokkan aturan pengalihan Ingress dan meneruskan permintaan ke Pod yang sesuai dengan layanan backend.
Daftar berikut menjelaskan hubungan antara Service, Ingress, IngressClass, MseIngressConfig, dan MSE Ingress Controller di Kubernetes:
Service: Abstraksi dari layanan backend nyata. Sebuah Service dapat merepresentasikan beberapa layanan backend yang identik.
Ingress: Aturan reverse proxy yang menentukan layanan mana yang harus dituju oleh permintaan HTTP atau HTTPS. Misalnya, permintaan dapat diteruskan ke layanan berbeda berdasarkan host dan path URL dalam permintaan tersebut.
IngressClass: Deskripsi prosesor Ingress yang digunakan untuk mendeklarasikan implementasi prosesor Ingress dalam kluster Kubernetes. Sumber daya Ingress yang terkait dengan IngressClass ini diproses oleh prosesor Ingress yang dideklarasikan. Anda juga harus mengasosiasikan MseIngressConfig (gateway cloud-native MSE) melalui bidang Parameter dari IngressClass untuk menerapkan aturan manajemen lalu lintas yang didefinisikan dalam sumber daya Ingress yang telah diproses.
MseIngressConfig: CRD yang disediakan oleh MSE Ingress Controller yang menjelaskan informasi dasar instans gateway cloud-native.
MSE Ingress Controller: Lapisan kontrol yang mengelola instans dan konfigurasi gateway cloud-native MSE. Ini bukan bidang data jaringan. Sistem ini mendengarkan sumber daya MseIngressConfig dalam kluster dan mengkoordinasikan instans gateway cloud-native MSE untuk menerapkan aturan manajemen lalu lintas yang didefinisikan dalam sumber daya Ingress.
Gambar berikut menunjukkan cara kerja MSE Ingress Controller.
Deskripsi MseIngressConfig
Deskripsi konfigurasi
MseIngressConfig adalah CRD yang disediakan oleh MSE Ingress Controller untuk mengelola siklus hidup dan konfigurasi global instans gateway cloud-native MSE.
Satu MseIngressConfig berkorespondensi dengan satu instans gateway cloud-native MSE. Untuk menggunakan beberapa instans gateway cloud-native MSE, Anda harus membuat beberapa konfigurasi MseIngressConfig. Kecuali dalam skenario penggunaan kembali, menghapus konfigurasi MseIngressConfig juga akan menghapus instans gateway cloud-native MSE yang sesuai melalui penghapusan bertingkat (cascade delete).
Kode contoh berikut menunjukkan konfigurasi MseIngressConfig lengkap.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
name: mse-ingress
common:
pay:
payType: POSTPAY
instance:
spec: 4c8g
replicas: 3
network:
vSwitches:
- "vsw-1"
- "vsw-2"
publicSLBSpec: slb.s2.small
securityGroupType: normal
global:
downstreamIdleTimeout: 15
enableHttp2: true
enableXffTrustedCidrs: |-
{"enable":true,"ipListContent":"x.x.x.x/24
x.x.x.x"}
preserveHeaderFormat: true
upstreamIdleTimeout: 30
tls:
enableHardwareAcceleration: true
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.2.XX.XX
monitor:
logging:
sls:
reuseProject: "xxx" # Nilai kosong menunjukkan bahwa proyek default digunakan.
compatibleNginx: false
tracing:
openTelemetry:
sampleRate: "100"
ingress:
local:
ingressClass: mse
watchNamespace: "" # Nilai kosong menunjukkan semua namespace.Parameter | Deskripsi | Opsional | Nilai default |
name | Nama gateway. | Opsional | mse-ingress |
common.pay.payType | Metode penagihan. Saat ini, hanya bayar sesuai penggunaan yang didukung. | Opsional Jika tidak dikonfigurasi, sistem secara default menggunakan metode bayar sesuai penggunaan. | POSTPAY |
common.instance.spec | Tipe instans gateway. Nilai yang valid:
| Opsional | 4c8g |
common.instance.replicas | Jumlah replika instans gateway. Rentang nilai yang valid untuk jumlah replika adalah 0 hingga 30. | Opsi | 3 |
common.network.vSwitches | vSwitch utama dan cadangan. vSwitch utama dicantumkan terlebih dahulu, diikuti oleh vSwitch cadangan. Tentukan minimal satu dan maksimal dua vSwitch. Jika tidak ditentukan, vSwitch diambil dari node tempat Pod Controller berada. | Opsi | Tidak ada |
common.network.publicSLBSpec | Spesifikasi instans SLB publik yang dibeli oleh gateway. Nilai yang valid:
| Opsi | slb.s2.small |
common.network.privateSLBSpec | Spesifikasi instans SLB internal yang dibeli oleh gateway. Nilai yang valid:
| Opsi | slb.s2.small |
common.securityGroupType | Jenis grup keamanan. Nilai yang valid:
| Opsi | normal |
global.tls.enableHardwareAcceleration | Sakelar untuk akselerasi perangkat keras TLS. Ini dapat meningkatkan performa lalu lintas HTTPS secara signifikan. | Opsional | Diaktifkan |
global.ipAccessControl.whitelist | Daftar putih akses IP global. | Opsional | Tidak dikonfigurasi |
global.ipAccessControl.blacklist | Daftar hitam akses IP global. | Opsional | Tidak dikonfigurasi |
global.downstreamIdleTimeout | Waktu idle untuk koneksi antara klien downstream dan gateway. Jika tidak ada aktivitas baca atau tulis dalam periode ini, gateway akan menutup koneksi secara aktif. Satuan: detik. | Opsi | 15 |
global.enableHttp2 | Menentukan apakah akan mengaktifkan dukungan protokol HTTP/2 untuk gateway. | Opsional | false |
global.enableXffTrustedCidrs | Mengonfigurasi rentang alamat IP proksi perantara tepercaya dalam format CIDR, seperti Alibaba Cloud WAF atau CDN. Konfigurasi ini memungkinkan gateway melewati IP proksi tepercaya tersebut saat mengurai header permintaan | Opsional | Tidak dikonfigurasi |
global.preserveHeaderFormat | Menentukan apakah akan mempertahankan format huruf asli dari header permintaan klien. | Opsional | false |
global.upstreamIdleTimeout | Waktu idle untuk koneksi antara gateway dan layanan backend upstream. Jika tidak ada aktivitas dalam periode ini, gateway akan menutup koneksi secara aktif. Satuan: detik. | Opsional | 30 |
monitor.logging.sls | Sakelar untuk layanan log SLS. Untuk mengaktifkannya, berikan izin terkait SLS kepada Controller. | Opsional | Nonaktif |
monitor.logging.sls.reuseProject | Proyek tujuan untuk mengirimkan log akses dalam layanan log SLS. Nilai yang valid:
| Opsi | Kosong |
monitor.tracing.xTrace.sampleRate | Laju sampel untuk pelacakan OpenTelemetry. | Opsional | 0 |
monitor.tracing.openTelemetry | Sakelar untuk pelacakan OpenTelemetry. | Opsi | Secara default dinonaktifkan. Ini saling eksklusif dengan OpenTelemetry. |
monitor.tracing.openTelemetry.sampleRate | Laju sampel untuk pelacakan OpenTelemetry. | Opsional | 100 |
ingress.local.ingressClass | Gateway cloud-native mendengarkan sumber daya Ingress di bawah IngressClass tertentu dalam kluster. Nilai yang valid:
Catatan Konfigurasi ini memiliki prioritas lebih rendah daripada mengasosiasikan MseIngressConfig melalui sumber daya IngressClass. | Opsional | Tidak dikonfigurasi |
ingress.local.watchNamespace | Namespace dalam kluster tempat gateway cloud-native mendengarkan sumber daya Ingress. Nilai yang valid:
| Opsi | Kosong |
Deskripsi status
Setelah Anda membuat sumber daya MseIngressConfig, Anda dapat melihat statusnya dengan menjalankan perintah kubectl get mseingressconfig. Status MseIngressConfig berubah dalam urutan berikut: Pending > Running > Listening. Status-status tersebut dijelaskan sebagai berikut:
Pending: Gateway cloud-native sedang dibuat. Proses ini membutuhkan waktu sekitar 3 menit.
Running: Gateway cloud-native telah dibuat dan sedang berjalan.
Listening: Gateway cloud-native sedang berjalan dan mendengarkan sumber daya Ingress dalam kluster.
Failed: Gateway cloud-native berada dalam keadaan tidak valid. Periksa Pesan di bidang Status untuk mengetahui penyebab kegagalan.
Deskripsi tag
Instans gateway cloud-native MSE yang dibuat atau digunakan kembali melalui MseIngressConfig secara otomatis diberi tag sumber daya. Anda dapat melihat tag untuk gateway tersebut di bagian informasi dasar MSE console.
Jangan mengedit tag dalam tabel berikut di konsol gateway cloud-native MSE. Mengedit tag ini dapat menyebabkan masalah pada instans gateway Anda.
Nama tag | Deskripsi |
ack.aliyun.com | Lalu lintas ingress dari kluster Container Service for Kubernetes (ACK) yang dikelola oleh gateway cloud-native MSE. |
ingress.k8s.alibaba/MseIngressConfig | Mengasosiasikan gateway cloud-native MSE dengan MseIngressConfig. |
kubernetes.reused.by.user | Menunjukkan apakah gateway cloud-native MSE sedang digunakan kembali. Jika ya, instans gateway cloud-native MSE tidak akan dihapus saat MseIngressConfig terkait dihapus. |
Buat instans gateway cloud-native MSE
Konfigurasi MseIngressConfig.
Gunakan kode contoh berikut untuk membuat instans gateway cloud-native MSE bernama mse-ingress dengan tiga replika dan tipe instans 2-core 4 GB. Sesuaikan pengaturan MseIngressConfig lainnya sesuai kebutuhan.
apiVersion: mse.alibabacloud.com/v1alpha1 kind: MseIngressConfig metadata: name: test spec: name: mse-ingress common: instance: spec: 2c4g replicas: 3Buat sumber daya IngressClass di kluster ACK dan asosiasikan dengan MseIngressConfig.
Buat sumber daya IngressClass di kluster ACK dan asosiasikan dengan MseIngressConfig dari langkah sebelumnya menggunakan spec.parameters. Ini mendeklarasikan prosesor Ingress di kluster ACK. Akibatnya, sumber daya Ingress di kluster yang terkait dengan IngressClass ini diproses oleh instans gateway cloud-native MSE yang terkait dengan MseIngressConfig.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: mse spec: controller: mse.alibabacloud.com/ingress parameters: apiGroup: mse.alibabacloud.com kind: MseIngressConfig name: test
Gunakan kembali instans gateway cloud-native MSE yang ada
Jika Anda ingin menggunakan kembali instans gateway cloud-native MSE yang sudah ada, tentukan ID uniknya dalam format `gw-xxx` di spec.id saat membuat MseIngressConfig. Anda dapat menggunakan parameter spec.override untuk mengontrol apakah akan menimpa konfigurasi instans gateway cloud-native MSE yang digunakan kembali dengan konfigurasi dari MseIngressConfig.
Kode contoh berikut menggunakan kembali instans gateway cloud-native MSE yang sudah ada menggunakan MseIngressConfig. Sistem ini mengasosiasikan instans gateway dengan kluster kontainer dan mengonfigurasinya untuk mendengarkan sumber daya Ingress di kluster tersebut yang memiliki `ingressClass` diatur ke `mse`.
Dalam konfigurasi berikut,
spec.overridediatur kefalse. Artinya, opsi pendengar Ingress dan konfigurasi global gateway cloud-native MSE yang sudah ada tidak ditimpa. Jika instans gateway yang sudah ada belum diasosiasikan dengan kluster kontainer ini, instans tersebut akan secara otomatis diasosiasikan dengan kluster tersebut. Opsi pendengar Ingress-nya kemudian diatur untuk mendengarkan sumber daya Ingress di mana `ingressClass` cocok dengan nilaispec.ingress.local.ingressClass, yaitu `mse` dalam kasus ini. Jika instans gateway yang sudah ada sudah diasosiasikan dengan kluster kontainer, opsi pendengar Ingress aslinya tidak ditimpa.Jika Anda ingin menimpa opsi pendengar Ingress dan konfigurasi global gateway cloud-native MSE yang sudah ada, Anda harus memastikan bahwa konfigurasi parameter gateway dalam MseIngressConfig sudah benar sebelum mengatur
spec.overrideke `true`. Konfigurasi ini mencakup opsi pendengar Ingress, akselerasi perangkat keras, daftar hitam dan daftar putih global, serta observabilitas. Jika konfigurasi ini tidak ditentukan dalam MseIngressConfig, mengaturspec.overrideke `true` akan menimpa konfigurasi parameter asli gateway dengan nilai kosong, yang dapat mengganggu lalu lintas Anda.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: reuse
spec:
id: gw-xxxx
override: false
ingress:
local:
ingressClass: mseParameter | Deskripsi |
spec.id | ID instans gateway cloud-native MSE target yang akan digunakan kembali, dimulai dengan gw-. |
spec.override | Menentukan apakah akan menimpa konfigurasi instans gateway cloud-native MSE yang digunakan kembali berdasarkan MseIngressConfig.
|
Hapus instans gateway cloud-native MSE
Satu MseIngressConfig berkorespondensi dengan satu instans gateway cloud-native MSE. Kecuali dalam skenario penggunaan kembali, menghapus konfigurasi MseIngressConfig juga akan menghapus instans gateway cloud-native MSE yang sesuai melalui penghapusan bertingkat (cascade delete).
Kebijakan penghapusan ditunjukkan dalam tabel berikut.
Metode penagihan gateway | Dibuat otomatis oleh MSE Ingress Controller | Gateway yang digunakan kembali yang dibeli di konsol |
Bayar sesuai penggunaan | Menghapus MseIngressConfig secara otomatis menghapus instans gateway. | Menghapus MseIngressConfig tetap mempertahankan instans gateway. |
Langganan | Tidak berlaku. | Menghapus MseIngressConfig tetap mempertahankan instans gateway. |
Jalankan perintah berikut untuk menghapus konfigurasi MseIngressConfig.
kubectl delete mseingressconfig your-config-nameKonfigurasi kontrol akses IP tingkat instans global
Konfigurasi daftar putih IP
Anda dapat mengonfigurasi daftar putih IP tingkat instans global untuk hanya mengizinkan alamat IP sumber tertentu mengakses MSE Ingress.
Kode contoh berikut mengonfigurasi instans gateway MSE Ingress agar hanya mengizinkan akses dari alamat IP sumber 1.1.XX.XX atau rentang IP 2.0.XX.XX.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
global:
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...Konfigurasi daftar hitam IP
Anda dapat mengonfigurasi daftar hitam IP tingkat instans global untuk menolak akses dari alamat IP sumber tertentu ke MSE Ingress.
Kode contoh berikut mengonfigurasi instans gateway MSE Ingress agar menolak akses dari alamat IP sumber 1.1.XX.XX atau rentang IP 2.0.XX.XX.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
global:
ipAccessControl:
blacklist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...Aktifkan log SLS
Sebelum mengaktifkan log SLS, Anda harus memberikan izin SLS yang diperlukan kepada MSE Ingress Controller.
Jika Anda menggunakan kluster ACK yang dikelola atau khusus, lihat Berikan izin kepada MSE Ingress Controller di kluster ACK khusus.
Jika kluster Anda adalah kluster ACK Serverless, lihat Berikan izin kepada MSE Ingress Controller.
Jika kluster Anda adalah kluster ACS, lihat Berikan izin kepada MSE Ingress Controller di kluster ACS.
Kode contoh berikut mengonfigurasi gateway MSE Ingress untuk mengirimkan log akses ke Proyek bernama demo.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
monitor:
logging:
sls:
# Nilai kosong menunjukkan bahwa proyek default digunakan.
reuseProject: "demo"
...Anda dapat mengonfigurasi bidang reuseProject untuk mengaktifkan log SLS. Jika ingin menggunakan Proyek default, biarkan bidang reuseProject kosong.
Aktifkan pelacakan OpenTelemetry
Anda dapat mengonfigurasi layanan pelacakan OpenTelemetry Alibaba Cloud untuk gateway guna membangun sistem pelacakan dan pemantauan end-to-end. Hal ini membantu Anda mendiagnosis dan menemukan masalah online dengan cepat.
Kode contoh berikut mengonfigurasi pelacakan OpenTelemetry untuk gateway MSE Ingress dengan laju sampel 100%.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
monitor:
tracing:
openTelemetry:
sampleRate: "100"
...Konfigurasi tambahan
Instans gateway cloud-native yang digunakan oleh MSE Ingress mendukung konfigurasi tambahan.
Untuk mengonfigurasi pengaturan ini, masuk ke Konsol Manajemen Gateway MSE. Di halaman , temukan instans gateway yang digunakan oleh MSE Ingress Controller. ID instans berformat `mse_ingresspost-*****`. Klik ID instans tersebut, lalu di panel navigasi sebelah kiri, klik Parameter Configuration.
Item konfigurasi | Tipe | Deskripsi |
EnableGenerateRequestId | Bool | Berlaku untuk cakupan permintaan. Saat diaktifkan, menghasilkan requestId di header permintaan untuk melacak permintaan. |
EnableGzip | Bool | Berlaku untuk tahap permintaan dan respons. Mengaktifkan gzip mengompresi permintaan dan respons, yang mengurangi lalu lintas gateway tetapi meningkatkan konsumsi CPU gateway. |
EnableSlashMerge | Bool | Berlaku untuk tahap permintaan. Menentukan apakah akan menggabungkan garis miring ekstra ('/') dalam permintaan. Saat diaktifkan, garis miring ekstra dalam `www.a.com//b` digabungkan, sehingga menjadi identik dengan `www.a.com/b`. |
DownstreamConnectionBufferLimits | Int Rentang: [0, 2147483647] | Berlaku untuk koneksi gateway. Ukuran buffer untuk satu koneksi. Pengaturan ini memengaruhi throughput dan penggunaan memori gateway. |
XffTrustedNum | Int Rentang: [0, 10] | Berlaku untuk tahap permintaan. Jumlah proksi tepercaya di depan gateway. Ini memengaruhi apakah gateway menggunakan header yang dihasilkan klien seperti x-forwarded-for dan x-request-id. |
DownstreamHttp2MaxConcurrentStream | Int Rentang: [0, 2147483647] (byte) | Berlaku untuk tahap permintaan. Jumlah maksimum aliran konkuren pada satu koneksi saat klien menggunakan HTTP/2. |
InitialStreamWindowSize | Int Rentang: [65535, 2147483647] (byte) | Berlaku untuk tahap permintaan. Ukuran jendela aliran awal yang dinegosiasikan antara gateway dan klien saat menggunakan HTTP/2. |
InitialConnectionWindowSize | Int Rentang: [65535, 2147483647] (byte) | Berlaku untuk tahap permintaan. Ukuran jendela awal tingkat koneksi saat gateway dan klien menggunakan HTTP/2. |
EnableHttp3 | Bool | Menentukan apakah akan mendukung protokol HTTP/3. (HTTP/3 tidak kompatibel dengan fitur akselerasi perangkat keras. Nonaktifkan akselerasi perangkat keras sebelum mengaktifkan dukungan HTTP/3.) |
PathWithEscapedSlashes | String Rentang: [KEEP_UNCHANGED, REJECT_REQUEST, UNESCAPE_AND_REDIRECT, UNESCAPE_AND_FORWARD] | Menentukan tindakan untuk permintaan yang path URI-nya berisi karakter ter-escape seperti %2F, %2f, %5C, atau %5c. Default-nya adalah KEEP_UNCHANGED (tetap seperti semula). |
ZipAlgorithm | List<String> Rentang: [brotli, gzip] | Algoritma yang digunakan saat kompresi diaktifkan. Anda dapat memilih brotli atau gzip. Jika EnableGzip tidak diaktifkan saat ini, sistem akan mengaktifkannya secara otomatis. |
EnableProxyProtocol | Bool | Menentukan apakah akan mengaktifkan Proxy Protocol. Jika lalu lintas ingress gateway menggunakan NLB, alamat IP asal klien tidak dapat diperoleh kecuali ini diaktifkan. Mengaktifkannya tidak memengaruhi permintaan non-Proxy Protocol. |
EnableCustomAuthConfigPush | Bool | Berlaku untuk skenario yang menggunakan layanan otorisasi mandiri. Saat diaktifkan, perubahan aturan otorisasi tidak menyebabkan gangguan koneksi, sehingga cocok untuk skenario WebSocket dan bisnis online. |
KeepaliveHeaderTimeout | Int Rentang: [0, 600] (s) | Digunakan untuk menghasilkan header respons Keep-Alive guna memberi tahu klien tentang waktu keepalive koneksi. Misalnya, nilai 10 mengembalikan header respons: `keep-alive: timeout=10`. Nilai 0 berarti header respons ini tidak dikembalikan. |
WebsocketTermGracePeriod | Int Rentang: [20, 900] (s) | Waktu keepalive yang dipertahankan untuk koneksi WebSocket saat koneksi perlu ditutup, misalnya selama peningkatan atau restart instans gateway. |
EnableGzipHardwareAccelerate | Bool | Menjalankan kompresi Gzip berdasarkan perangkat keras khusus. Saat diaktifkan, mengompresi permintaan dan respons, secara signifikan mengurangi lalu lintas gateway dengan performa lebih tinggi dan konsumsi CPU lebih rendah dibandingkan Gzip perangkat lunak. Fitur ini tidak dapat diaktifkan di wilayah yang tidak didukung atau jika akselerasi perangkat keras Gzip tidak ditentukan saat pembelian. Saat diaktifkan, EnableGzip dan ZipAlgorithm tidak akan berlaku. |
EnableK8sSourceWorkloadFilter | Bool | Menyaring sumber daya Ingress, Service, dan Pod berdasarkan label tertentu saat menambahkan sumber layanan. Mendukung penyaringan invers. |