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. På liknande sätt som med 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. Mer information om hur du installerar ett befintligt program med Hjälp av Helm finns i guiden Installera befintliga program med Helm i AKS.

Förutsättningar

Skapa ett Azure Container Registry

Du måste lagra dina containeravbildningar i en Azure Container Registry (ACR) för att köra programmet i ditt AKS-kluster med hjälp av Helm. Ange ditt eget registernamn som är unikt i Azure och som innehåller 5–50 alfanumeriska tecken. Den grundläggande SKU:n är en kostnadsoptimerad startpunkt för utvecklingsändamål som ger en bra balans mellan lagring och dataflöde.

I exemplet nedan används az acr create för att skapa en ACR med namnet MyHelmACR i MyResourceGroup med basic-SKU:n.

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

Utdata ser ut ungefär som i följande exempel. Anteckna ditt loginServer-värde för ACR eftersom du kommer att använda det i ett senare steg. I exemplet nedan är myhelmacr.azurecr.io loginServer för 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"
}

Skapa ett AKS-kluster

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

  • Skapa ett AKS-kluster med namnet MyAKS och bifoga MyHelmACR.
  • Ge MyAKS-klustret åtkomst till din MyHelmACR ACR.
az aks create -g MyResourceGroup -n MyAKS --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-kommandoradsklienten kubectl. kubectl har redan installerats 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 kommandoexempel hämtar autentiseringsuppgifter för AKS-klustret med namnet MyAKS i MyResourceGroup:

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

Hämta exempelprogrammet

Den här snabbstarten använder Azure Vote-programmet. Klona programmet från GitHub och gå till azure-vote katalogen .

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

Skapa och push-skicka exempelprogrammet till ACR

Använd föregående Dockerfile och kör kommandot az acr build för att skapa och skicka en avbildning till registret. i . slutet av kommandot anger platsen för Dockerfile (i det här fallet den aktuella katalogen).

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

Anteckning

Förutom att importera containeravbildningar till ACR kan du också importera Helm-diagram till ACR. Mer information finns i Push and pull Helm charts to an Azure container registry (Skicka och hämta Helm-diagram till ett Azure-containerregister).

Skapa ditt Helm-diagram

Generera Helm-diagrammet med hjälp av helm create kommandot .

helm create azure-vote-front

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 appVersion uppdatera till v1 . Till exempel:

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

Uppdatera dina Helm-diagramberoenden med hjälp av helm dependency update :

helm dependency update azure-vote-front

Uppdatera azure-vote-front/values.yaml:

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

Till exempel:

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

Lägg till env ett avsnitt i azure-vote-front/templates/deployment.yaml för att skicka namnet på Redis-distributionen.

...
      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öra Helm-diagrammet

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

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

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

$ 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

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

Ta bort klustret

Använd kommandot az group delete för att ta bort resursgruppen, AKS-klustret, containerregistret, containeravbildningarna som lagras i ACR och alla relaterade resurser.

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

Anteckning

När du tar bort klustret tas Azure Active Directory-tjänstens huvudnamn, som används av AKS-klustret, inte bort. Stegvisa instruktioner om hur du tar bort tjänstens huvudnamn finns i dokumentationen om viktiga överväganden och borttagning av AKS-tjänsten.

Om du använde en hanterad identitet hanteras identiteten av plattformen och kräver inte borttagning.

Nästa steg

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