Schnellstart: Entwickeln unter Azure Kubernetes Service (AKS) mit Helm
Helm ist ein Open Source-Verpackungstool, das Ihnen dabei hilft, Kubernetes-Anwendungen zu installieren und ihren Lebenszyklus zu verwalten. Ähnlich wie Linux-Paket-Manager (z. B. APT und Yum) wird Helm zur Verwaltung von Kubernetes-Charts verwendet, bei denen es sich um Pakete aus vorkonfigurierten Kubernetes-Ressourcen handelt.
In diesem Schnellstart verwenden Sie Helm, um eine Anwendung in AKS zu packen und auszuführen. Weitere Informationen zum Installieren einer vorhandenen Anwendung mit Helm finden Sie unter Installieren vorhandener Anwendungen mit Helm in AKS.
Voraussetzungen
- Ein Azure-Abonnement. Falls Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen.
- Die Azure CLI oder Azure PowerShell muss installiert sein.
- Helm v3 muss installiert sein.
Erstellen einer Azure-Containerregistrierung
Um Helm zum Ausführen Ihrer Anwendung in Ihrem AKS-Cluster verwenden zu können, müssen Sie Ihre Containerimages in einer Azure Container Registry-Instanz (ACR) speichern. Der Registrierungsname muss innerhalb von Azure eindeutig sein und zwischen 5 und 50 alphanumerische Zeichen enthalten. Nur Kleinbuchstaben sind erlaubt. Die Basic-SKU ist ein kostenoptimierter Einstiegspunkt für Entwicklungszwecke, der ein ausgewogenes Verhältnis von Speicher und Durchsatz bietet.
Erstellen Sie mit dem Befehl az group create eine Azure-Ressourcengruppe. Das folgende Beispiel erstellt eine Ressourcengruppe mit dem Namen myResourceGroup am Standort eastus.
az group create --name myResourceGroup --location eastus
Erstellen Sie mit dem Befehl az acr create eine Azure Container Registry-Instanz mit einem eindeutigen Namen. Im folgenden Beispiel wird eine ACR-Instanz namens myhelmacr mit der SKU Basic erstellt.
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
Ihre Ausgabe sollte der folgenden gekürzten Beispielausgabe entsprechen. Notieren Sie sich den Wert von loginServer für Ihre ACR-Instanz, da Sie ihn in einem späteren Schritt benötigen.
{ "adminUserEnabled": false, "creationDate": "2023-12-26T22:36:23.998425+00:00", "id": "/subscriptions/<ID>/resourceGroups/myResourceGroup/providers/Microsoft.ContainerRegistry/registries/myhelmacr", "location": "eastus", "loginServer": "myhelmacr.azurecr.io", "name": "myhelmacr", "networkRuleSet": null, "provisioningState": "Succeeded", "resourceGroup": "myResourceGroup", "sku": { "name": "Basic", "tier": "Basic" }, "status": null, "storageAccount": null, "tags": {}, "type": "Microsoft.ContainerRegistry/registries" }
Erstellen eines AKS-Clusters
Ihr neuer AKS-Cluster benötigt Zugriff auf Ihre ACR-Instanz, um die Containerimages pullen und ausführen zu können.
Sie können einen AKS-Cluster mit dem Befehl az aks create und dem Parameter
--attach-acr
erstellen, um dem Cluster Zugriff auf Ihre ACR-Instanz zu gewähren. Im folgenden Beispiel wird ein AKS-Cluster namens myAKSCluster erstellt und diesem Zugriff auf die ACR-Instanz myhelmacr gewährt. Vergessen Sie nicht,myhelmacr
durch den Namen Ihrer ACR-Instanz zu ersetzen.az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
Herstellen einer Verbindung mit dem AKS-Cluster
Um einen Kubernetes-Cluster lokal zu verbinden, verwenden Sie den Kubernetes-Befehlszeilenclient kubectl. kubectl
ist bei Verwendung von Azure Cloud Shell bereits installiert.
Verwenden Sie für die lokale Installation von
kubectl
den Befehl az aks install-cli.az aks install-cli
Mit dem Befehl az aks get-credentials können Sie
kubectl
für die Verbindungsherstellung mit Ihrem Kubernetes-Cluster konfigurieren. Der folgende Befehl ruft Anmeldeinformationen für den AKS-Cluster namens myAKSCluster in myResourceGroup ab.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Herunterladen der Beispielanwendung
In diesem Schnellstart wird die Azure Voting-Anwendung verwendet.
Klonen Sie die Anwendung mit dem Befehl
git clone
von GitHub.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Navigieren Sie mit dem Befehl
cd
zum Verzeichnisazure-vote
.cd azure-voting-app-redis/azure-vote/
Erstellen und Pushen der Beispielanwendung in ACR
Erstellen Sie ein Image und pushen Sie es mit dem Befehl az acr build in Ihre ACR-Instanz. Im folgenden Beispiel wird ein Image namens azure-vote-front:v1 erstellt und in die ACR myhelmacr übertragen. Vergessen Sie nicht,
myhelmacr
durch den Namen Ihrer ACR-Instanz zu ersetzen.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
Hinweis
Sie können Helm-Diagramme auch in Ihre ACR importieren. Weitere Informationen finden Sie unter Pushen und Pullen von Helm-Charts in Azure Container Registry.
Erstellen Ihres Helm-Diagramms
Generieren Sie Ihr Helm-Diagramm mit dem Befehl
helm create
.helm create azure-vote-front
Aktualisieren Sie die Datei azure-vote-front/Chart.yaml, um eine Abhängigkeit für Chart redis aus dem Chart-Repository
https://charts.bitnami.com/bitnami
hinzuzufügen, und aktualisieren SieappVersion
aufv1
, wie im folgenden Beispiel gezeigt:Hinweis
Die in diesem Leitfaden gezeigten Containerimageversionen wurden getestet und funktionieren mit diesem Beispiel. Es handelt sich aber möglicherweise nicht um die neueste verfügbare Version.
apiVersion: v2 name: azure-vote-front description: A Helm chart for Kubernetes dependencies: - name: redis version: 17.3.17 repository: https://charts.bitnami.com/bitnami ... # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. appVersion: v1
Aktualisieren Sie Ihre Helm-Chart-Abhängigkeiten mithilfe des Befehls
helm dependency update
.helm dependency update azure-vote-front
Aktualisieren Sie die Datei azure-vote-front/values.yaml mit den folgenden Änderungen.
- Fügen Sie einen Abschnitt redis hinzu, um die Imagedetails, den Containerport und den Bereitstellungsnamen festzulegen.
- Fügen Sie einen backendName hinzu, um den Front-End-Teil mit der redis-Bereitstellung zu verbinden.
- Ändern Sie image.repository in
<loginServer>/azure-vote-front
. - Ändern Sie image.tag in
v1
. - Ändern Sie service.type in LoadBalancer.
Beispiel:
replicaCount: 1 backendName: azure-vote-backend-master redis: image: registry: mcr.microsoft.com repository: oss/bitnami/redis tag: 6.0.8 fullnameOverride: azure-vote-backend auth: enabled: false image: repository: myhelmacr.azurecr.io/azure-vote-front pullPolicy: IfNotPresent tag: "v1" ... service: type: LoadBalancer port: 80 ...
Fügen Sie der Datei azure-vote-front/templates/deployment.yaml einen Abschnitt
env
hinzu, um den Namen der redis-Bereitstellung zu übergeben.... containers: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: - name: REDIS value: {{ .Values.backendName }} ...
Ausführen Ihres Helm-Diagramms
Verwenden Sie den Befehl
helm install
, um Ihre Anwendung mithilfe Ihres Helm-Charts zu installieren.helm install azure-vote-front azure-vote-front/
Es kann einige Minuten dauern, bis der Dienst eine öffentliche IP-Adresse zurückgibt. Verwenden Sie zum Überwachen des Fortschritts den Befehl
kubectl get service
mit dem Argument--watch
:kubectl get service azure-vote-front --watch
Wenn der Dienst bereit ist, ändert sich der
EXTERNAL-IP
-Wert von<pending>
in eine IP-Adresse. Drücken SieCTRL+C
, um den Überwachungsprozesskubectl
zu beenden.NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE azure-vote-front LoadBalancer 10.0.18.228 <pending> 80:32021/TCP 6s ... azure-vote-front LoadBalancer 10.0.18.228 52.188.140.81 80:32021/TCP 2m6s
Navigieren Sie in einem Browser mithilfe der
<EXTERNAL-IP>
zum Lastenausgleichsmodul Ihrer Anwendung, um die Beispielanwendung anzuzeigen.
Löschen des Clusters
Entfernen Sie Ihre Ressourcengruppe, den AKS-Cluster, die Azure Container Registry-Instanz, Containerimages, die in der ACR gespeichert sind, und alle zugehörigen Ressourcen mithilfe des Befehls az group delete und dem Parameter
--yes
zum Bestätigen der Löschung sowie dem Parameter--no-wait
, um zur Eingabeaufforderung zurückzukehren, ohne darauf zu warten, bis der Vorgang abgeschlossen ist.az group delete --name myResourceGroup --yes --no-wait
Hinweis
Wenn Sie den AKS-Cluster mit einer systemseitig zugewiesenen verwalteten Identität erstellt haben (die Standardidentitätsoption in diesem Schnellstart), wird die Identität von der Plattform verwaltet und muss nicht entfernt werden.
Wenn Sie Ihren AKS-Cluster mit einem Dienstprinzipal erstellt haben, wird der Dienstprinzipal nicht entfernt, wenn Sie den Cluster löschen. Informationen zum Entfernen des Dienstprinzipals finden Sie unter Überlegungen zum AKS-Dienstprinzipal und dessen Löschung.
Nächste Schritte
Weitere Informationen zur Verwendung von Helm finden Sie in der Helm-Dokumentation.
Azure Kubernetes Service