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

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.

  1. 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
    
  2. 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.

  1. Verwenden Sie für die lokale Installation von kubectl den Befehl az aks install-cli.

    az aks install-cli
    
  2. 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.

  1. Klonen Sie die Anwendung mit dem Befehl git clone von GitHub.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Navigieren Sie mit dem Befehl cd zum Verzeichnis azure-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

  1. Generieren Sie Ihr Helm-Diagramm mit dem Befehl helm create.

    helm create azure-vote-front
    
  2. 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 Sie appVersion auf v1, 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
    
  3. Aktualisieren Sie Ihre Helm-Chart-Abhängigkeiten mithilfe des Befehls helm dependency update.

    helm dependency update azure-vote-front
    
  4. 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
    ...
    
  5. 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

  1. Verwenden Sie den Befehl helm install, um Ihre Anwendung mithilfe Ihres Helm-Charts zu installieren.

    helm install azure-vote-front azure-vote-front/
    
  2. 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 Sie CTRL+C, um den Überwachungsprozess kubectl 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
    
  3. 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.