Az Application Gateway bejövőforgalom-vezérlőjének megjegyzései
A Kubernetes Bejövő forgalom erőforrás tetszőleges kulcs/érték párokkal jegyzetelhető. Az AGIC az Application Gateway olyan funkcióinak programozására támaszkodik, amelyek nem konfigurálhatók a bejövő YAML használatával. A bejövőjegyzeteket a rendszer a bejövő erőforrásból származó összes HTTP-beállításra, háttérkészletre és figyelőre alkalmazza.
Támogatott széljegyzetek listája
Ahhoz, hogy egy bejövő erőforrást az AGIC megfigyeljen, megjegyzést kell fűznie a következőhöz kubernetes.io/ingress.class: azure/application-gateway
: . Az AGIC csak ezután működik a szóban forgó bejövő erőforrással.
Háttér elérési út előtagja
Az alábbi széljegyzet lehetővé teszi, hogy a bemeneti erőforrásban megadott háttérbeli elérési út újraírása a megjegyzésben megadott előtaggal legyen megadva. Lehetővé teszi a felhasználók számára, hogy olyan szolgáltatásokat tegyenek közzé, amelyek végpontjai eltérnek a bejövő erőforrásban lévő szolgáltatás közzétett végpontneveinél.
Használat
appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>
Példa
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
Az előző példában egy széljegyzettel appgw.ingress.kubernetes.io/backend-path-prefix: "/test/"
elnevezett go-server-ingress-bkprefix
bejövő erőforrást definiált. A széljegyzet arra utasítja az Application Gatewayt, hogy hozzon létre egy HTTP-beállítást, amely az elérési út /hello
előtagjának felülbírálásával rendelkezik /test/
.
Feljegyzés
A fenti példában csak egy szabály van definiálva. A széljegyzetek azonban a teljes bejövő erőforrásra vonatkoznak, ezért ha egy felhasználó több szabályt definiál, a háttérútvonal előtagja minden megadott útvonalhoz be lesz állítva. Ha egy felhasználó eltérő elérésiút-előtagokkal rendelkező szabályokat szeretne (akár ugyanarra a szolgáltatásra vonatkozóan is), különböző bejövő erőforrásokat kell definiálnia.
Háttérrendszer gazdagépneve
Ezzel a megjegyzéssel megadhatja az Application Gateway által a podokkal való beszélgetés során használni kívánt állomásnevet.
Használat
appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"
Példa
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-hostname: "internal.example.com"
spec:
rules:
- http:
paths:
- path: /hello/
backend:
service:
name: store-service
port:
number: 80
pathType: Exact
Egyéni állapotadat-mintavétel
Az Application Gateway konfigurálható úgy, hogy egyéni állapotmintákat küldjön a háttércímkészletbe. Ha ezek a széljegyzetek megjelennek, a Kubernetes Bejövőforgalom-vezérlő létrehoz egy egyéni mintavételt a háttéralkalmazás figyeléséhez, és alkalmazza a módosításokat az application gatewayre.
health-probe-hostname
: Ez a megjegyzés lehetővé teszi az egyéni állomásnevet az állapotadat-mintavételen.
health-probe-port
: Ez a megjegyzés egyéni állapotadat-mintavételi portot konfigurál.
health-probe-path
: Ez a széljegyzet az állapotadat-mintavétel elérési útját határozza meg.
health-probe-status-code
: Ez a megjegyzés lehetővé teszi, hogy az állapotadat-mintavétel különböző HTTP-állapotkódokat fogadjon el.
health-probe-interval
: Ez a széljegyzet határozza meg azt az időközt, amelyen az állapotadat-mintavétel fut.
health-probe-timeout
: Ez a megjegyzés azt határozza meg, hogy az állapotadat-mintavétel mennyi ideig várjon a válaszra, mielőtt a mintavétel meghiúsul.
health-probe-unhealthy-threshold
: Ez a megjegyzés azt határozza meg, hogy hány állapotmintának kell meghiúsulnia ahhoz, hogy a háttérrendszer kifogástalan állapotúként legyen megjelölve.
Használat
appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 80
appgw.ingress.kubernetes.io/health-probe-path: "/"
appgw.ingress.kubernetes.io/health-probe-status-code: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 30
appgw.ingress.kubernetes.io/health-probe-timeout: 30
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/health-probe-hostname: "contoso.com"
appgw.ingress.kubernetes.io/health-probe-port: 81
appgw.ingress.kubernetes.io/health-probe-path: "/probepath"
appgw.ingress.kubernetes.io/health-probe-status-code: "100-599"
appgw.ingress.kubernetes.io/health-probe-interval: 31
appgw.ingress.kubernetes.io/health-probe-timeout: 31
appgw.ingress.kubernetes.io/health-probe-unhealthy-threshold: 2
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
TLS-átirányítás
Az Application Gateway konfigurálható úgy, hogy a HTTP URL-címeket automatikusan átirányítsa a HTTPS-megfelelőikre. Ha ez a megjegyzés jelen van, és a TLS megfelelően van konfigurálva, a Kubernetes bejövőforgalom-vezérlő létrehoz egy átirányítási konfigurációval rendelkező útválasztási szabályt, és alkalmazza a módosításokat az Application Gatewayre. A létrehozott átirányítás HTTP 301 Moved Permanently
lesz.
Használat
appgw.ingress.kubernetes.io/ssl-redirect: "true"
Példa
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
Kapcsolat ürítése
connection-draining
: Ezzel a megjegyzéssel megadhatja, hogy engedélyezve legyen-e a kapcsolat ürítése.
connection-draining-timeout
: Ez a megjegyzés lehetővé teszi egy időtúllépés megadását, amely után az Application Gateway leállítja a kéréseket a lefolyó háttérvégpontra.
Használat
appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
Példa
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
Cookie-alapú affinitás
Az alábbi megjegyzés lehetővé teszi annak megadását, hogy engedélyezi-e a cookie-alapú affinitást.
Használat
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
Példa
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
Kérelem időtúllépése
Az alábbi széljegyzet lehetővé teszi a kérés időtúllépésének másodpercben történő megadását, amely után az Application Gateway nem fogadja el a kérést, ha a válasz nem érkezik meg.
Használat
appgw.ingress.kubernetes.io/request-timeout: "20"
Példa
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
Privát IP-cím használata
Az alábbi megjegyzés lehetővé teszi annak megadását, hogy a végpontot az Application Gateway privát IP-címén tegye-e elérhetővé.
Feljegyzés
- A privát IP-címmel nem rendelkező Application Gateway esetében a bejövő forgalom
appgw.ingress.kubernetes.io/use-private-ip: "true"
figyelmen kívül lesz hagyva. Ez tükröződik a vezérlő naplóiban és a figyelmeztetéssel rendelkezőNoPrivateIP
bejövő bejövő eseményekben.
Használat
appgw.ingress.kubernetes.io/use-private-ip: "true"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-privateip
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/use-private-ip: "true"
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 80
Előtérbeli port felülbírálása
A széljegyzet lehetővé teszi, hogy konfiguráljon egy előtérbeli figyelőt, hogy a 80/443-nál eltérő portokat használjon a http/https-hez.
Ha a port az App Gw engedélyezett tartományán belül van (1–64999), a figyelő ezen az adott porton jön létre. Ha érvénytelen port van beállítva a széljegyzetben, a konfiguráció az alapértelmezett 80-ra vagy a 443-ra csökken.
Használat
appgw.ingress.kubernetes.io/override-frontend-port: "port"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-overridefrontendport
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/override-frontend-port: "8080"
spec:
rules:
- http:
paths:
- path: /hello/
backend:
service:
name: store-service
port:
number: 80
pathType: Exact
Feljegyzés
A külső kérésnek meg kell céloznia http://somehost:8080 ahelyett, hogy http://somehost.
Háttérprotokoll
Az alábbi megjegyzés lehetővé teszi az Application Gateway által a podokkal való kommunikáció során használni kívánt protokoll megadását. A támogatott protokollok a következők: http
és https
.
Feljegyzés
Bár az Önaláírt tanúsítványok támogatottak az Application Gatewayen, az AGIC jelenleg csak akkor támogatja https
, ha a podok egy jól ismert hitelesítésszolgáltató által aláírt tanúsítványt használnak.
Ne használja a 80-s portot HTTPS-vel, a 443-at pedig HTTP-vel a podokon.
Használat
appgw.ingress.kubernetes.io/backend-protocol: "https"
Példa
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: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
Gazdagépnév-bővítmény
Az Application Gateway több gazdagépnév elfogadására is konfigurálható. A hostname-extention megjegyzés ezt lehetővé teszi, ha lehetővé teszi több gazdagépnév definiálását, beleértve a helyettesítő gazdagépneveket is. Ez hozzáfűzi a gazdagépneveket az előtérbeli figyelő bejövőforgalom-spec.rules.host fájljában definiált teljes tartománynévhez, így többhelyes figyelőként van konfigurálva.
Használat
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-multisite
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
spec:
rules:
- host: contoso.com
http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 443
Feljegyzés
A fenti példában a figyelő úgy lett konfigurálva, hogy fogadja el a "hostname1.contoso.com" és a "hostname2.contoso.com" gazdagépnevek forgalmát.
WAF-szabályzat elérési úthoz
Ez a megjegyzés lehetővé teszi, hogy egy már létrehozott WAF-szabályzatot csatoljon egy kubernetes bejövő erőforrásban lévő gazdagép listaútvonalaihoz, amelyeket megjegyzésként használ.
Használat
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/SampleRG/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/AGICWAFPolcy"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ad-server-ingress
namespace: commerce
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/abcd/resourceGroups/rg/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/adserver"
spec:
rules:
- http:
paths:
- path: /ad-server
backend:
service:
name: ad-server
port:
number: 80
pathType: Exact
- path: /auth
backend:
service:
name: auth-server
port:
number: 80
pathType: Exact
Feljegyzés
A WAF-szabályzat a /ad-server és a /auth URL-címekre is érvényes lesz.
Application Gateway SSL-tanúsítvány
Az SSL-tanúsítvány konfigurálható az Application Gatewayre egy helyi PFX-tanúsítványfájlból, vagy az Azure Key Vault nem felügyelt titkos azonosítójára mutató hivatkozásból. Ha a széljegyzet egy tanúsítványnévvel rendelkezik, és a tanúsítvány előre telepítve van az Application Gatewayben, a Kubernetes Bejövőforgalom-vezérlő létrehoz egy útválasztási szabályt egy HTTPS-figyelővel, és alkalmazza a módosításokat az App Gatewayre. Az appgw-ssl-certificate széljegyzetek SSL-átirányítás esetén ssl-átirányítással együtt is használhatók.
További részletekért tekintse meg az appgw-ssl-certificate funkciót.
Feljegyzés
Az "appgw-ssl-certificate" megjegyzés figyelmen kívül lesz hagyva, ha a TLS Spec egyidejűleg van definiálva a bejövő forgalomban. Ha egy felhasználó különböző tanúsítványokat szeretne különböző gazdagépekkel (több tls-tanúsítvány leállítása), különböző bejövő erőforrásokat kell definiálnia.
Használat
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Application Gateway SSL-profil
A felhasználók figyelőnként konfigurálhatnak ssl-profilt az Application Gatewayen. Ha a széljegyzet profilnévvel jelenik meg, és a profil előre telepítve van az Application Gatewayben, a Kubernetes Bejövőforgalom-vezérlő létrehoz egy útválasztási szabályt egy HTTPS-figyelővel, és alkalmazza a módosításokat az App Gatewayre.
Használat
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Az Application Gateway megbízható főtanúsítványa
A felhasználók mostantól konfigurálhatják saját főtanúsítványaikat az Application Gatewayre, hogy megbízhatók legyenek az AGIC-en keresztül. Az appgw-trusted-root-certificate annotation backend-protocol használatával a végpontok közötti SSL-titkosítást, több főtanúsítványt, vesszővel elválasztva, ha meg van adva, például "name-of-my-root-cert1,name-of-my-root-certificate2".
Használat
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-certificate
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
spec:
rules:
- host: www.contoso.com
http:
paths:
- backend:
service:
name: websocket-repeater
port:
number: 80
Szabálykészlet újraírása
Az alábbi megjegyzés lehetővé teszi, hogy egy meglévő újraírási szabályt rendeljen a megfelelő kérelem-útválasztási szabályhoz.
Használat
appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>
Példa
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
Szabálykészlet egyéni erőforrásának átírása
Feljegyzés
Megjelent az Application Gateway for Containers , amely számos teljesítményt, rugalmasságot és funkciómódosítást vezet be. Fontolja meg az Application Gateway for Containers használatára a következő üzembe helyezéshez. Az Application Gateway for Containers URL-átírási szabályai itt találhatók az Átjáró API-hoz és itt a Bejövő API-hoz. Az Application Gateway for Containers fejlécátírási szabályai itt találhatók az Átjáró API-hoz.
Feljegyzés
Ez a funkció 1.6.0-rc1 óta támogatott. Használja appgw.ingress.kubernetes.io/rewrite-rule-set
, amely lehetővé teszi egy meglévő újraírási szabálykészlet használatát az Application Gatewayen.
Az Application Gateway lehetővé teszi a kérések és válaszok kiválasztott tartalmának újraírását. Ezzel a funkcióval lefordíthatja az URL-címeket, a lekérdezési sztring paramétereit, valamint módosíthatja a kérés- és válaszfejléceket. Emellett feltételeket is megadhat, hogy az URL-cím vagy a megadott fejlécek csak bizonyos feltételek teljesülése esetén legyenek újraírva. Ezek a feltételek a kérelem és a válasz információin alapulnak. A szabálykészlet egyéni erőforrásának átírása ezt a funkciót az AGIC-be helyezi.
A HTTP-fejlécek lehetővé teszik, hogy az ügyfél és a kiszolgáló további információkat adjon át egy kéréssel vagy válaszsal. Ezeknek az élőfejeknek az újraírásával fontos feladatokat hajthat végre, például biztonsági fejlécmezőket adhat hozzá, például HSTS/ X-XSS-Protection, eltávolíthatja a bizalmas információkat felfedő válaszfejmezőket, és eltávolíthatja a portadatokat az X-Forwarded-For fejlécekből.
Az URL-átírási funkcióval a következő lehetőségek közül választhat: – Írja át a kérelem URL-címének állomásnevét, elérési útját és lekérdezési sztringét – Válassza az összes kérelem URL-címét, vagy csak azokat a kéréseket, amelyek megfelelnek a megadott feltételek egy vagy több feltételének. Ezek a feltételek a kérés- és választulajdonságokon alapulnak (kérelemfejléc, válaszfejléc és kiszolgálóváltozók). – Válassza ki, hogy a kérést az eredeti VAGY az újraírt URL-cím alapján kívánja-e átirányítani
Használat
appgw.ingress.kubernetes.io/rewrite-rule-set-custom-resource
Példa
apiVersion: appgw.ingress.azure.io/v1beta1
kind: AzureApplicationGatewayRewrite
metadata:
name: my-rewrite-rule-set-custom-resource
spec:
rewriteRules:
- name: rule1
ruleSequence: 21
conditions:
- ignoreCase: false
negate: false
variable: http_req_Host
pattern: example.com
actions:
requestHeaderConfigurations:
- actionType: set
headerName: incoming-test-header
headerValue: incoming-test-value
responseHeaderConfigurations:
- actionType: set
headerName: outgoing-test-header
headerValue: outgoing-test-value
urlConfiguration:
modifiedPath: "/api/"
modifiedQueryString: "query=test-value"
reroute: false
Szabályprioritás
Ez a megjegyzés lehetővé teszi, hogy az Application Gateway bejövőforgalom-vezérlője explicit módon beállítsa a társított kérelem-útválasztási szabályok prioritását.
Használat
appgw.ingress.kubernetes.io/rule-priority:
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-rulepriority
namespace: test-ag
annotations:
kubernetes.io/ingress.class: azure/application-gateway
appgw.ingress.kubernetes.io/rule-priority: 10
spec:
rules:
- http:
paths:
- path: /
pathType: Exact
backend:
service:
name: go-server-service
port:
number: 8080
A fenti példában a kérés-útválasztási szabály prioritása 10.