Guida introduttiva: Sviluppare nel servizio Azure Kubernetes con Helm
Helm è uno strumento per la creazione di pacchetti open source che consente di installare e gestire il ciclo di vita delle applicazioni Kubernetes. Analogamente agli strumenti di gestione pacchetti Linux come APT e Yum, Helm gestisce i grafici Kubernetes, che sono pacchetti di risorse Kubernetes preconfigurati.
In questa guida introduttiva si usa Helm per creare un pacchetto ed eseguire un'applicazione nel servizio Azure Kubernetes. Per informazioni sull'installazione di un'applicazione esistente con Helm, vedere Installare applicazioni esistenti con Helm nel servizio Azure Kubernetes.
Prerequisiti
- Una sottoscrizione di Azure. Se non hai una sottoscrizione Azure, crea un account gratuito.
- Interfaccia della riga di comando di Azure o Azure PowerShell installati.
- Helm v3 installato.
Creare un Registro Azure Container
È necessario archiviare le immagini del contenitore in un Registro Azure Container per eseguire l'applicazione nel cluster del servizio Azure Kubernetes usando Helm. Il nome del registro deve essere univoco in Azure e contenere da 5 a 50 caratteri alfanumerici. Sono consentiti solo caratteri minuscoli. Lo SKU Basic è un punto di ingresso con costi ottimali a fini di sviluppo, che assicura l'equilibrio tra spazio di archiviazione e velocità effettiva.
Creare un gruppo di risorse di Azure con il comando az group create. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.
az group create --name myResourceGroup --location eastus
Creare un Registro Azure Container con un nome univoco chiamando il comando az acr create . L'esempio seguente crea un record di controllo di accesso denominato myhelmacr con lo SKU Basic.
az acr create --resource-group myResourceGroup --name myhelmacr --sku Basic
L'output dovrebbe essere simile all'output di esempio condensato seguente. Prendere nota del valore loginServer per il Registro Azure Container da usare in un passaggio successivo.
{ "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" }
Creare un cluster del servizio Azure Kubernetes
Il nuovo cluster del servizio Azure Kubernetes deve accedere al Registro Azure Container per eseguire il pull delle immagini del contenitore ed eseguirle.
Creare un cluster del servizio Azure Kubernetes usando il comando az aks create con il parametro
--attach-acr
per concedere al cluster l'accesso al Registro Azure Container. L'esempio seguente crea un cluster del servizio Azure Kubernetes denominato myAKSCluster e concede l'accesso al Registro Azure Container myhelmacr. Assicurarsi di sostituiremyhelmacr
con il nome del Registro Azure Container.az aks create --resource-group myResourceGroup --name myAKSCluster --location eastus --attach-acr myhelmacr --generate-ssh-keys
Connettersi al cluster del servizio Azure Kubernetes
Per connettere un cluster Kubernetes in locale, usare il client da riga di comando Kubernetes kubectl. kubectl
è già installato se si usa Azure Cloud Shell.
Per installare
kubectl
in locale, usare il comando az aks install-cli.az aks install-cli
Configura
kubectl
per connetterti al cluster Kubernetes usando il comando az aks get-credentials. Il comando seguente ottiene le credenziali per il cluster AKS denominato myAKSCluster in myResourceGroup.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Scaricare l'applicazione di esempio
Questa guida introduttiva usa l'applicazione Azure Vote.
Clonare l'applicazione da GitHub usando il comando
git clone
.git clone https://github.com/Azure-Samples/azure-voting-app-redis.git
Passare alla directory
azure-vote
usando il comandocd
.cd azure-voting-app-redis/azure-vote/
Compilare ed eseguire il push dell'applicazione di esempio in Registro Azure Container
Compilare ed eseguire il push dell'immagine nel Registro Azure Container usando il comando az acr build . L'esempio seguente compila un'immagine denominata azure-vote-front:v1 e la inserisce nel Registro Azure Container myhelmacr. Assicurarsi di sostituire
myhelmacr
con il nome del Registro Azure Container.az acr build --image azure-vote-front:v1 --registry myhelmacr --file Dockerfile .
Nota
È anche possibile importare grafici Helm nel Registro Azure Container. Per altre informazioni, vedere Eseguire il push e il pull dei grafici Helm in un registro Contenitori di Azure.
Creare il grafico Helm
Generare il grafico Helm usando il comando
helm create
.helm create azure-vote-front
Aggiornare azure-vote-front/Chart.yaml per aggiungere una dipendenza per il grafico redis dal repository del grafico
https://charts.bitnami.com/bitnami
e aggiornareappVersion
av1
, come illustrato nell'esempio seguente:Nota
Le versioni dell'immagine del contenitore illustrate in questa guida sono state testate per funzionare con questo esempio, ma potrebbero non essere la versione più recente disponibile.
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
Aggiornare le dipendenze del grafico Helm usando il comando
helm dependency update
.helm dependency update azure-vote-front
Aggiornare azure-vote-front/values.yaml con le modifiche seguenti.
- Aggiungere una sezione redis per impostare i dettagli dell'immagine, la porta del contenitore e il nome della distribuzione.
- Aggiungere un backendName per connettere la parte front-end alla distribuzione redis.
- Modificare image.repository in
<loginServer>/azure-vote-front
. - Modificare image.tag in
v1
. - Modificare service.type in LoadBalancer.
Ad esempio:
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 ...
Aggiungere una sezione
env
ad azure-vote-front/templates/deployment.yaml per passare il nome della distribuzione 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 }} ...
Eseguire il grafico Helm
Installare l'applicazione usando il grafico Helm usando il comando
helm install
.helm install azure-vote-front azure-vote-front/
Ci vogliono alcuni minuti perché il servizio restituisca un indirizzo IP pubblico. Monitorare lo stato di avanzamento usando il comando
kubectl get service
con l'argomento--watch
.kubectl get service azure-vote-front --watch
Quando il servizio è pronto, il valore
EXTERNAL-IP
passa da<pending>
a un indirizzo IP. PremereCTRL+C
per arrestare il processo di controllokubectl
.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
Passare al servizio di bilanciamento del carico dell'applicazione in un browser usando
<EXTERNAL-IP>
per visualizzare l'applicazione di esempio.
Eliminare il cluster
Rimuovere il gruppo di risorse, il cluster del servizio Azure Kubernetes, il Registro Azure Container, le immagini del contenitore archiviate nel Registro Azure Container e tutte le risorse correlate usando il comando az group delete con il parametro
--yes
per confermare l'eliminazione e il parametro--no-wait
da restituire al prompt dei comandi senza attendere il completamento dell'operazione.az group delete --name myResourceGroup --yes --no-wait
Nota
Se il cluster del servizio Azure Kubernetes è stato creato con un'identità gestita assegnata dal sistema (l'opzione di identità predefinita in questa guida introduttiva), l'identità viene gestita dalla piattaforma e non richiede la rimozione.
Se è stato creato il cluster del servizio Azure Kubernetes con un'entità servizio, l'entità servizio non viene rimossa quando si elimina il cluster. Per rimuovere l'entità servizio, vedere le considerazioni sull'entità servizio servizio Azure Kubernetes e la sua eliminazione.
Passaggi successivi
Per altre informazioni sull'uso di Helm, vedere la documentazionedi Helm.
Azure Kubernetes Service