Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Du kan kommentera Kubernetes-ingressresursen med godtyckliga nyckel/värde-par. Application Gateway Ingress Controller (AGIC) förlitar sig på anteckningar för att programmera Azure Application Gateway-funktioner som inte kan konfigureras via inkommande YAML. Ingress-anteckningar tillämpas på alla HTTP-inställningar, backendpooler och lyssnare som härleds från en ingressresurs.
Tips/Råd
Överväg Application Gateway for Containers för din Kubernetes-ingresslösning. För mer information, se Snabbstart: Implementera Application Gateway för containrar med ALB-styrenhet.
Lista över anteckningar som stöds
För att AGIC ska kunna observera en ingressresurs måste resursen kommenteras med kubernetes.io/ingress.class: azure/application-gateway.
Serverdelssökvägsprefix
Med följande notering kan backend-sökvägen som anges i en ingressresurs skrivas om med det angivna prefixet. Använd den för att exponera tjänster vars slutpunkter skiljer sig från de slutpunktsnamn som du använder för att exponera en tjänst i en ingressresurs.
Användning
appgw.ingress.kubernetes.io/backend-path-prefix: <path prefix>
Exempel
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
I föregående exempel definieras en ingressresurs med namnet go-server-ingress-bkprefix med en anteckning med namnet appgw.ingress.kubernetes.io/backend-path-prefix: "/test/". Kommentaren instruerar Application Gateway att skapa en HTTP-inställning som har en åsidosättning av sökvägsprefixet för sökvägen /hello till /test/.
Exemplet definierar bara en regel. Anteckningarna gäller dock för hela ingressresursen. Så om du definierar flera regler konfigurerar du serverdelssökvägsprefixet för var och en av de angivna sökvägarna. Om du vill ha olika regler med olika sökvägsprefix (även för samma tjänst) måste du definiera olika ingressresurser.
Backend-värdnamn
Använd följande kommentar för att ange det värdnamn som Application Gateway ska använda när du pratar med poddarna.
Användning
appgw.ingress.kubernetes.io/backend-hostname: "internal.example.com"
Exempel
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
Anpassad hälsoprob
Du kan konfigurera Application Gateway för att skicka anpassad hälsokontroll till back-end addresspoolen. När följande annotationer finns skapar Kubernetes ingresscontroller en anpassad probe för att övervaka backend-applikationen. Kontrollanten tillämpar sedan ändringarna på Application Gateway.
-
health-probe-hostname: Den här anteckningen tillåter ett anpassat värdnamn för hälsokontrollen. -
health-probe-port: Den här anteckningen konfigurerar en anpassad port för hälsoavsökningen. -
health-probe-path: Den här annotationen definierar en sökväg för hälsoavsökningen. -
health-probe-status-codes: Med den här kommentaren kan hälsoavsökningen acceptera olika HTTP-statuskoder. -
health-probe-interval: Den här anmärkningen definierar det intervall vid vilket hälsoprobe körs. -
health-probe-timeout: Den här kommentaren definierar hur länge hälsoavsökningen väntar på ett svar innan avsökningen misslyckas. -
health-probe-unhealthy-threshold: Den här anmärkningen definierar hur många hälsoundersökningar som måste misslyckas för att serverdelen ska markeras som ohälsosam.
Användning
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
Exempel
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
Omdirigering av TLS
Du kan konfigurera Application Gateway för att automatiskt omdirigera HTTP-URL:er till deras HTTPS-motsvarigheter. När den här anteckningen finns och TLS är korrekt konfigurerad skapar Kubernetes ingresskontrollant en routningsregel med en omdirigeringskonfiguration. Kontrollanten tillämpar sedan ändringarna på din Application Gateway-instans. Den skapade omdirigeringen är HTTP 301 Moved Permanently.
Användning
appgw.ingress.kubernetes.io/ssl-redirect: "true"
Exempel
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
Anslutningsdränering
Använd följande anteckningar om du vill använda anslutningsdränering:
-
connection-draining: Den här kommentaren anger om anslutningen ska tömmas. -
connection-draining-timeout: Den här kommentaren anger en tidsgräns, varefter Application Gateway avslutar förfrågningarna till den avvecklande backend-slutpunkten.
Användning
appgw.ingress.kubernetes.io/connection-draining: "true"
appgw.ingress.kubernetes.io/connection-draining-timeout: "60"
Exempel
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
Cookiebaserad tillhörighet
Använd följande annotering för att aktivera cookiebaserad tillhörighet.
Användning
appgw.ingress.kubernetes.io/cookie-based-affinity: "true"
Exempel
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
Tidsgräns för förfrågan
Använd följande kommentar för att ange tidsgränsen för begäran i sekunder. Efter tidsgränsen misslyckas Application Gateway med en begäran om svaret inte tas emot.
Användning
appgw.ingress.kubernetes.io/request-timeout: "20"
Exempel
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
Använda privat IP
Använd följande kommentar för att ange om den här slutpunkten ska exponeras på en privat IP-adress för Application Gateway.
För en Application Gateway-instans som inte har en privat IP-adress ignoreras ingresser med appgw.ingress.kubernetes.io/use-private-ip: "true" . Styrenhetsloggarna och ingresshändelserna för dessa ingresser visar en NoPrivateIP varning.
Användning
appgw.ingress.kubernetes.io/use-private-ip: "true"
Exempel
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
Åsidosätt frontend-port
Använd följande kommentar för att konfigurera en klientdelslyssnare för att använda andra portar än 80 för HTTP och 443 för HTTPS.
Om porten ligger inom det auktoriserade intervallet för Application Gateway (1 till 64999) skapas lyssnaren på den här specifika porten. Om du anger en ogiltig port eller ingen port i anteckningen använder konfigurationen standardvärdet 80 eller 443.
Användning
appgw.ingress.kubernetes.io/override-frontend-port: "port"
Exempel
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
Anmärkning
Externa begäranden måste riktas http://somehost:8080 i stället för http://somehost.
Backend-protokoll
Använd följande för att ange det protokoll som Application Gateway ska använda när den kommunicerar med poddarna. Protokoll som stöds är HTTP och HTTPS.
Även om självsignerade certifikat stöds på Application Gateway stöder AGIC för närvarande endast HTTPS när poddar använder ett certifikat som signerats av en välkänd certifikatutfärdare.
Använd inte port 80 med HTTPS och port 443 med HTTP på poddarna.
Användning
appgw.ingress.kubernetes.io/backend-protocol: "https"
Exempel
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
Värdnamnstillägg
Du kan konfigurera Application Gateway att acceptera flera värdnamn. Använd markeringen hostname-extension för att definiera flera värdnamn, inklusive jokerteckenvärdnamn. Den här åtgärden lägger till värdnamnen i det FQDN som definieras i ingressinformationen spec.rules.host på klientdelslyssnaren, så att den konfigureras som en lyssnare för flera platser.
Användning
appgw.ingress.kubernetes.io/hostname-extension: "hostname1, hostname2"
Exempel
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
I föregående exempel konfigureras lyssnaren att acceptera trafik för värdnamnen hostname1.contoso.com och hostname2.contoso.com.
WAF-policy för sökväg
Använd följande kommentartext för att koppla en befintlig brandväggspolicy för webbapplikationer (WAF) till sökvägslistan för en värd inom en Kubernetes-ingressresurs som är under annotering. WAF-principen tillämpas på både /ad-server url:er och /auth url:er.
Användning
appgw.ingress.kubernetes.io/waf-policy-for-path: "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/SampleRG/providers/Microsoft.Network/applicationGatewayWebApplicationFirewallPolicies/AGICWAFPolcy"
Exempel
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-certifikat
Du kan konfigurera SSL-certifikatet till Application Gateway från antingen en lokal PFX-certifikatfil eller en referens till ett oversionerat hemligt ID för Azure Key Vault. När anteckningen finns med ett certifikatnamn och certifikatet är förinstallerat i Application Gateway skapar Kubernetes-ingresskontrollanten en routningsregel med en HTTPS-lyssnare och tillämpar ändringarna på din Application Gateway-instans. Du kan också använda anteckningen appgw-ssl-certificate tillsammans med en ssl-redirect anteckning vid en SSL-omdirigering.
Anmärkning
Kommentaren appgw-ssl-certificate ignoreras när TLS-specifikationen definieras i ingress samtidigt. Om du vill ha olika certifikat med olika värdar (avslutning av flera TLS-certifikat) måste du definiera olika inkommande resurser.
Användning
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
Exempel
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
Du kan konfigurera en SSL-profil på Application Gateway-instansen per lyssnare. När anteckningen finns med ett profilnamn och profilen är förinstallerad i Application Gateway skapar Kubernetes-ingresskontrollanten en routningsregel med en HTTPS-lyssnare och tillämpar ändringarna på din Application Gateway-instans.
Användning
appgw.ingress.kubernetes.io/appgw-ssl-certificate: "name-of-appgw-installed-certificate"
appgw.ingress.kubernetes.io/appgw-ssl-profile: "SampleSSLProfile"
Exempel
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
Betrott rotcertifikat för Application Gateway
Nu kan du konfigurera dina egna rotcertifikat till Application Gateway så att de är betrodda via AGIC. Du kan använda anteckningen appgw-trusted-root-certificate tillsammans med anteckningen backend-protocol för att ange SSL-kryptering från slutpunkt till slutpunkt. Om du anger flera rotcertifikat separerar du dem med kommatecken. till exempel name-of-my-root-cert1,name-of-my-root-cert2.
Användning
appgw.ingress.kubernetes.io/backend-protocol: "https"
appgw.ingress.kubernetes.io/appgw-trusted-root-certificate: "name-of-my-root-cert1"
Exempel
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
Skriv om regeluppsättning
Använd följande anteckning för att tilldela en befintlig uppsättning regler för omskrivning till motsvarande regel för styrning av begäranden.
Användning
appgw.ingress.kubernetes.io/rewrite-rule-set: <rewrite rule set name>
Exempel
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
Omskrivningsregeluppsättning för anpassad resurs
Anmärkning
Lanseringen av Application Gateway for Containers introducerar många prestanda-, återhämtnings- och funktionsändringar. Överväg att använda Application Gateway för containrar för nästa distribution.
Du hittar URL-omskrivningsregler för Application Gateway för containrar i den här artikeln om Gateway-API:et och den här artikeln om ingress-API:et. Du hittar omskrivningsregler för headers för Application Gateway för containrar i den här artikeln om Gateway-API:et.
Med Application Gateway kan du skriva om det valda innehållet i begäranden och svar. Med den här funktionen kan du översätta URL:er, ändra frågesträngsparametrar och ändra begärande- och svarshuvuden. Du kan också använda den här funktionen för att lägga till villkor för att se till att URL:en eller de angivna rubrikerna skrivs om endast när vissa villkor uppfylls. Rewrite Rule Set Custom Resource introducerar denna funktion i AGIC.
MED HTTP-huvuden kan en klient och server skicka ytterligare information med en begäran eller ett svar. Genom att skriva om dessa rubriker kan du utföra viktiga uppgifter som att lägga till säkerhetsrelaterade rubrikfält (till exempel HSTS eller X-XSS-Protection), ta bort svarshuvudfält som kan avslöja känslig information och ta bort portinformation från X-Forwarded-For rubriker.
Med funktionen URL-omskrivning kan du:
- Skriv om värdnamnet, sökvägen och frågesträngen för begärande-URL:en.
- Välj att skriva om URL:en för alla begäranden eller endast begäranden som matchar ett eller flera av de villkor som du anger. Dessa villkor baseras på egenskaperna för begäran och svar (begärandehuvud, svarshuvud och servervariabler).
- Välj att dirigera begäran baserat på antingen den ursprungliga URL:en eller den omskrivna URL:en.
Anmärkning
Den här funktionen stöds sedan 1.6.0-rc1. Använd appgw.ingress.kubernetes.io/rewrite-rule-set, som gör att du kan använda en befintlig omskrivningsregel som har angetts på Application Gateway.
Användning
appgw.ingress.kubernetes.io/rewrite-rule-set-custom-resource
Exempel
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
Regelprioritet
Följande kommentar gör det möjligt för Application Gateway-ingresskontrollanten att uttryckligen ange prioriteten för de associerade routningsreglerna för begäranden.
Användning
appgw.ingress.kubernetes.io/rule-priority:
Exempel
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
I föregående exempel anges en prioritet på 10 för routningsregeln för begäranden.