Sdílet prostřednictvím


Instalace existujících aplikací pomocí Nástroje Helm v Azure Kubernetes Service (AKS)

Helm je opensourcový nástroj pro balení, který pomáhá instalovat a spravovat životní cyklus aplikací Kubernetes. Podobně jako správci balíčků pro Linux, jako jsou APT a Yum, můžete helm použít ke správě grafů Kubernetes, což jsou balíčky předkonfigurovaných prostředků Kubernetes.

V tomto článku se dozvíte, 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 PowerShell nebo Azure Portal.
  • Váš cluster AKS musí mít integrovanou ACR. Podrobnosti o vytvoření clusteru AKS s integrovanou službou ACR najdete v tématu Ověřování pomocí Azure Container Registry z 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 Helmu.

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. Je také potřeba zajistit, aby se všechny grafy Helmu, které nainstalujete, naplánovali tak, aby běžely na správných uzlech. Příkazy v tomto článku používají selektory uzlů , aby se zajistilo, že pody jsou naplánované na správné uzly, ale ne všechny grafy Helmu můžou vystavit selektor uzlů. Můžete také zvážit použití dalších možností v clusteru, jako jsou tainty.

Ověření verze Helmu

  • Pomocí příkazu helm version ověřte, že máte nainstalovaný Helm 3.

    helm version
    

    Následující příklad výstupu ukazuje nainstalovaný Helm verze 3.0.0:

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

Instalace aplikace pomocí Helmu 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

  1. Pomocí příkazu helm search vyhledejte předem připravené grafy Helm.

    helm search repo ingress-nginx
    

    Následující zhuštěný příklad výstupu 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...
    
  2. Aktualizujte seznam grafů pomocí příkazu helm repo update .

    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ů chartů Helm do ACR

V tomto článku se používá chart Helm kontroleru příchozího přenosu dat NGINX, který spoléhá na tři image kontejnerů.

  • Pomocí az acr import příkazu importujte image 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 ACR můžete do ACR importovat také charty Helm. Další informace najdete v tématu Nasdílení a vyžádání grafů Helm do registru kontejneru Azure.

Spuštění chartů Helm

  1. Nainstalujte charty Helm pomocí příkazu helm install a zadejte název verze a název chartu, který se má nainstalovat.

    Tip

    Následující příklad vytvoří obor názvů Kubernetes pro prostředky příchozího přenosu dat s názvem ingress-basic a je určený pro práci v tomto oboru názvů. Podle potřeby zadejte obor názvů pro 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ý příklad výstupu ukazuje stav nasazení prostředků Kubernetes vytvořených grafem 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. Pomocí příkazu získejte EXTERNAL-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 EXTERNAL-IP 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 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 vytvoří prostředky Kubernetes, jako jsou pody, nasazení a služby.

  • Vyčistěte prostředky pomocí příkazu helm uninstall a zadejte název verze.

    helm uninstall --namespace ingress-basic ingress-nginx
    

    Následující příklad výstupu ukazuje, že se verze ingress-nginx odinstalovala:

    release "nginx-ingress" uninstalled
    
  • Odstraňte celý ukázkový obor názvů spolu s prostředky pomocí kubectl delete příkazu a zadejte název 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.