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.
Achtung
Das Add-On für HTTP-Anwendungsrouting (Vorschau) für Azure Kubernetes Service (AKS) wird am 3. März 2025 eingestellt. Es wird empfohlen, bis zu diesem Datum zum Anwendungsrouting-Add-On zu migrieren.
Das Routing-Add-On für HTTP-Anwendungen ermöglicht einen einfachen Zugriff auf Anwendungen, die in Ihrem AKS-Cluster (Azure Kubernetes Service) bereitgestellt sind, durch:
- Konfigurieren eines Ingress-Controllers in Ihrem AKS-Cluster.
- Erstellen öffentlich zugänglicher DNS-Namen für Anwendungsendpunkte.
- Erstellen einer DNS-Zone in Ihrem Abonnement. Weitere Informationen zu den DNS-Kosten finden Sie unter Azure DNS – Preise.
Bevor Sie beginnen
- Das Routing-Add-On für HTTP-Anwendungen funktioniert derzeit nicht mit AKS-Versionen 1.22.6 und höher.
- Wenn Sie Befehle lokal ausführen, installieren Sie
kubectlmit dem Befehl „az aks install-cli“.
Übersicht über das Routing-Add-On für HTTP-Anwendungen
Das Add-On stellt zwei Komponenten bereit: einen Kubernetes-Eingangsdatencontroller und einen externen DNS-Controller.
-
Ingress-Controller: Der Ingress-Controller ist über einen Kubernetes-Dienst vom Typ „
LoadBalancer“ exponiert. Der Ingress-Controller überwacht und implementiert Kubernetes-Ingress-Ressourcen und erstellt Routen zu Anwendungsendpunkten. -
Externer DNS-Controller: Der externe DNS-Controller überwacht die Kubernetes-Eingangsressourcen und erstellt in der clusterspezifischen DNS-Zone DNS-
A-Einträge.
HTTP-Anwendungsrouting aktivieren
Erstellen Sie einen neuen AKS-Cluster, und aktivieren Sie das Routing-Add-On für HTTP-Anwendungen mit dem Befehl „
az aks create“ mit dem Parameter „--enable-addons“.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-addons http_application_routing \ --generate-ssh-keysSie können auch HTTP-Routing für einen vorhandenen AKS-Cluster mit dem Befehl
az aks enable-addonsund dem Parameter--addonsaktivieren.az aks enable-addons --resource-group myResourceGroup --name myAKSCluster --addons http_application_routingRufen Sie den DNS-Zonennamen mit dem Befehl „
az aks show“ ab. Sie benötigen den DNS-Zonennamen, um Anwendungen im Cluster bereitzustellen.az aks show --resource-group myResourceGroup --name myAKSCluster --query addonProfiles.httpApplicationRouting.config.HTTPApplicationRoutingZoneName -o tableIhre Ausgabe sollte wie die folgende Beispielausgabe aussehen:
9f9c1fe7-21a1-416d-99cd-3543bb92e4c3.eastus.aksapp.io
Verbinden Sie sich mit Ihrem AKS-Cluster
Mit dem Befehl
kubectlkönnen Sieaz aks get-credentialsfür die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Im folgenden Beispiel werden Anmeldeinformationen für den AKS-Cluster namens myAKSCluster in myResourceGroup abgerufen:az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Verwenden des HTTP-Anwendungsroutings
Wichtig
Das Routing-Add-On für HTTP-Anwendungen kann nur für Eingangsressourcen mit der folgenden Anmerkung ausgelöst werden:
annotations:
kubernetes.io/ingress.class: addon-http-application-routing
Erstellen Sie eine Datei namens samples-http-application-routing.yaml, und kopieren Sie den folgenden YAML-Code. Aktualisieren Sie in Zeile 43
<CLUSTER_SPECIFIC_DNS_ZONE>mit dem im vorherigen Schritt erfassten DNS-Zonennamen.apiVersion: apps/v1 kind: Deployment metadata: name: aks-helloworld spec: replicas: 1 selector: matchLabels: app: aks-helloworld template: metadata: labels: app: aks-helloworld spec: containers: - name: aks-helloworld image: mcr.microsoft.com/azuredocs/aks-helloworld:v1 ports: - containerPort: 80 env: - name: TITLE value: "Welcome to Azure Kubernetes Service (AKS)" --- apiVersion: v1 kind: Service metadata: name: aks-helloworld spec: type: ClusterIP ports: - port: 80 selector: app: aks-helloworld --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: aks-helloworld annotations: kubernetes.io/ingress.class: addon-http-application-routing spec: rules: - host: aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE> http: paths: - path: / pathType: Prefix backend: service: name: aks-helloworld port: number: 80Erstellen Sie die Ressourcen mit dem Befehl „
kubectl apply“.kubectl apply -f samples-http-application-routing.yamlDie erstellten Ressourcen werden im folgenden Beispiel veranschaulicht:
deployment.apps/aks-helloworld created service/aks-helloworld created ingress.networking.k8s.io/aks-helloworld createdÖffnen Sie einen Webbrowser mit aks-helloworld.<CLUSTER_SPECIFIC_DNS_ZONE>, z. B. aks-helloworld.9f9c1fe7-21a1-416d-99cd-3543bb92e4c3.eastus.aksapp.io, und überprüfen Sie, ob Sie die Demoanwendung sehen. Es kann einige Minuten dauern, bis die Anwendung angezeigt wird.
HTTP-Anwendungsrouting entfernen
Entfernen Sie das Routing-Add-On für HTTP-Anwendungen mithilfe des [
az aks disable-addons][az-aks-disable-addons] command with theaddons'-Parameters.az aks disable-addons --addons http_application_routing --name myAKSCluster --resource-group myResourceGroup --no-waitWenn das Routing-Add-On für HTTP-Anwendungen deaktiviert ist, verbleiben eventuell einige Kubernetes-Ressourcen im Cluster. Zu diesen Ressourcen zählen configmaps und secrets, die im Namespace kube-system erstellt werden. Wenn Sie stets einen sauberen Cluster haben möchten, empfiehlt es sich, diese Ressourcen zu entfernen. Suchen Sie mit den folgenden -Befehlen nach Ressourcen des Typs
kubectl get:kubectl get deployments --namespace kube-system kubectl get services --namespace kube-system kubectl get configmaps --namespace kube-system kubectl get secrets --namespace kube-systemDie folgende Beispielausgabe zeigt configmaps, die gelöscht werden sollten:
NAMESPACE NAME DATA AGE kube-system addon-http-application-routing-nginx-configuration 0 9m7s kube-system addon-http-application-routing-tcp-services 0 9m7s kube-system addon-http-application-routing-udp-services 0 9m7sLöschen Sie die verbleibenden Ressourcen mit de Befehl „
kubectl delete“. Stellen Sie sicher, dass Sie den Ressourcentyp, den Ressourcennamen und den Namespace angeben. Das folgende Beispiel löscht eine der vorherigen configMaps:kubectl delete configmaps addon-http-application-routing-nginx-configuration --namespace kube-systemWiederholen Sie den vorherigen
kubectl delete-Schritt für alle Ressourcen des Typs addon-http-application-routing, die sich noch in Ihrem Cluster befinden.
Problembehandlung
Zeigen Sie die Anwendungsprotokolle für die externe DNS-Anwendung mit dem Befehl „
kubectl logs“ an.kubectl logs -f deploy/addon-http-application-routing-external-dns -n kube-systemDie Protokolle sollten bestätigen, dass die DNS-Einträge
AundTXTerfolgreich erstellt wurden, wie in der folgenden Beispielausgabe gezeigt:time="2018-04-26T20:36:19Z" level=info msg="Updating A record named 'aks-helloworld' to '52.242.28.189' for Azure DNS zone '471756a6-e744-4aa0-aa01-89c4d162a7a7.canadaeast.aksapp.io'." time="2018-04-26T20:36:21Z" level=info msg="Updating TXT record named 'aks-helloworld' to '"heritage=external-dns,external-dns/owner=default"' for Azure DNS zone '471756a6-e744-4aa0-aa01-89c4d162a7a7.canadaeast.aksapp.io'."Zeigen Sie die Anwendungsprotokolle für den NGINX-Eingangsdatencontroller mit dem Befehl „
kubectl logs“ an.kubectl logs -f deploy/addon-http-application-routing-nginx-ingress-controller -n kube-systemDie Protokolle sollten „
CREATE“ einer Eingangsressource und das erneute Laden des Controllers bestätigen, wie in der folgenden Beispielausgabe gezeigt:------------------------------------------------------------------------------- NGINX Ingress controller Release: 0.13.0 Build: git-4bc943a Repository: https://github.com/kubernetes/ingress-nginx ------------------------------------------------------------------------------- I0426 20:30:12.212936 9 flags.go:162] Watching for ingress class: addon-http-application-routing W0426 20:30:12.213041 9 flags.go:165] only Ingress with class "addon-http-application-routing" will be processed by this ingress controller W0426 20:30:12.213505 9 client_config.go:533] Neither --kubeconfig nor --master was specified. Using the inClusterConfig. This might not work. I0426 20:30:12.213752 9 main.go:181] Creating API client for https://10.0.0.1:443 I0426 20:30:12.287928 9 main.go:225] Running in Kubernetes Cluster version v1.8 (v1.8.11) - git (clean) commit 1df6a8381669a6c753f79cb31ca2e3d57ee7c8a3 - platform linux/amd64 I0426 20:30:12.290988 9 main.go:84] validated kube-system/addon-http-application-routing-default-http-backend as the default backend I0426 20:30:12.294314 9 main.go:105] service kube-system/addon-http-application-routing-nginx-ingress validated as source of Ingress status I0426 20:30:12.426443 9 stat_collector.go:77] starting new nginx stats collector for Ingress controller running in namespace (class addon-http-application-routing) I0426 20:30:12.426509 9 stat_collector.go:78] collector extracting information from port 18080 I0426 20:30:12.448779 9 nginx.go:281] starting Ingress controller I0426 20:30:12.463585 9 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"addon-http-application-routing-nginx-configuration", UID:"2588536c-4990-11e8-a5e1-0a58ac1f0ef2", APIVersion:"v1", ResourceVersion:"559", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap kube-system/addon-http-application-routing-nginx-configuration I0426 20:30:12.466945 9 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"addon-http-application-routing-tcp-services", UID:"258ca065-4990-11e8-a5e1-0a58ac1f0ef2", APIVersion:"v1", ResourceVersion:"561", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap kube-system/addon-http-application-routing-tcp-services I0426 20:30:12.467053 9 event.go:218] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"addon-http-application-routing-udp-services", UID:"259023bc-4990-11e8-a5e1-0a58ac1f0ef2", APIVersion:"v1", ResourceVersion:"562", FieldPath:""}): type: 'Normal' reason: 'CREATE' ConfigMap kube-system/addon-http-application-routing-udp-services I0426 20:30:13.649195 9 nginx.go:302] starting NGINX process... I0426 20:30:13.649347 9 leaderelection.go:175] attempting to acquire leader lease kube-system/ingress-controller-leader-addon-http-application-routing... I0426 20:30:13.649776 9 controller.go:170] backend reload required I0426 20:30:13.649800 9 stat_collector.go:34] changing prometheus collector from to default I0426 20:30:13.662191 9 leaderelection.go:184] successfully acquired lease kube-system/ingress-controller-leader-addon-http-application-routing I0426 20:30:13.662292 9 status.go:196] new leader elected: addon-http-application-routing-nginx-ingress-controller-5cxntd6 I0426 20:30:13.763362 9 controller.go:179] ingress backend successfully reloaded... I0426 21:51:55.249327 9 event.go:218] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"default", Name:"aks-helloworld", UID:"092c9599-499c-11e8-a5e1-0a58ac1f0ef2", APIVersion:"extensions", ResourceVersion:"7346", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress default/aks-helloworld W0426 21:51:57.908771 9 controller.go:775] service default/aks-helloworld does not have any active endpoints I0426 21:51:57.908951 9 controller.go:170] backend reload required I0426 21:51:58.042932 9 controller.go:179] ingress backend successfully reloaded... 167.220.24.46 - [167.220.24.46] - - [26/Apr/2018:21:53:20 +0000] "GET / HTTP/1.1" 200 234 "" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" 197 0.001 [default-aks-helloworld-80] 10.244.0.13:8080 234 0.004 200
Bereinigen von Ressourcen
Entfernen Sie die zugeordneten Kubernetes-Objekte, die in diesem Artikel erstellt wurden, mit dem Befehl „
kubectl delete“.kubectl delete -f samples-http-application-routing.yamlDie folgende Beispielausgabe zeigt, dass Kubernetes-Objekte entfernt wurden:
deployment "aks-helloworld" deleted service "aks-helloworld" deleted ingress "aks-helloworld" deleted
Nächste Schritte
Informationen dazu, wie Sie einen HTTPS-geschützten Ingress-Controller in AKS installieren, finden Sie unter HTTPS-Ingress bei Azure Kubernetes Service (AKS).