Instalace existujících aplikací s Helmem ve službě Azure Kubernetes Service (AKS)
Helm je opensourcový nástroj pro balení, který vám pomůže nainstalovat a spravovat životní cyklus aplikací Kubernetes. Podobně jako správci balíčků pro Linux, jako je APT a Yum, můžete pomocí Nástroje Helm spravovat grafy Kubernetes, což jsou balíčky předem nakonfigurovaných prostředků Kubernetes.
Tento článek ukazuje, jak nakonfigurovat a používat Helm v clusteru Kubernetes ve službě Azure Kubernetes Service (AKS).
Než začnete
- Tento článek předpokládá, že máte existující cluster AKS. Pokud potřebujete cluster AKS, vytvořte ho pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal.
- Cluster AKS musí mít integrovaný ACR. Podrobnosti o vytvoření clusteru AKS s integrovaným ACR najdete v tématu Ověřování ve službě Azure Container Registry ze služby Azure Kubernetes Service.
- Potřebujete také nainstalované rozhraní příkazového řádku Helm, což je klient, který běží ve vašem vývojovém systému. Umožňuje spouštět, zastavovat a spravovat aplikace pomocí Nástroje Helm. Pokud používáte Azure Cloud Shell, rozhraní příkazového řádku Helm je už nainstalované. Pokyny k instalaci na místní platformě najdete v tématu Instalace Nástroje Helm.
Důležité
Helm je určený ke spuštění na linuxových uzlech. Pokud máte v clusteru uzly Windows Serveru, musíte zajistit, aby pody Helm byly naplánované jenom na uzlech Linuxu. Musíte také zajistit, aby všechny grafy Helm, které instalujete, byly naplánované tak, aby běžely na správných uzlech. Příkazy v tomto článku používají selektory uzlů k zajištění, že jsou pody naplánované na správné uzly, ale ne všechny grafy Helm mohou vystavit selektor uzlů. Můžete také zvážit použití dalších možností v clusteru, jako jsou tainty.
Ověření vaší verze Helmu
helm version
Pomocí příkazu ověřte, že máte nainstalovaný Helm 3.helm version
Následující příklad výstupu ukazuje instalaci Helmu verze 3.0.0:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Instalace aplikace s Helmem v3
Přidání úložišť Helm
Přidejte úložiště ingress-nginx pomocí příkazu úložiště Helm.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Vyhledání chartů Helm
Pomocí příkazu helm search vyhledejte předem připravené grafy Helm.
helm search repo ingress-nginx
Následující zhuštěný ukázkový výstup ukazuje některé grafy Helm, které jsou k dispozici pro použití:
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Pomocí příkazu helm repo update aktualizujte seznam grafů.
helm repo update
Následující příklad výstupu ukazuje úspěšnou aktualizaci úložiště:
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!⎈
Import obrázků chartu Helm do služby ACR
Tento článek používá chart Helm kontroleru příchozího přenosu dat NGINX, který spoléhá na tři image kontejneru.
Slouží
az acr import
k importu imagí kontroleru příchozího přenosu dat NGINX do služby 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
Poznámka:
Kromě importu imagí kontejnerů do služby ACR můžete do služby ACR také importovat charty Helm. Další informace najdete v tématu Vložení a vyžádání chartů Helm do registru kontejneru Azure.
Spuštění chartů Helm
Nainstalujte charty Helm pomocí příkazu Helm install a zadejte název verze a název grafu, který chcete nainstalovat.
Tip
Následující příklad vytvoří obor názvů Kubernetes pro prostředky příchozího přenosu dat pojmenované ingress-basic a je určen pro práci v rámci tohoto oboru názvů. Podle potřeby zadejte obor názvů pro vaše vlastní prostředí.
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=""
Následující zhuštěný ukázkový výstup ukazuje stav nasazení prostředků Kubernetes vytvořených chartem Helm:
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' ...
Pomocí příkazu získejte EXTERNÍ IP adresu vaší služby
kubectl get services
.kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
Následující příklad výstupu ukazuje EXTERNÍ IP adresu pro službu 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
Výpis vydaných verzí
Pomocí příkazu získejte seznam vydaných verzí nainstalovaných v clusteru
helm list
.helm list --namespace ingress-basic
Následující příklad výstupu ukazuje verzi ingress-nginx nasazenou v předchozím kroku:
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
Vyčištění prostředků
Nasazení chartu Helm vytváří prostředky Kubernetes, jako jsou pody, nasazení a služby.
Vyčistěte prostředky pomocí příkazu helm uninstall a zadejte název vydané verze.
helm uninstall --namespace ingress-basic ingress-nginx
Následující příklad výstupu ukazuje, že verze s názvem ingress-nginx byla odinstalována:
release "nginx-ingress" uninstalled
Pomocí příkazu odstraňte celý ukázkový obor názvů spolu s prostředky
kubectl delete
a zadejte název vašeho oboru názvů.kubectl delete namespace ingress-basic
Další kroky
Další informace o správě nasazení aplikací Kubernetes pomocí Nástroje Helm najdete v dokumentaci k Helmu.
Azure Kubernetes Service