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

A Helm egy nyílt forráskódú csomagolási eszköz, amely a Kubernetes-alkalmazások életciklusának telepítéséhez és kezeléséhez nyújt segítséget. A Linux-csomagkezelőkhez ,például az APT-hez és a Yumhoz hasonlóan a Helm is Kubernetes-diagramok kezelésére használható, 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 az AKS-ban.

Előkészületek

Ez a cikk feltételezi, hogy már van AKS-fürte. Ha AKS-fürtre van szüksége, tekintse meg az AKS rövid útmutatóját az Azure CLI vagy a Azure Portal.

Emellett a cikk feltételezi, hogy már van egy meglévő AKS-fürt integrált ACR-rel. Az AKS-fürtök integrált ACR-rel való létrehozásával kapcsolatos további információkért lásd: Hitelesítés Azure Container Registry a Azure Kubernetes Service.

Emellett telepítenie kell a Helm CLI-t is, amely a fejlesztői rendszeren futó ügyfél. Lehetővé teszi az alkalmazások Helm használatával való indítását, leállítását és kezelését. Ha a parancsokat Azure Cloud Shell, a Helm CLI már telepítve van. A helyi platformon való telepítési utasításokért lásd: A Helm telepítése.

Fontos

A Helm Linux-csomópontokon való futtatásra szolgál. Ha kiszolgáló-Windows található 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 rendszer a telepítve lévő Helm-diagramokat is a megfelelő csomópontokon futtassa. A cikkben található parancsok [node-selectors][k8s-node-selector] használatával győződnek meg arról, hogy a podok a megfelelő csomópontokra vannak ütemezve, de nem minden Helm-diagram teszi elérhetővé a csomópontválasztót. A fürtön más lehetőségeket is választhat, például a fertőzötteket.

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

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

helm version

Az alábbi példa a telepített Helm 3.0.0-s verzióját mutatja be:

$ helm version

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

A helm-repo paranccsal adja hozzá az ingress-nginx adattárat.

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

Helm-diagramok megkerese

A Helm-diagramokkal alkalmazások helyezhetők üzembe egy Kubernetes-fürtben. Az előre létrehozott Helm-diagramok kereséshez használja a helm keresési parancsot:

helm search repo ingress-nginx

Az alábbi rövid példakimenet néhány használható Helm-diagramot mutat be:

$ helm search repo ingress-nginx

NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
ingress-nginx/ingress-nginx     2.12.0          0.34.1          Ingress controller for Kubernetes using NGINX a...

A diagramok listájának frissítéséhez használja a Helm-adattára frissítése parancsot.

helm repo update

Az alábbi példa egy sikeres repo-frissítést mutat be:

$ helm repo update

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

A Helm-diagram által használt képek importálása az ACR-be

Ez a cikk az NGINX bejövő vezérlő Helm-diagramjáthasználja, amely három tárolóképre támaszkodik. A az acr import használatával importálhatja ezeket a rendszerképeket az ACR-be.

REGISTRY_NAME=<REGISTRY_NAME>
CONTROLLER_REGISTRY=k8s.gcr.io
CONTROLLER_IMAGE=ingress-nginx/controller
CONTROLLER_TAG=v0.48.1
PATCH_REGISTRY=docker.io
PATCH_IMAGE=jettech/kube-webhook-certgen
PATCH_TAG=v1.5.1
DEFAULTBACKEND_REGISTRY=k8s.gcr.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

Amellett, hogy tárolóképeket importál az ACR-be, Helm-diagramokat is importálhat az ACR-be. További információ: Helm-diagramok leküldése és leküldése egy Azure Container Registrybe.

Helm-diagramok futtatása

Diagramok Helm használatával való telepítéséhez használja a helm install parancsot, és adja meg a telepítandó diagram nevét és kiadási nevét. A Helm-diagramok telepítésének lépéseként telepítsen egy alapszintű nginx üzemelő példányt egy Helm-diagram használatával.

Tipp

Az alábbi példa létrehoz egy Kubernetes-névteret a bejövő forgalom alapszintű erőforrása számára, és ezen a névtéren belül kell működnie. Szükség 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 nginx-ingress ingress-nginx/ingress-nginx \
    --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.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

Az alábbi rövid példakimenet a Helm-diagram által létrehozott Kubernetes-erőforrások üzembe helyezé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'
...

Az kubectl get services paranccsal lekérte a szolgáltatás EXTERNAL-IP-címét.

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

Az alábbi parancs például az nginx-ingress-ingress-nginx-controller szolgáltatás EXTERNAL-IP-címét jeleníti meg:

$ kubectl --namespace ingress-basic get services -o wide -w nginx-ingress-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

Kiadási lista

A fürtön telepített kiadások listájának az paranccsal helm list megjelenik.

helm list --namespace ingress-basic

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

$ helm list --namespace ingress-basic
NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                   APP VERSION
nginx-ingress   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

Helm-diagram üzembe helyezésekor számos Kubernetes-erőforrás jön létre. Ezek az erőforrások lehetnek podok, üzemelő példányok és szolgáltatások. Az erőforrások eltávolításához használja a helm uninstall parancsot, és adja meg a kiadás nevét az előző helm list parancsban találhatóak szerint.

helm uninstall --namespace ingress-basic nginx-ingress

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

$ helm uninstall --namespace ingress-basic nginx-ingress

release "nginx-ingress" uninstalled

A teljes minta névtér törléséhez használja az parancsot, kubectl delete és adja meg a névtér nevét. A névtér összes erőforrása törölve lesz.

kubectl delete namespace ingress-basic

Következő lépések

A Kubernetes-alkalmazások Üzembe helyezésének Helm segítségével való kezelésével kapcsolatos további információkért tekintse meg a Helm dokumentációját.