Anotasi untuk Pengontrol Ingress Application Gateway
Sumber daya Ingress Kubernetes dapat dianotasikan dengan pasangan kunci/nilai arbitrer. AGIC mengandalkan anotasi untuk memprogram fitur Application Gateway, yang tidak dapat dikonfigurasi menggunakan YAML Ingress. Anotasi masuk diterapkan ke semua pengaturan HTTP, kumpulan backend, dan pendengar yang berasal dari sumber daya ingress.
Daftar anotasi yang didukung
Agar sumber daya Ingress diamati oleh AGIC, sumber daya Ingress harus dianotasikan dengan kubernetes.io/ingress.class: azure/application-gateway
. Hanya kemudian AGIC bekerja dengan sumber daya Ingress yang dimaksud.
Kunci Anotasi | Jenis Nilai | Nilai Default | Nilai yang diizinkan |
---|---|---|---|
appgw.ingress.kubernetes.io/backend-path-prefix | string |
nil |
|
appgw.ingress.kubernetes.io/ssl-redirect | bool |
false |
|
appgw.ingress.kubernetes.io/connection-draining | bool |
false |
|
appgw.ingress.kubernetes.io/connection-draining-timeout | int32 (detik) |
30 |
|
appgw.ingress.kubernetes.io/cookie-based-affinity | bool |
false |
|
appgw.ingress.kubernetes.io/request-timeout | int32 (detik) |
30 |
|
appgw.ingress.kubernetes.io/use-private-ip | bool |
false |
|
appgw.ingress.kubernetes.io/backend-protocol | string |
http |
http , https |
appgw.ingress.kubernetes.io/rewrite-rule-set | string |
nil |
Prefiks Jalur ujung belakang
Anotasi berikut memungkinkan jalur backend yang ditentukan dalam sumber daya ingress untuk ditulis ulang dengan awalan yang ditentukan dalam anotasi ini. Ini memungkinkan pengguna untuk mengekspos layanan yang titik akhirnya berbeda dari nama titik akhir yang digunakan untuk mengekspos layanan dalam sumber daya ingress.
Penggunaan
appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-bkprefix
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Dalam contoh sebelumnya, Anda telah menentukan sumber daya ingress bernama go-server-ingress-bkprefix
dengan anotasi appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
. Anotasi memberi tahu gateway aplikasi untuk membuat pengaturan HTTP, yang memiliki penimpaan awalan jalur untuk jalur /hello
ke /test/
.
Catatan
Dalam contoh di atas, hanya satu aturan yang ditentukan. Namun, anotasi berlaku untuk seluruh sumber daya ingress, jadi jika pengguna menentukan beberapa aturan, awalan jalur backend akan disiapkan untuk setiap jalur yang ditentukan. Jika pengguna menginginkan aturan yang berbeda dengan awalan jalur yang berbeda (bahkan untuk layanan yang sama), mereka harus menentukan sumber daya ingress yang berbeda.
Pengalihan TLS
Application Gateway dapat dikonfigurasi untuk mengalihkan URL HTTP secara otomatis ke pasangan HTTPS mereka. Ketika anotasi ini ada dan TLS dikonfigurasi dengan benar, pengontrol Kubernetes Ingress membuat aturan perutean dengan konfigurasi pengalihan dan menerapkan perubahan pada Application Gateway Anda. Pengalihan yang dibuat akan berupa HTTP 301 Moved Permanently
.
Penggunaan
appgw.ingress.kubernetes.io/ssl-redirect: "true"
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-redirect
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- www.contoso.com
secretName: testsecret-tls
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Pengosongan Koneksi
connection-draining
: Anotasi ini memungkinkan kami menentukan apakah akan mengaktifkan pengurasan koneksi.
connection-draining-timeout
: Anotasi ini memungkinkan kami menentukan batas waktu, setelah itu Application Gateway mengakhiri permintaan ke titik akhir backend yang menguras.
Penggunaan
appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-drain
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Afinitas Berbasis Cookie
Anotasi berikut memungkinkan Anda menentukan apakah akan mengaktifkan afinitas berbasis cookie.
Penggunaan
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-affinity
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Waktu permintaan habis
Anotasi berikut memungkinkan Anda menentukan batas waktu permintaan dalam hitung detik, setelah itu Application Gateway gagal meminta jika respons tidak diterima.
Penggunaan
appgw.ingress.kubernetes.io/request-timeout: "20"
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/request-timeout: "20"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Gunakan IP Pribadi
Anotasi berikut memungkinkan Anda menentukan apakah akan mengekspos titik akhir ini pada IP Privat Application Gateway.
Catatan
- Untuk Application Gateway yang tidak memiliki IP privat, Ingress dengan
appgw.ingress.kubernetes.io/use-private-ip: "true"
diabaikan. Ini tercermin dalam log pengontrol dan peristiwa ingress untuk ingress tersebut denganNoPrivateIP
peringatan.
Penggunaan
appgw.ingress.kubernetes.io/use-private-ip: "true"
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Protokol ujung belakang
Anotasi berikut memungkinkan Anda menentukan protokol yang harus digunakan Application Gateway saat berkomunikasi dengan pod. Protokol yang didukung adalah http
dan https
.
Catatan
Meskipun sertifikat yang ditandatangani sendiri didukung di Application Gateway, saat ini AGIC hanya mendukung https
ketika pod menggunakan sertifikat yang ditandatangani oleh CA terkenal.
Jangan gunakan port 80 dengan HTTPS dan port 443 dengan HTTP pada pod.
Penggunaan
appgw.ingress.kubernetes.io/backend-protocol: "https"
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-timeout
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-protocol: "https"
spec:
rules:
- http:
paths:
- path: /hello/
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
Refrite Seperangkat Aturan
Anotasi berikut memungkinkan Anda menetapkan aturan penulisan ulang yang ada yang diatur ke aturan perutean permintaan yang sesuai.
Penggunaan
appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>
Contoh
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-bkprefix
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/rewrite-rule-set: add-custom-response-header
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 8080
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk