Snabbstart: Utveckla på Azure Kubernetes Service (AKS) med Helm

Helm är ett paketeringsverktyg med öppen källkod som hjälper dig att installera och hantera livscykeln för Kubernetes-program. Precis som Linux-pakethanterare som APT och Yum hanterar Helm Kubernetes-diagram, som är paket med förkonfigurerade Kubernetes-resurser.

I den här snabbstarten använder du Helm för att paketera och köra ett program på AKS. Information om hur du installerar ett befintligt program med Helm finns i Installera befintliga program med Helm i AKS.

Förutsättningar

Skapa ett Azure Container Registry

Du måste lagra dina containeravbildningar i ett Azure Container Registry (ACR) för att köra ditt program i AKS-klustret med hjälp av Helm. Registernamnet måste vara unikt i Azure och innehålla 5–50 alfanumeriska tecken. Endast gemener tillåts. Den grundläggande SKU:n är en kostnadsoptimerad startpunkt för utvecklingsändamål som ger en bra balans mellan lagring och dataflöde.

  1. Skapa en Azure-resursgrupp med kommandot az group create . I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus.

    az group create --name myResourceGroup --location eastus
    
  2. Skapa ett Azure Container Registry med ett unikt namn genom att anropa kommandot az acr create . I följande exempel skapas en ACR med namnet myhelmacr med Basic SKU.

    az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
    

    Dina utdata bör se ut ungefär som följande komprimerade exempelutdata. Anteckna ditt loginServer-värde som din ACR ska använda i ett senare steg.

    {
      "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"
    }
    

Skapa ett AKS-kluster

Ditt nya AKS-kluster behöver åtkomst till din ACR för att hämta containeravbildningarna och köra dem.

  • Skapa ett AKS-kluster med kommandot az aks create med parametern --attach-acr för att ge klustret åtkomst till din ACR. I följande exempel skapas ett AKS-kluster med namnet myAKSCluster och ger det åtkomst till myhelmacr ACR. Se till att du ersätter myhelmacr med namnet på din ACR.

    az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
    

Anslut till ditt AKS-kluster

Om du vill ansluta ett Kubernetes-kluster lokalt använder du Kubernetes kommandoradsklient kubectl. kubectl är redan installerat om du använder Azure Cloud Shell.

  1. Installera kubectl lokalt med kommandot az aks install-cli .

    az aks install-cli
    
  2. Konfigurera kubectl för att ansluta till kubernetes-klustret med kommandot az aks get-credentials . Följande kommando hämtar autentiseringsuppgifter för AKS-klustret med namnet myAKSCluster i myResourceGroup.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

Hämta exempelprogrammet

Den här snabbstarten använder Azure Vote-programmet.

  1. Klona programmet från GitHub med hjälp av git clone kommandot .

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Navigera till azure-vote katalogen med kommandot cd .

    cd azure-voting-app-redis/azure-vote/
    

Skapa och skicka exempelprogrammet till ACR

  • Skapa och push-överför avbildningen till din ACR med kommandot az acr build . I följande exempel skapas en avbildning med namnet azure-vote-front:v1 och push-överför den till myhelmacr ACR. Se till att du ersätter myhelmacr med namnet på din ACR.

    az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
    

Kommentar

Du kan också importera Helm-diagram till din ACR. Mer information finns i Skicka och hämta Helm-diagram till ett Azure-containerregister.

Skapa ditt Helm-diagram

  1. Generera ditt Helm-diagram med hjälp av helm create kommandot .

    helm create azure-vote-front
    
  2. Uppdatera azure-vote-front/Chart.yaml för att lägga till ett beroende för redis-diagrammet från https://charts.bitnami.com/bitnami diagramlagringsplatsen och uppdatera appVersion till v1, enligt följande exempel:

    Kommentar

    Containeravbildningsversionerna som visas i den här guiden har testats för att fungera med det här exemplet, men kanske inte den senaste versionen är tillgänglig.

    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. Uppdatera dina Helm-diagramberoenden med hjälp av helm dependency update kommandot .

    helm dependency update azure-vote-front
    
  4. Uppdatera azure-vote-front/values.yaml med följande ändringar.

    • Lägg till ett redis-avsnitt för att ange avbildningsinformation, containerport och distributionsnamn.
    • Lägg till ett servernamn för att ansluta klientdelsdelen till redis-distributionen.
    • Ändra image.repository till <loginServer>/azure-vote-front.
    • Ändra image.tag till v1.
    • Ändra service.type till LoadBalancer.

    Till exempel:

    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. Lägg till ett avsnitt i azure-vote-front/templates/deployment.yaml för att skicka namnet på redis-distributionen.env

    ...
          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 }}
    ...
    

Kör helm-diagrammet

  1. Installera programmet med hjälp av Helm-diagrammet med hjälp av helm install kommandot .

    helm install azure-vote-front azure-vote-front/
    
  2. Det tar några minuter för tjänsten att returnera en offentlig IP-adress. Övervaka förloppet med kommandot kubectl get service med --watch argumentet .

    kubectl get service azure-vote-front --watch
    

    När tjänsten är klar EXTERNAL-IP ändras värdet från <pending> till en IP-adress. Tryck CTRL+C för att stoppa kubectl klockprocessen.

      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. Gå till programmets lastbalanserare i en webbläsare med hjälp av <EXTERNAL-IP> för att se exempelprogrammet.

Ta bort klustret

  • Ta bort resursgruppen, AKS-klustret, Azure-containerregistret, containeravbildningarna som lagras i ACR och alla relaterade resurser med kommandot az group delete med parametern --yes för att bekräfta borttagningen och parametern --no-wait för att återgå till kommandotolken utan att vänta på att åtgärden ska slutföras.

    az group delete --name myResourceGroup --yes --no-wait
    

Kommentar

Om du skapade ditt AKS-kluster med en systemtilldelad hanterad identitet (standardidentitetsalternativet i den här snabbstarten) hanteras identiteten av plattformen och kräver inte borttagning.

Om du har skapat ditt AKS-kluster med tjänstens huvudnamn tas inte tjänstens huvudnamn bort när du tar bort klustret. Information om hur du tar bort tjänstens huvudnamn finns i överväganden och borttagning av AKS-tjänstens huvudnamn.

Nästa steg

Mer information om hur du använder Helm finns i Helm-dokumentationen.