Rychlý start: Vývoj ve službě Azure Kubernetes Service (AKS) s využitím Helmu

Helm je opensourcový nástroj pro balení, který vám pomůže nainstalovat a spravovat životní cyklus aplikací Kubernetes. Podobně jako správci balíčků pro Linux, jako je APT a Yum, helm spravuje grafy Kubernetes, což jsou balíčky předem nakonfigurovaných prostředků Kubernetes.

V tomto rychlém startu použijete Helm k zabalení a spuštění aplikace v AKS. Informace o instalaci existující aplikace pomocí Nástroje Helm naleznete v tématu Instalace existujících aplikací pomocí Nástroje Helm v AKS.

Požadavky

Vytvoření registru služby Azure Container Registry

Ke spuštění aplikace v clusteru AKS pomocí Helmu musíte ukládat image kontejnerů do služby Azure Container Registry (ACR). Název vašeho registru musí být v rámci Azure jedinečný a musí obsahovat 5 až 50 alfanumerických znaků. Jsou povoleny pouze malá písmena. Skladová položka Basic představuje vstupní bod optimalizovaný z hlediska nákladů pro účely vývoje a poskytuje vyváženou kombinaci úložiště a propustnosti.

  1. Pomocí příkazu az group create vytvořte skupinu prostředků Azure. Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.

    az group create --name myResourceGroup --location eastus
    
  2. Vytvořte službu Azure Container Registry s jedinečným názvem zavoláním příkazu az acr create . Následující příklad vytvoří ACR s názvem myhelmacr s skladovou položku Basic .

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

    Výstup by měl vypadat podobně jako následující zhuštěný ukázkový výstup. Poznamenejte si hodnotu loginServer , kterou má ACR použít v pozdějším kroku.

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

Vytvoření clusteru AKS

Váš nový cluster AKS potřebuje přístup k ACR, aby načítá image kontejneru a spustil je.

  • Vytvořte cluster AKS pomocí příkazu az aks create s parametrem --attach-acr , který clusteru udělí přístup k vašemu ACR. Následující příklad vytvoří cluster AKS s názvem myAKSCluster a udělí mu přístup k ACR myhelmacru . Nezapomeňte nahradit myhelmacr názvem služby ACR.

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

Připojení do clusteru AKS

K místnímu připojení clusteru Kubernetes použijete klienta příkazového řádku Kubernetes kubectl. kubectl je už nainstalovaný, pokud používáte Azure Cloud Shell.

  1. Místní instalaci kubectl pomocí příkazu az aks install-cli .

    az aks install-cli
    
  2. Nakonfigurujte kubectl připojení ke clusteru Kubernetes pomocí příkazu az aks get-credentials . Následující příkaz získá přihlašovací údaje pro cluster AKS s názvem myAKSCluster v myResourceGroup.

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

Stažení ukázkové aplikace

V tomto rychlém startu se používá aplikace Azure Vote.

  1. Naklonujte aplikaci z GitHubu git clone pomocí příkazu.

    git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
    
  2. Pomocí příkazu přejděte do azure-vote adresáře cd .

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

Sestavení a nasdílení ukázkové aplikace do ACR

  • Sestavte a nasdílejte image do služby ACR pomocí příkazu az acr build . Následující příklad sestaví image s názvem azure-vote-front:v1 a nasdílí ji do ACR myhelmacru . Nezapomeňte nahradit myhelmacr názvem služby ACR.

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

Poznámka:

Do služby ACR můžete také importovat grafy Helm. Další informace najdete v tématu Vložení a vyžádání chartů Helm do registru kontejneru Azure.

Vytvoření chartu Helm

  1. Vygenerujte chart Helm pomocí helm create příkazu.

    helm create azure-vote-front
    
  2. Aktualizujte azure-vote-front/Chart.yaml a přidejte závislost pro graf Redis z https://charts.bitnami.com/bitnami úložiště grafů a aktualizujte appVersion na v1, jak je znázorněno v následujícím příkladu:

    Poznámka:

    Verze imagí kontejneru uvedené v této příručce byly testovány tak, aby fungovaly s tímto příkladem, ale nemusí být nejnovější dostupnou verzí.

    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. Pomocí příkazu aktualizujte závislosti chartu helm dependency update Helm.

    helm dependency update azure-vote-front
    
  4. Aktualizujte azure-vote-front/values.yaml následujícími změnami.

    • Přidejte oddíl Redis pro nastavení podrobností o imagi, portu kontejneru a názvu nasazení.
    • Přidejte back-endName pro připojení front-endové části k nasazení Redis.
    • Změňte image.repository na <loginServer>/azure-vote-front.
    • Změňte image.tag na v1.
    • Změňte service.type na LoadBalancer.

    Příklad:

    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. env Přidejte do azure-vote-front/templates/deployment.yaml oddíl, který předá název nasazení Redis.

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

Spuštění chartu Helm

  1. Pomocí příkazu nainstalujte aplikaci pomocí chartu helm install Helm.

    helm install azure-vote-front azure-vote-front/
    
  2. Vrácení veřejné IP adresy trvá několik minut. Sledujte průběh pomocí kubectl get service příkazu s argumentem --watch .

    kubectl get service azure-vote-front --watch
    

    Až bude služba připravená, EXTERNAL-IP hodnota se změní z <pending> IP adresy. Stisknutím CTRL+C zastavíte proces kukátku kubectl .

      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. V prohlížeči přejděte k nástroji pro vyrovnávání zatížení vaší aplikace pomocí <EXTERNAL-IP> ukázkové aplikace.

Odstranění clusteru

  • Odeberte skupinu prostředků, cluster AKS, registr kontejneru Azure, image kontejnerů uložené v ACR a všechny související prostředky pomocí příkazu az group delete s parametrem k --yes potvrzení odstranění a parametru --no-wait , který se vrátí do příkazového řádku bez čekání na dokončení operace.

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

Poznámka:

Pokud jste cluster AKS vytvořili se spravovanou identitou přiřazenou systémem (výchozí možnost identity v tomto rychlém startu), identita se spravuje platformou a nevyžaduje odebrání.

Pokud jste vytvořili cluster AKS s instančním objektem, instanční objekt se při odstranění clusteru neodebere. Pokud chcete odebrat instanční objekt, podívejte se na důležité informace a odstranění instančního objektu AKS.

Další kroky

Další informace o používání Nástroje Helm najdete v dokumentaci k Helmu.