Rychlý start: Vývoj na Azure Kubernetes Service (AKS) s helmem

Helm je open source 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, spravuje Helm 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. Další podrobnosti o instalaci existující aplikace pomocí Nástroje Helm najdete v návodu k instalaci existujících aplikací pomocí Nástroje Helm v AKS.

Požadavky

Vytvoření služby Azure Container Registry

Image kontejnerů budete muset uložit do úložiště Azure Container Registry (ACR), aby se vaše aplikace spouštěl v clusteru AKS pomocí nástroje Helm. Zadejte jedinečný název registru v rámci Azure, který obsahuje 5 až 50 alfanumerických znaků. 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.

Následující příklad používá az acr create k vytvoření ACR s názvem MyHelmACR ve skupině MyResourceGroup se základní SKU.

az group create --name MyResourceGroup --location eastus
az acr create --resource-group MyResourceGroup --name MyHelmACR --sku Basic

Výstup bude podobný následujícímu příkladu. Poznamenejte si hodnotu loginServer pro ACR, protože ji použijete v pozdějším kroku. V následujícím příkladu je myhelmacr.azurecr.io loginServer pro MyHelmACR.

{
  "adminUserEnabled": false,
  "creationDate": "2019-06-11T13:35:17.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 si vyžádal image kontejneru a spouštěl je. Následující příkaz použijte k:

  • Vytvořte cluster AKS s názvem MyAKS a připojte MyHelmACR.
  • Udělte clusteru MyAKS přístup k ACR MyHelmACR.
az aks create -g MyResourceGroup -n MyAKS --location eastus  --attach-acr MyHelmACR --generate-ssh-keys

Připojení ke clusteru AKS

Pokud chcete připojit cluster Kubernetes místně, použijte klienta příkazového řádku Kubernetes kubectl. kubectl je již nainstalován, pokud používáte Azure Cloud Shell.

  1. Nainstalujte kubectl ji místně pomocí az aks install-cli příkazu :

    az aks install-cli
    
  2. Nakonfigurujte kubectl připojení ke clusteru Kubernetes pomocí az aks get-credentials příkazu . Následující příklad příkazu získá přihlašovací údaje pro cluster AKS s názvem MyAKS ve skupině Prostředků MyResourceGroup:

    az aks get-credentials --resource-group MyResourceGroup --name MyAKS
    

Stažení ukázkové aplikace

V tomto rychlém startu se používá aplikace Azure Vote. Naklonujte aplikaci z GitHub a přejděte do azure-vote adresáře .

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
cd azure-voting-app-redis/azure-vote/

Sestavení a nasouzování ukázkové aplikace do ACR

Pomocí předchozího souboru Dockerfile spusťte příkaz az acr build, který sestaví image a nas nabízené image do registru. Na konci příkazu se nastaví umístění souboru . Dockerfile (v tomto případě aktuální adresář).

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

Poznámka

Kromě importu imagí kontejnerů do ACR můžete do ACR importovat také grafy Helm. Další informace najdete v tématu Nabízení a stažení grafů Helm do registru kontejneru Azure.

Vytvoření chartu Helm

Vygenerování chartu Helm pomocí helm create příkazu .

helm create azure-vote-front

Aktualizace azure-vote-front/Chart.yaml pro přidání závislosti pro chart Redis z úložiště chartů a https://charts.bitnami.com/bitnami aktualizace na appVersion v1 . Příklad:

apiVersion: v2
name: azure-vote-front
description: A Helm chart for Kubernetes

dependencies:
  - name: redis
    version: 14.7.1
    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

Aktualizujte závislosti chartu Helm pomocí helm dependency update příkazu :

helm dependency update azure-vote-front

Aktualizace souboru azure-vote-front/values.yaml:

  • Přidejte oddíl redis pro nastavení podrobností image, 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:

# Default values for azure-vote-front.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

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

Přidáním env oddílu do souboru azure-vote-front/templates/deployment.yaml předáte 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

Nainstalujte aplikaci pomocí chartu Helm pomocí helm install příkazu .

helm install azure-vote-front azure-vote-front/

Vrácení veřejné IP adresy službou trvá několik minut. Průběh můžete monitorovat kubectl get service pomocí příkazu s --watch argumentem .

$ kubectl get service azure-vote-front --watch
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

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

Odstranění clusteru

K odebrání skupiny prostředků, clusteru AKS, registru kontejneru, imagí kontejnerů uložených v ACR a všech souvisejících prostředků použijte příkaz az group delete.

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

Poznámka

Při odstranění clusteru se neodebere instanční objekt služby Azure Active Directory používaný clusterem AKS. Postup odebrání instančního objektu najdete v tématu věnovaném aspektům instančního objektu AKS a jeho odstranění.

Pokud jste použili spravovanou identitu, je identita spravovaná platformou a nevyžaduje odebrání.

Další kroky

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