Instalowanie istniejących aplikacji przy użyciu programu 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 menedżerowie pakietów systemu Linux, tacy 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, Azure PowerShell lub 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 usługi ACR, zobacz Uwierzytelnianie przy użyciu Azure Container Registry z 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 instalacji na platformie lokalnej, zobacz Instalowanie programu Helm.

Ważne

Program Helm jest przeznaczony do uruchamiania w węzłach systemu Linux. Jeśli masz węzły systemu Windows Server w klastrze, musisz upewnić się, że zasobniki programu Helm są zaplanowane tylko do uruchamiania w węzłach systemu Linux. Należy również upewnić się, że wszystkie zainstalowane wykresy programu Helm są również zaplanowane do uruchomienia w 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 helm mogą uwidocznić selektor węzła. Możesz również rozważyć użycie innych opcji w klastrze, takich jak taints.

Weryfikowanie wersji programu Helm

  • Użyj polecenia , helm version aby sprawdzić, czy masz zainstalowany program Helm 3.

    helm version
    

    W poniższych przykładowych danych wyjściowych przedstawiono zainstalowany program Helm w wersji 3.0.0:

    version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
    

Instalowanie aplikacji przy użyciu 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

  1. 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...
    
  2. Zaktualizuj listę wykresów przy użyciu polecenia aktualizacji repozytorium helm .

    helm repo update
    

    Następujące przykładowe dane wyjściowe pokazują 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

  1. Zainstaluj wykresy programu Helm przy użyciu polecenia instalacji programu Helm i określ nazwę wydania oraz nazwę wykresu do zainstalowania.

    Porada

    Poniższy przykład tworzy przestrzeń nazw Kubernetes dla zasobów ruchu przychodzącego 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 wykres 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'
    ...
    
  2. 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
    

    W poniższych przykładowych danych wyjściowych przedstawiono 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
    

    W poniższych przykładowych danych wyjściowych przedstawiono 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 helm powoduje utworzenie zasobów platformy Kubernetes, takich jak zasobniki, wdrożenia i usługi.

  • Wyczyść zasoby przy użyciu polecenia odinstalowywania 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.