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
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
- Azure CLI installerat.
- Helm v3 installerat.
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.
Installera
kubectllokalt med kommandotaz aks install-cli:az aks install-cliKonfigurera
kubectlför att ansluta till kubernetes-klustret med kommandotaz 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.