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 dapat menentukan aksi pengalihan seperti mengembalikan respons tetap, melakukan pengalihan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa kelompok server backend, atau menulis ulang permintaan. Aturan pengalihan kustom ini dapat dikonfigurasi melalui konsol atau dengan menambahkan anotasi ke sumber daya Ingress.
Indeks skenario
Prasyarat
Komponen ALB Ingress Controller telah diinstal dengan versi minimal v2.5.0. Untuk informasi selengkapnya, lihat Mengelola komponen.
Kondisi pengalihan
Satu aturan pengalihan dapat memiliki maksimal 10 kondisi.
Kondisi pengalihan ResponseHeader dan ResponseStatusCode hanya berlaku untuk aturan pengalihan respons kustom.
Pengantar kondisi pengalihan
Anda dapat mengonfigurasi kondisi penerusan dalam anotasi alb.ingress.kubernetes.io/conditions.<service-name> untuk ALB Ingress. Blok-blok kondisi yang berbeda digabungkan menggunakan operator logika AND, sedangkan nilai-nilai dalam satu blok kondisi yang sama digabungkan menggunakan operator logika OR. Sebagai contoh, jika Anda mengonfigurasi dua blok kondisi Header yang berbeda, keduanya digabungkan dengan operator logika AND. Namun, nilai-nilai yang ditentukan dalam satu blok kondisi Header digabungkan dengan operator logika OR. Tabel berikut menjelaskan kondisi penerusan tersebut.
Kondisi pengalihan | Deskripsi |
Nama domain | Mencocokkan nama domain permintaan. Hanya permintaan dengan nama domain yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
Path | Mencocokkan path permintaan. Hanya permintaan dengan path yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
Header | Mencocokkan header permintaan. Hanya permintaan dengan header yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
String kueri | Mencocokkan string kueri. Hanya permintaan yang berisi string kueri yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
Metode permintaan | Mencocokkan metode permintaan. Hanya permintaan dengan metode yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
Cookie | Mencocokkan cookie. Hanya permintaan yang berisi cookie yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
IP sumber | Mencocokkan alamat IP sumber permintaan. Hanya permintaan dari alamat IP sumber yang cocok yang dapat mengakses layanan. Kode berikut memberikan contoh.
|
ResponseHeader | Mencocokkan header respons. Aksi pengalihan hanya dilakukan pada respons yang membawa header yang cocok. Perhatikan bahwa ini harus digunakan bersama aksi pengalihan respons dan anotasi
|
ResponseStatusCode | Mencocokkan kode status respons. Hanya respons yang mengembalikan kode status yang cocok yang dapat mengakses layanan. Perhatikan bahwa ini harus digunakan bersama aksi pengalihan respons dan anotasi
|
Skema 1: Mendistribusikan lalu lintas berdasarkan IP sumber dan header
Anda dapat menentukan maksimal lima alamat IP sumber untuk kondisi kustom aturan pengalihan.
Blok kode berikut menentukan aturan yang meneruskan lalu lintas ke target hanya jika IP sumber, header, dan path permintaan sesuai konfigurasi.
Jika alamat IP sumber permintaan berada dalam blok CIDR 192.168.0.0/16 atau 172.16.0.0/16, header permintaan berisi gray-hello dengan nilai value1 atau value2, dan path permintaan adalah /hello, permintaan diteruskan ke layanan gray-hello-svc. Jika tidak, permintaan diteruskan 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: | # Catatan: "gray-hello-svc" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "gray-hello-svc" dalam anotasi kondisi pengalihan kustom. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
number: 88alb.ingress.kubernetes.io/order: Menentukan prioritas Ingress. Angka yang lebih kecil menunjukkan prioritas yang lebih tinggi.
Skema 2: Mendistribusikan lalu lintas berdasarkan nama domain, metode permintaan, dan cookie
Blok kode berikut menentukan aturan yang meneruskan lalu lintas ke target hanya jika nama domain, metode permintaan, dan cookie permintaan sesuai konfigurasi.
Jika metode permintaan adalah GET atau HEAD, nama domain permintaan adalah example.com atau *.edu, cookie permintaan memiliki kunci cookiekey1 dengan nilai cookievalue1, dan path permintaan adalah /test, permintaan diteruskan ke layanan service-a. Jika tidak, permintaan diteruskan ke layanan service-b.
Aturan pengalihan berdasarkan nama domain mendukung nama domain wildcard.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: | # Catatan: "service-a" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "service-a" dalam anotasi kondisi pengalihan kustom. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88Skema 3: Mendistribusikan lalu lintas berdasarkan string kueri, beberapa header, dan beberapa path
Blok kode berikut menentukan aturan yang meneruskan lalu lintas ke target hanya jika string kueri, header, dan path permintaan sesuai konfigurasi.
Jika path permintaan adalah /pathvalue1, /pathvalue2, atau /test, string kueri memiliki kunci querystringkey1 dengan nilai querystringvalue2, header permintaan berisi kedua header headerkey1 dan headerkey2, header headerkey1 memiliki nilai headervalue1 atau headervalue2, dan header headerkey2 memiliki nilai headervalue3 atau headervalue4, permintaan diteruskan ke layanan service-a. Jika tidak, permintaan diteruskan ke layanan service-b.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: | # Catatan: "service-a" dalam anotasi ini harus sesuai dengan nama layanan backend yang dikonfigurasi di spec.rules. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "service-a" dalam anotasi kondisi pengalihan kustom. Kondisi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88Aksi pengalihan
Pengantar aksi pengalihan
Anda dapat mengonfigurasi aksi pengalihan untuk permintaan dan respons menggunakan anotasi alb.ingress.kubernetes.io/actions.<service-name>. Aksi yang didukung mencakup mengembalikan respons tetap, melakukan pengalihan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa kelompok server backend, serta menulis ulang permintaan.
Untuk anotasi
alb.ingress.kubernetes.io/actions.<service-name>, pastikan nama layanan dalam anotasi sesuai dengan nama layanan di bawah elemenbackendpada bidangrule.Dalam satu aturan pengalihan, hanya satu aksi pengalihan terminal—seperti pengalihan, respons tetap, atau penerusan ke beberapa kelompok server—yang dapat digunakan.
Saat mengonfigurasi pengalihan, respons tetap, atau penerusan ke beberapa kelompok server, Anda harus menetapkan
backend.service.port.namekeuse-annotation.
Aksi pengalihan permintaan
Aksi pengalihan | Deskripsi |
Respons tetap | Mengembalikan respons tetap kepada klien melalui ALB. Anda dapat mengatur kode status respons, konten, dan tipe konten. Kode berikut memberikan contoh.
|
Pengalihan | Menggunakan kode status HTTP 3xx untuk mengarahkan klien ke alamat lain untuk mengakses layanan. Kode berikut memberikan contoh. Penting Kecuali untuk httpCode, parameter pengalihan lainnya tidak boleh semuanya diatur ke nilai default.
|
Pencerminan lalu lintas | Menyetel ID kelompok server untuk pencerminan lalu lintas. Ini menyalin permintaan dan meneruskannya ke kelompok server pencerminan lalu lintas. Kode berikut memberikan contoh. Penting
|
Meneruskan ke beberapa kelompok server backend | Meneruskan permintaan ALB ke beberapa kelompok server backend. Anda dapat menentukan kelompok server backend menggunakan ServerGroupID, atau membuat atau menyambungkan kelompok server menggunakan ServiceName+ServicePort. Anda dapat mengatur bobot untuk penerusan permintaan ke setiap kelompok server backend dan mengaktifkan persistensi sesi antar kelompok server. Penting
|
Menulis ulang | Mengaktifkan fitur penulisan ulang untuk ALB, yang menimpa nama domain, path, dan string kueri permintaan. Kode berikut memberikan contoh. Penting
Untuk informasi selengkapnya tentang aturan penulisan ulang, lihat Dukungan untuk penulisan ulang. |
Menyisipkan header permintaan | Menyetel nama bidang header dan kontennya. Ini menimpa variabel header yang ada dalam permintaan. Kode berikut memberikan contoh.
|
Menghapus header permintaan | Menghapus nama bidang header dan kontennya. Kode berikut memberikan contoh. type: Jenis aksi pengalihan. Tetapkan ke RemoveHeader untuk mengonfigurasi penghapusan header permintaan. key: Nama bidang header permintaan. |
Pembatasan QPS | Saat menyetel aturan pengalihan untuk ALB, Anda dapat mengonfigurasi batas laju permintaan keseluruhan dan batas laju permintaan berdasarkan IP sumber klien. Kode berikut memberikan contoh konfigurasi: Penting
|
Aksi pengalihan respons
Aksi pengalihan | Deskripsi |
Menyisipkan header permintaan | Menyetel nama bidang header dan kontennya. Ini menimpa variabel header yang ada dalam permintaan. Kode berikut memberikan contoh.
|
Menghapus header permintaan | Menghapus nama bidang header dan kontennya. Kode berikut memberikan contoh. type: Jenis aksi pengalihan. Tetapkan ke key: Nama bidang header permintaan. |
Skema 1: Mengatur respons tetap dengan kode status 503 dan konten
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Item konfigurasi
Deskripsi
Contoh
Jenis Gerbang
Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress.
Untuk informasi selengkapnya tentang perbedaan antara jenis gerbang ini, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
ALB
Nama
Nama kustom Ingress.
ingress
Kelas Ingress
alb
Aturan
Nama Domain: Biarkan kosong
Path Mapping:
Path: /
Aturan Pencocokan: ImplementationSpecific (Prefix)
Nama Layanan: response-503
Port: 80
Aturan Pengalihan Kustom
Aktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk dengan kontrol detail halus.
CatatanSebuah aturan pengalihan dapat memiliki maksimal 10 kondisi.
Dari daftar drop-down Forwarding Condition, pilih salah satu berikut:
Domain Name:
Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR. Setelah menyetel ini, anotasi
alb.ingress.kubernetes.io/conditions.host-exampleditambahkan.Path:
Mencocokkan path permintaan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR. Setelah menyetel ini, anotasi
alb.ingress.kubernetes.io/conditions.path-exampleditambahkan.HTTP Header:
Mencocokkan informasi header permintaan dalam format pasangan kunci-nilai. Misalnya, Key Is:
headernamedan Value Is:headervalue1. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR. Setelah menyetel ini, anotasialb.ingress.kubernetes.io/conditions.http-header-exampleditambahkan.
Dari daftar drop-down Forwarding Action, pilih berikut:
Return Fixed Response
Mengembalikan respons tetap kepada klien melalui ALB. Anda dapat mengatur 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: Menunjukkan konten CSS.
text/html: Tipe konten HTML.
application/javascript: Tipe konten JavaScript.
application/json: Tipe konten JSON.
Kondisi Pengalihan: Pilih Path. (Pertahankan default)
Aksi Pengalihan: Kembalikan Respons Tetap
Kode Status Respons: 503
Tipe Konten Respons (Opsional): text/plain
Konten Respons (Opsional): error
Pertahankan nilai default untuk konfigurasi lainnya.
Setelah konfigurasi selesai, klik OK.
kubectl
Blok kode 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi di sini harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.service-name. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama servicePort harus use-annotation.Skema 2: Menggunakan kode status HTTP 301 untuk mengalihkan ke port HTTPS
Blok kode berikut menunjukkan contoh 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"type": "Redirect",
"RedirectConfig": {
"host": "${host}",
"path": "${path}",
"port": "443",
"protocol": "https",
"query": "${query}",
"httpCode": "301"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: redirect # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "redirect" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.redirect. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama servicePort harus use-annotation.Pengalihan ganda
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.redirect-1: |
[{
"type": "Redirect",
"RedirectConfig": {
"host": "${host}",
"path": "${path}",
"port": "443",
"protocol": "https",
"query": "${query}",
"httpCode": "301"
}
}]
alb.ingress.kubernetes.io/actions.redirect-2: |
[{
"type": "Redirect",
"RedirectConfig": {
"host": "${host}",
"path": "${path}",
"port": "443",
"protocol": "https",
"httpCode": "301"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: redirect
port:
name: use-annotation # Nama servicePort harus use-annotation.Skema 3: Menyisipkan header permintaan source: alibaba
Blok kode berikut menunjukkan contoh cara menimpa header permintaan asli dengan source: alibaba saat permintaan dibuat ke layanan.
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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi di sini harus sesuai dengan "insert-header" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.insert-header. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
number: 80Skema 4: Mencerminkan lalu lintas ke kelompok server
Blok kode berikut menunjukkan contoh cara mencerminkan permintaan ke kelompok server pencerminan lalu lintas.
Masuk ke Konsol Application Load Balancer (ALB). Di panel navigasi kiri, pilih . Di halaman Server Groups, peroleh ID kelompok server.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traffic-mirror-ingress
annotations:
# mirror-svc harus menjadi salah satu backend.services yang dimasukkan di bawah ini.
# ALB Ingress mencerminkan lalu lintas yang diteruskan ke mirror-svc ke server backend yang ditentukan dalam "ServerGroupID".
# Untuk mengonfigurasi pencerminan lalu lintas 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi di sini harus sesuai dengan "mirror-svc" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.mirror-svc. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
number: 80Skema 5: Meneruskan permintaan ke beberapa kelompok server backend
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Item konfigurasi
Deskripsi
Contoh
Jenis Gerbang
Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress.
Untuk informasi selengkapnya tentang perbedaan antara jenis gerbang ini, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
Application Load Balancer (ALB)
Nama
Nama kustom Ingress.
forward-ingress
Kelas Ingress
alb
Aturan
Nama Domain: demo.domain.ingress.top
Path Mapping:
Path: /path
Aturan pencocokan: Pencocokan prefix (default)
Nama Layanan: forward
Port: 80
Aturan Pengalihan Kustom
Aktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk dengan kontrol detail halus.
CatatanSebuah aturan pengalihan dapat memiliki maksimal 10 kondisi.
Dari daftar drop-down Forwarding Condition, pilih salah satu berikut:
Domain Name:
Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR. Setelah menyetel ini, anotasi
alb.ingress.kubernetes.io/conditions.host-exampleditambahkan.Path:
Mencocokkan path permintaan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR. Setelah menyetel ini, anotasi
alb.ingress.kubernetes.io/conditions.path-exampleditambahkan.HTTP Header:
Mencocokkan informasi header permintaan dalam format pasangan kunci-nilai. Misalnya, Key Is:
headernamedan Value Is:headervalue1. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR. Setelah menyetel ini, anotasialb.ingress.kubernetes.io/conditions.http-header-exampleditambahkan.
Dari daftar drop-down Forwarding Action, pilih berikut:
Forward To
Meneruskan ke beberapa kelompok server backend. Di Service Name, pilih layanan target. Di Port, pilih nomor port target. Kemudian, konfigurasikan nilai bobot kustom.
CatatanLayanan ClusterIP tidak didukung untuk kluster dengan plug-in jaringan Flannel.
Saat Anda memilih Forward To, Anda tidak perlu mengonfigurasi pemetaan path di aturan.
Kondisi Pengalihan: Pilih Nama Domain. Nama Domain: demo.domain.ingress.top
Aksi Pengalihan: Teruskan ke
Nama Layanan: tea-svc
Port: 80
Konfigurasikan bobot: 80
Tambahkan Layanan
Nama Layanan: coffee-svc
Port: 80
Konfigurasikan bobot: 20
Pertahankan nilai default untuk konfigurasi lainnya.
kubectl
Blok kode 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 bidang 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi di sini harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.service-name. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama servicePort harus use-annotation.Skema 6: Menulis ulang konfigurasi permintaan
Blok kode berikut menunjukkan contoh cara menulis ulang nama domain, path, dan string kueri permintaan.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: rewrite-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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"type": "Rewrite",
"RewriteConfig": {
"Host": "demo.domain.ingress.top",
"Path": "/test",
"Query": "querystring"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /path
pathType: Prefix
backend:
service:
name: service-name # Catatan: Nama layanan backend yang dikonfigurasi di sini harus sesuai dengan "service-name" dalam anotasi aksi pengalihan kustom alb.ingress.kubernetes.io/actions.service-name. Aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
number: 80Skema 7: Memodifikasi header permintaan dalam respons berdasarkan ResponseHeader
Secara default, aturan pengalihan Ingress ALB kustom berlaku untuk permintaan. Untuk membuat aturan pengalihan untuk respons, Anda harus menyetel anotasi
alb.ingress.kubernetes.io/rule-direction.<service-name>ke Response. Nilai defaultnya adalah Request.Saat membuat aturan pengalihan untuk respons, Anda harus menyetel
backend.service.port.namekeuse-annotation.
Blok kode berikut menunjukkan contoh cara menyisipkan header permintaan baru (source: alibaba) jika kondisi ResponseHeader terpenuhi. Kondisi ini terpenuhi jika header berisi response-hello dengan nilai value1 atau value2.
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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi di sini harus sesuai dengan "response-header" dalam anotasi kondisi/aksi pengalihan kustom. Kondisi/aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama servicePort harus use-annotation.Skema 8: Memodifikasi header permintaan dalam respons berdasarkan kode status respons
Secara default, aturan pengalihan Ingress ALB kustom berlaku untuk permintaan. Untuk membuat aturan pengalihan untuk respons, Anda harus menyetel anotasi
alb.ingress.kubernetes.io/rule-direction.<service-name>ke Response. Nilai defaultnya adalah Request.Saat membuat aturan pengalihan untuk respons, Anda harus menyetel
backend.service.port.namekeuse-annotation.
Blok kode berikut menunjukkan contoh cara menghapus header response-hello dari header permintaan 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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend yang sesuai.
[{
"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 yang dikonfigurasi di sini harus sesuai dengan "response-hello" dalam anotasi kondisi/aksi pengalihan kustom. Kondisi/aksi pengalihan yang dikonfigurasi dalam anotasi ini berlaku untuk layanan backend ini.
port:
name: use-annotation # Nama servicePort harus use-annotation.Praktik dengan kondisi dan aksi pengalihan
Skema 1: Meneruskan lalu lintas ke layanan tertentu berdasarkan kondisi dan aksi nama domain
Bagian ini menjelaskan cara meneruskan lalu lintas ke layanan tertentu dengan mengonfigurasi kondisi pengalihan berbasis nama domain dan aksi pengalihan yang sesuai di konsol ACK.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan Ingress.
Item konfigurasi
Deskripsi
Contoh
Gateway Type
Anda dapat memilih ALB Ingress, MSE Ingress, atau Nginx Ingress.
Untuk informasi selengkapnya tentang perbedaan antara jenis gerbang ini, lihat Perbandingan Nginx Ingress, ALB Ingress, dan MSE Ingress.
Application Load Balancer (ALB)
Name
Nama kustom Ingress.
alb_ingress
Ingress Class
alb
Rule
Domain Name: *.example.com
Path Mapping:
Path: /tes
Match Rule: ImplementationSpecific
Service Name: tea-svc
Port: 80
Custom Forwarding Rule
Aktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk dengan kontrol detail halus.
CatatanSebuah aturan pengalihan dapat memiliki maksimal 10 kondisi.
Dari daftar drop-down Forwarding Condition, pilih salah satu berikut:
Domain Name:
Mencocokkan nama domain permintaan. Jika Anda menentukan beberapa nama domain, hubungan antar nama tersebut adalah OR. Setelah menyetel ini, anotasi
alb.ingress.kubernetes.io/conditions.host-exampleditambahkan.Path:
Mencocokkan path permintaan. Jika Anda menentukan beberapa path, hubungan antar path tersebut adalah OR. Setelah menyetel ini, anotasi
alb.ingress.kubernetes.io/conditions.path-exampleditambahkan.PentingSetelah Anda menyetel kondisi pengalihan path, konsol secara otomatis menambahkan aturan pengalihan dengan path
/created-by-<ALB-ID>ke Ingress.HTTP Header:
Mencocokkan informasi header permintaan dalam format pasangan kunci-nilai. Misalnya, Key Is:
headernamedan Value Is:headervalue1. Jika Anda menentukan beberapa nilai header, hubungan antar nilai tersebut adalah OR. Setelah menyetel ini, anotasialb.ingress.kubernetes.io/conditions.http-header-exampleditambahkan.
Dari daftar drop-down Forwarding Action, pilih berikut:
Forward To
Meneruskan ke beberapa kelompok server backend. Di Service Name, pilih layanan target. Di Port, pilih nomor port target. Kemudian, konfigurasikan nilai bobot kustom.
CatatanLayanan ClusterIP tidak didukung untuk kluster dengan plug-in jaringan Flannel.
Saat Anda memilih Forward To, Anda tidak perlu mengonfigurasi Pemetaan Path di aturan.
Forwarding Condition: Pilih Domain Name, Path, dan HTTP Header.
Domain Name: adalah example.com. Klik Add Domain Name, atau test.com.
Forwarding Action: Pilih Forward To.
Service Name: tea-svc
Port: 80
Weight: 100
Pertahankan nilai default untuk konfigurasi lainnya.