Installera befintliga program med Helm i Azure Kubernetes Service (AKS)
Helm är ett paketeringsverktyg med öppen källkod som hjälper dig att installera och hantera livscykeln för Kubernetes-program. Precis som Linux-pakethanterare, till exempel APT och Yum, kan du använda Helm för att hantera Kubernetes-diagram, som är paket med förkonfigurerade Kubernetes-resurser.
Den här artikeln visar hur du konfigurerar och använder Helm i ett Kubernetes-kluster i Azure Kubernetes Service (AKS).
Innan du börjar
- Den här artikeln förutsätter att du har ett befintligt AKS-kluster. Om du behöver ett AKS-kluster skapar du ett med Hjälp av Azure CLI, Azure PowerShell eller Azure Portal.
- AKS-klustret måste ha en integrerad ACR. Mer information om hur du skapar ett AKS-kluster med en integrerad ACR finns i Autentisera med Azure Container Registry från Azure Kubernetes Service.
- Du behöver också Helm CLI installerat, vilket är den klient som körs i ditt utvecklingssystem. Det gör att du kan starta, stoppa och hantera program med Helm. Om du använder Azure Cloud Shell är Helm CLI redan installerat. Installationsinstruktioner på din lokala plattform finns i Installera Helm.
Viktigt!
Helm är avsett att köras på Linux-noder. Om du har Windows Server-noder i klustret måste du se till att Helm-poddar endast är schemalagda att köras på Linux-noder. Du måste också se till att alla Helm-diagram som du installerar också är schemalagda att köras på rätt noder. Kommandona i den här artikeln använder nodväljare för att se till att poddar schemaläggs till rätt noder, men inte alla Helm-diagram kan exponera en nodväljare. Du kan också överväga att använda andra alternativ i klustret, till exempel taints.
Verifiera din version av Helm
helm version
Använd kommandot för att kontrollera att Du har Helm 3 installerat.helm version
Följande exempelutdata visar Helm version 3.0.0 installerad:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Installera ett program med Helm v3
Lägga till Helm-lagringsplatser
Lägg till lagringsplatsen ingress-nginx med kommandot helm repo.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Hitta Helm-diagram
Sök efter förskapade Helm-diagram med hjälp av helm-sökkommandot .
helm search repo ingress-nginx
Följande komprimerade exempelutdata visar några av de Helm-diagram som är tillgängliga för användning:
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Uppdatera listan över diagram med hjälp av helm-lagringsplatsens uppdateringskommando .
helm repo update
Följande exempelutdata visar en lyckad lagringsplatsuppdatering:
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!⎈
Importera Helm-diagrambilderna till din ACR
Den här artikeln använder Helm-diagrammet NGINX-ingresskontrollant, som förlitar sig på tre containeravbildningar.
Använd
az acr import
för att importera NGINX-ingresskontrollantbilderna till din 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
Kommentar
Förutom att importera containeravbildningar till din ACR kan du även importera Helm-diagram till din ACR. Mer information finns i Skicka och hämta Helm-diagram till ett Azure-containerregister.
Köra Helm-diagram
Installera Helm-diagram med hjälp av helm-installationskommandot och ange ett versionsnamn och namnet på diagrammet som ska installeras.
Dricks
I följande exempel skapas ett Kubernetes-namnområde för ingressresurserna med namnet ingress-basic och är avsett att fungera inom det namnområdet. Ange ett namnområde för din egen miljö efter behov.
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=""
Följande komprimerade exempelutdata visar distributionsstatusen för Kubernetes-resurserna som skapats av Helm-diagrammet:
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' ...
Hämta tjänstens EXTERNA IP-adress med hjälp av
kubectl get services
kommandot .kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
Följande exempelutdata visar EXTERNAL-IP för tjänsten 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
Lista versioner
Hämta en lista över versioner som är installerade i klustret med hjälp av
helm list
kommandot .helm list --namespace ingress-basic
Följande exempelutdata visar den ingress-nginx-version som distribuerades i föregående steg:
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
Rensa resurser
När du distribuerar ett Helm-diagram skapas Kubernetes-resurser som poddar, distributioner och tjänster.
Rensa resurser med hjälp av helm-avinstallationskommandot och ange ditt versionsnamn.
helm uninstall --namespace ingress-basic ingress-nginx
Följande exempelutdata visar att versionen med namnet ingress-nginx har avinstallerats:
release "nginx-ingress" uninstalled
Ta bort hela exempelnamnområdet tillsammans med resurserna med hjälp av
kubectl delete
kommandot och ange namnområdets namn.kubectl delete namespace ingress-basic
Nästa steg
Mer information om hur du hanterar Kubernetes-programdistributioner med Helm finns i Helm-dokumentationen.
Azure Kubernetes Service