Instalowanie istniejących aplikacji za pomocą narzędzia Helm w usłudze Azure Kubernetes Service (AKS)
Helm to narzędzie do tworzenia pakietów typu open source, które ułatwia instalowanie cyklu życia aplikacji Kubernetes i zarządzanie nim. Podobnie jak w przypadku menedżerów pakietów systemu Linux, takich jak APT i Yum, można użyć narzędzia Helm do zarządzania wykresami Kubernetes, które są pakietami wstępnie skonfigurowanych zasobów Kubernetes.
W tym artykule przedstawiono sposób konfigurowania i używania narzędzia Helm w klastrze Kubernetes w usłudze Azure Kubernetes Service (AKS).
Zanim rozpoczniesz
- W tym artykule założono, że masz istniejący klaster usługi AKS. Jeśli potrzebujesz klastra usługi AKS, utwórz go przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Klaster usługi AKS musi mieć zintegrowaną usługę ACR. Aby uzyskać szczegółowe informacje na temat tworzenia klastra usługi AKS za pomocą zintegrowanego rejestru ACR, zobacz Uwierzytelnianie za pomocą usługi Azure Container Registry z usługi Azure Kubernetes Service.
- Potrzebny jest również zainstalowany interfejs wiersza polecenia programu Helm, który jest klientem uruchomionym w systemie deweloperów. Umożliwia uruchamianie, zatrzymywanie i zarządzanie aplikacjami za pomocą programu Helm. Jeśli używasz usługi Azure Cloud Shell, interfejs wiersza polecenia programu Helm jest już zainstalowany. Aby uzyskać instrukcje dotyczące instalacji na platformie lokalnej, zobacz Instalowanie programu Helm.
Ważne
Program Helm jest przeznaczony do uruchamiania w węzłach systemu Linux. Jeśli w klastrze znajdują się węzły systemu Windows Server, należy upewnić się, że zasobniki programu Helm mają być uruchamiane tylko w węzłach systemu Linux. Należy również upewnić się, że wszystkie zainstalowane wykresy programu Helm również mają być uruchamiane na odpowiednich węzłach. Polecenia w tym artykule używają selektorów węzłów, aby upewnić się, że zasobniki są zaplanowane do odpowiednich węzłów, ale nie wszystkie wykresy programu Helm mogą uwidocznić selektor węzła. Możesz również rozważyć użycie innych opcji w klastrze, takich jak defekty.
Weryfikowanie wersji programu Helm
helm version
Użyj polecenia , aby sprawdzić, czy masz zainstalowany program Helm 3.helm version
Następujące przykładowe dane wyjściowe pokazują zainstalowane narzędzie Helm w wersji 3.0.0:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
Instalowanie aplikacji za pomocą programu Helm w wersji 3
Dodawanie repozytoriów programu Helm
Dodaj repozytorium ingress-nginx przy użyciu polecenia helm repo.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
Znajdowanie wykresów programu Helm
Wyszukaj wstępnie utworzone wykresy helm przy użyciu polecenia wyszukiwania helm.
helm search repo ingress-nginx
Następujące skrócone przykładowe dane wyjściowe pokazują niektóre wykresy helm dostępne do użycia:
NAME CHART VERSION APP VERSION DESCRIPTION ingress-nginx/ingress-nginx 4.7.0 1.8.0 Ingress controller for Kubernetes using NGINX a...
Zaktualizuj listę wykresów przy użyciu polecenia update repozytorium helm.
helm repo update
W poniższych przykładowych danych wyjściowych przedstawiono pomyślną aktualizację repozytorium:
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!⎈
Importowanie obrazów wykresu helm do usługi ACR
W tym artykule użyto wykresu helm kontrolera ruchu przychodzącego NGINX, który opiera się na trzech obrazach kontenerów.
Służy
az acr import
do importowania obrazów kontrolera ruchu przychodzącego NGINX do usługi 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
Uwaga
Oprócz importowania obrazów kontenerów do usługi ACR można również zaimportować wykresy helm do usługi ACR. Aby uzyskać więcej informacji, zobacz Wypychanie i ściąganie wykresów Helm do rejestru kontenerów platformy Azure.
Uruchamianie wykresów programu Helm
Zainstaluj wykresy programu Helm przy użyciu polecenia instalacji narzędzia Helm i określ nazwę wydania oraz nazwę wykresu do zainstalowania.
Napiwek
Poniższy przykład tworzy przestrzeń nazw kubernetes dla zasobów przychodzących o nazwie ingress-basic i ma działać w tej przestrzeni nazw. Określ przestrzeń nazw dla własnego środowiska zgodnie z potrzebami.
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=""
Następujące skrócone przykładowe dane wyjściowe pokazują stan wdrożenia zasobów Kubernetes utworzonych przez pakiet 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' ...
Pobierz zewnętrzny adres IP usługi przy użyciu
kubectl get services
polecenia .kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
Następujące przykładowe dane wyjściowe pokazują adres EXTERNAL-IP dla usługi 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
Wyświetlanie listy wydań
Pobierz listę wersji zainstalowanych w klastrze przy użyciu
helm list
polecenia .helm list --namespace ingress-basic
Następujące przykładowe dane wyjściowe pokazują wydanie ingress-nginx wdrożone w poprzednim 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
Czyszczenie zasobów
Wdrożenie wykresu programu Helm powoduje utworzenie zasobów kubernetes, takich jak zasobniki, wdrożenia i usługi.
Wyczyść zasoby przy użyciu polecenia dezinstalacji narzędzia Helm i określ nazwę wydania.
helm uninstall --namespace ingress-basic ingress-nginx
Następujące przykładowe dane wyjściowe pokazują, że wersja o nazwie ingress-nginx została odinstalowana:
release "nginx-ingress" uninstalled
Usuń całą przykładową przestrzeń nazw wraz z zasobami przy użyciu
kubectl delete
polecenia i określ nazwę przestrzeni nazw.kubectl delete namespace ingress-basic
Następne kroki
Aby uzyskać więcej informacji na temat zarządzania wdrożeniami aplikacji Kubernetes za pomocą programu Helm, zobacz dokumentację programu Helm.
Azure Kubernetes Service