Quickstart: Ontwikkelen op Azure Kubernetes Service (AKS) met Helm
Helm is een opensource-pakketprogramma waarmee u de levenscyclus van Kubernetes-toepassingen kunt installeren en beheren. Helm is vergelijkbaar met Linux-pakketbeheerders zoals APT en Yum en beheert Kubernetes-grafieken. Dit zijn pakketten van vooraf geconfigureerde Kubernetes-resources.
In deze quickstart gebruikt u Helm om een toepassing in AKS te verpakken en uit te voeren. Zie de handleiding Bestaande toepassingen installeren met Helm in AKS voor meer informatie over het installeren van een bestaande toepassing met Helm.
Vereisten
- Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis account maken.
- Azure CLI geïnstalleerd.
- Helm v3 geïnstalleerd.
Een Azure Container Registry maken
U moet uw containerafbeeldingen opslaan in een Azure Container Registry (ACR) om uw toepassing in uw AKS-cluster uit te voeren met behulp van Helm. Geef uw eigen registernaam op die uniek is in Azure en 5-50 alfanumerieke tekens bevat. De SKU Basic is een toegangspunt voor ontwikkelingsdoeleinden dat is geoptimaliseerd voor kosten, met een balans tussen opslag en doorvoer.
In het onderstaande voorbeeld wordt az acr create gebruikt om een ACR met de naam MyHelmACR te maken in MyResourceGroup met de Basic-SKU.
az group create --name MyResourceGroup --location eastus
az acr create --resource-group MyResourceGroup --name MyHelmACR --sku Basic
De uitvoer is vergelijkbaar met het volgende voorbeeld. Noteer de waarde van loginServer voor uw ACR, aangezien u deze in een latere stap gaat gebruiken. In het onderstaande voorbeeld myhelmacr.azurecr.io de loginServer voor 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"
}
Een AKS-cluster maken
Uw nieuwe AKS-cluster moet toegang hebben tot uw ACR om de container-afbeeldingen op te halen en uit te voeren. Gebruik de volgende opdracht om:
- Maak een AKS-cluster met de naam MyAKS en koppel MyHelmACR.
- Verleen het MyAKS-cluster toegang tot uw MyHelmACR ACR.
az aks create -g MyResourceGroup -n MyAKS --location eastus --attach-acr MyHelmACR --generate-ssh-keys
Verbinding maken AKS-cluster maken
Als u een Kubernetes-cluster lokaal wilt verbinden, gebruikt u de Kubernetes-opdrachtregelclient, kubectl. kubectl is al geïnstalleerd als u Azure Cloud Shell.
Installeer
kubectllokaal met behulp van de opdrachtaz aks install-cli:az aks install-cliConfigureer
kubectlom verbinding te maken met uw Kubernetes-cluster met behulp van de opdrachtaz aks get-credentials. In het volgende opdrachtvoorbeeld worden referenties voor het AKS-cluster met de naam MyAKS in myResourceGroup opgeslagen:az aks get-credentials --resource-group MyResourceGroup --name MyAKS
De voorbeeldtoepassing downloaden
In deze quickstart wordt gebruikgemaakt van de Azure Vote-toepassing. Kloon de toepassing vanuit GitHub navigeer naar de azure-vote map .
git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
cd azure-voting-app-redis/azure-vote/
De voorbeeldtoepassing bouwen en pushen naar de ACR
Gebruik de voorgaande Dockerfile om de opdracht az acr build uit te voeren om een afbeelding te bouwen en naar het register te pushen. De . aan het einde van de opdracht stelt de locatie van de Dockerfile (in dit geval de huidige map).
az acr build --image azure-vote-front:v1 \
--registry MyHelmACR \
--file Dockerfile .
Notitie
Naast het importeren van containerafbeeldingen in uw ACR, kunt u ook Helm-grafieken importeren in uw ACR. Zie Push and pull Helm charts to an Azure container registry (Helm-grafieken pushen en pullen naar een Azure-containerregister) voor meer informatie.
Uw Helm-grafiek maken
Genereer uw Helm-grafiek met behulp van de helm create opdracht .
helm create azure-vote-front
Werk azure-vote-front/Chart.yaml bij om een afhankelijkheid toe te voegen voor de redis-grafiek uit de grafiekopslagplaats en https://charts.bitnami.com/bitnami werk bij naar appVersion v1 . Bijvoorbeeld:
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
Werk uw Helm-grafiekafhankelijkheden bij met helm dependency update behulp van :
helm dependency update azure-vote-front
Werk azure-vote-front/values.yaml bij:
- Voeg een redis-sectie toe om de afbeeldingsdetails, containerpoort en implementatienaam in te stellen.
- Voeg een back-endName 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.
Bijvoorbeeld:
# 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
...
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
Installeer uw toepassing met behulp van uw Helm-grafiek met behulp van de helm install opdracht .
helm install azure-vote-front azure-vote-front/
Het duurt enkele minuten voordat de service een openbaar IP-adres heeft. Controleer de voortgang met behulp kubectl get service van de opdracht met het argument --watch .
$ 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
Navigeer naar de load balancer van uw toepassing in een browser met behulp van de <EXTERNAL-IP> om de voorbeeldtoepassing te bekijken.
Het cluster verwijderen
Gebruik de opdracht az group delete om de resourcegroep, het AKS-cluster, het containerregister, de containerafbeeldingen die zijn opgeslagen in de ACR en alle gerelateerde resources te verwijderen.
az group delete --name MyResourceGroup --yes --no-wait
Notitie
Wanneer u het cluster verwijdert, wordt de Azure Active Directory-service-principal die door het AKS-cluster wordt gebruikt niet verwijderd. Zie Overwegingen voor en verwijdering van AKS service-principal voor stappen voor het verwijderen van de service-principal.
Als u een beheerde identiteit hebt gebruikt, wordt de identiteit beheerd door het platform en hoeft deze niet te worden verwijderd.
Volgende stappen
Zie de Helm-documentatie voor meer informatie over het gebruik van Helm.