Bestaande toepassingen installeren met Helm in Azure Kubernetes Service (AKS)
Helm is een opensource-pakketprogramma waarmee u de levenscyclus van Kubernetes-toepassingen kunt installeren en beheren. Net als bij Linux-pakketbeheerders, zoals APT en Yum, kunt u Helm gebruiken om Kubernetes-grafieken te beheren. Dit zijn pakketten met vooraf geconfigureerde Kubernetes-resources.
In dit artikel leest u hoe u Helm configureert en gebruikt in een Kubernetes-cluster in Azure Kubernetes Service (AKS).
Voordat u begint
- In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt. Als u een AKS-cluster nodig hebt, maakt u er een met behulp van Azure CLI, Azure PowerShell of Azure Portal.
- Uw AKS-cluster moet beschikken over een geïntegreerde ACR. Zie Verifiëren met Azure Container Registry vanuit Azure Kubernetes Service voor meer informatie over het maken van een AKS-cluster met een geïntegreerde ACR.
- U hebt ook de Helm CLI geïnstalleerd. Dit is de client die wordt uitgevoerd op uw ontwikkelsysteem. Hiermee kunt u toepassingen starten, stoppen en beheren met Helm. Als u Azure Cloud Shell gebruikt, is de Helm CLI al geïnstalleerd. Zie Helm installeren voor installatie-instructies op uw lokale platform.
Belangrijk
Helm is bedoeld om te worden uitgevoerd op Linux-knooppunten. Als u Windows Server-knooppunten in uw cluster hebt, moet u ervoor zorgen dat Helm-pods alleen worden uitgevoerd op Linux-knooppunten. U moet er ook voor zorgen dat helm-grafieken die u installeert, ook worden uitgevoerd op de juiste knooppunten. De opdrachten in dit artikel gebruiken knooppuntselectors om ervoor te zorgen dat pods zijn gepland op de juiste knooppunten, maar niet alle Helm-grafieken kunnen een knooppuntkiezer beschikbaar maken. U kunt ook andere opties in uw cluster gebruiken, zoals taints.
Uw versie van Helm controleren
Gebruik de
helm version
opdracht om te controleren of Helm 3 is geïnstalleerd.helm version
In de volgende voorbeelduitvoer ziet u dat Helm versie 3.0.0 is geïnstalleerd:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Een toepassing installeren met Helm v3
Helm-opslagplaatsen toevoegen
Voeg de ingress-nginx-opslagplaats toe met behulp van de helm-opslagplaatsopdracht .
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Helm-grafieken zoeken
Zoek naar vooraf gemaakte Helm-grafieken met behulp van de helm-zoekopdracht .
helm search repo ingress-nginx
In de volgende verkorte voorbeelduitvoer ziet u enkele van de Helm-grafieken die beschikbaar zijn voor gebruik:
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Werk de lijst met grafieken bij met behulp van de opdracht voor het bijwerken van de Helm-opslagplaats.
helm repo update
In de volgende voorbeelduitvoer ziet u een geslaagde update van de opslagplaats:
Hang tight while we grab the latest from your chart repositories... ...Successfully got an update from the "ingress-nginx" chart repository Update Complete. ⎈ Happy Helming!⎈
De Helm-grafiekafbeeldingen importeren in uw ACR
In dit artikel wordt gebruikgemaakt van de Helm-grafiek van de NGINX-ingangscontroller, die afhankelijk is van drie containerinstallatiekopieën.
Hiermee
az acr import
importeert u de installatiekopieën van de NGINX-ingangscontroller in uw ACR.REGISTRY_NAME=<REGISTRY_NAME> CONTROLLER_REGISTRY=registry.k8s.io CONTROLLER_IMAGE=ingress-nginx/controller CONTROLLER_TAG=v1.8.0 PATCH_REGISTRY=registry.k8s.io PATCH_IMAGE=ingress-nginx/kube-webhook-certgen PATCH_TAG=v20230407 DEFAULTBACKEND_REGISTRY=registry.k8s.io DEFAULTBACKEND_IMAGE=defaultbackend-amd64 DEFAULTBACKEND_TAG=1.5 az acr import --name $REGISTRY_NAME --source $CONTROLLER_REGISTRY/$CONTROLLER_IMAGE:$CONTROLLER_TAG --image $CONTROLLER_IMAGE:$CONTROLLER_TAG az acr import --name $REGISTRY_NAME --source $PATCH_REGISTRY/$PATCH_IMAGE:$PATCH_TAG --image $PATCH_IMAGE:$PATCH_TAG az acr import --name $REGISTRY_NAME --source $DEFAULTBACKEND_REGISTRY/$DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG --image $DEFAULTBACKEND_IMAGE:$DEFAULTBACKEND_TAG
Notitie
Naast het importeren van containerinstallatiekopieën in uw ACR, kunt u ook Helm-grafieken importeren in uw ACR. Zie Helm-grafieken pushen en ophalen naar een Azure-containerregister voor meer informatie.
Helm-grafieken uitvoeren
Installeer Helm-grafieken met behulp van de helm-installatieopdracht en geef een releasenaam en de naam op van de grafiek die moet worden geïnstalleerd.
Tip
In het volgende voorbeeld wordt een Kubernetes-naamruimte gemaakt voor de toegangsbeheerobjectbronnen met de naam ingress-basic en is bedoeld om binnen die naamruimte te werken. Geef indien nodig een naamruimte op voor uw eigen omgeving.
ACR_URL=<REGISTRY_URL> # Create a namespace for your ingress resources kubectl create namespace ingress-basic # Use Helm to deploy an NGINX ingress controller helm install ingress-nginx ingress-nginx/ingress-nginx \ --version 4.0.13 \ --namespace ingress-basic \ --set controller.replicaCount=2 \ --set controller.nodeSelector."kubernetes\.io/os"=linux \ --set controller.image.registry=$ACR_URL \ --set controller.image.image=$CONTROLLER_IMAGE \ --set controller.image.tag=$CONTROLLER_TAG \ --set controller.image.digest="" \ --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux \ --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \ --set controller.admissionWebhooks.patch.image.registry=$ACR_URL \ --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE \ --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG \ --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux \ --set defaultBackend.image.registry=$ACR_URL \ --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE \ --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG \ --set defaultBackend.image.digest=""
In de volgende verkorte voorbeelduitvoer ziet u de implementatiestatus van de Kubernetes-resources die door de Helm-grafiek zijn gemaakt:
NAME: nginx-ingress LAST DEPLOYED: Wed Jul 28 11:35:29 2021 NAMESPACE: ingress-basic STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: The ingress-nginx controller has been installed. It may take a few minutes for the LoadBalancer IP to be available. You can watch the status by running 'kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-ingress-nginx-controller' ...
Haal het EXTERNE IP-adres van uw service op met behulp van de
kubectl get services
opdracht.kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
In de volgende voorbeelduitvoer ziet u het EXTERNAL-IP-adres voor de service ingress-nginx-ingress-nginx-controller :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR nginx-ingress-ingress-nginx-controller LoadBalancer 10.0.254.93 <EXTERNAL_IP> 80:30004/TCP,443:30348/TCP 61s app.kubernetes.io/component=controller,app.kubernetes.io/instance=nginx-ingress,app.kubernetes.io/name=ingress-nginx
Releases weergeven
Haal een lijst met releases op die op uw cluster zijn geïnstalleerd met behulp van de
helm list
opdracht.helm list --namespace ingress-basic
In de volgende voorbeelduitvoer ziet u de ingress-nginx-release die in de vorige stap is geïmplementeerd:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ingress-nginx ingress-basic 1 2021-07-28 11:35:29.9623734 -0500 CDT deployed ingress-nginx-3.34.0 0.47.0
Resources opschonen
Als u een Helm-grafiek implementeert, worden Kubernetes-resources gemaakt, zoals pods, implementaties en services.
Schoon resources op met behulp van de opdracht helm verwijderen en geef uw releasenaam op.
helm uninstall --namespace ingress-basic ingress-nginx
In de volgende voorbeelduitvoer ziet u dat de release met de naam ingress-nginx is verwijderd:
release "nginx-ingress" uninstalled
Verwijder de volledige voorbeeldnaamruimte samen met de resources met behulp van de
kubectl delete
opdracht en geef de naamruimtenaam op.kubectl delete namespace ingress-basic
Volgende stappen
Zie de Helm-documentatie voor meer informatie over het beheren van Kubernetes-toepassingsimplementaties met Helm.
Azure Kubernetes Service