Bestaande toepassingen installeren met Helm in Azure Kubernetes Service (AKS)
Helm is een opensource-verpakkingshulpprogramma 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 wordt beschreven hoe u Helm configureert en gebruikt in een Kubernetes-cluster op 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 een geïntegreerde ACR hebben. Zie Verifiëren met Azure Container Registry van Azure Kubernetes Service voor meer informatie over het maken van een AKS-cluster met een geïntegreerde ACR.
- U moet ook de Helm CLI hebben geïnstalleerd. Dit is de client die wordt uitgevoerd op uw ontwikkelsysteem. Hiermee kunt u toepassingen starten, stoppen en beheren met Helm. Als u de 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 zijn gepland voor uitvoering op Linux-knooppunten. U moet er ook voor zorgen dat alle Helm-grafieken die u installeert, ook op de juiste knooppunten worden uitgevoerd. De opdrachten in dit artikel gebruiken knooppuntkiezers om ervoor te zorgen dat pods worden gepland op de juiste knooppunten, maar niet in alle Helm-grafieken wordt een knooppuntkiezer weergegeven. 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 opslagplaats ingress-nginx toe met behulp van de opdracht Helm-opslagplaats .
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
De volgende verkorte voorbeelduitvoer toont 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 Helm-opslagplaats bijwerken .
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 de Helm-grafiek van de NGINX-ingangscontroller gebruikt, die afhankelijk is van drie containerinstallatiekopieën.
Gebruik
az acr import
om de installatiekopieën van de NGINX-ingangscontroller te importeren 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 opdracht Helm installeren en geef een releasenaam en de naam op van de grafiek die u wilt installeren.
Tip
In het volgende voorbeeld wordt een Kubernetes-naamruimte gemaakt voor de toegangsresources met de naam ingress-basic en is bedoeld om binnen die naamruimte te werken. Geef zo 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 zijn gemaakt door de Helm-grafiek:
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 EXTERNAL-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
De volgende voorbeelduitvoer toont de EXTERNAL-IP 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 op met releases 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 helm-opdracht verwijderen en geef de naam van uw release 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 opdracht en geef de
kubectl delete
naam van uw naamruimte op.kubectl delete namespace ingress-basic
Volgende stappen
Zie de Helm-documentatie voor meer informatie over het beheren van Kubernetes-toepassingsimplementaties met Helm.