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

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

  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 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

  1. 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'
    ...
    
  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
    

    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.