SSL-avlastning med Application Gateway för containrar – Gateway-API
Det här dokumentet hjälper dig att konfigurera ett exempelprogram som använder följande resurser från Gateway-API:et. Steg tillhandahålls för att:
- Skapa en gatewayresurs med en HTTPS-lyssnare.
- Skapa en HTTPRoute som refererar till en serverdelstjänst.
Bakgrund
Application Gateway för containrar möjliggör SSL-avlastning för bättre serverdelsprestanda. Se följande exempelscenario:
Förutsättningar
Om du följer BYO-distributionsstrategin kontrollerar du att du konfigurerar application gateway för containrar-resurser och ALB-styrenhet
Om du följer den hanterade distributionsstrategin för ALB kontrollerar du att du etablerar ALB-styrenheten och application gatewayen för containrar via den anpassade resursen ApplicationLoadBalancer.
Distribuera HTTPS-exempelprogrammet Tillämpa följande deployment.yaml-fil på klustret för att skapa ett exempelwebbprogram för att demonstrera TLS/SSL-avlastning.
kubectl apply -f https://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/https-scenario/ssl-termination/deployment.yaml
Det här kommandot skapar följande i klustret:
- ett namnområde med namnet
test-infra
- en tjänst som anropas
echo
test-infra
i namnområdet - en distribution som anropas
echo
itest-infra
namnområdet - en hemlighet som heter
listener-tls-secret
itest-infra
namnområdet
- ett namnområde med namnet
Distribuera de gateway-API-resurser som krävs
Skapa en gateway
kubectl apply -f - <<EOF apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: gateway-01 namespace: test-infra annotations: alb.networking.azure.io/alb-namespace: alb-test-infra alb.networking.azure.io/alb-name: alb-test spec: gatewayClassName: azure-alb-external listeners: - name: https-listener port: 443 protocol: HTTPS allowedRoutes: namespaces: from: Same tls: mode: Terminate certificateRefs: - kind : Secret group: "" name: listener-tls-secret EOF
Kommentar
När ALB-styrenheten skapar Application Gateway for Containers-resurser i ARM använder den följande namngivningskonvention för en klientdelsresurs: fe-8< slumpmässigt genererade tecken>
Om du vill ändra namnet på klientdelen som skapats i Azure kan du överväga att följa din egen distributionsstrategi.
När gatewayresursen skapas kontrollerar du att statusen är giltig, att lyssnaren är programmerad och att en adress har tilldelats till gatewayen.
kubectl get gateway gateway-01 -n test-infra -o yaml
Exempel på att gatewayen har skapats.
status:
addresses:
- type: Hostname
value: xxxx.yyyy.alb.azure.com
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Valid Gateway
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
listeners:
- attachedRoutes: 0
conditions:
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Listener is accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T21:04:55Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
name: https-listener
supportedKinds:
- group: gateway.networking.k8s.io
kind: HTTPRoute
När gatewayen har skapats skapar du en HTTPRoute-resurs.
kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: https-route
namespace: test-infra
spec:
parentRefs:
- name: gateway-01
rules:
- backendRefs:
- name: echo
port: 80
EOF
När HTTPRoute-resursen har skapats kontrollerar du att vägen är Godkänd och att Application Gateway for Containers-resursen är programmerad.
kubectl get httproute https-route -n test-infra -o yaml
Kontrollera att Application Gateway for Containers-resursen har uppdaterats.
status:
parents:
- conditions:
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: ""
observedGeneration: 1
reason: ResolvedRefs
status: "True"
type: ResolvedRefs
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Route is Accepted
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
- lastTransitionTime: "2023-06-19T22:18:23Z"
message: Application Gateway For Containers resource has been successfully updated.
observedGeneration: 1
reason: Programmed
status: "True"
type: Programmed
controllerName: alb.networking.azure.io/alb-controller
parentRef:
group: gateway.networking.k8s.io
kind: Gateway
name: gateway-01
namespace: test-infra
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 gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
Curling detta FQDN bör returnera svar från serverdelen enligt konfigurationen på HTTPRoute.
curl --insecure https://$fqdn/
Grattis, du har installerat ALB Controller, distribuerat ett serverdelsprogram och dirigerat trafik till programmet via ingressen på Application Gateway för containrar.