SSL-Abladung mit Application Gateway für Container – Eingangs-API
Dieses Dokument hilft beim Einrichten einer Beispielanwendung, die die Ingress-Ressource der Ingress-API verwendet:
Hintergrund
Application Gateway für Container ermöglicht die SSL-Abladung zum Erzielen einer besseren Back-End-Leistung. Sehen Sie sich folgendes Beispielszenario an:
Voraussetzungen
Wenn Sie die BYO-Bereitstellungsstrategie befolgen, stellen Sie sicher, dass Sie Ihre Application Gateway für Container-Ressourcen und Ihren ALB Controller einrichten.
Wenn Sie die vom ALB verwaltete Bereitstellungsstrategie befolgen, stellen Sie sicher, dass Sie den ALB-Controller und die Application Gateway für Container-Ressourcen über die benutzerdefinierte ApplicationLoadBalancer-Ressource bereitstellen.
Stellen Sie eine Beispiel-HTTPS-Anwendung bereit, indem Sie die nachstehende Datei „deployment.yaml“ auf Ihrem Cluster anwenden, um eine Beispielwebanwendung zum Veranschaulichen der TLS/SSL-Abladung zu erstellen.
kubectl apply -f https://trafficcontrollerdocs.blob.core.windows.net/examples/https-scenario/ssl-termination/deployment.yaml
Mit diesem Befehl wird Folgendes in Ihrem Cluster erstellt:
- Ein Namespace mit dem Namen
test-infra
- ein Dienst, der im Namespace
test-infra
alsecho
bezeichnet wird - eine Bereitstellung, die im Namespace
test-infra
alsecho
bezeichnet wird - ein Geheimnis, das im Namespace
test-infra
alslistener-tls-secret
bezeichnet wird
- Ein Namespace mit dem Namen
Bereitstellen der erforderlichen Ingress-API-Ressourcen
- Erstellen eines Eingangsmanifests
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-01
namespace: test-infra
annotations:
alb.networking.azure.io/alb-name: alb-test
alb.networking.azure.io/alb-namespace: alb-test-infra
spec:
ingressClassName: azure-alb-external
tls:
- hosts:
- example.com
secretName: listener-tls-secret
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: echo
port:
number: 80
EOF
Hinweis
Wenn der ALB-Controller die Application Gateway für Container-Ressourcen in ARM erstellt, verwendet er die folgende Benennungskonvention für eine Frontend-Ressource: „fe-<8 zufällig generierte Zeichen>“.
Wenn Sie den Namen des in Azure erstellten Frontends ändern möchten, sollten Sie die BYO-Bereitstellungsstrategie (Bring Your Own) befolgen.
Wenn die Ingress-Ressource erstellt wurde, stellen Sie sicher, dass der Status den Hostnamen Ihres Lastenausgleichs anzeigt und dass beide Ports auf Anforderungen lauschen.
kubectl get ingress ingress-01 -n test-infra -o yaml
Beispielausgabe einer erfolgreichen Ingress-Erstellung.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
alb.networking.azure.io/alb-frontend: FRONTEND_NAME
alb.networking.azure.io/alb-id: /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzz
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.k8s.io/v1","kind":"Ingress","metadata":{"annotations":{"alb.networking.azure.io/alb-frontend":"FRONTEND_NAME","alb.networking.azure.io/alb-id":"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/yyyyyyyy/providers/Microsoft.ServiceNetworking/trafficControllers/zzzzzz"},"name"
:"ingress-01","namespace":"test-infra"},"spec":{"ingressClassName":"azure-alb-external","rules":[{"host":"example.com","http":{"paths":[{"backend":{"service":{"name":"echo","port":{"number":80}}},"path":"/","pathType":"Prefix"}]}}],"tls":[{"hosts":["example.com"],"secretName":"listener-tls-secret"}]}}
creationTimestamp: "2023-07-22T18:02:13Z"
generation: 2
name: ingress-01
namespace: test-infra
resourceVersion: "278238"
uid: 17c34774-1d92-413e-85ec-c5a8da45989d
spec:
ingressClassName: azure-alb-external
rules:
- host: example.com
http:
paths:
- backend:
service:
name: echo
port:
number: 80
path: /
pathType: Prefix
tls:
- hosts:
- example.com
secretName: listener-tls-secret
status:
loadBalancer:
ingress:
- hostname: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.fzyy.alb.azure.com
ports:
- port: 80
protocol: TCP
- port: 443
protocol: TCP
Testen des Zugriffs auf die Anwendung
Jetzt können wir über den FQDN, der dem Frontend zugewiesen ist, einige Datenverkehrsdaten an unsere Beispielanwendung senden. Verwenden Sie den nachstehenden Befehl, um den FQDN abzurufen.
fqdn=$(kubectl get ingress ingress-01 -n test-infra -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Beim Curling dieses FQDN sollten Antworten aus dem Back-End entsprechend der konfigurierten HTTPRoute zurückgegeben werden.
fqdnIp=$(dig +short $fqdn)
curl -vik --resolve example.com:443:$fqdnIp https://example.com
Herzlichen Glückwunsch, Sie haben den ALB-Controller installiert, eine Back-End-Anwendung bereitgestellt und Datenverkehr über die Ingress-API an Application Gateway für Container weitergeleitet.