Application Load Balancer (ALB) Ingress memungkinkan Anda mengonfigurasi aturan routing kustom. Aturan routing terdiri dari kondisi dan tindakan. Anda dapat menambahkan kondisi untuk mencocokkan nama domain, jalur, header permintaan, string kueri, metode permintaan, cookie, atau alamat IP sumber dalam permintaan. Selain itu, Anda dapat menambahkan tindakan untuk mengembalikan respons tetap, mengarahkan ulang permintaan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa grup server backend, atau menulis ulang permintaan. Aturan routing ALB Ingress dapat disesuaikan melalui konsol Container Service for Kubernetes (ACK) atau dengan mengonfigurasi parameter Anotasi pada Ingress.
Daftar isi
Aturan kustom | Skenario |
Kondisi routing | |
Tindakan routing | |
Praktik untuk mengonfigurasi kondisi dan tindakan routing |
Prasyarat
Kontroler ALB Ingress versi 2.5.0 atau lebih baru telah diinstal di kluster Anda. Untuk informasi lebih lanjut, lihat Kelola komponen.
Kondisi routing
Anda dapat menambahkan hingga 10 kondisi routing ke satu aturan routing.
Kondisi routing ResponseHeader dan ResponseStatusCode hanya berlaku untuk aturan routing keluar kustom.
Pengenalan kondisi routing
ALB Ingress memungkinkan Anda mengonfigurasi kondisi routing menggunakan anotasi alb.ingress.kubernetes.io/conditions.<Service name>. Hubungan logis antara blok aturan yang berbeda adalah DAN. Jika beberapa nilai ditentukan dalam satu blok aturan, hubungan logis antar nilai tersebut adalah ATAU. Sebagai contoh, jika Anda mengonfigurasi dua blok aturan header, hubungan logis antara kedua blok tersebut adalah DAN. Namun, jika Anda mengonfigurasi beberapa header dalam satu blok aturan header, hubungan logis antar header tersebut adalah ATAU. Tabel berikut menjelaskan kondisi routing yang dapat dikonfigurasi untuk ALB Ingress.
Kondisi routing | Deskripsi |
Nama domain | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang ditujukan ke nama domain yang ditentukan. Contoh kode:
|
Jalur | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang dikirim ke jalur yang ditentukan. Contoh kode:
|
Header | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang berisi header yang ditentukan. Contoh kode:
|
String kueri | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang berisi string kueri yang ditentukan. Contoh kode:
|
Metode permintaan | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang menggunakan metode permintaan yang ditentukan. Contoh kode:
|
Cookie | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan yang berisi cookie yang ditentukan. Contoh kode:
|
SourceIP | Anda dapat mengonfigurasi aturan ini untuk hanya merutekan permintaan dari alamat IP yang ditentukan. Contoh kode:
|
ResponseHeader | Anda dapat menambahkan kondisi ini untuk hanya merutekan respons yang berisi header respons yang ditentukan. Contoh kode:
|
ResponseStatusCode | Anda dapat menambahkan kondisi ini untuk hanya merutekan permintaan yang mengembalikan kode status yang ditentukan. Contoh kode:
|
Skenario 1: Mendistribusikan lalu lintas berdasarkan alamat IP sumber dan header permintaan
Anda dapat menambahkan maksimal lima alamat IP sumber ke kondisi kustom untuk satu aturan routing.
Blok kode berikut digunakan untuk merutekan paket berdasarkan alamat IP sumber, header permintaan, dan jalur.
Dalam blok kode ini, alamat IP sumber diatur ke 192.168.0.0/16 dan 172.16.0.0/16, kunci header diatur ke gray-hello, nilai header diatur ke value1 dan value2, serta jalur diatur ke /hello. Hanya permintaan yang alamat IP sumber, header, dan jalurnya cocok dengan semua kondisi sebelumnya yang dirutekan ke layanan gray-hello. Permintaan lainnya akan dirutekan 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: |
[{
"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
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /hello
pathType: ImplementationSpecific
backend:
service:
name: gray-hello
port:
number: 88alb.ingress.kubernetes.io/order: prioritas Ingress. Nilai yang lebih kecil menunjukkan prioritas yang lebih tinggi.
Skenario 2: Mendistribusikan lalu lintas berdasarkan nama domain, metode permintaan, dan cookie
Blok kode berikut digunakan untuk merutekan paket berdasarkan nama domain, metode permintaan, dan cookie.
Dalam blok kode ini, metode permintaan diatur ke GET dan HEAD, nama domain diatur ke example.com dan *.edu, kunci cookie diatur ke cookiekey1, nilai cookie diatur ke cookievalue1, serta jalur diatur ke /test. Hanya permintaan yang nama domain, metode permintaan, cookie, dan jalurnya cocok dengan semua kondisi sebelumnya yang dirutekan ke layanan-a Service. Permintaan lainnya akan dirutekan ke layanan-b Service.
Aturan pengalihan berbasis nama domain mendukung pencocokan nama domain wildcard.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: |
[{
"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
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88Skenario 3: Merutekan lalu lintas berdasarkan string kueri, beberapa header permintaan, dan beberapa jalur.
Blok kode berikut digunakan untuk merutekan paket berdasarkan string kueri, beberapa header permintaan, dan beberapa jalur.
Dalam blok kode ini, jalur diatur ke /pathvalue1, /pathvalue2, dan /test, kunci string kueri diatur ke querystringkey1, serta nilai string kueri diatur ke querystringvalue2. Blok kode ini juga menentukan bahwa permintaan harus berisi headerkey1 dan headerkey2. Nilai header untuk headerkey1 harus headervalue1 atau headervalue2, sedangkan nilai header untuk headervalue2 harus headervalue3 atau headervalue4. Hanya permintaan yang string kueri, header permintaan, dan jalurnya cocok dengan semua kondisi sebelumnya yang dirutekan ke layanan-a service. Permintaan lainnya akan dirutekan ke layanan-b service.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/conditions.service-a: |
[{
"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
port:
number: 88
- path: /test
pathType: ImplementationSpecific
backend:
service:
name: service-b
port:
number: 88Tindakan routing
Pengenalan
ALB Ingress memungkinkan Anda mengonfigurasi tindakan routing untuk aturan routing masuk dan keluar menggunakan anotasi alb.ingress.kubernetes.io/actions.<Service name>. Anda dapat menambahkan tindakan untuk mengembalikan respons tetap, mengarahkan ulang permintaan, menyisipkan atau menghapus header permintaan, mencerminkan lalu lintas, meneruskan permintaan ke beberapa grup server backend, atau menulis ulang permintaan. ALB Ingress memungkinkan Anda mendefinisikan tindakan routing yang berbeda untuk memproses permintaan dan respons sesuai kebutuhan.
Nama Layanan dalam anotasi
alb.ingress.kubernetes.io/actions.<Service name>harus sama dengan nama Layanan yang ditentukan dibackendpada bidangrule.Pastikan hanya satu dari tindakan terminasi seperti pengalihan, respons tetap, atau penerusan ke beberapa grup server digunakan dalam aturan pengalihan yang sama.
Saat menambahkan tindakan routing untuk mengembalikan respons tetap, mengalihkan permintaan, atau meneruskan permintaan ke beberapa grup server backend, nama Port Layanan yang ditentukan di
backendpada bidangruleharus use-annotation.
Tindakan routing untuk aturan routing masuk
Tindakan routing | Deskripsi |
Respons tetap | Menentukan bahwa konten tetap dikembalikan ke klien menggunakan ALB Ingress. Anda dapat menentukan kode status, konten, dan jenis konten yang dikembalikan ke klien. Contoh kode:
|
Mengalihkan permintaan | Anda dapat menggunakan kode status HTTP 3XX untuk mengalihkan permintaan ke alamat Layanan lain. Contoh kode: Penting Anda tidak dapat mempertahankan semua pengaturan default untuk semua parameter pengalihan secara bersamaan, kecuali httpCode.
|
Cermin lalu lintas | Anda dapat menentukan ID grup server untuk mencerminkan lalu lintas ke grup server yang ditentukan. Contoh kode: Penting
|
Teruskan permintaan ke beberapa grup server backend | Untuk meneruskan permintaan ke beberapa grup server backend, Anda perlu mengatur bidang ServerGroupID untuk menentukan ID grup server atau mengatur bidang ServiceName dan ServicePort untuk membuat atau mengaitkan grup server. Anda juga dapat menentukan bobot setiap grup server backend dan mengaktifkan persistensi sesi untuk grup server tersebut. Penting
|
Tulis ulang permintaan | Setelah Anda mengonfigurasi aturan penulisan ulang untuk instance ALB, nama domain, jalur, dan string kueri permintaan akan ditulis ulang. Contoh kode: Penting
Untuk informasi lebih lanjut tentang aturan penulisan ulang, lihat Konfigurasikan aturan penulisan ulang. |
Sisipkan header permintaan | Anda dapat menentukan nama dan nilai bidang header untuk menimpa variabel header yang ada dalam permintaan. Contoh kode:
|
Hapus header permintaan | Anda dapat menghapus kunci dan nilai header permintaan. Contoh kode: type: jenis tindakan perutean. Untuk menghapus header permintaan, atur nilai menjadi RemoveHeader. key: nama bidang header yang akan dihapus. |
Pembatasan QPS | Saat Anda mengonfigurasi aturan pengalihan untuk instance ALB, Anda dapat mengatur batas laju permintaan global dan batas laju permintaan berdasarkan alamat IP klien. Contoh kode: Penting
|
Tindakan routing untuk aturan routing keluar
Tindakan routing | Deskripsi |
Sisipkan header permintaan | Anda dapat menentukan nama dan nilai bidang header untuk menimpa variabel header yang ada dalam permintaan. Contoh kode:
|
Hapus header permintaan | Anda dapat menghapus kunci dan nilai header permintaan. Contoh kode: type: jenis tindakan routing. Untuk menghapus header permintaan, atur nilainya menjadi key: nama bidang header yang akan dihapus. |
Skenario 1: Kembalikan kode status 503 dan konten tetap
Gunakan konsol ACK
Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan parameter.
Parameter
Deskripsi
Contoh
Jenis Gateway
Anda dapat memilih ALB Ingress, MSE Ingressy, atau Nginx Ingress berdasarkan kebutuhan Anda.
Untuk informasi lebih lanjut tentang perbedaan di antara ketiga jenis gateway, lihat Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses.
ALB
Nama
Tentukan nama Ingress.
ingress
Kelas Ingress
Tentukan kelas Ingress yang terkait dengan AlbConfig.
alb
Aturan
Klik +Add Rule untuk menambahkan aturan Ingress.
Domain Name: Tentukan nama domain kustom.
Mappings: Konfigurasikan parameter berikut:
Path: Tentukan jalur URL dari Layanan backend.
Rule:
Prefix (Prefix-based Match): mencocokkan awalan dari jalur URL yang diminta.
Exact (Exact Match): mencocokkan secara eksak jalur URL yang diminta.
ImplementationSpecific (Default Value): bergantung pada logikayang diimplementasikan oleh kontroler ALB Ingress.
Untuk informasi lebih lanjut, lihat Teruskan permintaan berdasarkan jalur URL.
Service: Pilih Layanan backend.
Port: Tentukan port Layanan yang ingin Anda ekspos.
Anda dapat mengonfigurasi beberapa jalur untuk satu nama domain. Klik + Add untuk menambahkan jalur.
Nama Domain: Biarkan parameter ini kosong.
Pemetaan:
Jalur: /.
Aturan: Awalan (Pencocokan Berbasis Awalan) dipilih secara default.
Layanan: response-503.
Port: 80.
Aturan Pengalihan Kustom
Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.
CatatanAnda dapat menambahkan hingga 10 kondisi ke aturan pengalihan.
Jenis kondisi berikut tersedia dalam daftar drop-down Add Condition:
Domain Name:
Menentukan bahwa hanya permintaan yang berisi nama domain tertentu yang dirutekan. Hubungan logis antara beberapa nama domain adalah ATAU. Setelah Anda menentukan nama domain, sistem menambahkan anotasi
alb.ingress.kubernetes.io/conditions.host-example.Path:
Menentukan bahwa hanya permintaan yang berisi satu atau lebih jalur tertentu yang dirutekan. Beberapa jalur diperlakukan dengan hubungan ATAU. Setelah Anda menentukan jalur, sistem menambahkan anotasi
alb.ingress.kubernetes.io/conditions.path-example.HTTP Header:
Menentukan bahwa hanya permintaan yang berisi header HTTP tertentu yang dirutekan. Setiap header permintaan HTTP adalah pasangan kunci-nilai. Sebagai contoh, Anda dapat mengatur key menjadi
headernamedan value menjadiheadervalue1. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah ATAU. Setelah Anda menentukan header, sistem menambahkan anotasialb.ingress.kubernetes.io/conditions.http-header-example.
Tindakan berikut tersedia dalam daftar drop-down Action:
Return Fixed Response
Menentukan bahwa konten tetap dikembalikan ke klien menggunakan ALB Ingress. Anda dapat menentukan kode status, jenis konten, dan konten yang dikembalikan ke klien. Konfigurasikan parameter Response Status Code, Response Content Type (Optional), dan Response Content (Optional) berdasarkan kebutuhan bisnis Anda.
Nilai valid untuk parameter Jenis Konten Respons:
text/plain: menunjukkan bahwa kontennya dalam teks biasa.
text/css: menunjukkan bahwa kontennya dalam format XML.
text/html: menunjukkan bahwa kontennya dalam format HTML.
application/javascript: menunjukkan bahwa kontennya dalam format JavaScript.
application/json: menunjukkan bahwa kontennya dalam format JSON.
Dalam daftar drop-down Tambah Kondisi, Jalur dipilih secara default. (pertahankan pengaturan default)
Dalam daftar drop-down Tindakan, Kembalikan Respons Tetap dipilih.
Kode Status Respons: 503.
Jenis Konten Respons (Opsional): text/plain.
Konten Respons (Opsional): error.
Gunakan pengaturan default untuk parameter lainnya.
Setelah konfigurasi selesai, klik OK.
Gunakan kubectl
Blok kode berikut digunakan untuk mengembalikan kode status 503 dan 503 error text:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.response-503: |
[{
"type": "FixedResponse",
"FixedResponseConfig": {
"contentType": "text/plain",
"httpCode": "503",
"content": "503 error text"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: response-503
port:
name: use-annotation # Nama port Layanan harus use-annotation.Skenario 2: Gunakan pengalihan 301 untuk mengarahkan permintaan ke port HTTPS
Blok kode berikut digunakan untuk mengarahkan permintaan ke port HTTPS:
Arahkan ulang permintaan
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
alb.ingress.kubernetes.io/actions.redirect: |
[{
"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
port:
name: use-annotation # Nama port Layanan 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 port Layanan harus use-annotation.Skenario 3: Sisipkan header sumber: alibaba ke permintaan
Blok kode berikut digunakan untuk menimpa header yang ada dalam permintaan dengan header sumber: alibaba:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: ingress
annotations:
# Layanan yang ditentukan dalam anotasi harus merupakan Layanan yang ada di kluster, dan nama Layanan harus sama dengan nama Layanan yang ditentukan dalam parameter backend bidang rule.
alb.ingress.kubernetes.io/actions.insert-header: |
[{
"type": "InsertHeader",
"InsertHeaderConfig": {
"key": "source",
"value": "alibaba",
"valueType": "UserDefined"
}
}]
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: insert-header
port:
number: 80Skenario 4: Cermin lalu lintas ke grup server
Blok kode berikut digunakan untuk mencerminkan lalu lintas ke grup server yang ditentukan:
Masuk ke konsol Server Load Balancer (SLB). Di panel navigasi di sebelah kiri, pilih . Di halaman Server Groups, Anda dapat melihat ID grup server.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: traffic-mirror-ingress
annotations:
# mirror-svc harus salah satu layanan backend yang ditentukan di bawah ini.
# ALB Ingress mencerminkan lalu lintas yang diteruskan ke mirror-svc ke server backend yang ditentukan dalam bidang ServerGroupID.
# Jika Anda ingin mengonfigurasi pencerminkan lalu lintas untuk beberapa Layanan, tambahkan anotasi ke setiap Layanan.
alb.ingress.kubernetes.io/actions.mirror-svc: |
[{
"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
port:
number: 80Skenario 5: Teruskan permintaan ke beberapa grup server backend
Gunakan konsol ACK
Masuk ke konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel sisi kiri, pilih .
Di halaman Ingresses, klik Create Ingress. Di kotak dialog Create Ingress, konfigurasikan parameter.
Parameter
Deskripsi
Contoh
Jenis Gateway
Anda dapat memilih ALB Ingress, MSE Ingressy, atau Nginx Ingress berdasarkan kebutuhan Anda.
Untuk informasi lebih lanjut tentang perbedaan di antara ketiga jenis gateway, lihat Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses.
ALB
Nama
Tentukan nama Ingress.
forward-ingress
Kelas Ingress
Tentukan kelas Ingress yang terkait dengan AlbConfig.
alb
Aturan
Klik +Add Rule untuk menambahkan aturan Ingress.
Domain Name: Tentukan nama domain kustom.
Mappings: Konfigurasikan parameter berikut:
Path: Tentukan jalur URL dari Layanan backend.
Rule:
Prefix (Prefix-based Match): mencocokkan awalan dari jalur URL yang diminta.
Exact (Exact Match): mencocokkan secara eksak jalur URL yang diminta.
ImplementationSpecific (Default Value): bergantung pada logika yang diimplementasikan oleh kontroler ALB Ingress.
Untuk informasi lebih lanjut, lihat Teruskan permintaan berdasarkan jalur URL.
Service: Pilih Layanan backend.
Port: Tentukan port Layanan yang ingin Anda ekspos.
Anda dapat mengonfigurasi beberapa jalur untuk satu nama domain. Klik + Add untuk menambahkan jalur.
Nama Domain: demo.domain.ingress.top.
Pemetaan:
Jalur: /path.
Aturan: Awalan (Pencocokan Berbasis Awalan) dipilih secara default.
Layanan: forward.
Port: 80
Aturan Pengalihan Kustom
Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.
CatatanAnda dapat menambahkan hingga 10 kondisi ke aturan pengalihan.
Jenis kondisi berikut tersedia dalam daftar drop-down Add Condition:
Domain Name:
Menentukan bahwa hanya permintaan yang berisi nama domain tertentu yang dirutekan. Hubungan logis antara beberapa nama domain adalah ATAU. Setelah Anda menentukan nama domain, sistem menambahkan anotasi
alb.ingress.kubernetes.io/conditions.host-example.Path:
Menentukan bahwa hanya permintaan yang berisi satu atau lebih jalur tertentu yang dirutekan. Beberapa jalur diperlakukan dengan hubungan ATAU. Setelah Anda menentukan jalur, sistem menambahkan anotasi
alb.ingress.kubernetes.io/conditions.path-example.HTTP Header:
Menentukan bahwa hanya permintaan yang berisi header HTTP tertentu yang dirutekan. Setiap header permintaan HTTP adalah pasangan kunci-nilai. Sebagai contoh, Anda dapat mengatur key menjadi
headernamedan value menjadiheadervalue1. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah ATAU. Setelah Anda menentukan header, sistem menambahkan anotasialb.ingress.kubernetes.io/conditions.http-header-example.
Tindakan berikut tersedia dalam daftar drop-down Action:
Forward To
Meneruskan lalu lintas masuk ke beberapa grup server backend. Pilih Layanan yang ingin Anda akses dari daftar drop-down Service Name. Dari daftar drop-down Port, pilih port yang digunakan untuk terhubung ke Layanan. Tentukan bobot kustom untuk setiap grup server backend.
CatatanJika Anda menggunakan komponen Flannel untuk kluster, Layanan ClusterIP tidak didukung.
Jika Anda memilih Teruskan Ke dari daftar drop-down Tindakan, Anda tidak perlu mengonfigurasi parameter Pemetaan untuk aturan tersebut.
Dalam daftar drop-down Tambah Kondisi, Nama Domain dipilih. Nama Domain: demo.domain.ingress.top
Dalam daftar drop-down Tindakan, Teruskan Ke dipilih.
Layanan: tea-svc.
Port: 80
Bobot: 80.
Tambah Layanan
Layanan: coffee-svc.
Port: 80
Bobot: 20.
Gunakan pengaturan default untuk parameter lainnya.
Setelah konfigurasi selesai, klik OK di pojok kiri bawah panel Create Ingress.
Gunakan kubectl
Blok kode berikut mendefinisikan Ingress yang meneruskan permintaan ke beberapa Layanan di dalam kluster:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: forward-ingress
annotations:
# Layanan yang ditentukan dalam anotasi harus merupakan Layanan yang ada di dalam kluster, dan nama Layanan harus sama dengan nama Layanan yang ditentukan dalam parameter backend bidang rule.
alb.ingress.kubernetes.io/actions.forward: |
[{
"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: forward
port:
name: use-annotation # Nama port Layanan harus use-annotation.Skenario 6: Tulis ulang permintaan
Blok kode berikut mendefinisikan Ingress yang menulis ulang nama domain, jalur, dan string kueri permintaan.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: default
name: rewrite-ingress
annotations:
alb.ingress.kubernetes.io/actions.rewrite: |
[{
"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: rewrite
port:
number: 80Skenario 7: Ubah header respons berdasarkan ResponseHeader
Secara default, aturan routing kustom berlaku untuk arah masuk. Untuk mengaktifkan aturan routing kustom agar berlaku untuk arah keluar, atur anotasi
alb.ingress.kubernetes.io/rule-direction.<Service name>menjadi Response. Anotasi ini diatur ke Request secara default.Saat membuat aturan routing keluar kustom, nama
Service portdalam bidangingressSpec.rules.backendharususe-annotation.
Blok kode berikut mendefinisikan bahwa saat response header cocok (header berisi response-hello dan nilainya harus value1 atau value2), header permintaan baru source: alibaba akan disisipkan ke dalam header.
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: |
[{
"type": "ResponseHeader",
"responseHeaderConfig": {
"key": "response-hello",
"values": [
"value1",
"value2"
]
}
}]
alb.ingress.kubernetes.io/actions.response-header: |
[{
"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
port:
name: use-annotation # Nama port Service harus use-annotation.
Skenario 8: Modifikasi header respons berdasarkan kode status respons
Secara default, aturan routing kustom berlaku untuk arah masuk. Untuk mengaktifkan aturan routing kustom agar berlaku untuk arah keluar, atur Anotasi
alb.ingress.kubernetes.io/rule-direction.<Service name>menjadi Response. Secara default, Anotasi ini diatur ke Request.Saat Anda membuat aturan routing keluar kustom, nama
Service portdi dalam bidangingressSpec.rules.backendharususe-annotation.
Blok kode berikut mendefinisikan bahwa header permintaan dihapus (response-hello dihapus dari header permintaan) hanya saat 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: |
[{
"type": "ResponseStatusCode",
"responseStatusCodeConfig": {
"values": [
"200",
"300"
]
}
}]
alb.ingress.kubernetes.io/actions.response-hello: |
[{
"type": "RemoveHeader",
"RemoveHeaderConfig": {
"key": "response-hello"
}
}]
name: response-hello
spec:
ingressClassName: alb
rules:
- http:
paths:
- path: /*
pathType: ImplementationSpecific
backend:
service:
name: response-hello
port:
name: use-annotation # Nama port Layanan harus use-annotation.
```
<p></p></section><section><h2></h2><h3> Konfigurasikan kondisi dan tindakan routing berbasis nama domain untuk mengarahkan lalu lintas ke Layanan tertentu</h3><section><p>Bagian ini menjelaskan cara mengonfigurasi kondisi dan tindakan routing berbasis nama domain di konsol ACK untuk mengarahkan lalu lintas ke Layanan tertentu.</p><ol><li><p></p></li><li><p>.</span></p></li><li><p>Di halaman , klik . Di kotak dialog , konfigurasikan parameter.</p><section><table><colgroup></colgroup><colgroup></colgroup><colgroup></colgroup><tbody><tr><td colspan="1" id="task_1796525__entry_f0w_ebo_6xr" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_1796525__entry_bmy_bqf_ewg" rowspan="1" style="background-color:#e5e5e5"><p></p></td><td colspan="1" id="task_1796525__entry_1cm_ru5_len" rowspan="1" style="background-color:#e5e5e5"><p></p></td></tr><tr><td colspan="1" id="entry_h4y_xph_0j3" rowspan="1"><section><p></p></section></td><td colspan="1" id="entry_roy_fa9_z1n" rowspan="1"><section><p>Anda dapat memilih , , atau berdasarkan kebutuhan Anda.</p><p>Untuk informasi lebih lanjut tentang perbedaan di antara ketiga jenis gateway, lihat <a baseurl="t16682_v3_8_1.xdita" data-node="3539318" data-root="17398" data-tag="xref" href="t2206393.dita#task_2273852" id="e63c453432fq1">Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses</a>.</p></section></td><td colspan="1" id="entry_my2_545_beq" rowspan="1"><p></p></td></tr><tr><td colspan="1" id="entry_n70_q02_zux" rowspan="1"><p></p></td><td colspan="1" id="entry_7ax_wbg_x1g" rowspan="1"><section><p>Tentukan nama Ingress.</p></section></td><td colspan="1" id="entry_qjt_g63_10e" rowspan="1"><p>alb_ingress</p></td></tr><tr><td colspan="1" id="entry_ebq_y60_uec" rowspan="1"><p></p></td><td colspan="1" id="entry_4h3_4zo_8cq" rowspan="1"><p>Tentukan kelas Ingress yang terkait dengan AlbConfig.</p></td><td colspan="1" id="entry_3rx_owi_3x4" rowspan="1"><p>alb</p></td></tr><tr><td colspan="1" id="entry_d6h_4pe_shi" rowspan="1"><p></p></td><td colspan="1" id="entry_ptx_t3a_d70" rowspan="1"><section><p>Klik untuk menambahkan aturan Ingress.</p><ul><li><p>: Tentukan nama domain kustom.</p></li><li><p>: Konfigurasikan parameter berikut:</p><ul><li><p>: Tentukan jalur URL dari Layanan backend.</p></li><li><p></p><section><ul><li><p>: mencocokkan awalan dari jalur URL yang diminta.</p></li><li><p>: mencocokkan secara eksak jalur URL yang diminta.</p></li><li><p>: bergantung pada logika yang diimplementasikan oleh kontroler ALB Ingress.</p></li></ul><p>Untuk informasi lebih lanjut, lihat <a baseurl="t2117965_v2_5_0.xdita" data-node="3179660" data-root="17398" data-tag="xref" href="t2120129.xdita#title_b0x_mn4_smu" id="1a361dc731ckg">Teruskan permintaan berdasarkan jalur URL</a>.</p></section></li><li><p>: Pilih Layanan backend.</p></li><li><p>: Tentukan port Layanan yang ingin Anda ekspos.</p></li></ul></li><li><p>Anda dapat mengonfigurasi beberapa jalur untuk satu nama domain. Klik untuk menambahkan jalur.</p></li></ul></section></td><td colspan="1" id="entry_1oy_2al_2j9" rowspan="1"><ul><li><p>: *.example.com</p></li><li><p>:</p><ul><li><p>: /tes</p></li><li><p>: ImplementationSpecific. Ini adalah nilai default.</p></li><li><p>: tea-svc</p></li><li><p>: 80</p></li></ul></li></ul></td></tr><tr><td colspan="1" id="42ea258aafxr9" rowspan="1"><p></p></td><td colspan="1" id="11e828b4e4uw4" rowspan="1"><section><p>Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.</p><note><p>Anda dapat menambahkan hingga 10 kondisi ke aturan pengalihan.</p></note><ul><li><p>Jenis kondisi berikut tersedia dalam daftar drop-down :</p><section><ul><li><p>:</p><p>Menentukan bahwa hanya permintaan yang berisi nama domain tertentu yang dirutekan. Hubungan logis antara beberapa nama domain adalah ATAU. Setelah Anda menentukan nama domain, sistem menambahkan anotasi <code code-type="xCode" data-tag="code">alb.ingress.kubernetes.io/conditions.host-example
Praktik untuk mengonfigurasi kondisi dan tindakan routing
Skenario 1: Konfigurasikan kondisi dan tindakan routing berbasis nama domain untuk mengarahkan lalu lintas ke Service tertentu
Bab ini menjelaskan cara mengonfigurasi kondisi dan tindakan routing berbasis nama domain di konsol ACK untuk mengarahkan lalu lintas ke Service tertentu.
Masuk ke Konsol ACK. Di panel navigasi di sebelah kiri, klik Clusters.
Pada halaman Clusters, temukan cluster yang diinginkan dan klik namanya. Di panel sisi kiri, pilih .
Pada halaman Ingresses, klik Create Ingress. Dalam kotak dialog Create Ingress, konfigurasikan parameter-parameter berikut.
Parameter
Deskripsi
Contoh
Gateway Type
Anda dapat memilih ALB Ingress, MSE Ingressy, atau Nginx Ingress sesuai dengan kebutuhan Anda.
Untuk informasi lebih lanjut tentang perbedaan antara ketiga tipe gateway tersebut, lihat Perbandingan antara Nginx Ingresses, ALB Ingresses, dan MSE Ingresses.
ALB
Name
Tentukan nama dari Ingress.
alb_ingress
Ingress Class
Tentukan kelas dari Ingress yang terkait dengan AlbConfig.
alb
Rules
Klik +Add Rule untuk menambahkan aturan Ingress.
Domain Name: Tentukan nama domain kustom.
Mappings: Konfigurasikan parameter berikut:
Path: Tentukan path URL dari Service backend.
Rule:
Prefix (Prefix-based Match): mencocokkan awalan dari path URL yang diminta.
Exact (Exact Match): secara eksak mencocokkan path URL yang diminta.
ImplementationSpecific (Default Value): bergantung pada logika yang diimplementasikan oleh pengontrol ALB Ingress.
Untuk informasi lebih lanjut, lihat Arahkan permintaan berdasarkan path URL.
Service: Pilih Service backend.
Port: Tentukan port Service yang ingin Anda paparkan.
Anda dapat mengonfigurasi beberapa path untuk sebuah nama domain. Klik + Add untuk menambahkan path.
Domain Name: *.example.com
Mappings:
Path: /tes
Rule: ImplementationSpecific. Ini adalah nilai default.
Service: tea-svc
Port: 80
Custom Forwarding Rules
Anda dapat mengaktifkan aturan pengalihan kustom untuk mengelola lalu lintas masuk secara lebih rinci.
CatatanAnda dapat menambahkan hingga 10 kondisi ke dalam satu aturan pengalihan.
Jenis kondisi berikut tersedia di daftar drop-down Add Condition:
Domain Name:
Menentukan bahwa hanya permintaan yang berisi nama domain yang ditentukan yang akan diarahkan. Hubungan logis antara beberapa nama domain adalah OR. Setelah Anda menentukan nama domain, sistem menambahkan anotasi
alb.ingress.kubernetes.io/conditions.host-example.Path:
Menentukan bahwa hanya permintaan yang berisi satu atau lebih path yang ditentukan yang akan diarahkan. Beberapa path diperlakukan dengan hubungan OR. Setelah Anda menentukan path, sistem menambahkan anotasi
alb.ingress.kubernetes.io/conditions.path-example.PentingSetelah Anda mengonfigurasi kondisi pengalihan, Ingress akan secara otomatis menambahkan aturan pengalihan untuk path
/created-by-<ALB-ID>.HTTP Header:
Menentukan bahwa hanya permintaan yang berisi header HTTP yang ditentukan yang akan diarahkan. Setiap header permintaan HTTP adalah pasangan key-value. Sebagai contoh, Anda dapat menetapkan key menjadi
headernamedan value menjadiheadervalue1. Jika Anda menentukan beberapa nilai header, hubungan logis antara nilai-nilai header tersebut adalah OR. Setelah Anda menentukan header, sistem menambahkan anotasialb.ingress.kubernetes.io/conditions.http-header-example.
Tindakan berikut tersedia dalam daftar drop-down Action:
Forward To
Meneruskan lalu lintas masuk ke beberapa grup server backend. Pilih Service yang ingin Anda akses dari daftar drop-down Service Name. Dari daftar drop-down Port, pilih port yang digunakan untuk terhubung ke Service. Tetapkan bobot kustom untuk setiap grup server backend.
CatatanJika Anda menggunakan komponen Flannel untuk kluster, ClusterIP Service tidak didukung.
Jika Anda memilih Teruskan Ke dari daftar drop-down Action, Anda tidak perlu mengonfigurasi parameter Pemetaan untuk aturan tersebut.
Dalam daftar drop-down Add Condition, Domain Name, Path, dan HTTP Header dipilih.
Domain Name: example.com. Anda dapat mengklik + Add Host untuk menambahkan nama domain, seperti test.com.
Dalam daftar drop-down Action, Forward To dipilih.
Service: tea-svc
Port: 80
Weight: 100
Gunakan pengaturan default untuk parameter lainnya.
Setelah konfigurasi selesai, klik OK di pojok kiri bawah panel Create Ingress.