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.
Med Application Gateway for containers kan du returnera ett omdirigeringssvar till klienten baserat på tre aspekter av en URL: protokoll, värdnamn och sökväg. För varje omdirigering kan en definierad HTTP-statuskod returneras till klienten för att definiera omdirigeringens karaktär.
Användningsinformation
URL-omdirigeringar använder regelfiltret RequestRedirect enligt definitionen i Kubernetes Gateway-API:et.
Omdirigering
En omdirigering anger svarsstatuskoden som returneras till klienter för att förstå syftet med omdirigeringen. Följande typer av omdirigering stöds:
- 301 (flyttas permanent): Anger att målresursen har tilldelats en ny permanent URI. Eventuella framtida referenser till den här resursen använder en av de omgivna URI:erna. Använd 301-statuskod för HTTP till HTTPS-omdirigering.
- 302 (hittades): Anger att målresursen tillfälligt är under en annan URI. Eftersom omdirigeringen kan ändras ibland bör klienten fortsätta att använda den effektiva begärande-URI:n för framtida begäranden.
Omdirigeringsfunktioner
Protokollomdirigering används ofta för att instruera klienten att gå från ett okrypterat trafikschema till trafik, till exempel HTTP till HTTPS-omdirigering.
Omdirigering av värdnamn matchar det fullständigt kvalificerade domännamnet (fqdn) för begäran. Detta observeras ofta vid omdirigering av ett gammalt domännamn till ett nytt domännamn. till exempel
contoso.comtillfabrikam.com.Sökvägsomdirigering har två olika varianter:
prefixochfull.-
Prefixomdirigeringstypen omdirigerar alla begäranden som börjar med ett definierat värde. Till exempel skulle ett prefix av /shop matcha /shop och vilken text som helst därefter. Till exempel /shop, /shop/checkout och /shop/item-a skulle alla omdirigeras till /shop också. -
Fullomdirigeringstypen matchar ett exakt värde. Till exempel kan /shop omdirigeras till /store, men /shop/checkout omdirigeras inte till /store.
-
Följande bild illustrerar ett exempel på en begäran som är avsedd för contoso.com/summer-promotion omdirigeras till contoso.com/shop/category/5. Dessutom returneras en omdirigering för att initiera en ny anslutning till https-varianten efter att en andra begäran har initierats genom http-protokollet till contoso.com.
Förutsättningar
Om du följer BYO-distributionsstrategin, säkerställer du att du har konfigurerat Application Gateway för containrar och ALB Controller.
Om du följer ALB-strategin för hanterad distribution, se till att du etablerar din ALB-styrenhet och etablerar resurser för Application Gateway för containrar via den anpassade resursen ApplicationLoadBalancer.
Distribuera testapplikationen för HTTP:
Använd följande deployment.yaml-fil i klustret för att distribuera ett TLS-exempelcertifikat för att demonstrera omdirigeringsfunktioner.
kubectl apply -f https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/https-scenario/ssl-termination/deployment.yamlDet här kommandot skapar följande i klustret:
- ett namnområde med namnet
test-infra - en tjänst kallad
echoitest-infranamnrymden - en implementering som anropas
echoitest-infranamnrymden - en hemlighet som heter
listener-tls-secretitest-infranamnområdet
- ett namnområde med namnet
Distribuera nödvändiga IngressExtension-resurser
Skapa en IngressExtension-resurs för att hantera HTTP till HTTPS-omdirigering för
contoso.comkubectl apply -f - <<EOF apiVersion: alb.networking.azure.io/v1 kind: IngressExtension metadata: name: http-to-https namespace: test-infra spec: rules: - host: contoso.com requestRedirect: statusCode: 301 scheme: https EOFSkapa en IngressExtension-resurs för att hantera en sökvägsbaserad omdirigering från
contoso.com/summer-promotiontillcontoso.com/shop/category/5.kubectl apply -f - <<EOF apiVersion: alb.networking.azure.io/v1 kind: IngressExtension metadata: name: summer-promotion-redirect namespace: test-infra spec: rules: - host: contoso.com requestRedirect: statusCode: 302 path: type: ReplaceFullPath replaceFullPath: /shop/category/5 EOF
Distribuera de inkommande resurser som krävs
Skapa den första ingressresursen för att lyssna efter HTTPS-begäranden.
kubectl apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-https namespace: test-infra annotations: alb.networking.azure.io/alb-namespace: alb-test-infra alb.networking.azure.io/alb-name: alb-test alb.networking.azure.io/alb-frontend: ingress-fe spec: ingressClassName: azure-alb-external tls: - hosts: - contoso.com secretName: listener-tls-secret rules: - host: contoso.com http: paths: - path: / pathType: Prefix backend: service: name: echo port: number: 80 EOFSkapa den andra ingressresursen för att lyssna på port 80 och omdirigera till HTTPS.
kubectl apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-http namespace: test-infra annotations: alb.networking.azure.io/alb-namespace: alb-test-infra alb.networking.azure.io/alb-name: alb-test alb.networking.azure.io/alb-frontend: ingress-fe alb.networking.azure.io/alb-ingress-extension: http-to-https spec: ingressClassName: azure-alb-external rules: - host: contoso.com http: paths: - path: / pathType: Prefix backend: service: name: echo port: number: 80 EOFSkapa en tredje ingressresurs för att lyssna på port 80 och 443 för
contoso.com/summer-promotionoch omdirigera tillcontoso.com/shop/category/5.kubectl apply -f - <<EOF apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-summer-promotion-redirect namespace: test-infra annotations: alb.networking.azure.io/alb-namespace: alb-test-infra alb.networking.azure.io/alb-name: alb-test alb.networking.azure.io/alb-frontend: ingress-fe alb.networking.azure.io/alb-ingress-extension: summer-promotion-redirect spec: ingressClassName: azure-alb-external tls: - hosts: - contoso.com secretName: listener-tls-secret rules: - host: contoso.com http: paths: - path: /summer-promotion pathType: Prefix backend: service: name: ignored-for-redirect port: number: 80 EOF
Note
När ALB-styrenheten skapar Application Gateway for Containers-resurser i Azure Resource Manager använder den följande namngivningskonvention för en klientdelsresurs: fe-<eight randomly generated characters>.
Om du vill ändra namnet på den frontend-resurs som skapats i Azure kan du överväga att följa en egen distributionsstrategi.
För varje ingressresurs kontrollerar du att statusen är giltig, att lyssnaren är programmerad och att en adress tilldelas till ingressresursen. För alla tre ingressresurser bör du se samma värdnamn i det här exemplet.
kubectl get ingress ingress-https -n test-infra -o yaml
Exempelutdata från ett lyckat skapande av Ingress.
status:
loadBalancer:
ingress:
- hostname: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.fzyy.alb.azure.com
ports:
- port: 443
protocol: TCP
Testa åtkomsten till programmet
Nu är vi redo att skicka trafik till vårt exempelprogram via det FQDN som tilldelats klientdelen. Använd följande kommando för att hämta FQDN.
fqdn=$(kubectl get ingress ingress-http -n test-infra -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
När du anger indikatorn för servernamn med hjälp av curl-kommandot http://contoso.com bör du returnera ett svar från Application Gateway för containrar med en location rubrik som definierar en 301-omdirigering till https://contoso.com.
fqdnIp=$(dig +short $fqdn)
curl -k --resolve contoso.com:80:$fqdnIp http://contoso.com/ -v
Via svaret bör vi se:
* Added contoso.com:80:xxx.xxx.xxx.xxx to DNS cache
* Hostname contoso.com was found in DNS cache
* Trying xxx.xxx.xxx.xxx:80...
* Connected to contoso.com (xxx.xxx.xxx.xxx) port 80 (#0)
> GET / HTTP/1.1
> Host: contoso.com
> User-Agent: curl/7.81.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 301 Moved Permanently
< location: https://contoso.com/
< date: Mon, 26 Feb 2024 22:56:23 GMT
< server: Microsoft-Azure-Application-LB/AGC
< content-length: 0
<
* Connection #0 to host contoso.com left intact
När du anger indikatorn för servernamn med hjälp av curl-kommandot https://contoso.com/summer-promotion ska Application Gateway for Containers returnera en 302-omdirigering till https://contoso.com/shop/category/5.
fqdnIp=$(dig +short $fqdn)
curl -k --resolve contoso.com:443:$fqdnIp https://contoso.com/summer-promotion -v
Via svaret bör vi se:
> GET /summer-promotion HTTP/2
> Host: contoso.com
> user-agent: curl/7.81.0
> accept: */*
>
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
* TLSv1.2 (IN), TLS header, Supplemental data (23):
* TLSv1.2 (OUT), TLS header, Supplemental data (23):
* TLSv1.2 (IN), TLS header, Supplemental data (23):
< HTTP/2 302
< location: https://contoso.com/shop/category/5
< date: Mon, 26 Feb 2024 22:58:43 GMT
< server: Microsoft-Azure-Application-LB/AGC
<
* Connection #0 to host contoso.com left intact
Grattis, du har installerat ALB-styrenheten, distribuerat ett serverdelsprogram och använt ingress-API för att konfigurera både en HTTP till HTTPS-omdirigering och sökvägsbaserad omdirigering till specifika klientbegäranden.