Quickstart: Ontwikkelen in Azure Kubernetes Service (AKS) met Helm

Helm is een opensource-pakketprogramma waarmee u de levenscyclus van Kubernetes-toepassingen kunt installeren en beheren. Helm beheert Kubernetes-grafieken, vergelijkbaar met Linux-pakketbeheerders, zoals APT en Yum. Dit zijn pakketten met vooraf geconfigureerde Kubernetes-resources.

In deze quickstart gebruikt u Helm om een toepassing in AKS te verpakken en uit te voeren. Zie Bestaande toepassingen installeren met Helm in AKS voor meer informatie over het installeren van een bestaande toepassing met Behulp van Helm.

Vereisten

Een Azure Container Registry maken

U moet uw containerinstallatiekopieën opslaan in een Azure Container Registry (ACR) om uw toepassing in uw AKS-cluster uit te voeren met behulp van Helm. De registernaam moet uniek zijn binnen Azure en mag 5-50 alfanumerieke tekens bevatten. Alleen kleine letters zijn toegestaan. De SKU Basic is een toegangspunt voor ontwikkelingsdoeleinden dat is geoptimaliseerd voor kosten, met een balans tussen opslag en doorvoer.

  1. Maak een Azure-resourcegroep met behulp van de opdracht az group create . In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.

    az group create --name myResourceGroup --location eastus
    
  2. Maak een Azure Container Registry met een unieke naam door de opdracht az acr create aan te roepen. In het volgende voorbeeld wordt een ACR met de naam myhelmacr gemaakt met de Basic SKU.

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

    De uitvoer moet er ongeveer uitzien als in de volgende verkorte voorbeelduitvoer. Noteer uw loginServer-waarde voor uw ACR voor gebruik in een latere stap.

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

Een AKS-cluster maken

Uw nieuwe AKS-cluster heeft toegang nodig tot uw ACR om de containerinstallatiekopieën op te halen en uit te voeren.

  • Maak een AKS-cluster met behulp van de opdracht az aks create met de --attach-acr parameter om het cluster toegang te verlenen tot uw ACR. In het volgende voorbeeld wordt een AKS-cluster met de naam myAKSCluster gemaakt en toegang verleend tot de myhelmacr ACR. Zorg ervoor dat u vervangt door myhelmacr de naam van uw ACR.

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

Verbinding maken naar uw AKS-cluster

Als u een Kubernetes-cluster lokaal wilt verbinden, gebruikt u de Kubernetes-opdrachtregelclient kubectl. kubectl is al geïnstalleerd als u Azure Cloud Shell gebruikt.

  1. Installeer kubectl lokaal met behulp van de opdracht az aks install-cli .

    az aks install-cli
    
  2. Configureer kubectl deze om verbinding te maken met uw Kubernetes-cluster met behulp van de opdracht az aks get-credentials . Met de volgende opdracht worden referenties opgehaald voor het AKS-cluster met de naam myAKSCluster in myResourceGroup.

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

De voorbeeldtoepassing downloaden

In deze quickstart wordt de Azure Vote-toepassing gebruikt.

  1. Kloon de toepassing vanuit GitHub met behulp van de git clone opdracht.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Navigeer naar de azure-vote map met behulp van de cd opdracht.

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

De voorbeeldtoepassing bouwen en pushen naar ACR

  • Bouw en push de installatiekopieën naar uw ACR met behulp van de opdracht az acr build . In het volgende voorbeeld wordt een installatiekopieën met de naam azure-vote-front:v1 gebouwd en naar de myhelmacr ACR gepusht. Zorg ervoor dat u vervangt door myhelmacr de naam van uw ACR.

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

Notitie

U kunt Helm-grafieken ook importeren in uw ACR. Zie Helm-grafieken pushen en ophalen naar een Azure-containerregister voor meer informatie.

Uw Helm-grafiek maken

  1. Genereer uw Helm-grafiek met behulp van de helm create opdracht.

    helm create azure-vote-front
    
  2. Werk azure-vote-front/Chart.yaml bij om een afhankelijkheid voor het redis-diagram toe te voegen vanuit de opslagplaats voor grafieken https://charts.bitnami.com/bitnami en bij te werken appVersion naar v1, zoals wordt weergegeven in het volgende voorbeeld:

    Notitie

    De versies van de containerinstallatiekopieën die in deze handleiding worden weergegeven, zijn getest om met dit voorbeeld te werken, maar zijn mogelijk niet de meest recente versie beschikbaar.

    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. Werk uw Helm-grafiekafhankelijkheden bij met behulp van de helm dependency update opdracht.

    helm dependency update azure-vote-front
    
  4. Werk azure-vote-front/values.yaml bij met de volgende wijzigingen.

    • Voeg een redis-sectie toe om de afbeeldingsgegevens, containerpoort en implementatienaam in te stellen.
    • Voeg een back-endnaam toe om het front-endgedeelte te verbinden met de redis-implementatie .
    • Wijzig image.repository in <loginServer>/azure-vote-front.
    • Wijzig image.tag in v1.
    • Wijzig service.type in LoadBalancer.

    Voorbeeld:

    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. Voeg een env sectie toe aan azure-vote-front/templates/deployment.yaml om de naam van de redis-implementatie door te geven.

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

Uw Helm-grafiek uitvoeren

  1. Installeer uw toepassing met behulp van uw Helm-grafiek met behulp van de helm install opdracht.

    helm install azure-vote-front azure-vote-front/
    
  2. Het duurt enkele minuten voordat de service een openbaar IP-adres retourneert. Bewaak de voortgang met behulp van de kubectl get service opdracht met het --watch argument.

    kubectl get service azure-vote-front --watch
    

    Wanneer de service gereed is, verandert de EXTERNAL-IP waarde van <pending> een IP-adres. Druk CTRL+C om het kubectl controleproces te stoppen.

      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. Navigeer in een browser naar de load balancer van uw toepassing met behulp van de <EXTERNAL-IP> voorbeeldtoepassing.

Het cluster verwijderen

  • Verwijder uw resourcegroep, AKS-cluster, Azure-containerregister, containerinstallatiekopieën die zijn opgeslagen in de ACR en alle gerelateerde resources met behulp van de opdracht az group delete met de --yes parameter om verwijdering te bevestigen en de --no-wait parameter om terug te keren naar de opdrachtprompt zonder te wachten tot de bewerking is voltooid.

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

Notitie

Als u uw AKS-cluster hebt gemaakt met een door het systeem toegewezen beheerde identiteit (de standaardidentiteitsoptie in deze quickstart), wordt de identiteit beheerd door het platform en hoeft deze niet te worden verwijderd.

Als u uw AKS-cluster met een service-principal hebt gemaakt, wordt de service-principal niet verwijderd wanneer u het cluster verwijdert. Zie overwegingen en verwijdering van AKS-service-principals om de service-principal te verwijderen.

Volgende stappen

Zie de Helm-documentatie voor meer informatie over het gebruik van Helm.