Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Anleitung hilft beim Einrichten einer Beispielanwendung, die die folgenden Ressourcen aus der Gateway-API verwendet. Es sind Schritte vorgesehen:
- Erstellen Sie eine Gateway Ressource mit einem HTTPS-Listener.
- Erstellen einer HTTPRoute, die auf einen Back-End-Dienst verweist.
Hintergrund
Application Gateway für Container aktiviert End-to-End-TLS für mehr Privatsphäre und Sicherheit. Bei diesem Design wird der Datenverkehr zwischen dem Client und einem Front-End für Application Gateway für Container ebenso wie der Datenverkehr von Application Gateway für Container an das Back-End-Ziel verschlüsselt. 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://raw.githubusercontent.com/MicrosoftDocs/azure-docs/refs/heads/main/articles/application-gateway/for-containers/examples/https-scenario/end-to-end-tls/deployment.yamlMit diesem Befehl wird Folgendes in Ihrem Cluster erstellt:
- Ein Namespace mit dem Namen
test-infra - ein Dienst, der im Namespace
https-appalstest-infrabezeichnet wird - eine Bereitstellung, die im Namespace
https-appalstest-infrabezeichnet wird - Eine Konfigurationszuordnung namens
https-app-cmimtest-infra-Namespace - ein Geheimnis, das im Namespace
contoso.comalstest-infrabezeichnet wird - ein Geheimnis, das im Namespace
contoso.xyzalstest-infrabezeichnet wird
- Ein Namespace mit dem Namen
Bereitstellen der erforderlichen Gateway-API-Ressourcen
Erstellen eines Gateways
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
Hinweis
Wenn der ALB-Controller das Anwendungsgateway für Containerressourcen in Azure Resource Manager erstellt, verwendet er die folgende Benennungskonvention für eine Frontend-Ressource: fe-<eight randomly generated characters>
Wenn Sie den Namen der in Azure erstellten Frontend-Ressource ändern möchten, sollten Sie die Bring-Your-Own-Bereitstellungsstrategie beachten.
Wenn die Gatewayressource erstellt wird, stellen Sie sicher, dass der Status gültig ist, dass der Listener programmiert ist und dem Gateway eine Adresse zugewiesen wird.
kubectl get gateway gateway-01 -n test-infra -o yaml
Beispielausgabe einer erfolgreichen Gatewayerstellung.
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
Nachdem das Gateway erstellt wurde, erstellen Sie eine HTTPRoute-Ressource.
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
Nachdem die HTTPRoute-Ressource erstellt wurde, stellen Sie sicher, dass die Route Akzeptiert ist und die Ressource „Application Gateway für Container“ programmiert ist.
kubectl get httproute https-route -n test-infra -o yaml
Überprüfen Sie, ob die Application Gateway for Containers-Ressource erfolgreich aktualisiert wurde.
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
Erstellen einer 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
Nachdem das BackendTLSPolicy-Objekt erstellt wurde, überprüfen Sie den Status des Objekts, um sicherzustellen, dass die Richtlinie gültig ist:
kubectl get backendtlspolicy -n test-infra https-app-tls-policy -o yaml
Beispielausgabe einer gültigen BackendTLSPolicy-Objekterstellung:
status:
conditions:
- lastTransitionTime: "2023-06-29T16:54:42Z"
message: Valid BackendTLSPolicy
observedGeneration: 1
reason: Accepted
status: "True"
type: Accepted
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 folgenden Befehl, um den FQDN abzurufen.
fqdn=$(kubectl get gateway gateway-01 -n test-infra -o jsonpath='{.status.addresses[0].value}')
Beim Curling dieses FQDN sollten Antworten aus dem Back-End entsprechend der konfigurierten HTTPRoute zurückgegeben werden.
fqdnIp=$(dig +short $fqdn)
curl -k --resolve contoso.com:443:$fqdnIp https://contoso.com --insecure
Das folgende Ergebnis sollte angezeigt werden:
Hello world!
Herzlichen Glückwunsch, Sie haben ALB Controller installiert, eine Back-End-Anwendung bereitgestellt und den Datenverkehr über den Eingang des Anwendungsgateways für Container an die Anwendung weitergeleitet.