TLS från slutpunkt till slutpunkt med Application Gateway för containrar – Gateway-API
Artikel 2024-11-09
2 deltagare
Feedback
I den här artikeln
Bakgrund
Förutsättningar
Distribuera de gateway-API-resurser som krävs
Testa åtkomsten till programmet
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:
Application Gateway för containrar möjliggör TLS från slutpunkt till slutpunkt för bättre sekretess och säkerhet. I den här designen krypteras trafiken mellan klienten och en Application Gateway för containrars klientdel och trafik som skickas från Application Gateway för containrar till serverdelsmålet krypteras. Se följande exempelscenario:
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/end-to-end-tls/deployment.yaml
Det här kommandot skapar följande i klustret:
ett namnområde med namnet test-infra
en tjänst som anropas https-app
test-infra
i namnområdet
en distribution som anropas https-app
i test-infra
namnområdet
en konfigurationskarta som heter https-app-cm
i test-infra
namnområdet
en hemlighet som heter contoso.com
i test-infra
namnområdet
en hemlighet som heter contoso.xyz
i test-infra
namnområdet
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: contoso.com
EOF
Anteckning
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 .
Ange följande miljövariabler
RESOURCE_GROUP='<resource group name of the Application Gateway For Containers resource>'
RESOURCE_NAME='alb-test'
RESOURCE_ID=$(az network alb show --resource-group $RESOURCE_GROUP --name $RESOURCE_NAME --query id -o tsv)
FRONTEND_NAME='frontend'
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-id: $RESOURCE_ID
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: contoso.com
addresses:
- type : alb.networking.azure.io/alb-frontend
value: $FRONTEND_NAME
EOF
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: https-app
port: 443
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
Skapa en BackendTLSPolicy
kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: BackendTLSPolicy
metadata:
name: https-app-tls-policy
namespace: test -infra
spec:
targetRef:
group: ""
kind: Service
name: https-app
namespace: test -infra
default:
sni: contoso.xyz
ports:
- port: 443
EOF
När backendTLSPolicy-objektet har skapats kontrollerar du objektets status för att säkerställa att principen är giltig:
kubectl get backendtlspolicy -n test -infra https-app-tls-policy -o yaml
Exempel på utdata från giltigt skapande av BackendTLSPolicy-objekt:
status:
conditions:
- lastTransitionTime: "2023-06-29T16:54:42Z"
message: Valid BackendTLSPolicy
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
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.
fqdnIp=$(dig +short $fqdn )
curl -k --resolve contoso.com:443:$fqdnIp https://contoso.com --insecure
Följande resultat bör visas:
Hello world!
Grattis, du har installerat ALB Controller, distribuerat ett serverdelsprogram och dirigerat trafik till programmet via ingressen på Application Gateway för containrar.