Udostępnij za pośrednictwem


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ą przydzielone odpowiednim węzłom, ale nie wszystkie wykresy programu Helm mogą udostępniać selektor węzłów. Możesz również rozważyć użycie innych opcji w klastrze, takich jak skażenia.

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 stosując helm search.

    helm search repo ingress-nginx
    

    Następujące skrócone przykładowe dane wyjściowe pokazują niektóre z wykresów Helm dostępnych 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 helm repo update.

    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 wykresów Helm do usługi ACR

W tym artykule użyto Helm chart kontrolera NGINX ingress, który opiera się na trzech obrazach.

  • Użyj az acr import aby zaimportować obrazy kontrolera ruchu przychodzącego NGINX do 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ć chart'y 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 ingress o nazwie ingress-basic i ma działać w obrębie 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ący skrótowy przykład danych wyjściowych pokazuje stan wdrożenia zasobów Kubernetes utworzonych przez chart 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
    

Lista 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, używając polecenia helm uninstall i określ swoją 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.