Bereitstellen eines AKS-Diensts über HTTP oder HTTPS mit Application Gateway
Diese Tutorials helfen dabei, die Verwendung von Kubernetes-Eingangsressourcen zu veranschaulichen, um einen Kubernetes-Beispieldienst über Azure Application Gateway über HTTP oder HTTPS bereitzustellen.
Tipp
Weitere Informationen unter Was ist Anwendungsgateway für Container.
Voraussetzungen
- Installiertes
ingress-azure
-Helm-Diagramm.- Greenfield-Bereitstellung: Wenn Sie von Grund auf neu beginnen, lesen Sie diese Installationsanleitungen, in denen die Schritte zum Bereitstellen eines AKS-Clusters mit Application Gateway und zum Installieren des Application Gateway-Eingangsdatencontrollers im AKS-Cluster erläutert werden.
- Brownfield-Bereitstellung: Wenn Sie über einen vorhandenen AKS-Cluster und eine Application Gateway-Instanz verfügen, lesen Sie diese Anleitungen zum Installieren des Application Gateway-Eingangsdatencontrollers im AKS-Cluster.
- Wenn Sie HTTPS für diese Anwendung verwenden möchten, benötigen Sie ein x509-Zertifikat und den zugehörigen privaten Schlüssel.
Bereitstellen der guestbook
-Anwendung
Bei der Guestbook-Anwendung handelt es sich um eine kanonische Kubernetes-Anwendung, die aus einem Web-UI-Front-End, einem Back-End und einer Redis-Datenbank besteht. Standardmäßig stellt guestbook
die Anwendung über einen Dienst namens frontend
an Port 80
bereit. Ohne eine Kubernetes-Eingangsressource kann auf den Dienst nicht von außerhalb des AKS-Clusters zugegriffen werden. Wir verwenden die Anwendung und richten Eingangsressourcen ein, um über HTTP und HTTPS auf die Anwendung zuzugreifen.
Verwenden Sie die folgenden Anweisungen, um die Guestbookanwendung bereitzustellen.
- Laden Sie
guestbook-all-in-one.yaml
hier herunter. - Stellen Sie
guestbook-all-in-one.yaml
in Ihrem AKS-Cluster bereit, indem Sie Folgendes ausführen:
kubectl apply -f guestbook-all-in-one.yaml
Die guestbook
-Anwendung wurde nun bereitgestellt.
Bereitstellen von Diensten über HTTP
Verwenden Sie die folgende Eingangsressource, um die Guestbookanwendung verfügbar zu machen:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- backend:
serviceName: frontend
servicePort: 80
Die Eingangsressource stellt den frontend
-Dienst der guestbook-all-in-one
-Bereitstellung als Standard-Back-End der Application Gateway-Instanz bereit.
Speichern Sie die oben genannte Eingangsressource als ing-guestbook.yaml
.
Stellen Sie
ing-guestbook.yaml
bereit, indem Sie Folgendes ausführen:kubectl apply -f ing-guestbook.yaml
Überprüfen Sie das Protokoll des Eingangscontrollers bezüglich des Bereitstellungsstatus.
Nun sollte die guestbook
-Anwendung verfügbar sein. Sie können dies überprüfen, indem Sie die öffentliche Adresse der Application Gateway-Instanz besuchen.
Bereitstellen von Diensten über HTTPS
Ohne angegebenen Hostnamen
Ohne Angabe des Hostnamens ist der Guestbook-Dienst für alle Hostnamen verfügbar, die auf die Application Gateway-Instanz verweisen.
Vor dem Bereitstellen der Eingangsressource müssen Sie ein Kubernetes-Geheimnis erstellen, um das Zertifikat und den privaten Schlüssel zu hosten. Sie können ein Kubernetes-Geheimnis erstellen, indem Sie Folgendes ausführen:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Definieren Sie die folgende Eingangsressource. Geben Sie in der Eingangsressource den Namen des Geheimnisses im Abschnitt
secretName
an.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - secretName: <guestbook-secret-name> rules: - http: paths: - backend: serviceName: frontend servicePort: 80
Hinweis
Ersetzen Sie
<guestbook-secret-name>
in der obigen Eingangsressource durch den Namen Ihres Geheimnisses. Speichern Sie die oben angegebene Eingangsressource unter dem Dateinamening-guestbook-tls.yaml
.Stellen Sie „ing-guestbook-tls.yaml“ bereit, indem Sie Folgendes ausführen:
kubectl apply -f ing-guestbook-tls.yaml
Überprüfen Sie das Protokoll des Eingangscontrollers bezüglich des Bereitstellungsstatus.
Nun ist die guestbook
-Anwendung sowohl für HTTP als auch für HTTPS verfügbar.
Mit angegebenem Hostnamen
Sie können auch den Hostnamen für die Eingangsressource angeben, um Multiplex für TLS-Konfigurationen und Dienste zu verwenden. Wenn Sie den Hostnamen angeben, ist der Guestbookdienst nur auf dem angegebenen Host verfügbar.
Definieren Sie die folgende Eingangsressource. Geben Sie in der Eingangsressource den Namen des Geheimnisses im Abschnitt
secretName
an, und ersetzen Sie den Hostnamen im Abschnitthosts
entsprechend.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: guestbook annotations: kubernetes.io/ingress.class: azure/application-gateway spec: tls: - hosts: - <guestbook.contoso.com> secretName: <guestbook-secret-name> rules: - host: <guestbook.contoso.com> http: paths: - backend: serviceName: frontend servicePort: 80
Stellen Sie
ing-guestbook-tls-sni.yaml
bereit, indem Sie Folgendes ausführen:kubectl apply -f ing-guestbook-tls-sni.yaml
Überprüfen Sie das Protokoll des Eingangscontrollers bezüglich des Bereitstellungsstatus.
Nun ist die guestbook
-Anwendung nur auf dem angegebenen Host (<guestbook.contoso.com>
in diesem Beispiel) sowohl über HTTP als auch über HTTPS verfügbar.
Integration in andere Dienste
Die folgende Eingangsressource ermöglicht es Ihnen, zusätzliche Pfade in diese Eingangsressource einzufügen und diese Pfade an andere Dienste weiterzuleiten:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: guestbook
annotations:
kubernetes.io/ingress.class: azure/application-gateway
spec:
rules:
- http:
paths:
- path: </other/*>
backend:
serviceName: <other-service>
servicePort: 80
- backend:
serviceName: frontend
servicePort: 80