Gerbang MSE (Microservices Engine) Ingress kompatibel dengan sebagian besar anotasi NGINX Ingress dan menyediakan 40 anotasi tambahan untuk tata kelola traffic dan keamanan. Jika Anda melakukan migrasi dari NGINX Ingress, sebagian besar anotasi dapat digunakan tanpa perubahan.
Ringkasan kompatibilitas
| Kategori | Jumlah | Detail |
|---|---|---|
| Anotasi NGINX Ingress yang didukung | 51 | Mencakup 90% kasus penggunaan umum |
| Anotasi no-op | 15 | Tidak memerlukan konfigurasi |
| Anotasi yang akan didukung | 48 | Direncanakan untuk rilis mendatang |
| Anotasi yang tidak didukung | 5 | Terikat pada potongan kode spesifik NGINX |
| Anotasi eksklusif MSE | 40 | Tata kelola lalu lintas dan keamanan yang diperluas |
Dasar-dasar anotasi
Lingkup
Setiap anotasi berlaku pada salah satu dari tiga tingkat berikut:
| Lingkup | Berlaku untuk | Perilaku lintas-Ingress |
|---|---|---|
| Ingress | Aturan routing dalam resource Ingress | Hanya berlaku pada Ingress saat ini |
| Nama domain | Host yang didefinisikan dalam resource Ingress | Juga berlaku pada host yang sama di resource Ingress lainnya |
| Layanan | Layanan backend yang didefinisikan dalam resource Ingress | Juga berlaku pada layanan yang sama di resource Ingress lainnya |
Awalan
Gerbang MSE Ingress menerima awalan nginx.ingress.kubernetes.io/ dan mse.ingress.kubernetes.io/ untuk anotasi yang kompatibel. Gunakan salah satu awalan sesuai preferensi Anda.
Anotasi eksklusif MSE hanya mendukung awalan mse.ingress.kubernetes.io/.Format nilai anotasi
Anotasi Kubernetes selalu berupa string. Konvensi pengkodean berikut berlaku:
| Tipe | Format | Contoh |
|---|---|---|
| Boolean | "true" atau "false" | "true" |
| Integer | Angka dalam tanda kutip | "3" |
| Durasi | Angka dalam tanda kutip (dalam detik) | "30" |
| Persentase | Angka dalam tanda kutip (0–100) | "80" |
| Daftar string | Dipisahkan koma | "192.168.0.1,10.0.0.0/8" |
| Multi-baris | Pipe YAML (|) | Lihat contoh kontrol header |
Aturan preseden dan interaksi
| Aturan | Detail |
|---|---|
| Ekuivalensi awalan | nginx.ingress.kubernetes.io/xxx dan mse.ingress.kubernetes.io/xxx memiliki perilaku identik untuk anotasi yang kompatibel |
| Rute berbasis domain | Daftar IP tingkat rute mengungguli daftar IP tingkat domain |
| Denylist NGINX mengungguli denylist MSE | nginx.ingress.kubernetes.io/denylist-source-range mengungguli mse.ingress.kubernetes.io/blacklist-source-range |
| Fallback pembatasan laju saling eksklusif | rate-limit-fallback-custom-response-code dan rate-limit-fallback-redirect-url tidak dapat digunakan bersamaan |
| Fallback konkurensi saling eksklusif | concurrency-limit-fallback-custom-response-code dan concurrency-limit-fallback-redirect-url tidak dapat digunakan bersamaan |
| Kontrol header independen | Anotasi kontrol header untuk rute dasar dan rute canary divalidasi secara independen |
Catatan kompatibilitas
Variabel NGINX: MSE mengimplementasikan fitur secara berbeda dari NGINX. Variabel NGINX yang dikonfigurasi dalam anotasi atau potongan kode tidak kompatibel dengan MSE.
Perilaku
proxy-body-size: Gerbang cloud-native MSE menggunakan enkode transfer chunked, yang secara otomatis memecah badan permintaan besar menjadi chunk. Untuk menangani transfer file besar, sesuaikan parameter DownstreamConnectionBufferLimits di Pengaturan Parameter untuk gerbang MSE Anda.
Tata kelola traffic
Rilis canary
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/canary | Ingress | Kompatibel | Aktifkan rilis canary. |
nginx.ingress.kubernetes.io/canary-by-header | Ingress | Kompatibel | Tetapkan kunci header permintaan untuk pemisahan traffic. |
nginx.ingress.kubernetes.io/canary-by-header-value | Ingress | Kompatibel | Tetapkan nilai header permintaan untuk pemisahan traffic. Mendukung pencocokan eksak. |
nginx.ingress.kubernetes.io/canary-by-header-pattern | Ingress | Kompatibel | Tetapkan nilai header permintaan untuk pemisahan traffic. Mendukung pencocokan regex. |
nginx.ingress.kubernetes.io/canary-by-cookie | Ingress | Kompatibel | Tetapkan kunci cookie permintaan untuk pemisahan traffic. |
nginx.ingress.kubernetes.io/canary-weight | Ingress | Kompatibel | Tetapkan bobot layanan untuk pemisahan traffic. |
nginx.ingress.kubernetes.io/canary-weight-total | Ingress | Kompatibel | Tetapkan total bobot. |
mse.ingress.kubernetes.io/canary-by-query | Ingress | Eksklusif MSE | Tetapkan parameter kueri URL untuk pemisahan traffic. |
mse.ingress.kubernetes.io/canary-by-query-value | Ingress | Eksklusif MSE | Tetapkan nilai parameter kueri URL untuk pemisahan traffic. Mendukung pencocokan eksak. |
mse.ingress.kubernetes.io/canary-by-query-pattern | Ingress | Eksklusif MSE | Tetapkan nilai parameter kueri URL untuk pemisahan traffic. Mendukung pencocokan regex. |
mse.ingress.kubernetes.io/canary-by-cookie-value | Ingress | Eksklusif MSE (V1.2.30+) | Tetapkan nilai cookie permintaan untuk pemisahan traffic. Mendukung pencocokan eksak. |
# Rilis canary: arahkan traffic berdasarkan nilai header
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: canary-ingress
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-by-header: "x-canary"
nginx.ingress.kubernetes.io/canary-by-header-value: "true"
spec:
rules:
- host: example.com
http:
paths:
- path: /api
pathType: Prefix
backend:
service:
name: my-service-canary
port:
number: 80Routing multi-layanan
Arahkan traffic ke beberapa layanan backend dengan distribusi berbasis bobot.
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/destination | Ingress | Eksklusif MSE | Definisikan distribusi layanan berbasis bobot untuk rute. |
Sintaks: {weight}% {serviceName}.{serviceNamespace}.svc.cluster.local:{port}
annotations:
# Arahkan 60% traffic ke foo dan 40% ke bar
mse.ingress.kubernetes.io/destination: |
60% foo.default.svc.cluster.local:8080
40% bar.default.svc.cluster.local:9090Setelah Anda mengonfigurasi anotasi ini, semua aturan routing pada Ingress diarahkan ke layanan yang ditentukan. Jika sintaks tidak valid, anotasi diabaikan dan aturan routing asli tetap tidak berubah.
Subset layanan
Arahkan traffic ke subset pod dalam suatu layanan, berguna ketika satu layanan mengelola beberapa deployment.
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/service-subset | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan subset layanan untuk routing pod tertarget. |
mse.ingress.kubernetes.io/subset-labels | Ingress | Eksklusif MSE (V1.2.25+) | Opsional. Tetapkan label yang digunakan untuk mengklasifikasikan pod ke dalam subset. |
Cara service-subset mengarahkan traffic:
Tanpa konfigurasi
subset-labels:Diatur ke
""ataubase: Mengarahkan ke pod dengan labelopensergo.io/canary: ""atau pod tanpa kunci labelopensergo.io/canary.Diatur ke nilai lain (misalnya,
gray): Mengarahkan ke pod dengan labelopensergo.io/canary-gray: gray.
Dengan konfigurasi
subset-labels: Hanya mengarahkan ke pod yang labelnya sesuai dengan pasangan kunci:nilai yang didefinisikan dalamsubset-labels.
Jika tidak ada pod yang cocok dengan label yang ditentukan, traffic secara otomatis diarahkan ke semua pod dalam layanan tersebut.
annotations:
# Arahkan traffic ke pod yang dilabeli sebagai subset "gray"
mse.ingress.kubernetes.io/service-subset: "gray"Fallback
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/default-backend | Ingress | Kompatibel | Tetapkan layanan fallback. Permintaan diteruskan ke layanan ini ketika tidak ada node sehat yang tersedia untuk layanan utama. |
nginx.ingress.kubernetes.io/custom-http-errors | Ingress | Kompatibel | Digunakan bersama default-backend. Teruskan permintaan ke layanan fallback ketika backend mengembalikan kode status HTTP tertentu. |
Ketika permintaan diteruskan ke layanan fallback, path permintaan ditulis ulang menjadi /. Perilaku ini konsisten dengan gerbang NGINX Ingress.
Pencocokan regex
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/use-regex | Ingress | Kompatibel | Aktifkan pencocokan ekspresi reguler untuk path Ingress. Menggunakan sintaks RE2. |
Menulis ulang
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/rewrite-target | Ingress | Kompatibel | Tetapkan path target untuk penulisan ulang. Mendukung grup tangkapan. |
nginx.ingress.kubernetes.io/upstream-vhost | Ingress | Kompatibel | Timpa header Host saat meneruskan permintaan ke layanan backend. |
Pengalihan
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/ssl-redirect | Ingress | Kompatibel | Alihkan HTTP ke HTTPS. |
nginx.ingress.kubernetes.io/force-ssl-redirect | Ingress | Kompatibel | Paksa alihkan HTTP ke HTTPS. |
nginx.ingress.kubernetes.io/permanent-redirect | Ingress | Kompatibel | Tetapkan URL pengalihan permanen. |
nginx.ingress.kubernetes.io/permanent-redirect-code | Ingress | Kompatibel | Tetapkan kode status untuk pengalihan permanen. |
nginx.ingress.kubernetes.io/temporal-redirect | Ingress | Kompatibel | Tetapkan URL pengalihan sementara. |
nginx.ingress.kubernetes.io/app-root | Ingress | Kompatibel | Alihkan permintaan dari / ke path root aplikasi yang ditentukan. |
Beberapa versi NGINX Ingress mendukung variabel NGINX untuk pengalihan, tetapi ini tidak didokumentasikan dalam referensi resmi Anotasi dan dapat menyebabkan masalah ketidakkompatibilitas. Hindari penggunaan variabel NGINX untuk pengalihan.
CORS
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/enable-cors | Ingress | Kompatibel | Aktifkan Berbagi Sumber Daya Lintas Asal (CORS). |
nginx.ingress.kubernetes.io/cors-allow-origin | Ingress | Kompatibel | Tetapkan origin yang diizinkan. |
nginx.ingress.kubernetes.io/cors-allow-methods | Ingress | Kompatibel | Tetapkan metode HTTP yang diizinkan (GET, POST, PUT, dll.). |
nginx.ingress.kubernetes.io/cors-allow-headers | Ingress | Kompatibel | Tetapkan header permintaan yang diizinkan. |
nginx.ingress.kubernetes.io/cors-expose-headers | Ingress | Kompatibel | Tetapkan header respons yang diekspos ke browser. |
nginx.ingress.kubernetes.io/cors-allow-credentials | Ingress | Kompatibel | Izinkan kredensial dalam permintaan CORS. |
nginx.ingress.kubernetes.io/cors-max-age | Ingress | Kompatibel | Tetapkan durasi maksimum (dalam detik) untuk caching hasil preflight. |
Kontrol header
Manipulasi header permintaan dan respons di tingkat gateway. Anotasi kontrol header untuk rute dasar dan rute canary bersifat independen—konfigurasikan kebijakan header yang berbeda untuk masing-masing.
Header permintaan:
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/request-header-control-add | Ingress | Eksklusif MSE | Tambahkan header ke permintaan yang diteruskan ke backend. Jika header sudah ada, nilai baru ditambahkan ke nilai asli. |
mse.ingress.kubernetes.io/request-header-control-update | Ingress | Eksklusif MSE | Timpa header dalam permintaan yang diteruskan ke backend. Jika header sudah ada, nilai asli diganti. |
mse.ingress.kubernetes.io/request-header-control-remove | Ingress | Eksklusif MSE | Hapus header dari permintaan yang diteruskan ke backend. |
Header respons:
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/response-header-control-add | Ingress | Eksklusif MSE | Tambahkan header ke respons sebelum diteruskan ke klien. Jika header sudah ada, nilai baru ditambahkan. |
mse.ingress.kubernetes.io/response-header-control-update | Ingress | Eksklusif MSE | Timpa header dalam respons sebelum diteruskan ke klien. Jika header sudah ada, nilai asli diganti. |
mse.ingress.kubernetes.io/response-header-control-remove | Ingress | Eksklusif MSE | Hapus header dari respons sebelum diteruskan ke klien. |
Sintaksis untuk menambahkan dan memperbarui anotasi:
Header tunggal:
key valueBeberapa header: Gunakan pipe YAML (
|), satu pasangan kunci-nilai per baris.
Sintaks untuk menghapus anotasi:
Header tunggal:
keyBeberapa header: Pisahkan dengan koma (
,).
annotations:
# Tambahkan header kustom ke permintaan
mse.ingress.kubernetes.io/request-header-control-add: "x-request-id 12345"
# Tambahkan beberapa header ke respons
mse.ingress.kubernetes.io/response-header-control-add: |
x-custom-header value1
x-another-header value2
# Hapus header dari respons
mse.ingress.kubernetes.io/response-header-control-remove: "x-powered-by,server"Timeout
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/timeout | Ingress | Eksklusif MSE | Tetapkan timeout permintaan dalam detik. Tidak ada timeout yang dikonfigurasi secara default. |
Timeout ini berlaku di lapisan aplikasi, bukan di lapisan transport TCP.
annotations:
mse.ingress.kubernetes.io/timeout: "30"Retry
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-next-upstream-tries | Ingress | Kompatibel | Tetapkan jumlah maksimum upaya retry. Default: 3. |
nginx.ingress.kubernetes.io/proxy-next-upstream-timeout | Ingress | Kompatibel | Tetapkan timeout untuk retry dalam detik. Tidak ada timeout secara default. |
nginx.ingress.kubernetes.io/proxy-next-upstream | Ingress | Kompatibel | Definisikan kondisi retry. Lihat mekanisme retry NGINX. |
Mirror traffic
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/mirror-target-service | Ingress | Eksklusif MSE | Tetapkan layanan yang menerima traffic mirror. Format: namespace/name:port. |
mse.ingress.kubernetes.io/mirror-percentage | Ingress | Eksklusif MSE (V1.2.32+) | Tetapkan persentase traffic yang dimirror. Nilai valid: 0-100. Default: 100. |
Parameter mirror-target-service:
| Parameter | Wajib | Deskripsi |
|---|---|---|
namespace | Tidak | Namespace dari Service Kubernetes. Default ke namespace gerbang Ingress. |
name | Ya | Nama Service Kubernetes. |
port | Tidak | Port layanan untuk traffic mirror. Default ke port pertama. |
annotations:
# Mirror 50% traffic ke layanan shadow
mse.ingress.kubernetes.io/mirror-target-service: "default/shadow-service:8080"
mse.ingress.kubernetes.io/mirror-percentage: "50"Alias domain
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/server-alias | Nama domain | Sebagian kompatibel (V1.2.30+) | Tetapkan alias domain untuk domain yang didefinisikan dalam spesifikasi Ingress. Alias domain berbagi konfigurasi TLS, routing, dan tata kelola traffic dari domain sumber. Hanya mendukung pencocokan eksak dan domain wildcard. |
Pembatasan laju
Pembatasan laju global (direkomendasikan)
Gunakan pembatasan laju global untuk kontrol traffic yang konsisten di seluruh instans gateway.
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/rate-limit | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan jumlah maksimum permintaan per detik (RPS) untuk suatu rute. |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan kode respons saat pembatasan laju dipicu. Default: 429. Saling eksklusif dengan rate-limit-fallback-redirect-url. |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan format badan respons. Default: text. text mengatur Content-Type ke text/plain; charset=UTF-8. JSON mengatur ke application/json; charset=UTF-8. |
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan teks badan respons. Default: sentinel rate limited. |
mse.ingress.kubernetes.io/rate-limit-fallback-redirect-url | Ingress | Eksklusif MSE (V1.2.25+) | Alihkan ke URL saat pembatasan laju dipicu. Saling eksklusif dengan rate-limit-fallback-custom-response-code. |
annotations:
# Batasi hingga 100 RPS dengan respons JSON kustom
mse.ingress.kubernetes.io/rate-limit: "100"
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-code: "429"
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body-type: "JSON"
mse.ingress.kubernetes.io/rate-limit-fallback-custom-response-body: '{"error":"rate limit exceeded"}'Pembatasan laju single-gateway (akan ditinggalkan)
Pembatasan laju single-gateway akan ditinggalkan. Gunakan pembatasan laju global sebagai gantinya.
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/route-limit-rpm | Ingress | Eksklusif MSE | Tetapkan jumlah maksimum permintaan per menit (RPM) untuk suatu rute pada satu gateway. Batas burst = RPM x route-limit-burst-multiplier. |
mse.ingress.kubernetes.io/route-limit-rps | Ingress | Eksklusif MSE | Tetapkan jumlah maksimum permintaan per detik (RPS) untuk suatu rute pada satu gateway. Batas burst = RPS x route-limit-burst-multiplier. |
mse.ingress.kubernetes.io/route-limit-burst-multiplier | Ingress | Eksklusif MSE | Tetapkan pengali batas burst. Default: 5. |
Saat pembatasan laju dipicu:
Badan respons:
local_rate_limitedVersi gateway sebelum V1.2.23: mengembalikan kode status
503Versi gateway V1.2.23 dan seterusnya: mengembalikan kode status
429
Kontrol konkurensi
Kontrol konkurensi global membatasi jumlah permintaan yang diproses secara bersamaan pada suatu rute.
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/concurrency-limit | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan jumlah maksimum permintaan konkuren untuk suatu rute. |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-code | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan kode respons saat kontrol konkurensi dipicu. Default: 429. Saling eksklusif dengan concurrency-limit-fallback-redirect-url. |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body-type | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan format badan respons. Default: text. text mengatur Content-Type ke text/plain; charset=UTF-8. JSON mengatur ke application/json; charset=UTF-8. |
mse.ingress.kubernetes.io/concurrency-limit-fallback-custom-response-body | Ingress | Eksklusif MSE (V1.2.25+) | Tetapkan teks badan respons. Default: sentinel rate limited. |
mse.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url | Ingress | Eksklusif MSE (V1.2.25+) | Alihkan ke URL saat kontrol konkurensi dipicu. Saling eksklusif dengan concurrency-limit-fallback-custom-response-code. |
annotations:
# Batasi hingga 50 permintaan konkuren dengan pengalihan saat overflow
mse.ingress.kubernetes.io/concurrency-limit: "50"
mse.ingress.kubernetes.io/concurrency-limit-fallback-redirect-url: "https://example.com/busy"Protokol backend
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/backend-protocol | Layanan | Sebagian kompatibel | Tetapkan protokol untuk layanan backend. Default: HTTP. Nilai valid: HTTP, HTTP2, HTTPS, gRPC, gRPCS. AJP dan FCGI tidak didukung. |
Penyeimbangan beban
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/load-balance | Layanan | Sebagian kompatibel | Tetapkan algoritma penyeimbangan beban. Default: round_robin. Nilai valid: round_robin, least_conn, random. Algoritma Exponentially Weighted Moving Average (EWMA) tidak didukung. Jika EWMA dikonfigurasi, algoritma kembali ke round_robin. |
nginx.ingress.kubernetes.io/upstream-hash-by | Layanan | Sebagian kompatibel | Aktifkan hashing konsisten. Menggabungkan variabel NGINX dengan konstanta tidak didukung. |
Metode hashing konsisten yang didukung:
Variabel NGINX:
$request_uri(path permintaan termasuk parameter),$host(host permintaan),$remote_addr(alamat IP klien)Header permintaan:
$http_headerNameParameter path permintaan:
$arg_varName
Start graceful (prefetching layanan)
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/warmup | Layanan | Eksklusif MSE | Tetapkan durasi pemanasan dalam detik. Dinonaktifkan secara default. |
Start graceful hanya berfungsi dengan algoritma penyeimbangan beban round_robin dan least_conn.
annotations:
# Panaskan pod baru selama 60 detik
mse.ingress.kubernetes.io/warmup: "60"Afinitas cookie
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/affinity | Layanan | Kompatibel | Tetapkan tipe afinitas. Satu-satunya nilai valid adalah cookie. |
nginx.ingress.kubernetes.io/affinity-mode | Layanan | Sebagian kompatibel | Tetapkan mode afinitas. Satu-satunya nilai valid adalah balanced. Mode persistent tidak didukung. |
nginx.ingress.kubernetes.io/session-cookie-name | Layanan | Kompatibel | Tetapkan nama cookie yang digunakan sebagai kunci hash. |
nginx.ingress.kubernetes.io/session-cookie-path | Layanan | Kompatibel | Tetapkan path cookie yang dihasilkan. Default: /. |
nginx.ingress.kubernetes.io/session-cookie-max-age | Layanan | Kompatibel | Tetapkan waktu kedaluwarsa cookie dalam detik. Default ke kedaluwarsa tingkat sesi. |
nginx.ingress.kubernetes.io/session-cookie-expires | Layanan | Kompatibel | Tetapkan waktu kedaluwarsa cookie dalam detik. Default ke kedaluwarsa tingkat sesi. |
Kontrol akses IP
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/whitelist-source-range | Ingress | Kompatibel | Tetapkan daftar putih IP untuk suatu rute. Mendukung alamat IP dan blok CIDR, dipisahkan koma. |
nginx.ingress.kubernetes.io/denylist-source-range | Ingress | Kompatibel (V1.2.31+) | Tetapkan daftar hitam IP untuk suatu rute. Mendukung alamat IP dan blok CIDR, dipisahkan koma. |
mse.ingress.kubernetes.io/blacklist-source-range | Ingress | Eksklusif MSE | Tetapkan daftar hitam IP untuk suatu rute. Mendukung alamat IP dan blok CIDR, dipisahkan koma. |
mse.ingress.kubernetes.io/domain-whitelist-source-range | Ingress | Eksklusif MSE | Tetapkan daftar putih IP untuk nama domain. Mendukung alamat IP dan blok CIDR, dipisahkan koma. |
mse.ingress.kubernetes.io/domain-blacklist-source-range | Ingress | Eksklusif MSE | Tetapkan daftar hitam IP untuk nama domain. Mendukung alamat IP dan blok CIDR, dipisahkan koma. |
Aturan prioritas:
Daftar IP tingkat rute mengungguli daftar IP tingkat domain.
nginx.ingress.kubernetes.io/denylist-source-rangemengunggulimse.ingress.kubernetes.io/blacklist-source-range.
annotations:
# Izinkan hanya IP tertentu di tingkat rute
nginx.ingress.kubernetes.io/whitelist-source-range: "10.0.0.0/8,192.168.1.100"Kolam koneksi gateway-ke-backend
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection | Layanan | Eksklusif MSE | Tetapkan jumlah maksimum koneksi TCP antara gateway dan layanan backend. |
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint | Layanan | Eksklusif MSE | Tetapkan jumlah maksimum koneksi TCP antara gateway dan setiap endpoint backend. |
mse.ingress.kubernetes.io/connection-policy-http-max-request-per-connection | Layanan | Eksklusif MSE | Tetapkan jumlah maksimum permintaan HTTP per koneksi antara gateway dan layanan backend. |
annotations:
# Batasi kolam koneksi ke backend
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection: "1024"
mse.ingress.kubernetes.io/connection-policy-tcp-max-connection-per-endpoint: "100"
mse.ingress.kubernetes.io/connection-policy-http-max-request-per-connection: "500"Proteksi keamanan
TLS klien-ke-gateway
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
mse.ingress.kubernetes.io/tls-min-protocol-version | Nama domain | Eksklusif MSE | Tetapkan versi TLS minimum. Default: TLSv1.0. Nilai valid: TLSv1.0, TLSv1.1, TLSv1.2. |
mse.ingress.kubernetes.io/tls-max-protocol-version | Nama domain | Eksklusif MSE | Tetapkan versi TLS maksimum. Direkomendasikan: TLSv1.2. Nilai valid: TLSv1.0, TLSv1.1, TLSv1.2. |
nginx.ingress.kubernetes.io/ssl-cipher | Nama domain | Kompatibel | Tetapkan paket sandi TLS, dipisahkan koma. Hanya berlaku untuk proses jabat tangan TLS 1.0 hingga 1.2. |
mse.ingress.kubernetes.io/auth-tls-secret | Nama domain | Sebagian kompatibel | Tetapkan sertifikat CA untuk verifikasi sertifikat klien selama proses jabat tangan mTLS. Nama rahasia harus mengikuti format: {domain-cert-secret-name}-cacert. |
Paket sandi default:
ECDHE-ECDSA-AES128-GCM-SHA256, ECDHE-RSA-AES128-GCM-SHA256, ECDHE-ECDSA-AES128-SHA, ECDHE-RSA-AES128-SHA, AES128-GCM-SHA256, AES128-SHA, ECDHE-ECDSA-AES256-GCM-SHA384, ECDHE-RSA-AES256-GCM-SHA384, ECDHE-ECDSA-AES256-SHA, ECDHE-RSA-AES256-SHA, AES256-GCM-SHA384, AES256-SHA
annotations:
# Terapkan minimum TLS 1.2
mse.ingress.kubernetes.io/tls-min-protocol-version: "TLSv1.2"
mse.ingress.kubernetes.io/tls-max-protocol-version: "TLSv1.2"TLS gateway-ke-backend
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/proxy-ssl-secret | Layanan | Kompatibel | Tetapkan sertifikat klien yang digunakan oleh gateway, memungkinkan layanan backend mengotentikasi gateway. |
nginx.ingress.kubernetes.io/proxy-ssl-name | Layanan | Kompatibel | Tetapkan Indikasi Nama Server (SNI) untuk proses jabat tangan TLS. |
nginx.ingress.kubernetes.io/proxy-ssl-server-name | Layanan | Kompatibel | Aktifkan SNI selama proses jabat tangan TLS. |
Otentikasi
| Anotasi | Lingkup | Status | Deskripsi |
|---|---|---|---|
nginx.ingress.kubernetes.io/auth-type | Ingress | Sebagian kompatibel | Tetapkan tipe otentikasi. Hanya basic yang didukung. |
nginx.ingress.kubernetes.io/auth-secret | Ingress | Kompatibel | Tetapkan rahasia yang berisi kredensial. Format: <namespace>/<nama>. |
nginx.ingress.kubernetes.io/auth-secret-type | Ingress | Kompatibel | Tetapkan format rahasia. auth-file: kunci data adalah auth, nilai berisi pasangan username:password (satu per baris). auth-map: kunci data adalah username, nilai adalah password. |
nginx.ingress.kubernetes.io/auth-realm | Ingress | Kompatibel | Tetapkan realm otentikasi. Kredensial dibagikan dalam realm yang sama. |
annotations:
# Otentikasi basic dengan rahasia Kubernetes
nginx.ingress.kubernetes.io/auth-type: "basic"
nginx.ingress.kubernetes.io/auth-secret: "default/my-auth-secret"
nginx.ingress.kubernetes.io/auth-secret-type: "auth-file"
nginx.ingress.kubernetes.io/auth-realm: "Protected Area"