Meglévő alkalmazások telepítése a Helmdel a Azure Kubernetes Service (AKS) alkalmazásban

A Helm egy nyílt forráskódú csomagolási eszköz, amellyel telepítheti és kezelheti a Kubernetes-alkalmazások életciklusát. A Linux-csomagkezelőkhöz, például az APT-hez és a Yumhoz hasonlóan a Helm használatával kezelheti a Kubernetes-diagramokat, amelyek előre konfigurált Kubernetes-erőforrások csomagjai.

Ez a cikk bemutatja, hogyan konfigurálhatja és használhatja a Helmet egy Kubernetes-fürtben Azure Kubernetes Service (AKS) rendszeren.

Előkészületek

  • Ez a cikk feltételezi, hogy van egy meglévő AKS-fürtje. Ha AKS-fürtre van szüksége, hozzon létre egyet az Azure CLI, Azure PowerShell vagy Azure Portal használatával.
  • Az AKS-fürtnek integrált ACR-sel kell rendelkeznie. Az integrált ACR-sel rendelkező AKS-fürt létrehozásával kapcsolatos részletekért lásd: Hitelesítés Azure Container Registry a Azure Kubernetes Service-ból.
  • Telepítenie kell a Helm CLI-t is, amely a fejlesztési rendszeren futó ügyfél. Lehetővé teszi alkalmazások indítását, leállítását és kezelését a Helm használatával. Ha az Azure Cloud Shell használja, a Helm CLI már telepítve van. A helyi platformra vonatkozó telepítési utasításokért lásd: A Helm telepítése.

Fontos

A Helm linuxos csomópontokon való futtatására szolgál. Ha Windows Server-csomópontokkal rendelkezik a fürtben, győződjön meg arról, hogy a Helm-podok csak Linux-csomópontokon való futtatásra vannak ütemezve. Arról is gondoskodnia kell, hogy a telepített Helm-diagramok is a megfelelő csomópontokon fussanak. A cikkben szereplő parancsok csomópontválasztókkal biztosítják, hogy a podok a megfelelő csomópontokra legyenek ütemezve, de nem minden Helm-diagram tehet közzé csomópontválasztót. Más lehetőségeket is használhat a fürtön, például a fertőzöttségeket.

A Helm verziójának ellenőrzése

  • helm version Az paranccsal ellenőrizze, hogy telepítve van-e a Helm 3.

    helm version
    

    Az alábbi példakimenet a Helm 3.0.0-s verzióját mutatja be:

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

Alkalmazás telepítése a Helm v3-val

Helm-adattárak hozzáadása

  • Adja hozzá az ingress-nginx adattárat a Helm-adattár paranccsal.

    helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    

Helm-diagramok keresése

  1. Előre létrehozott Helm-diagramok keresése a Helm Search paranccsal.

    helm search repo ingress-nginx
    

    Az alábbi sűrített példakimenet néhány használható Helm-diagramot mutat be:

    NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
    ingress-nginx/ingress-nginx     4.7.0           1.8.0           Ingress controller for Kubernetes using NGINX a...
    
  2. Frissítse a diagramok listáját a Helm-adattár frissítési parancsával.

    helm repo update
    

    Az alábbi példakimenet egy sikeres adattárfrissítést mutat be:

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

Helm-diagramképek importálása az ACR-be

Ez a cikk az NGINX bejövőforgalom-vezérlő Helm-diagramját használja, amely három tárolórendszerképre támaszkodik.

  • A használatával az acr import importálhatja az NGINX bejövőforgalom-vezérlő lemezképeit az ACR-be.

    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
    

    Megjegyzés

    A tárolórendszerképek ACR-be importálása mellett Helm-diagramokat is importálhat az ACR-be. További információ: Helm-diagramok leküldése és lekérése egy Azure-tárolóregisztrációs adatbázisba.

Helm-diagramok futtatása

  1. Telepítse a Helm-diagramokat a helm install paranccsal, és adja meg a kiadás nevét és a telepítendő diagram nevét.

    Tipp

    Az alábbi példa létrehoz egy Kubernetes-névteret az ingress-basic nevű bejövő erőforrásokhoz, és a névtéren belül kíván működni. Igény szerint adjon meg egy névteret a saját környezetéhez.

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

    Az alábbi sűrített példakimenet a Helm-diagram által létrehozott Kubernetes-erőforrások üzembehelyezési állapotát mutatja be:

    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. Kérje le a szolgáltatás EXTERNAL-IP-címét az kubectl get services paranccsal.

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

    Az alábbi példakimenet az ingress-nginx-ingress-nginx-controller szolgáltatás EXTERNAL-IP-címét mutatja be:

    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
    

Kiadások listázása

  • A parancs használatával helm list lekérheti a fürtön telepített kiadások listáját.

    helm list --namespace ingress-basic
    

    Az alábbi példakimenet az előző lépésben üzembe helyezett ingress-nginx kiadást mutatja be:

    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
    

Az erőforrások eltávolítása

A Helm-diagram üzembe helyezése Kubernetes-erőforrásokat hoz létre, például podokat, üzemelő példányokat és szolgáltatásokat.

  • Törölje az erőforrásokat a helm uninstall paranccsal, és adja meg a kiadás nevét.

    helm uninstall --namespace ingress-basic ingress-nginx
    

    Az alábbi példakimenet az ingress-nginx nevű kiadás eltávolítását mutatja be:

    release "nginx-ingress" uninstalled
    
  • Törölje a teljes minta-névteret és az erőforrásokat a kubectl delete paranccsal, és adja meg a névtér nevét.

    kubectl delete namespace ingress-basic
    

Következő lépések

A Kubernetes-alkalmazástelepítések Helmtel való kezelésével kapcsolatos további információkért tekintse meg a Helm dokumentációját.