MseIngressConfig adalah CustomResourceDefinition (CRD) yang disediakan oleh MSE Ingress Controller. CRD ini mengelola seluruh siklus hidup MSE cloud-native gateway—mulai dari pembuatan hingga penghapusan—serta mengonfigurasi opsi pendengaran Ingress dan pengaturan global tingkat gateway, seperti kontrol akses IP dan observabilitas.
Cara kerja
MSE Ingress Controller memantau resource MseIngressConfig di kluster Anda dan menjaga agar MSE cloud-native gateway terkait tetap sinkron. Kluster tersebut dapat berupa kluster managed Container Service for Kubernetes (ACK), kluster ACK Serverless, atau kluster ACS.
Setelah cloud-native gateway ditautkan ke server API kluster, lapisan kontrolnya menerima perubahan pada resource Ingress dan memperbarui aturan routing secara dinamis. Saat gateway menerima permintaan, ia mencocokkan permintaan tersebut dengan aturan routing Ingress dan meneruskan traffic ke Pod backend yang sesuai.
Komponen-komponen berikut bekerja sama dalam pengaturan ini:
-
Service: Abstraksi atas sekelompok Pod backend yang direplikasi.
-
Ingress: Menentukan aturan reverse proxy yang mengarahkan traffic HTTP atau HTTPS ke layanan berdasarkan hostname dan path URL.
-
IngressClass: Mendeklarasikan controller Ingress mana yang menangani sekumpulan resource Ingress. Kaitkan MseIngressConfig dengan bidang
parametersdari IngressClass untuk menerapkan logika routing MSE pada resource Ingress tersebut. -
MseIngressConfig: CRD yang mendefinisikan konfigurasi gateway—spesifikasi, pengaturan jaringan, kebijakan global, dan opsi observabilitas.
-
MSE Ingress Controller: Lapisan kontrol yang mengelola cloud-native gateway berdasarkan definisi MseIngressConfig. Komponen ini tidak menangani traffic bidang data jaringan secara langsung.
Referensi MseIngressConfig
Konfigurasi 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:
tls:
enableHardwareAcceleration: true
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.2.XX.XX
monitor:
logging:
sls:
reuseProject: "xxx" # Biarkan kosong untuk menggunakan proyek default.
tracing:
openTelemetry:
sampleRate: "100"
ingress:
local:
ingressClass: mse
watchNamespace: "" # Biarkan kosong untuk mendengarkan semua namespace.
Parameter
| Parameter | Tipe | Deskripsi | Default |
|---|---|---|---|
name |
string | Nama gateway. | mse-ingress |
common.pay.payType |
string | Metode penagihan. Hanya POSTPAY (pay-as-you-go) yang didukung. |
POSTPAY |
common.instance.spec |
string | Spesifikasi gateway. Nilai yang valid: 2c4g, 4c8g, 8c16g, 16c32g. |
4c8g |
common.instance.replicas |
integer | Jumlah replika gateway. Rentang nilai yang valid: 0–30. | 3 |
common.network.vSwitches |
[]string | vSwitch primer dan sekunder. Tentukan vSwitch primer terlebih dahulu. Menerima 1–2 entri. Jika tidak diatur, vSwitch dari node yang menjalankan Pod MSE Ingress Controller akan digunakan. | Tidak ada |
common.network.publicSLBSpec |
string | Spesifikasi instans Server Load Balancer (SLB) yang menghadap Internet. Nilai yang valid: slb.s1.small, slb.s2.small, slb.s2.medium, slb.s3.small, slb.s3.medium, slb.s3.large. |
slb.s2.small |
common.network.privateSLBSpec |
string | Spesifikasi instans SLB internal. Nilai yang valid sama seperti publicSLBSpec. |
slb.s2.small |
common.securityGroupType |
string | Tipe security group. Nilai yang valid: enterprise (advanced security group), normal (basic security group). |
normal |
global.tls.enableHardwareAcceleration |
boolean | Mengaktifkan akselerasi perangkat keras Transport Layer Security (TLS) untuk meningkatkan kinerja pemrosesan HTTPS. | true |
global.ipAccessControl.whitelist |
[]string | Daftar putih alamat IP global. Hanya alamat IP sumber atau Blok CIDR dalam daftar ini yang dapat mengakses gateway. | Tidak dikonfigurasi |
global.ipAccessControl.blacklist |
[]string | Daftar hitam alamat IP global. Alamat IP sumber atau Blok CIDR dalam daftar ini ditolak aksesnya ke gateway. | Tidak dikonfigurasi |
monitor.logging.sls |
object | Mengaktifkan Simple Log Service (SLS) untuk pengiriman log akses. Perlu memberikan izin SLS ke MSE Ingress Controller terlebih dahulu. | Nonaktif |
monitor.logging.sls.reuseProject |
string | Proyek SLS tempat log akses dikirimkan. Biarkan kosong untuk menggunakan proyek default; tentukan nama proyek yang sudah ada untuk menggunakan proyek kustom. | Kosong |
monitor.tracing.openTelemetry |
object | Mengaktifkan Managed Service for OpenTelemetry. Tidak dapat diaktifkan bersamaan dengan OpenTelemetry versi open source. | Nonaktif |
monitor.tracing.openTelemetry.sampleRate |
string | Laju pengambilan sampel untuk Managed Service for OpenTelemetry, dalam bentuk string persentase (misalnya, "100"). |
"100" |
monitor.tracing.xTrace.sampleRate |
string | Laju pengambilan sampel untuk xTrace. | "0" |
ingress.local.ingressClass |
string | Resource IngressClass yang didengarkan oleh gateway. Lihat nilai yang valid di bawah. | Tidak dikonfigurasi (tidak ada resource Ingress yang didengarkan) |
ingress.local.watchNamespace |
string | Namespace yang resource Ingress-nya didengarkan oleh gateway. Biarkan kosong untuk mendengarkan semua namespace; tentukan satu namespace untuk membatasi cakupan. | Kosong (semua namespace) |
Nilai yang valid untuk `ingress.local.ingressClass`:
| Nilai | Efek |
|---|---|
| Tidak dikonfigurasi | Tidak ada resource Ingress yang didengarkan. |
mse |
Mendengarkan resource Ingress dengan IngressClass mse. |
"" (kosong) |
Mendengarkan semua resource Ingress. |
nginx |
Mendengarkan resource Ingress dengan IngressClass nginx, atau resource Ingress yang tidak memiliki IngressClass terkait. |
| Nilai lainnya | Mendengarkan resource Ingress yang terkait dengan IngressClass yang ditentukan. |
Resource IngressClass yang dikaitkan dengan MseIngressConfig melaluispec.parametersmemiliki prioritas lebih tinggi daripada nilai yang diatur diingress.local.ingressClass.
Status
Setelah membuat MseIngressConfig, periksa statusnya dengan:
kubectl get mseingressconfig
Status berubah secara berurutan: Pending → Running → Listening
| Status | Deskripsi |
|---|---|
Pending |
Cloud-native gateway sedang dibuat. Proses ini biasanya memakan waktu sekitar 3 menit. |
Running |
Gateway telah dibuat dan berjalan. |
Listening |
Gateway berjalan dan mendengarkan resource Ingress di kluster. |
Failed |
Gateway tidak valid. Periksa bidang Message di bagian Status untuk mengetahui penyebabnya. |
Penerapan yang berhasil akan tampak seperti berikut:
NAME STATUS AGE
test Listening 5m
Tag resource
MSE Ingress Controller secara otomatis menambahkan tag berikut ke cloud-native gateway yang dibuat atau digunakan ulang. Lihat tag ini di di bawah informasi dasar gateway.
Jangan mengedit tag ini di Konsol MSE. Mengeditnya dapat menyebabkan perilaku gateway yang tidak terduga.
| Tag | Deskripsi |
|---|---|
ack.aliyun.com |
Mengidentifikasi bahwa traffic Ingress kluster ACK dikelola oleh MSE cloud-native gateway ini. |
ingress.k8s.alibaba/MseIngressConfig |
Mengidentifikasi MseIngressConfig yang terkait dengan gateway. |
kubernetes.reused.by.user |
Menunjukkan apakah gateway digunakan ulang. Jika diatur, penghapusan MseIngressConfig terkait tidak akan menghapus gateway. |
Buat MSE cloud-native gateway
-
Terapkan MseIngressConfig. Contoh berikut membuat gateway bernama
mse-ingressdengan 3 replika dan 2 vCPU / 4 GB memori. Sesuaikan bidang lainnya sesuai kebutuhan.apiVersion: mse.alibabacloud.com/v1alpha1 kind: MseIngressConfig metadata: name: reuse spec: id: gw-xxxx override: false ingress: local: ingressClass: mse -
Buat resource IngressClass dan kaitkan dengan MseIngressConfig. Ini mendeklarasikan MSE Ingress Controller di kluster, sehingga resource Ingress yang ditautkan ke IngressClass ini akan ditangani oleh cloud-native gateway yang sesuai.
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 -
Verifikasi status gateway:
kubectl get mseingressconfigStatus harus berubah dari
PendingkeRunningdan akhirnya keListening. StatusListeningmenegaskan bahwa gateway aktif dan memantau resource Ingress.
Gunakan ulang MSE cloud-native gateway yang sudah ada
Untuk menggunakan ulang gateway yang sudah ada, atur spec.id ke ID gateway (dalam format gw-xxx) dan konfigurasi spec.override untuk mengontrol apakah akan menimpa pengaturan gateway yang sudah ada.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: reuse
spec:
id: gw-xxxx
override: false
ingress:
local:
ingressClass: mse
| Parameter | Tipe | Deskripsi |
|---|---|---|
spec.id |
string | ID gateway yang sudah ada untuk digunakan ulang. Harus dalam format gw-xxx. |
spec.override |
boolean | Mengontrol apakah MseIngressConfig menimpa pengaturan gateway yang sudah ada. |
Perilaku berdasarkan `spec.override`:
-
`false` (direkomendasikan untuk penggunaan ulang): Opsi pendengaran Ingress, akselerasi perangkat keras TLS, kontrol akses IP, dan pengaturan observabilitas gateway yang sudah ada dipertahankan. Jika gateway belum ditautkan ke kluster, MSE Ingress Controller secara otomatis menautkannya dan mengonfigurasi pendengaran Ingress berdasarkan
spec.ingress.local.ingressClass. Jika gateway sudah ditautkan, opsi pendengaran Ingress yang sudah ada tidak diubah. -
`true`: Opsi pendengaran Ingress, akselerasi perangkat keras TLS, kontrol akses IP global, dan pengaturan observabilitas gateway ditimpa dengan nilai dari MseIngressConfig. Jika parameter tidak ditentukan dalam MseIngressConfig, pengaturan parameter asli gateway akan ditimpa dan traffic Anda mungkin terpengaruh. Pastikan semua parameter relevan telah diatur sebelum menerapkan.
Hapus MSE cloud-native gateway
Setiap MseIngressConfig dipetakan ke satu cloud-native gateway. Dalam skenario non-penggunaan ulang, penghapusan MseIngressConfig akan menghapus gateway terkait.
kubectl delete mseingressconfig your-config-name
Perilaku penghapusan bergantung pada metode penagihan dan cara gateway dibuat:
| Metode penagihan | Gateway yang dibuat otomatis | Gateway yang digunakan ulang |
|---|---|---|
| Pay-as-you-go | Dihapus bersama MseIngressConfig | Dipertahankan |
| Subscription | Tidak tersedia | Dipertahankan |
Konfigurasikan kontrol akses IP
Bidang global.ipAccessControl menerapkan filter IP di tingkat gateway, memengaruhi seluruh traffic yang melewati gateway. Anda dapat mengonfigurasi daftar putih, daftar hitam, atau keduanya.
Konfigurasikan daftar putih alamat IP
Hanya alamat IP sumber atau Blok CIDR dalam daftar putih yang dapat mengakses gateway. Traffic lainnya ditolak.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
global:
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.0.XX.XX/8
Konfigurasikan daftar hitam alamat IP
Alamat IP sumber atau Blok CIDR dalam daftar hitam ditolak aksesnya. Traffic lainnya diizinkan.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
global:
ipAccessControl:
blacklist:
- 1.1.XX.XX
- 2.0.XX.XX/8
Aktifkan Simple Log Service
Simple Log Service (SLS) mengirimkan log akses gateway ke proyek SLS yang ditentukan.
Prasyarat
Berikan izin SLS ke MSE Ingress Controller sebelum mengaktifkan fitur ini:
-
Kluster managed atau dedicated ACK: Lihat bagian "Grant permissions to MSE Ingress Controller in an ACK dedicated cluster" di Grant permissions to MSE Ingress Controller.
-
Kluster ACK Serverless: Lihat bagian "Grant permissions to MSE Ingress Controller in an ACK Serverless cluster" di Grant permissions to MSE Ingress Controller.
-
Kluster ACS: Lihat bagian "Grant permissions to MSE Ingress Controller in an ACS cluster" di Grant permissions to MSE Ingress Controller.
Konfigurasikan pengiriman log
Atur monitor.logging.sls.reuseProject ke nama proyek SLS target. Biarkan kosong untuk menggunakan proyek default.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
monitor:
logging:
sls:
# Biarkan kosong untuk mengirimkan log ke proyek default.
reuseProject: "demo"
Aktifkan Managed Service for OpenTelemetry
Managed Service for OpenTelemetry mengaktifkan pelacakan end-to-end untuk permintaan yang melewati gateway, membantu Anda mendiagnosis dan menemukan masalah produksi.
Managed Service for OpenTelemetry dan OpenTelemetry versi open source tidak dapat diaktifkan secara bersamaan.
Atur monitor.tracing.openTelemetry.sampleRate ke persentase pengambilan sampel yang diinginkan. Contoh berikut mengaktifkan pelacakan dengan pengambilan sampel 100%.
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
monitor:
tracing:
openTelemetry:
sampleRate: "100"