Ingress ALB mendukung aturan pengalihan kustom yang terdiri dari kondisi dan aksi pengalihan. Anda dapat menentukan kondisi pengalihan berdasarkan nama domain, path, header permintaan, string kueri, metode permintaan, cookie, atau IP sumber. Selain itu, Anda juga dapat menentukan aksi pengalihan seperti mengembalikan respons tetap, melakukan pengalihan, menyisipkan atau menghapus header permintaan, mencerminkan traffic, meneruskan permintaan ke beberapa grup server backend, atau menulis ulang permintaan. Aturan pengalihan kustom ini dapat dikonfigurasi melalui Konsol atau dengan menambahkan anotasi pada resource Ingress.
Prasyarat
Komponen ALB Ingress Controller harus diinstal dan berada pada versi v2.5.0 atau lebih baru. Untuk informasi selengkapnya, lihat Mengelola komponen.
Kondisi pengalihan
Satu aturan pengalihan dapat mencakup maksimal 10 kondisi.
Kondisi pengalihan
ResponseHeaderdanResponseStatusCodehanya berlaku untuk aturan pengalihan berbasis respons.
Kondisi pengalihan
Ingress ALB mendukung konfigurasi kondisi pengalihan melalui anotasi alb.ingress.kubernetes.io/conditions.<service-name>. Blok aturan routing yang berbeda memiliki hubungan logika AND, sedangkan nilai dalam satu blok aturan routing yang sama memiliki hubungan logika OR. Sebagai contoh, dua blok aturan Header yang berbeda memiliki hubungan logika AND, tetapi nilai-nilai dalam satu blok aturan Header yang sama memiliki hubungan logika OR. Penjelasan rinci mengenai aturan routing disajikan sebagai berikut.
Kondisi pengalihan | Deskripsi |
Nama domain | Mengarahkan permintaan berdasarkan nama domain yang sesuai. Berikut contohnya.
|
Path | Mengarahkan permintaan berdasarkan path yang sesuai. Berikut contohnya.
|
Header | Mengarahkan permintaan berdasarkan header permintaan yang sesuai. Berikut contohnya.
|
String kueri | Mengarahkan permintaan berdasarkan string kueri yang sesuai. Berikut contohnya.
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 3: Mengarahkan traffic berdasarkan string kueri, beberapa header, dan beberapa path. |
Metode permintaan | Mengarahkan permintaan berdasarkan metode permintaan yang sesuai. Berikut contohnya.
|
Cookie | Mengarahkan permintaan berdasarkan cookie yang sesuai. Berikut contohnya.
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 2: Mengarahkan traffic berdasarkan nama domain, metode permintaan, dan cookie. |
IP sumber | Mengarahkan permintaan berdasarkan alamat IP sumber yang sesuai. Berikut contohnya.
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 1: Mengarahkan traffic berdasarkan IP sumber dan header. |
header respons | Mencocokkan header respons dan menjalankan aksi pengalihan hanya pada respons yang berisi header yang benar. Perhatikan bahwa ini harus digunakan bersamaan dengan anotasi
|
kode status respons | Mencocokkan kode status respons. Layanan hanya dapat diakses jika kode status yang benar dikembalikan. Perhatikan bahwa fitur ini harus digunakan dengan aksi pengalihan arah respons dan anotasi aturan pengalihan arah respons
|
Kasus penggunaan 1: Pengarahan berdasarkan IP sumber dan header
Anda dapat menentukan maksimal lima kondisi IP sumber dalam satu aturan pengalihan.
YAML berikut mendefinisikan Ingress yang hanya mengarahkan permintaan jika IP sumber, header, dan path sesuai dengan kondisi yang ditentukan.
Jika alamat IP sumber permintaan berasal dari 192.168.0.0/16 atau 172.16.0.0/16, header permintaan berisi gray-hello dengan nilai value1 atau value2, serta path permintaan adalah /hello, maka permintaan tersebut diarahkan ke layanan gray-hello-svc. Jika tidak, permintaan diarahkan ke layanan lain.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/order: "1"
alb.ingress.kubernetes.io/conditions.gray-hello-svc: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
[{
"type": "Header",
"headerConfig": {
"key":"gray-hello",
"values": [
"value1",
"value2"
]
}
},
{
"type": "SourceIp",
"sourceIpConfig": {
"values": [
"192.168.0.0/16",
"172.16.0.0/16"
]
}
}]
name: gray-hello-ingress
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /hello
pathType: ImplementationSpecific
backend:
service:
name: gray-hello-svc # Nama layanan backend ini harus sesuai dengan nama dalam anotasi `conditions` agar kondisi tersebut berlaku.
port:
number: 88alb.ingress.kubernetes.io/order: Menentukan prioritas Ingress. Semakin kecil angkanya, semakin tinggi prioritasnya.
Kasus penggunaan 2: Pengarahan berdasarkan domain, metode, dan cookie
YAML berikut mendefinisikan Ingress yang hanya mengarahkan permintaan jika nama domain, metode permintaan, dan cookie sesuai dengan kondisi yang ditentukan.
Permintaan diarahkan ke service-a hanya jika metode permintaan adalah GET atau HEAD, host permintaan adalah example.com atau *.edu, cookie permintaan memiliki kunci cookiekey1 dan nilai cookievalue1, serta path permintaan adalah /test. Jika tidak, permintaan diarahkan ke service-b.
Aturan pengalihan untuk nama domain mendukung wildcard.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
[{
"type": "Cookie",
"cookieConfig": {
"values": [
{
"key":"cookiekey1",
"value":"cookievalue1"
}
]
}
},
{
"type": "Method",
"methodConfig": {
"values": [
"GET",
"HEAD"
]
}
},
{
"type": "Host",
"hostConfig": {
"values": [
"example.com",
"*.edu"
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-a # Nama layanan backend ini harus sesuai dengan nama dalam anotasi `conditions` agar kondisi tersebut berlaku.
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88Kasus penggunaan 3: Pengarahan berdasarkan string kueri, header, dan path
YAML berikut mendefinisikan Ingress yang hanya mengarahkan permintaan jika string kueri, header, dan path sesuai dengan kondisi yang ditentukan.
Permintaan diarahkan ke layanan service-a jika path permintaan adalah /pathvalue1, /pathvalue2, atau /test; string kueri memiliki kunci querystringkey1 dan nilai querystringvalue2; serta header permintaan berisi headerkey1 dan headerkey2. Selain itu, untuk header permintaan yang berisi headerkey1, nilainya harus headervalue1 atau headervalue2, dan untuk header permintaan yang berisi headerkey2, nilainya harus headervalue3 atau headervalue4. Jika tidak, permintaan diarahkan ke layanan service-b.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: | # Nama layanan harus sesuai dengan nama layanan backend di spec.rules. Kondisi ini berlaku untuk layanan tersebut.
[{
"type": "Path",
"pathConfig": {
"values": [
"/pathvalue1",
"/pathvalue2"
]
}
},
{
"type": "QueryString",
"queryStringConfig": {
"values": [
{
"key":"querystringkey1",
"value":"querystringvalue2"
}
]
}
},
{
"type": "Header",
"headerConfig": {
"key":"headerkey1",
"values": [
"headervalue1",
"headervalue2"
]
}
},
{
"type": "Header",
"headerConfig": {
"key":"headerkey2",
"values": [
"headervalue3",
"headervalue4"
]
}
}]
name: ingress-example
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-a # Nama layanan backend ini harus sesuai dengan nama dalam anotasi `conditions` agar kondisi tersebut berlaku.
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88Aksi pengalihan
Aksi pengalihan
Ingress ALB memungkinkan Anda mengonfigurasi aksi pengalihan untuk permintaan dan respons melalui anotasi alb.ingress.kubernetes.io/actions.<service-name>. Aksi yang didukung mencakup mengembalikan respons tetap, pengalihan, menyisipkan atau menghapus header, pencerminan traffic, meneruskan ke beberapa grup server backend, dan menulis ulang permintaan. Dengan menentukan aksi pengalihan ini, Anda dapat mengelola secara fleksibel cara penanganan permintaan dan respons dalam Ingress ALB Anda.
Untuk anotasi
alb.ingress.kubernetes.io/actions.<service-name>, pastikan nama layanan dalam anotasi sesuai dengan nama layanan di bawahbackenddalam fieldrule.Gunakan hanya satu aksi pengalihan terminal—seperti pengalihan, respons tetap, atau penerusan ke beberapa grup server—dalam satu aturan pengalihan.
Saat mengonfigurasi pengalihan, respons tetap, atau penerusan ke beberapa grup server, Anda harus menetapkan
backend.service.port.namekeuse-annotation.
Aksi pengalihan permintaan
Aksi | Deskripsi |
Respons tetap | Mengirim respons tetap ke client dari Application Load Balancer (ALB). Anda dapat mengatur kode status respons, konten, dan tipe konten. Kode berikut memberikan contohnya.
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 1: Menetapkan respons tetap. |
Pengalihan | Mengalihkan client ke alamat berbeda menggunakan kode status HTTP 3xx. Kode berikut memberikan contohnya.
Penting Anda dapat mengonfigurasi parameter host, path, port, protocol, dan query untuk menggunakan nilai dari permintaan asli, tetapi setidaknya satu harus diatur ke nilai non-default. Misalnya, jika Anda menetapkan host ke Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 2: Menggunakan pengalihan 301. |
Pencerminan traffic | Menyalin permintaan dan meneruskannya ke grup server pencerminan traffic. Anda harus menentukan ID grup server tersebut. Kode berikut memberikan contohnya. Penting
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 4: Mencerminkan traffic. |
Meneruskan ke beberapa grup server backend | Meneruskan permintaan ALB ke beberapa grup server backend. Anda dapat menentukan grup server backend dengan menggunakan ServerGroupID, atau membuat/menyambungkan grup server dengan menggunakan ServiceName+ServicePort. Anda juga dapat mengatur bobot penerusan untuk setiap grup server backend dan mengaktifkan persistensi sesi antar grup server. Penting
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 5: Meneruskan ke beberapa grup server. |
Rewrite | Menulis ulang permintaan sebelum meneruskannya ke backend. Application Load Balancer (ALB) dapat memodifikasi host, path, dan string kueri permintaan. Penting
Penting Parameter host, path, dan query dapat dikonfigurasi untuk menggunakan nilai dari permintaan asli. Namun, setidaknya satu parameter ini harus diatur ke nilai selain default. Misalnya, jika Anda menetapkan host ke Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 6: Menulis ulang permintaan. |
Sisipkan header | Menetapkan nama field header dan kontennya. Ini akan menimpa header yang sudah ada dengan nama yang sama dalam permintaan. Kode berikut memberikan contohnya.
Untuk kasus penggunaan dan contoh, lihat Kasus penggunaan 3: Menyisipkan header permintaan. |
Hapus header | Menghapus header dari permintaan. Kode berikut memberikan contohnya. type: Jenis aksi pengalihan. Tetapkan ke RemoveHeader untuk menghapus header permintaan. key: Nama field header yang akan dihapus. |
Pembatasan laju QPS | Aksi ini membatasi laju permintaan dalam permintaan per detik (QPS). Anda dapat mengonfigurasi batas keseluruhan dan batas terpisah untuk setiap IP sumber client. Kode berikut memberikan contoh konfigurasinya: Penting
|
Aksi pengalihan respons
Aksi | Deskripsi |
Sisipkan header | Saat diterapkan pada aturan respons, aksi ini menetapkan field header dan nilainya dalam respons. Ini akan menimpa header respons yang sudah ada dengan nama yang sama. Kode berikut memberikan contohnya.
Untuk kasus penggunaan dan contoh modifikasi header respons, lihat Kasus penggunaan 7: Memodifikasi header respons dan Kasus penggunaan 8: Memodifikasi header respons berdasarkan kode status. |
Hapus header | Saat diterapkan pada aturan respons, aksi ini menghapus header dari respons. Kode berikut memberikan contohnya. type: Jenis aksi pengalihan. Tetapkan ke key: Nama field header yang akan dihapus. |
Kasus penggunaan 1: Menetapkan respons tetap
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Parameter
Deskripsi
Contoh
Jenis Gateway
Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress berdasarkan kebutuhan bisnis Anda.
Untuk informasi selengkapnya tentang perbedaan ketiga jenis gateway tersebut, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
ALB Ingress
Nama
Nama kustom untuk ingress.
ingress
Kelas Ingress
Nama Kelas Ingress terkait.
alb
Aturan
Klik + Add Rule untuk menambahkan aturan routing.
Host: Host kustom.
Mappings: Konfigurasikan parameter berikut.
Match type:
Prefix match: mencocokkan awalan path URL permintaan.
Exact match: melakukan pencocokan eksak pada path URL permintaan.
ImplementationSpecific (Default Value): Perilaku tergantung pada implementasi controller Ingress. Untuk ALB Ingress, ini secara default menggunakan pencocokan eksak.
Service: Pilih layanan target, yaitu Layanan Kubernetes.
Port: Pilih port yang diekspos oleh layanan.
Ingress mendukung beberapa path di bawah host yang sama. Klik + Add untuk menambahkan path.
Host: Biarkan kosong.
Pemetaan:
Path: /
Jenis pencocokan: Pencocokan awalan
Layanan: response-503
Port: 80
Aturan Pengalihan Kustom
Konfigurasikan aturan pengalihan kustom untuk manajemen traffic detail halus.
CatatanAturan pengalihan dapat memiliki maksimal 10 kondisi.
Dari daftar drop-down Add Condition, pilih opsi.
Host:
Mencocokkan host permintaan. Jika Anda menentukan beberapa host, mereka dievaluasi menggunakan logika
OR. Setelah diatur, anotasialb.ingress.kubernetes.io/conditions.host-exampleditambahkan.Path:
Mencocokkan path permintaan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika
OR. Setelah diatur, anotasialb.ingress.kubernetes.io/conditions.path-exampleditambahkan.HTTP Header:
Mencocokkan informasi header permintaan sebagai pasangan kunci-nilai. Misalnya, atur Key ke
headernamedan Value keheadervalue1. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logikaOR. Setelah diatur, anotasialb.ingress.kubernetes.io/conditions.http-header-exampleditambahkan.
Dari daftar drop-down Action, pilih opsi.
Return Fixed Response
Mengembalikan respons tetap ke client melalui ALB. Anda dapat mengonfigurasi kode status respons, konten, dan tipe konten. Konfigurasikan Response Status Code, Response Content Type (Optional), dan Response Content (Optional) sesuai kebutuhan.
Tipe Konten Respons:
text/plain: tipe konten teks biasa.
text/css: tipe konten CSS.
text/html: tipe konten HTML.
application/javascript: tipe konten JavaScript.
application/json: tipe konten JSON.
Tambah Kondisi: Pilih Path. (Pertahankan nilai default)
Aksi: Kembalikan Respons Tetap
Kode Status Respons: 503
Tipe Konten Respons (Opsional): text/plain
Konten Respons (Opsional): error
Pertahankan nilai default untuk parameter lainnya.
Setelah menyelesaikan konfigurasi, klik OK.
Kubectl
YAML berikut menunjukkan contoh cara mengembalikan kode status 503 dan teks 503 error text saat permintaan dibuat ke layanan.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "FixedResponse",
"FixedResponseConfig": {
"contentType": "text/plain",
"httpCode": "503",
"content": "503 error text"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: service-name # Catatan: Nama layanan backend harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama port layanan harus diatur ke use-annotation.Kasus penggunaan 2: Menggunakan pengalihan 301
Contoh YAML berikut menunjukkan cara mengalihkan permintaan ke port HTTPS layanan.
Pengalihan
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.redirect: | # Catatan: "redirect" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "Redirect",
"RedirectConfig": {
"host": "demo.domain.ingress.top",
"path": "/test",
"port": "443",
"protocol": "https",
"query": "querystring",
"httpCode": "301"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: redirect # Catatan: Nama layanan backend harus sesuai dengan "redirect" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama port layanan harus diatur ke use-annotation.Pengalihan ganda
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/listen-ports: |
[{"HTTP": 8001}]
alb.ingress.kubernetes.io/actions.redirect-1: |
[{
"type": "Redirect",
"RedirectConfig": {
"host": "demo.domain.ingress.top",
"path": "/test",
"port": "443",
"protocol": "https",
"query": "querystring",
"httpCode": "301"
}
}]
alb.ingress.kubernetes.io/actions.redirect-2: |
[{
"type": "Redirect",
"RedirectConfig": {
"host": "demo.domain.ingress.top",
"path": "/test",
"port": "443",
"protocol": "https",
"httpCode": "301"
}
}]
spec:
ingressClassName: ml-test-ingressclass-rolechain-2
rules:
- http:
paths:
- path: /foo
pathType: Prefix
backend:
service:
name: redirect-1
port:
name: use-annotation
- path: /bar
pathType: Prefix
backend:
service:
name: redirect-2
port:
name: use-annotationKasus penggunaan 3: Menyisipkan header permintaan
Contoh YAML berikut menunjukkan cara menambahkan atau menimpa header permintaan menjadi source: alibaba.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.insert-header: | # Catatan: "insert-header" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "InsertHeader",
"InsertHeaderConfig": {
"key": "source",
"value": "alibaba",
"valueType": "UserDefined"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: insert-header # Catatan: Nama layanan backend harus sesuai dengan "insert-header" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
port:
number: 80Kasus penggunaan 4: Mencerminkan traffic
YAML berikut menunjukkan contoh cara mencerminkan traffic ke grup server.
Masuk ke Konsol Application Load Balancer (ALB). Di panel navigasi kiri, pilih . Di halaman Server Groups, peroleh ID grup server.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traffic-mirror-ingress
annotations:
# mirror-svc harus salah satu dari nama backend.service yang ditentukan di bawah ini.
# Ingress ALB mencerminkan traffic yang diteruskan ke mirror-svc ke server backend yang ditentukan oleh "ServerGroupID".
# Untuk mengonfigurasi pencerminan traffic untuk beberapa layanan, tambahkan anotasi terpisah untuk setiap layanan.
alb.ingress.kubernetes.io/actions.mirror-svc: | # Catatan: "mirror-svc" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "TrafficMirror",
"TrafficMirrorConfig": {
"TargetType" : "ForwardGroupMirror",
"MirrorGroupConfig": {
"ServerGroupTuples" : [{
"ServerGroupID": "sgp-2auud2fxj1r46*****"
}]
}
}
}]
spec:
ingressClassName: alb
rules:
- host: demo.domain.ingress.top
http:
paths:
- path: /test
pathType: Prefix
backend:
service:
name: mirror-svc # Catatan: Nama layanan backend harus sesuai dengan "mirror-svc" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
port:
number: 80Kasus penggunaan 5: Meneruskan ke beberapa grup server
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Parameter
Deskripsi
Contoh
Jenis Gateway
Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress berdasarkan kebutuhan bisnis Anda.
Untuk informasi selengkapnya tentang perbedaan ketiga jenis gateway tersebut, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
ALB Ingress
Nama
Nama kustom untuk ingress.
forward-ingress
Kelas Ingress
Nama Kelas Ingress terkait.
alb
Aturan
Klik + Add Rule untuk menambahkan aturan routing.
Host: Host kustom.
Mappings: Konfigurasikan parameter berikut.
Match type:
Prefix match: mencocokkan awalan path URL permintaan.
Exact match: melakukan pencocokan eksak pada path URL permintaan.
ImplementationSpecific (Default Value): tergantung pada logika yang diimplementasikan oleh controller Ingress. ALB Ingress menggunakan logika pencocokan eksak.
Service: Pilih layanan target, yaitu Layanan Kubernetes.
Port: Pilih port yang diekspos oleh layanan.
Ingress mendukung beberapa path di bawah host yang sama. Klik + Add untuk menambahkan path.
Host: demo.domain.ingress.top
Pemetaan:
Path: /path
Jenis pencocokan: Pencocokan awalan
Layanan: Forward
Port: 80
Aturan Pengalihan Kustom
Aktifkan aturan pengalihan kustom untuk mengelola traffic masuk dengan kontrol detail halus.
CatatanAturan pengalihan dapat memiliki maksimal 10 kondisi.
Dari daftar drop-down Add Condition, pilih opsi.
Host:
Mencocokkan host permintaan. Jika Anda menentukan beberapa host, mereka dievaluasi menggunakan logika
OR. Setelah diatur, anotasialb.ingress.kubernetes.io/conditions.host-exampleditambahkan.Path:
Mencocokkan path permintaan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika
OR. Setelah diatur, anotasialb.ingress.kubernetes.io/conditions.path-exampleditambahkan.HTTP Header:
Mencocokkan informasi header permintaan sebagai pasangan kunci-nilai. Misalnya, atur Key ke
headernamedan Value keheadervalue1. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logikaOR. Setelah diatur, anotasialb.ingress.kubernetes.io/conditions.http-header-exampleditambahkan.
Dari daftar drop-down Action, pilih opsi.
Forward To
Meneruskan permintaan ke beberapa grup server backend. Di field Service Name, pilih layanan target. Di field Port, pilih nomor port target. Lalu, konfigurasikan nilai bobot kustom.
CatatanLayanan ClusterIP tidak didukung untuk kluster yang menggunakan plug-in jaringan Flannel.
Saat Anda memilih Forward To, Anda tidak perlu mengonfigurasi pemetaan path dalam aturan.
Tambah Kondisi: Pilih Host. Host: demo.domain.ingress.top
Aksi: Teruskan Ke
Nama Layanan: tea-svc
Port: 80
Konfigurasikan bobot: 80
Tambah Layanan
Nama Layanan: coffee-svc
Port: 80
Konfigurasikan bobot: 20
Pertahankan nilai default untuk parameter lainnya.
Setelah menyelesaikan konfigurasi, klik OK di pojok kiri bawah halaman Create Ingress.
Kubectl
YAML berikut menunjukkan contoh cara meneruskan permintaan ke beberapa layanan dalam kluster.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: forward-ingress
annotations:
# Layanan dalam anotasi harus ada di kluster, dan namanya harus sesuai dengan nama layanan di bawah backend dalam field rule.
alb.ingress.kubernetes.io/actions.service-name: | # Catatan: "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "ForwardGroup",
"ForwardConfig": {
"ServerGroups" : [{
"ServiceName": "tea-svc",
"Weight": 80,
"ServicePort": 80
},
{
"ServiceName": "coffee-svc",
"Weight": 20,
"ServicePort": 80
}]
}
}]
spec:
ingressClassName: alb
rules:
- host: demo.domain.ingress.top
http:
paths:
- path: /path
pathType: Prefix
backend:
service:
name: service-name # Catatan: Nama layanan backend harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama port layanan harus diatur ke use-annotation.Kasus penggunaan 6: Menulis ulang permintaan
Rewrite memodifikasi URL permintaan sebelum diteruskan ke backend. Ingress ALB dapat mengubah host, path, dan string kueri, yang berguna untuk menyederhanakan URL, melakukan pengalihan transparan bagi client, dan menyembunyikan detail implementasi backend. Pada contoh berikut, rewrite dikonfigurasi menggunakan anotasi alb.ingress.kubernetes.io/actions.service-name.
Misalnya, jika client mengakses https://example.com/api/users, rewrite mengubah URL menjadi https://example.org/users tetapi mempertahankan string kueri aslinya.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/actions.service-name: | # "service-name" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "Rewrite",
"RewriteConfig": {
"Host": "example.org",
"Path": "/users",
"Query": "${query}" # ${query} menunjukkan bahwa string kueri permintaan asli digunakan.
}
}]
spec:
ingressClassName: alb
rules:
- host: example.com
http:
paths:
- path: /api/users
pathType: ImplementationSpecific
backend:
service:
name: service-name # Nama layanan backend harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom. Aksi pengalihan berlaku untuk layanan backend ini.
port:
number: 80Kasus penggunaan 7: Memodifikasi header respons
Secara default, aturan pengalihan Ingress ALB berlaku untuk permintaan. Untuk menerapkan aturan pada respons, Anda harus menetapkan anotasi
alb.ingress.kubernetes.io/rule-direction.<service-name>keResponse.Saat membuat aturan pengalihan untuk respons, Anda harus menetapkan
backend.service.port.namekeuse-annotation.
Blok kode berikut mendefinisikan bahwa ketika ResponseHeader dicocokkan—artinya header berisi response-hello dengan nilai value1 atau value2—header permintaan baru source: alibaba disisipkan.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/rule-direction.response-header: Response
alb.ingress.kubernetes.io/conditions.response-header: | # Catatan: "response-header" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "ResponseHeader",
"responseHeaderConfig": {
"key": "response-hello",
"values": [
"value1",
"value2"
]
}
}]
alb.ingress.kubernetes.io/actions.response-header: | # Catatan: "response-header" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "InsertHeader",
"InsertHeaderConfig": {
"key": "source",
"value": "alibaba",
"valueType": "UserDefined"
}
}]
name: response-header
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: response-header # Catatan: Nama layanan backend harus sesuai dengan "response-header" dalam anotasi kondisi dan aksi pengalihan kustom. Kondisi dan aksi yang dikonfigurasi berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama port layanan harus diatur ke use-annotation.Kasus penggunaan 8: Memodifikasi header respons berdasarkan kode status
Secara default, aturan pengalihan Ingress ALB berlaku untuk permintaan. Untuk menerapkan aturan pada respons, Anda harus menetapkan anotasi
alb.ingress.kubernetes.io/rule-direction.<service-name>keResponse.Saat membuat aturan pengalihan untuk respons, Anda harus menetapkan
backend.service.port.namekeuse-annotation.
Contoh YAML berikut menghapus header response-hello dari respons jika kode status respons adalah 200 atau 300.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/rule-direction.response-hello: Response
alb.ingress.kubernetes.io/conditions.response-hello: | # Catatan: "response-hello" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "ResponseStatusCode",
"responseStatusCodeConfig": {
"values": [
"200",
"300"
]
}
}]
alb.ingress.kubernetes.io/actions.response-hello: | # Catatan: "response-hello" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Aksi pengalihan berlaku untuk layanan backend tersebut.
[{
"type": "RemoveHeader",
"RemoveHeaderConfig": {
"key": "response-hello"
}
}]
name: response-hello
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /*
pathType: ImplementationSpecific
backend:
service:
name: response-hello # Catatan: Nama layanan backend harus sesuai dengan "response-hello" dalam anotasi kondisi dan aksi pengalihan kustom. Kondisi dan aksi yang dikonfigurasi berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama port layanan harus diatur ke use-annotation.Kondisi dan aksi pengalihan
Kasus penggunaan 1: Mengarahkan traffic berdasarkan nama domain
Bagian ini menjelaskan cara mengonfigurasi kondisi dan aksi pengalihan berdasarkan nama domain di Konsol ACK untuk mengarahkan traffic ke layanan tertentu.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Parameter
Deskripsi
Contoh
Gateway type
Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress berdasarkan kebutuhan bisnis Anda.
Untuk informasi selengkapnya tentang perbedaan ketiga jenis gateway tersebut, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
ALB Ingress
Name
Nama kustom untuk ingress.
alb_ingress
Ingress Class
Nama IngressClass terkait.
alb
Rules
Klik + Add Rule untuk menambahkan satu atau beberapa aturan routing.
Domain name: Nama domain kustom.
Mappings: Konfigurasikan parameter berikut.
Rule:
Prefix (prefix match): Mencocokkan awalan path URL permintaan.
Exact (exact match): Mencocokkan secara eksak path URL permintaan.
ImplementationSpecific (Default): Perilaku tergantung pada implementasi controller Ingress. Untuk ALB Ingress, opsi ini berfungsi sebagai pencocokan eksak.
Service name: Pilih layanan target, yaitu Layanan Kubernetes.
Port: Pilih port yang diekspos oleh layanan.
Ingress mendukung beberapa path di bawah nama domain yang sama. Klik + Add Path untuk menambahkan path lainnya.
Domain name: *.example.com
Mappings:
Path: /tes
Rule: ImplementationSpecific
Service name: tea-svc
Port: 80
Custom forwarding rules
Definisikan aturan pengalihan kustom untuk kontrol detail halus atas traffic masuk.
CatatanAturan pengalihan dapat memiliki maksimal 10 kondisi.
Dari daftar drop-down Condition, pilih opsi.
Domain name:
Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, mereka dievaluasi menggunakan logika OR. Saat kondisi ini diatur, anotasi
alb.ingress.kubernetes.io/conditions.host-exampleditambahkan.Path:
Mencocokkan path permintaan. Jika Anda menentukan beberapa path, mereka dievaluasi menggunakan logika OR. Saat kondisi ini diatur, anotasi
alb.ingress.kubernetes.io/conditions.path-exampleditambahkan.PentingSaat Anda mengonfigurasi kondisi pengalihan path, konsol secara otomatis menambahkan aturan pengalihan dengan path
/created-by-<ALB-ID>ke Ingress.HTTP header:
Mencocokkan pasangan kunci-nilai yang ditentukan dalam header permintaan. Misalnya, atur Key ke
headernamedan Value keheadervalue1. Jika Anda menentukan beberapa nilai header, mereka dievaluasi menggunakan logika OR. Saat kondisi ini diatur, anotasialb.ingress.kubernetes.io/conditions.http-header-exampleditambahkan.
Dari daftar drop-down Action, pilih opsi.
Forward to
Meneruskan permintaan ke beberapa grup server backend. Di field Service name, pilih layanan target. Di field Port, pilih port target. Lalu, konfigurasikan bobot.
CatatanLayanan ClusterIP tidak didukung di kluster yang menggunakan plug-in jaringan Flannel.
Saat Anda memilih Forward to, Anda tidak perlu mengonfigurasi Buat dan gunakan Ingress ALB untuk mengekspos layanan dalam aturan.
Condition: Pilih Domain Name, Path, dan HTTP Header.
Domain name: example.com. Klik Add domain name untuk menambahkan nama domain lain, seperti test.com.
Action: Pilih Forward to.
Service name: tea-svc
Port: 80
Weight: 100
Pertahankan nilai default untuk parameter lainnya.
Konfigurasi selesai. Di pojok kiri bawah halaman Create Ingress, klik OK.