Konfigurasikan fitur ALB Ingress tingkat lanjut seperti aturan routing, pengalihan HTTPS, penulisan ulang (rewrite), rilis canary, dan persistensi sesi.
Meneruskan permintaan berdasarkan nama domain
Buat Ingress untuk meneruskan permintaan berdasarkan nama domain atau nama domain kosong.
Nama domain
Contoh ini menetapkan jalur routing ke /hello. Permintaan ke demo.domain.ingress.top/hello diteruskan ke layanan backend.
-
Deploy manifes berikut untuk membuat Service, Deployment, dan Ingress yang meneruskan permintaan berdasarkan nama domain yang ditentukan.
-
Jalankan
kubectl get inguntuk mendapatkan alamat instans ALB. Kemudian, jalankan perintah berikut, gantiADDRESSdengan alamat instans tersebut.curl -H "host: demo.domain.ingress.top" ADDRESS/helloOutput yang diharapkan:
{"hello":"coffee"}
Nama domain kosong
Dengan nama domain kosong dan jalur routing /hello, permintaan ke ADDRESS/hello diteruskan ke layanan backend.
-
Deploy manifes berikut untuk membuat Service, Deployment, dan Ingress.
-
Jalankan
kubectl get inguntuk mendapatkan alamat instans ALB. Kemudian, jalankan perintah berikut, gantiADDRESSdengan alamat instans tersebut.curl ADDRESS/helloOutput yang diharapkan:
{"hello":"coffee"}
Penerusan berbasis jalur
ALB Ingress meneruskan permintaan berdasarkan jalur URL. Tentukan mode pencocokan di bidang pathType. pathType mendukung tiga mode.
-
Pencocokan eksak (
Exact): Mencocokkan jalur URL secara eksak. -
Bawaan (
ImplementationSpecific): Controller ALB Ingress memperlakukan ini sebagai pencocokan eksak. Jika jalur tidak ditentukan, nilai bawaannya adalah/. -
Pencocokan awalan (
Prefix): Mencocokkan awalan dari jalur URL.
-
Saat
pathTypebernilaiExactatauPrefix, jalur harus merupakan jalur mutlak yang tidak kosong. Jika tidak, validasi akan gagal. -
Jika terjadi konflik pada kebijakan pencocokan URL, permintaan diteruskan berdasarkan prioritas aturan pengalihan.
-
Jalur sederhana (/, /foo, /foo/)
Mode pencocokan
Jalur aturan
Jalur permintaan
Cocok?
Pencocokan awalan (Prefix)
/
/ (mencocokkan semua jalur)
Ya
/foo
-
/foo
-
/foo/
Ya
/foo/
-
/foo
-
/foo/
Ya
/aaa
/ccc
Tidak. Awalan tidak cocok.
Pencocokan eksak (Exact) atau bawaan (ImplementationSpecific)
/foo
/foo
Ya
/bar
Tidak
/foo/
Tidak
/foo/
/foo
Tidak
-
-
Jalur hierarkis (/aaa/bb, /aaa/bbb, /aaa/bbb/)
Mode pencocokan
Jalur aturan
Jalur permintaan
Cocok?
Pencocokan awalan (Prefix)
/aaa/bb
/aaa/bbb
Tidak
/aaa/bbb
/aaa/bbb
Ya
/aaa/bbb/
/aaa/bbb
Ya. Garis miring di akhir pada jalur aturan diabaikan.
/aaa/bbb
/aaa/bbb/
Ya. Garis miring di akhir pada jalur permintaan dicocokkan.
/aaa/bbb/ccc
Ya. Jalur aturan merupakan awalan dari jalur permintaan.
-
Dua jalur aturan
Mode pencocokan
Jalur aturan
Jalur permintaan
Cocok?
Pencocokan awalan (Prefix)
-
/
-
/aaa
/aaa/ccc
Ya. Jalur permintaan mencocokkan jalur aturan
/aaa.-
/aaa
-
/
/aaa/ccc
Ya. Jalur permintaan mencocokkan jalur aturan
/aaa./ccc
Ya. Jalur permintaan mencocokkan jalur aturan
/.-
/aaa
-
/bbb
/ccc
Tidak. Awalan tidak cocok.
-
Contoh untuk setiap mode pencocokan:
Pencocokan awalan (Prefix)
Mode ini melakukan pencocokan awalan peka huruf besar/kecil pada elemen jalur URL yang dipisahkan oleh /.
Jalur aturan / mencocokkan semua jalur yang dimulai dengan /, seperti /hello.
-
Deploy manifes berikut untuk membuat resource ingress.
-
Jalankan
kubectl get inguntuk mendapatkan alamat instans ALB. Kemudian, jalankan perintah berikut, gantiADDRESSdengan alamat yang didapat.curl ADDRESS/helloOutput yang diharapkan:
{"hello":"coffee"}
Pencocokan eksak atau bawaan
Jalur aturan /hello hanya mencocokkan permintaan ke /hello.
-
Deploy manifes berikut untuk membuat resource ingress.
-
Jalankan
kubectl get inguntuk mendapatkan alamat instans ALB. Kemudian, jalankan perintah berikut, gantiADDRESSdengan alamat yang didapat.curl ADDRESS/helloOutput yang diharapkan:
{"hello":"coffee"}
Konfigurasi pemeriksaan kesehatan
Gunakan anotasi untuk mengonfigurasi pemeriksaan kesehatan untuk ALB Ingress.
Contoh anotasi:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress
annotations:
alb.ingress.kubernetes.io/healthcheck-enabled: "true"
alb.ingress.kubernetes.io/healthcheck-path: "/"
alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
alb.ingress.kubernetes.io/healthcheck-httpversion: "HTTP1.1"
alb.ingress.kubernetes.io/healthcheck-method: "HEAD"
alb.ingress.kubernetes.io/healthcheck-code: "http_2xx"
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
alb.ingress.kubernetes.io/healthcheck-interval-seconds: "2"
alb.ingress.kubernetes.io/healthy-threshold-count: "3"
alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
spec:
... ...
|
Parameter |
Deskripsi |
Bawaan |
|
|
Menentukan apakah akan mengaktifkan pemeriksaan kesehatan untuk grup server backend.
|
|
|
|
Jalur yang digunakan untuk pemeriksaan kesehatan. |
|
|
|
Protokol yang digunakan untuk pemeriksaan kesehatan.
|
|
|
|
Versi protokol HTTP. Hanya berlaku saat
|
|
|
|
Metode yang digunakan untuk pemeriksaan kesehatan.
Penting
Jika |
|
|
|
Kode status yang menunjukkan server backend dalam kondisi sehat. Tentukan satu atau beberapa opsi, dipisahkan koma.
|
|
|
|
Kode status yang menunjukkan server backend dalam kondisi sehat. Memiliki prioritas lebih tinggi daripada Nilai yang valid bergantung pada
|
|
|
|
Waktu tunggu pemeriksaan kesehatan dalam detik. Nilai valid: 1 hingga 300. |
|
|
|
Interval pemeriksaan kesehatan dalam detik. Nilai valid: 1 hingga 50. |
|
|
|
Jumlah pemeriksaan kesehatan berturut-turut yang berhasil diperlukan untuk menandai server backend sebagai sehat. Nilai valid: 2 hingga 10. |
|
|
|
Jumlah pemeriksaan kesehatan berturut-turut yang gagal diperlukan untuk menandai server backend sebagai tidak sehat. Nilai valid: 2 hingga 10. |
|
|
|
Port yang digunakan untuk pemeriksaan kesehatan. |
Catatan
Nilai |
Mengalihkan permintaan HTTP ke HTTPS
Tambahkan anotasi berikut untuk mengalihkan permintaan HTTP ke Port HTTPS 443.
-
Fitur ini hanya berlaku untuk aturan penerusan HTTP pada port listener 80.
-
Anotasi ini harus digunakan bersama anotasi untuk aksi penerusan kustom, seperti
RemoveHeader,InsertHeader, danCors. -
Sebelum menggunakan anotasi ini, pastikan listener HTTPS telah dikonfigurasi pada port 443 di AlbConfig. Lihat Menggunakan AlbConfig untuk mengonfigurasi listener ALB.
|
Parameter |
Deskripsi |
Contoh anotasi |
|
|
Mengalihkan permintaan HTTP ke Port HTTPS 443. |
|
Konfigurasi backend HTTPS atau gRPC
Tambahkan anotasi berikut untuk menggunakan HTTPS atau gRPC sebagai protokol backend.
Protokol backend tidak dapat diubah setelah ingress dibuat. Hapus dan buat ulang ingress untuk mengubahnya.
|
Parameter |
Deskripsi |
Contoh YAML |
|
|
|
|
Konfigurasi ekspresi reguler
Gunakan anotasi alb.ingress.kubernetes.io/use-regex: "true" untuk mengaktifkan pencocokan ekspresi reguler untuk aturan jalur di spec.rules dengan pathType: Prefix.
-
Hanya berlaku untuk aturan jalur dengan
pathType: Prefix. Mengaktifkan sintaks regex di bidangpathdarispec.rules, terlepas dari kondisi penerusan kustom. -
Anotasi ini mengaktifkan pencocokan regex terlepas dari nilainya (
trueataufalse). Hapus anotasi untuk menonaktifkan. -
Tanpa anotasi ini, pembuatan Ingress gagal jika jalur berisi karakter khusus seperti
=^()[]|, dll.. -
Nilai jalur dalam kondisi penerusan kustom (
alb.ingress.kubernetes.io/conditions.YOUR-SVC-NAME) diteruskan langsung ke ALB dan tidak memerlukan anotasiuse-regex. Untuk mengaktifkan pencocokan regex, tambahkan awalan~*atau~ke nilai jalur. Anotasiuse-regexhanya memengaruhi bidangpathdispec.rules.
Aturan penerusan kustom
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.YOUR-SVC-NAME: | ## Ganti YOUR-SVC-NAME dengan nama Service yang sebenarnya. Harus sesuai dengan backend.service.name di bawah ini.
[{
"type": "Path",
"pathConfig": {
"values": [
"~*/pathvalue1", ## Tambahkan awalan ~* atau ~ ke ekspresi reguler. Teks setelah awalan adalah ekspresi reguler itu sendiri. ~* menunjukkan pencocokan peka huruf besar/kecil, dan ~ menunjukkan pencocokan tidak peka huruf besar/kecil.
"/pathvalue2" ## Pencocokan eksak tidak memerlukan awalan.
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-path-for-alb
pathType: Prefix
backend:
service:
name: YOUR-SVC-NAME ## YOUR-SVC-NAME di sini harus sesuai dengan nama Service yang ditentukan dalam anotasi kondisi penerusan kustom untuk menentukan asosiasi.
port:
number: 88
Spec.rules
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/use-regex: "true" ## Memungkinkan jalur di spec.rules menggunakan ekspresi reguler.
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-[a-z]-alb[()^]*
pathType: Prefix
backend:
service:
name: tea-svc
port:
number: 88
|
Parameter |
Deskripsi |
|
|
|
Mengaktifkan ekspresi reguler untuk aturan jalur di |
|
|
|
Mengonfigurasi kondisi penerusan kustom. Lihat Menyesuaikan aturan penerusan untuk ALB Ingress. Ganti |
|
Tabel berikut menjelaskan aturan pencocokan ekspresi reguler.
|
Objek |
Awalan |
Contoh aturan |
Jalur klien |
Cocok? |
Deskripsi |
|
Nama domain |
Dimulai dengan |
|
test.EXAMPLE.com |
Ya |
Nama domain mendukung pencocokan ekspresi reguler tidak peka huruf besar/kecil. |
|
Jalur |
Dimulai dengan |
|
/API |
Ya |
Jalur mendukung pencocokan ekspresi reguler tidak peka huruf besar/kecil. |
|
Dimulai dengan |
|
/Api |
Tidak |
Jalur mendukung pencocokan ekspresi reguler peka huruf besar/kecil. |
Pencocokan awalan regex
Pencocokan regex secara bawaan menggunakan 'pencocokan mengandung'. Untuk mencocokkan hanya jalur yang dimulai dengan konten tertentu, tambahkan ^ di awal ekspresi. Misalnya, ^/api hanya mencocokkan jalur yang dimulai dengan /api.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-example
annotations:
alb.ingress.kubernetes.io/use-regex: "true" ## Aktifkan pencocokan regex.
alb.ingress.kubernetes.io/conditions.YOUR-SVC-NAME: | ## Ganti YOUR-SVC-NAME dengan nama layanan yang sebenarnya. Harus sesuai dengan backend.service.name di bawah ini.
[
{
"type": "Path",
"pathConfig": {
"values": [
"~*^/pathvalue1", # Jalur yang dimulai dengan ~* atau ~ menunjukkan pencocokan regex. Tanda sisipan (^) menunjukkan "dimulai dengan /pathvalue1".
"/pathvalue2" # Untuk pencocokan awalan atau eksak standar, jangan tambahkan ~* atau ~.
]
}
}
]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test-path-for-alb
pathType: Prefix
backend:
service:
name: YOUR-SVC-NAME # Ganti dengan nama layanan yang sebenarnya, yang harus sesuai dengan anotasi.
port:
number: 88
Konfigurasi penulisan ulang
ALB Ingress menulis ulang jalur permintaan sebelum meneruskannya ke layanan backend. Gunakan dua anotasi berikut:
-
alb.ingress.kubernetes.io/rewrite-target: /path/${number}: Menentukan jalur tujuan penulisan ulang permintaan.Penting-
Gunakan variabel
${number}untuk mereferensikan grup tangkapan dari ekspresi reguler di jalur Ingress. Hingga tiga grup tangkapan dapat direferensikan menggunakan${1},${2}, dan${3}. -
pathTypedari Ingress harus diatur kePrefix.
-
-
alb.ingress.kubernetes.io/use-regex: true: Mengaktifkan penggunaan ekspresi reguler di jalur. Ini diaktifkan secara bawaan saat Anda mengonfigurasirewrite-target.Penting-
Anotasi ini mengaktifkan pencocokan regex terlepas dari nilainya (
trueataufalse). Hapus anotasi untuk menonaktifkan. -
Tanpa anotasi ini, pembuatan Ingress gagal jika jalur berisi karakter khusus seperti
"%#;!()[]^,"\"".
-
Contoh konfigurasi
Contoh 1: Menghapus awalan
Pada contoh YAML berikut, path: /something(/|$)(.*) menggunakan ekspresi reguler untuk membagi jalur permintaan klien menjadi tiga bagian:
-
/something: Mencocokkan awalan yang akan dihapus. -
(/|$): Grup tangkapan pertama, yang mencocokkan garis miring/setelah/somethingatau akhir jalur ($). -
(.*): Grup tangkapan kedua, yang mencocokkan semua karakter setelah/something/dan direferensikan sebagai${2}dalam jalur yang ditulis ulang.
Anotasi alb.ingress.kubernetes.io/rewrite-target menentukan jalur yang ditulis ulang sebagai / diikuti oleh ${2}. Tabel berikut menunjukkan hasil penulisan ulang.
|
Jalur klien asli |
Pencocokan regex jalur |
Jalur yang ditulis ulang |
|
|
Cocok. Grup tangkapan kedua kosong. |
|
|
|
Cocok. Grup tangkapan kedua kosong. |
|
|
|
Cocok. Grup tangkapan kedua adalah |
|
|
|
Tidak cocok. Dalam contoh ini, karena permintaan tidak cocok dengan aturan routing apa pun, ALB Ingress mengembalikan kode status 503. |
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # Memungkinkan bidang path menggunakan ekspresi reguler.
alb.ingress.kubernetes.io/rewrite-target: /${2} # Anotasi ini mendukung penggantian ekspresi reguler.
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /something(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
Contoh 2: Menangkap dan menyusun ulang beberapa bagian
Contoh berikut menangkap dan menyusun ulang beberapa bagian dari jalur /items/(.*)/(.*)/(.*). Contoh ini juga mengonversi segmen jalur menjadi parameter kueri, yang tidak memerlukan perubahan di sisi klien. Jalur yang ditulis ulang dibuat sebagai /, diikuti oleh grup tangkapan kedua ${2}, string ?code=, dan grup tangkapan ketiga ${3}. Tabel berikut menunjukkan hasil penulisan ulang.
Contoh ini mengharuskan klien menggunakan format jalur tetap dengan empat segmen.
|
Jalur klien asli |
Pencocokan regex jalur |
Jalur yang ditulis ulang |
|
|
Cocok. Grup tangkapan kedua adalah |
|
|
|
Cocok. Grup tangkapan kedua adalah |
|
|
|
Tidak cocok. Dalam contoh ini, karena permintaan tidak cocok dengan aturan routing apa pun, ALB Ingress mengembalikan kode status 503. |
|
|
|
Tidak cocok. Dalam contoh ini, karena permintaan tidak cocok dengan aturan routing apa pun, ALB Ingress mengembalikan kode status 503. |
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # Memungkinkan bidang path menggunakan ekspresi reguler.
alb.ingress.kubernetes.io/rewrite-target: /${2}?code=${3} # Anotasi ini mendukung penggantian ekspresi reguler.
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /items/(.*)/(.*)/(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
Contoh 3: Menulis ulang beberapa jalur ke satu jalur
Contoh berikut menggunakan ekspresi reguler untuk mencocokkan beberapa jalur (/app-a(/|$)(.*) dan /app-b(/|$)(.*)) dan menulis ulangnya ke satu jalur. Jalur yang ditulis ulang adalah /app-c/ diikuti oleh ${2}. Tabel berikut menunjukkan hasil penulisan ulang.
|
Jalur klien asli |
Pencocokan regex jalur |
Jalur yang ditulis ulang |
|
|
Cocok. Grup tangkapan kedua adalah |
|
|
|
Cocok. Grup tangkapan kedua adalah |
|
|
|
Cocok. Grup tangkapan kedua kosong. |
|
|
|
Tidak cocok. Dalam contoh ini, karena permintaan tidak cocok dengan aturan routing apa pun, ALB Ingress mengembalikan kode status 503. |
|
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/use-regex: "true" # memungkinkan bidang path menggunakan ekspresi reguler.
alb.ingress.kubernetes.io/rewrite-target: /app-c/${2} # Anotasi ini mendukung penggantian ekspresi reguler.
spec:
ingressClassName: alb
rules:
- host: demo.alb.ingress.top
http:
paths:
- path: /app-a(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
- path: /app-b(/|$)(.*)
pathType: Prefix
backend:
service:
name: rewrite-svc
port:
number: 9080
Contoh 4: Menulis ulang nama domain
Anotasi alb.ingress.kubernetes.io/rewrite-target hanya mendukung perubahan jalur. Untuk mengubah bagian lain dari URL, seperti nama domain atau parameter kueri, gunakan aturan penerusan kustom.
Menguji aturan penulisan ulang
Gunakan perintah sed
untuk menguji apakah jalur klien cocok dengan ekspresi reguler jalur dan untuk melihat pratinjau jalur yang ditulis ulang.
Contoh ini menggunakan jalur tangkapan /items/(.*)/(.*)/(.*) dan aturan penulisan ulang /${2}?code=${3} dari Contoh 2: Menangkap dan menyusun ulang beberapa bagian.
-
Simpan jalur contoh berikut ke file bernama
path2.txt:/items/electronics/computers/554 /items/produce/fruits/12 /items/headphones/5 /drinks/41 -
Periksa apakah jalur cocok dan lihat jalur yang ditulis ulang:
Perintah berikut menyesuaikan ekspresi reguler jalur contoh (
/items/(.*)/(.*)/(.*)) dan jalur yang ditulis ulang (/${2}?code=${3}) untuk sed. Saat menggunakan sed, karakter khusus seperti/harus di-escape dengan garis miring terbalik (\), dan referensi grup tangkapan ditulis sebagai\2bukan${2}.sed -E 's#\/items\/(.*)\/(.*)\/(.*)#Matched: [] --- Rewritten: [/\2?code=\3]#' path2.txtOutput berikut diharapkan. Dua jalur pertama cocok dengan aturan dan ditulis ulang, sedangkan dua jalur terakhir tidak cocok dan tetap tidak berubah.
Matched: [/items/electronics/computers/554] --- Rewritten: [/computers?code=554] Matched: [/items/produce/fruits/12] --- Rewritten: [/fruits?code=12] /items/headphones/5 /drinks/41
Konfigurasi port listener kustom
Tambahkan anotasi untuk mengekspos layanan pada port 80 (HTTP) dan port 443 (HTTPS).
ALB tidak mendukung pembuatan listener langsung di Ingress. Pertama-tama buat port dan protokol listener yang diperlukan di AlbConfig, lalu referensikan di Ingress. Lihat Menggunakan AlbConfig untuk mengonfigurasi listener ALB.
|
Parameter |
Deskripsi |
Contoh YAML |
|
|
Mengekspos layanan pada port 80 dan 443. |
|
Konfigurasi prioritas aturan penerusan
Secara bawaan, ALB memprioritaskan aturan penerusan berdasarkan kriteria berikut:
-
Sistem mengurutkan resource Ingress secara leksikografis berdasarkan
namespace/name. Ingress dengan nilai leksikografis lebih kecil memiliki prioritas lebih tinggi.Namespace dibandingkan terlebih dahulu, kemudian nama karakter per karakter.
-
Dalam satu Ingress, aturan diprioritaskan berdasarkan urutannya di bidang
rules. Aturan yang tercantum lebih dulu memiliki prioritas lebih tinggi.rules: - host: www.example.com http: ... - host: www.test.com http: ...
Untuk menentukan prioritas aturan penerusan ALB tanpa mengubah namespace/name dari Ingress, tambahkan anotasi Ingress berikut:
|
Parameter |
Deskripsi |
Nilai |
Contoh YAML |
|
|
Menentukan prioritas aturan penerusan ALB. Nilai lebih rendah menunjukkan prioritas lebih tinggi. Prioritas setiap aturan harus unik dalam listener yang sama. |
[1, 1000] Bawaan: 10 |
|
Menerapkan rilis canary dengan anotasi
ALB mendukung rilis canary berdasarkan header, cookie, dan bobot. Lihat Menerapkan rilis canary menggunakan ALB Ingress untuk praktik terbaik.
|
Parameter |
Deskripsi |
Deskripsi |
|
|
Mengaktifkan fitur rilis canary. |
|
-
Distribusikan trafik canary berdasarkan header tertentu
Parameter
Deskripsi
Contoh YAML
alb.ingress.kubernetes.io/canary-by-headerAnotasi ini menentukan header permintaan kustom dan nilainya untuk routing trafik. Kedua anotasi ini wajib.
-
Saat
headerdanheader-valuedalam permintaan sesuai dengan nilai yang dikonfigurasi, trafik permintaan diarahkan ke titik masuk layanan canary. -
Permintaan yang tidak cocok dievaluasi terhadap aturan prioritas lebih rendah.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/order: "1" alb.ingress.kubernetes.io/canary: "true" alb.ingress.kubernetes.io/canary-by-header: "location" alb.ingress.kubernetes.io/canary-by-header-value: "hz" name: demo-canary spec: ... ...alb.ingress.kubernetes.io/canary-by-header-valueJika permintaan berisi header
location: hz, ALB mengarahkan trafik ke layanan canary. Permintaan lain dievaluasi terhadap aturan prioritas lebih rendah, seperti berdasarkan cookie atau bobot. -
-
Distribusikan trafik canary berdasarkan cookie tertentu
Parameter
Nilai cookie
Contoh YAML
alb.ingress.kubernetes.io/canary-by-cookie-
always: Mengarahkan semua permintaan ke layanan canary. -
never: Tidak pernah mengarahkan permintaan ke layanan canary.
Rilis canary berbasis cookie tidak mendukung nilai kustom, hanya
alwaysdannever.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/order: "2" alb.ingress.kubernetes.io/canary: "true" alb.ingress.kubernetes.io/canary-by-cookie: "demo" name: demo-canary-cookie ... ...Jika permintaan berisi header
Cookie: demo=always, ALB mengarahkan trafik ke layanan canary. Jika header berisiCookie: demo=never, ALB tidak mengarahkan trafik ke layanan canary. -
-
Distribusikan trafik berdasarkan bobot
Parameter
Deskripsi
Contoh YAML
alb.ingress.kubernetes.io/canary-weightPersentase trafik yang diarahkan ke layanan canary. Nilai valid: 0 hingga 100.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: alb.ingress.kubernetes.io/order: "3" alb.ingress.kubernetes.io/canary: "true" alb.ingress.kubernetes.io/canary-weight: "50" name: demo-canary-weight
Konfigurasi persistensi sesi dengan anotasi
Gunakan anotasi berikut untuk mengonfigurasi persistensi sesi untuk ALB Ingress.
Contoh anotasi:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: cafe-ingress-v3
annotations:
alb.ingress.kubernetes.io/sticky-session: "true"
alb.ingress.kubernetes.io/sticky-session-type: "Server" # Untuk menggunakan cookie kustom, atur anotasi ini ke Server.
alb.ingress.kubernetes.io/cookie-timeout: "1800"
alb.ingress.kubernetes.io/cookie: "test"
spec:
... ...
|
Parameter |
Deskripsi |
Bawaan |
|
|
Menentukan apakah akan mengaktifkan persistensi sesi.
|
|
|
|
Menentukan cara load balancer menangani cookie.
Catatan
Hanya berlaku saat |
|
|
|
Waktu tunggu cookie dalam detik. Nilai valid: 1 hingga 86400. Hanya berlaku saat |
1000 |
|
|
Nilai cookie kustom. Wajib (tidak boleh kosong) saat |
"" |
Tentukan algoritma penyeimbangan beban
Gunakan anotasi untuk menentukan algoritma penyeimbangan beban untuk grup server backend.
|
Parameter |
Nilai |
Deskripsi |
|
|
|
|
Weighted round robin. Server dengan bobot lebih tinggi menerima lebih banyak permintaan. (Bawaan) |
|
|
|
Mendistribusikan permintaan berdasarkan bobot dan jumlah koneksi saat ini. Jika bobot sama, server dengan koneksi paling sedikit dipilih. |
||
|
|
Mengarahkan permintaan dari IP sumber yang sama ke server backend yang sama. |
||
|
|
Mengarahkan permintaan berdasarkan hash dari parameter URL tertentu. Gunakan anotasi
|
Konfigurasi CORS
Gunakan anotasi berikut untuk mengonfigurasi Cross-Origin Resource Sharing (CORS) untuk ALB Ingress.
Contoh anotasi:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-ingress
annotations:
alb.ingress.kubernetes.io/enable-cors: "true"
alb.ingress.kubernetes.io/cors-expose-headers: ""
alb.ingress.kubernetes.io/cors-allow-methods: "GET,POST"
alb.ingress.kubernetes.io/cors-allow-credentials: "true"
alb.ingress.kubernetes.io/cors-max-age: "600"
alb.ingress.kubernetes.io/cors-allow-origin: "Nama domain origin yang diizinkan"
spec:
... ...
|
Parameter |
Deskripsi |
Bawaan |
|
|
Mengaktifkan Cross-Origin Resource Sharing (CORS). |
Nilai bawaan: |
|
|
Menentukan origin mana yang dapat mengakses sumber daya di server. Gunakan koma (,) untuk memisahkan beberapa origin. Setiap nilai harus dimulai dengan |
|
|
|
Menentukan metode HTTP yang diizinkan untuk permintaan lintas asal. Nilainya tidak peka huruf besar/kecil. Gunakan koma (,) untuk memisahkan beberapa metode HTTP. |
|
|
|
Menentukan header permintaan yang diizinkan untuk permintaan lintas asal. Atur parameter ini ke
|
|
|
|
Menentukan header respons mana yang diekspos ke klien. Atur parameter ini ke
|
|
|
|
Menentukan apakah akan menyertakan kredensial dalam permintaan lintas asal. |
|
|
|
Durasi cache untuk respons preflight, dalam detik. Nilai valid: 0 hingga 172.800. |
Nilai bawaan: |
Koneksi persisten backend
Koneksi persisten backend memungkinkan ALB menggunakan kembali koneksi TCP ke server backend, mengurangi overhead koneksi dalam skenario throughput tinggi.
|
Parameter |
Deskripsi |
Contoh YAML |
|
|
Mengaktifkan koneksi persisten backend untuk mengurangi overhead koneksi TCP. |
|
Lampiran backend IPv6 untuk grup server
Lampiran backend IPv6 memungkinkan Pod IPv4 dan IPv6 dalam satu grup server, tetapi memerlukan kluster dual-stack. Lihat Membuat Kluster ACK yang dikelola.
Batasan berikut berlaku saat lampiran backend IPv6 diaktifkan:
-
Untuk mengaktifkan lampiran backend IPv6 untuk grup server, IPv6 harus diaktifkan untuk VPC grup server tersebut.
-
Lampiran backend IPv6 tidak didukung untuk grup server bertipe IP atau Function Compute saat dilampirkan menggunakan aksi penerusan kustom.
-
Jika Ingress dikaitkan dengan instans ALB IPv4 saja, Anda tidak dapat mengaktifkan lampiran backend IPv6 untuk grup servernya.
Konfigurasikan Service dan ALB Ingress untuk dual-stack. Setelah Anda membuat instans ALB dual-stack, Anda dapat melampirkan server backend IPv4 dan IPv6 ke grup server.
|
Objek konfigurasi |
Parameter |
Nilai |
Deskripsi |
Contoh YAML |
|
Service |
|
|
Menentukan jenis alamat IP yang tersedia untuk Service. |
|
|
|
|
Menetapkan kebijakan IP untuk Service, mengaktifkan jaringan dual-stack. |
||
|
ALB Ingress |
|
|
Mengaktifkan lampiran backend IPv6 untuk grup server. |
|
Konfigurasi pembatasan kecepatan QPS
Tambahkan anotasi berikut untuk mengaktifkan pembatasan kecepatan QPS untuk aturan penerusan.
|
Anotasi |
Deskripsi |
Contoh YAML |
|
|
Menentukan batas QPS untuk aturan penerusan. Nilai valid: 1 hingga 1.000.000. |
|
Mulai lambat
Mulai lambat secara bertahap meningkatkan trafik ke Pod yang baru ditambahkan, mencegah kelebihan beban akibat lonjakan trafik mendadak.
|
Parameter |
Deskripsi |
Contoh YAML |
|
|
Menentukan apakah akan mengaktifkan mulai lambat. Dinonaktifkan secara bawaan.
|
|
|
|
Durasi peningkatan bertahap mulai lambat dalam detik. Nilai valid: 30–900. Bawaan: 30. |
Pengurasan koneksi
Saat Pod memasuki status Terminating, ALB Ingress menghapusnya dari grup server tetapi tidak segera menutup koneksi yang ada, yang dapat menyebabkan error permintaan atau mencegah shutdown yang mulus. Pengurasan koneksi menjaga koneksi yang ada tetap terbuka selama waktu tunggu yang dapat dikonfigurasi sebelum menutupnya. Lihat Menggunakan pengurasan koneksi dengan ALB Ingress untuk shutdown layanan yang mulus.
ALB Ingress tidak menjamin Pod tetap berjalan hingga pengurasan koneksi selesai. Untuk mengontrol ketersediaan Pod selama terminasi, konfigurasikan spec.terminationGracePeriodSeconds atau gunakan preStop Hook.
|
Parameter |
Deskripsi |
Contoh YAML |
|
|
Menentukan apakah akan mengaktifkan pengurasan koneksi.
|
|
|
|
Menentukan waktu tunggu pengurasan koneksi dalam detik. Nilai valid: [0, 900]. Bawaan: 300. |
Nonaktifkan penyeimbangan beban lintas zona
ALB mendistribusikan trafik di seluruh zona ketersediaan secara bawaan. Menonaktifkan penyeimbangan beban lintas zona membatasi trafik ke layanan backend di zona yang sama.
Jika Anda menonaktifkan penyeimbangan beban lintas zona, pastikan setiap zona ketersediaan memiliki sumber daya backend yang cukup.
Gunakan contoh berikut untuk menonaktifkan penyeimbangan beban lintas zona:
|
Parameter |
Deskripsi |
Contoh YAML |
|
|
Menentukan apakah akan mengaktifkan penyeimbangan beban lintas zona. Diaktifkan secara bawaan.
|
|