Verfügbarmachen eines AKS-Diensts über HTTP oder HTTPS mit Application Gateway
Dieser Artikel veranschaulicht die Verwendung von Kubernetes-Eingangsressourcen, um einen Azure Kubernetes-Beispieldienst (AKS) über Azure Application Gateway über HTTP oder HTTPS verfügbar zu machen.
Tipp
Ziehen Sie Application Gateway für Container für Ihre Kubernetes-Eingangslösung in Betracht.
Voraussetzungen
- Ein 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 (AGIC) im AKS-Cluster erläutert werden.
- Brownfield-Bereitstellung: Wenn Sie über einen vorhandenen AKS-Cluster und eine Application Gateway-Bereitstellung verfügen, lesen Sie diese Anleitungen zum Installieren des Application Gateway-Eingangsdatencontrollers (AGIC) im AKS-Cluster.
- Ein x509-Zertifikat und den zugehörigen privaten Schlüssel, wenn Sie HTTPS für diese Anwendung verwenden möchten.
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 macht guestbook
die Anwendung über einen Dienst namens frontend
an Port 80
verfügbar. Ohne Kubernetes-Eingangsressource kann von außerhalb des AKS-Clusters nicht auf den Dienst zugegriffen werden. Sie verwenden die Anwendung und richten Eingangsressourcen ein, um über HTTP und HTTPS auf die Anwendung zuzugreifen.
So stellen Sie die guestbook
-Anwendung bereit:
Laden Sie
guestbook-all-in-one.yaml
von dieser GitHub-Seite herunter.Stellen Sie
guestbook-all-in-one.yaml
in Ihrem AKS-Cluster bereit, indem Sie diesen Befehl ausführen:kubectl apply -f guestbook-all-in-one.yaml
Bereitstellen von Diensten über HTTP
Verwenden Sie die folgende Eingangsressource, um die guestbook
-Anwendung 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 macht den frontend
-Dienst der guestbook-all-in-one
-Bereitstellung als Standard-Back-End der Application Gateway-Bereitstellung verfügbar.
Speichern Sie die vorherige Eingangsressource unter dem Namen ing-guestbook.yaml
:
Stellen Sie
ing-guestbook.yaml
durch Ausführen dieses Befehls bereit:kubectl apply -f ing-guestbook.yaml
Überprüfen Sie das Protokoll des Eingangsdatencontrollers bezüglich des Bereitstellungsstatus.
Nun sollte die guestbook
-Anwendung verfügbar sein. Sie können die Verfügbarkeit überprüfen, indem Sie die öffentliche Adresse der Application Gateway-Bereitstellung besuchen.
Bereitstellen von Diensten über HTTPS
Ohne angegebenen Hostnamen
Wenn Sie keinen Hostnamen angeben, ist der guestbook
-Dienst für alle Hostnamen verfügbar, die auf die Application Gateway-Bereitstellung verweisen.
Bevor Sie die Eingangsressource bereitstellen, müssen Sie ein Kubernetes-Geheimnis erstellen, um das Zertifikat und den privaten Schlüssel zu hosten:
kubectl create secret tls <guestbook-secret-name> --key <path-to-key> --cert <path-to-cert>
Definieren Sie die folgende Eingangsressource. Ersetzen Sie
<guestbook-secret-name>
im AbschnittsecretName
durch den Namen Ihres Geheimnisses.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
Speichern Sie die Eingangsressource unter dem Dateinamen
ing-guestbook-tls.yaml
.Stellen Sie
ing-guestbook-tls.yaml
durch Ausführen dieses Befehls bereit:kubectl apply -f ing-guestbook-tls.yaml
Überprüfen Sie das Protokoll des Eingangsdatencontrollers bezüglich des Bereitstellungsstatus.
Nun ist die guestbook
-Anwendung sowohl für HTTP als auch für HTTPS verfügbar.
Mit einem angegebenen Hostnamen
Sie können auch den Hostnamen für die Eingangsressource angeben, um Multiplex für TLS-Konfigurationen und Dienste zu verwenden. Wenn Sie einen Hostnamen angeben, ist der guestbook
-Dienst nur auf dem angegebenen Host verfügbar.
Definieren Sie die folgende Eingangsressource. Ersetzen Sie
<guestbook-secret-name>
im AbschnittsecretName
durch den Namen Ihres Geheimnisses. Ersetzen Sie<guestbook.contoso.com>
in den Abschnittenhosts
undhost
durch den Hostnamen.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
durch Ausführen dieses Befehls bereit:kubectl apply -f ing-guestbook-tls-sni.yaml
Überprüfen Sie das Protokoll des Eingangsdatencontrollers bezüglich des Bereitstellungsstatus.
Nun ist die guestbook
-Anwendung nur auf dem angegebenen Host sowohl über HTTP als auch über HTTPS verfügbar.
Integration in andere Dienste
Verwenden Sie die folgende Eingangsressource, um Pfade hinzuzufügen, und leiten Sie diese Pfade zu anderen Diensten um:
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