Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Kubernetes bejövő erőforrást tetszőleges kulcs/érték párokkal jegyzetelheti. Az Application Gateway Ingress Controller (AGIC) a bejövő YAML-en keresztül nem konfigurálható Azure Application Gateway funkciók programozására szolgáló annotációkra támaszkodik. 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.
Tipp.
Fontolja meg az Application Gateway for Containers használatát a Kubernetes bejövő megoldásához. További információkért lásd: Rövid útmutató: Az Application Gateway telepítése konténeres ALB-vezérlőhöz.
Támogatott széljegyzetek listája
Ahhoz, hogy az AGIC megfigyeljen egy bejövő erőforrást, az erőforrást széljegyzetekkel kubernetes.io/ingress.class: azure/application-gatewaykell jelölni.
Háttér elérési út előtagja
A következő megjegyzés lehetővé teszi, hogy a hozzáférési erőforrásban megadott backend útvonalat a meghatározott előtaggal újraírjuk. Segítségével olyan szolgáltatásokat tehet közzé, amelyek végpontjai eltérnek a bejövő erőforrásban lévő szolgáltatásokhoz használt végpontnevektő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
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élda egy go-server-ingress-bkprefix nevű bemeneti erőforrást határoz meg egy appgw.ingress.kubernetes.io/backend-path-prefix: "/test/" nevű annotációval. Az annotáció jelzi az Application Gateway számára, hogy hozzon létre egy HTTP-beállítást, amely felülírja az útvonal /hello előtagját /test/ előtagra.
A példa csak egy szabályt határoz meg. A széljegyzetek azonban a teljes bejövő erőforrásra vonatkoznak. Ha tehát több szabályt határoz meg, minden megadott elérési úthoz konfigurálja a háttér útvonal előtagját. Ha eltérő elérésiút-előtagokkal rendelkező szabályokat szeretne (még ugyanazon szolgáltatás esetében is), különböző bejövő erőforrásokat kell definiálnia.
Háttér gazdagép neve
Az alábbi széljegyzet használatával adja meg 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
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 egészségügyi vizsgálat
Az Application Gateway konfigurálható úgy, hogy egyéni egészségügyi próbát küldjön a háttérrendszer címkészletéhez. Ha a következő széljegyzetek jelennek meg, a Kubernetes bejövőforgalom-vezérlő létrehoz egy egyéni mintavételt a háttéralkalmazás figyeléséhez. A vezérlő ezután 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 állapot-ellenőrzés során. -
health-probe-port: Ez a megjegyzés egyéni portot konfigurál az állapotadat-mintavételhez. -
health-probe-path: Ez a megjelölés határozza meg az állapotellenőrző vizsgálat elérési útját. -
health-probe-status-codes: 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 az állapotadat-mintavétel futási időközét. -
health-probe-timeout: Ez a megjegyzés határozza meg, hogy az állapotvizsgálat mennyi ideig vár a válaszra, mielőtt a vizsgálat sikertelennek minősül. -
health-probe-unhealthy-threshold: Ez a megjegyzés azt határozza meg, hogy hány egészség-ellenőrzésnek kell kudarcot vallania ahhoz, hogy a háttérrendszer egészségtelen á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-codes: "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
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-codes: "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. A vezérlő ezután alkalmazza a módosításokat az Application Gateway-példányra. A létrehozott átirányítás HTTP 301 Moved Permanently.
Használat
appgw.ingress.kubernetes.io/ssl-redirect: "true"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: go-server-ingress-redirect
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
Kapcsolatleürítés
Kapcsolateltávolítási széljegyzetek használatával csökkentheti az időszakos 502-es hibákat és kapcsolatvesztést a pod eltávolítása, a működés közbeni üzembe helyezés vagy a horizontális események során. Az Application Gateway bejövőforgalom-vezérlője (AGIC) ezeket a megjegyzéseket alkalmazza az Application Gateway háttérbeli HTTP-beállításaira, amelyeket a Kubernetes bejövő erőforrásból hoz létre.
Ha kapcsolatelvezetést szeretne használni, használja az alábbi széljegyzeteket:
-
connection-draining: Ez a megjegyzés azt határozza meg, hogy engedélyezi-e a kapcsolat ürítését. -
connection-draining-timeout: Ez a megjegyzés egy időtúllépést határoz meg, amely után az Application Gateway leállítja a kéréseket a kifutó 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
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
A cookie-alapú affinitás engedélyezéséhez használja az alábbi széljegyzetet.
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
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
A kérelem időtúllépésének meghatározásához használja a következő megjegyzést másodpercben. Az időtúllépés után az Application Gateway elutasít egy 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
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éssel megadhatja, hogy a végpontot az Application Gateway privát IP-címén tegye-e elérhetővé.
Azoknál az Application Gateway-példányoknál, amelyek nem rendelkeznek privát IP-címmel, az appgw.ingress.kubernetes.io/use-private-ip: "true" ingresseket a rendszer figyelmen kívül hagyja. A vezérlő naplói és a bejövő forgalom eseményei figyelmeztetést NoPrivateIP jelenítenek meg.
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
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őoldali port felülírása
Az alábbi széljegyzet használatával konfigurálhat egy előtérbeli figyelőt a 80-nál nem több port használatára a HTTP-hez és a 443-hoz a HTTPS-hez.
Ha a port az Application Gateway engedélyezett tartományán belül van (1–64999), a figyelő ezen az adott porton jön létre. Ha érvénytelen portot állít be, vagy nincs port a széljegyzetben, a konfiguráció az alapértelmezett 80 vagy 443 értéket használja.
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
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éseknek a http://somehost:8080 helyett a http://somehost-ra kell irányulniuk.
Háttérprotokoll
Az alábbiakban megadhatja, hogy az Application Gateway milyen protokollt használjon a podokkal való kommunikáció során. A támogatott protokollok a HTTP és a HTTPS.
Bár az Önaláírt tanúsítványok támogatottak az Application Gatewayen, az AGIC jelenleg csak akkor támogatja a HTTPS-t, 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
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
Hosztnév-bővítmény
Az Application Gateway konfigurálható úgy, hogy több gazdagépnevet fogadjon el.
hostname-extension Az annotáció használatával több gazdagépnevet is definiálhat, beleértve a wildcard gazdagépneveket is. Ez a művelet hozzáfűzi a gazdagépneveket az előtérfigyelő bejövő spec.rules.host információiban meghatározott teljes tartománynévhez, így többwebhelyes 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
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
Az előző példa konfigurálja a figyelőt, hogy fogadja el a gazdagépneveket hostname1.contoso.com és hostname2.contoso.com.
WAF-szabályzat útvonalhoz
A következő megjelölés használatával csatolhat egy meglévő webalkalmazás-tűzfalszabályzatot (WAF) a Kubernetes bejövő erőforrás gazdagépének útvonalaihoz. A WAF-szabályzat mind /ad-server/auth az URL-címekre vonatkozik.
Használat
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SampleRG/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/AGICWAFPolcy"
Példa
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ad-server-ingress
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
Application Gateway SSL-tanúsítvány
Az SSL-tanúsítványt az Application Gatewayre konfigurálhatja 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 Application Gateway-példányra. SSL-átirányítás esetén az appgw-ssl-certificate annotációt az ssl-redirect annotációval együtt is használhatja.
Feljegyzés
Az appgw-ssl-certificate annotáció figyelmen kívül marad, ha a TLS-specifikáció egyidejűleg van meghatározva az ingressben. Ha különböző gazdagépekkel rendelkező különböző tanúsítványokat szeretne (több TLS-tanúsítvány megszüntetését), 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
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
Az Application Gateway-példányon minden figyelőhöz konfigurálhat SSL-profilt. 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 Application Gateway-példányra.
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
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ó gyökér-tanúsítványa
Most már konfigurálhatja a saját főtanúsítványait az Application Gatewayre, hogy megbízhatók legyenek az AGIC-en keresztül. A appgw-trusted-root-certificate jelölés és a backend-protocol jelölés együttes használatával jelezheti a végpontok közötti SSL-titkosítást. Ha több főtanúsítványt ad meg, vesszővel válassza el őket; például name-of-my-root-cert1,name-of-my-root-cert2.
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
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 széljegyzet használatával rendeljen hozzá egy meglévő újraírási szabálykészletet a megfelelő kérés-ú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
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
Egyéni szabálykészlet átdolgozása
Feljegyzés
Az Application Gateway for Containers kiadása számos teljesítménybeli, rugalmassági és funkciómódosítást vezet be. Fontolja meg az Application Gateway for Containers használatát a következő üzembe helyezéshez.
Az Application Gateway for Containers URL-átírási szabályait ebben a cikkben találja az Átjáró API-ról és a bejövő API-ról szóló cikkben. Az Application Gateway for Containers fejléc-átírási szabályait ebben a cikkben találja az Átjáró API-ról.
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, módosíthatja a lekérdezési sztring paramétereit, és módosíthatja a kérés- és válaszfejléceket. Ezzel a funkcióval feltételeket is hozzáadhat, hogy az URL-cím vagy a megadott fejlécek csak bizonyos feltételek teljesülése esetén legyenek újraírva. Az Újraíró Szabálykészlet Saját Erőforrás ezt a funkciót hozza az AGIC-hez.
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 olyan fontos feladatokat hajthat végre, mint például a biztonsággal kapcsolatos fejlécmezők hozzáadása (például HSTSX-XSS-Protection), a bizalmas információkat felfedő válaszfejmezők eltávolítása, valamint a portadatok eltávolítása a fejlécekből X-Forwarded-For .
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 karakterláncát.
- Válassza ki, hogy az összes kérés VAGY csak a megadott feltételeknek megfelelő kérések URL-címét írja át. 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 a kérés átirányítását az eredeti VAGY az újraírt URL-cím alapján.
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.
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
Az alábbi megjegyzés lehetővé teszi, hogy az Application Gateway bejövőforgalom-vezérlője explicit módon állítsa be a kapcsolódó kérés-ú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
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 megelőző példa 10-es prioritást állít be a kérés-útválasztási szabály számára.