Sdílet prostřednictvím


Instalace existujících aplikací s Helmem ve službě Azure Kubernetes Service (AKS)

Helm je opensourcový nástroj pro balení, který vám pomůže nainstalovat a spravovat životní cyklus aplikací Kubernetes. Podobně jako správci balíčků pro Linux, jako je APT a Yum, můžete pomocí Nástroje Helm spravovat grafy Kubernetes, což jsou balíčky předem nakonfigurovaných prostředků Kubernetes.

Tento článek ukazuje, 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 PowerShellu nebo webu Azure Portal.
  • Cluster AKS musí mít integrovaný ACR. Podrobnosti o vytvoření clusteru AKS s integrovaným ACR najdete v tématu Ověřování ve službě Azure Container Registry ze služby 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 Nástroje Helm.

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. Musíte také zajistit, aby všechny grafy Helm, které instalujete, byly naplánované tak, aby běžely na správných uzlech. Příkazy v tomto článku používají selektory uzlů k zajištění, že jsou pody naplánované na správné uzly, ale ne všechny grafy Helm mohou vystavit selektor uzlů. Můžete také zvážit použití dalších možností v clusteru, jako jsou tainty.

Ověření vaší verze Helmu

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

    helm version
    

    Následující příklad výstupu ukazuje instalaci Helmu verze 3.0.0:

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

Instalace aplikace s Helmem 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ý ukázkový výstup 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. Pomocí příkazu helm repo update aktualizujte seznam grafů.

    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ů chartu Helm do služby ACR

Tento článek používá chart Helm kontroleru příchozího přenosu dat NGINX, který spoléhá na tři image kontejneru.

  • Slouží az acr import k importu imagí 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 služby ACR můžete do služby ACR také importovat charty Helm. Další informace najdete v tématu Vložení a vyžádání chartů 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 grafu, který chcete nainstalovat.

    Tip

    Následující příklad vytvoří obor názvů Kubernetes pro prostředky příchozího přenosu dat pojmenované ingress-basic a je určen pro práci v rámci tohoto oboru názvů. Podle potřeby zadejte obor názvů pro vaše 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ý ukázkový výstup ukazuje stav nasazení prostředků Kubernetes vytvořených chartem 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 EXTERNÍ IP adresu vaší službykubectl get services.

    kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
    

    Následující příklad výstupu ukazuje EXTERNÍ IP adresu 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 vydaných 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 vytváří prostředky Kubernetes, jako jsou pody, nasazení a služby.

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

    helm uninstall --namespace ingress-basic ingress-nginx
    

    Následující příklad výstupu ukazuje, že verze s názvem ingress-nginx byla odinstalována:

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