Bestaande toepassingen installeren met Helm in Azure Kubernetes Service (AKS)

Helm is een opensource-verpakkingshulpprogramma waarmee u de levenscyclus van Kubernetes-toepassingen kunt installeren en beheren. Net als bij Linux-pakketbeheerders, zoals APT en Yum, kunt u Helm gebruiken om Kubernetes-grafieken te beheren. Dit zijn pakketten met vooraf geconfigureerde Kubernetes-resources.

In dit artikel wordt beschreven hoe u Helm configureert en gebruikt in een Kubernetes-cluster op Azure Kubernetes Service (AKS).

Voordat u begint

  • In dit artikel wordt ervan uitgegaan dat u een bestaand AKS-cluster hebt. Als u een AKS-cluster nodig hebt, maakt u er een met behulp van Azure CLI, Azure PowerShell of Azure Portal.
  • Uw AKS-cluster moet een geïntegreerde ACR hebben. Zie Verifiëren met Azure Container Registry van Azure Kubernetes Service voor meer informatie over het maken van een AKS-cluster met een geïntegreerde ACR.
  • U moet ook de Helm CLI hebben geïnstalleerd. Dit is de client die wordt uitgevoerd op uw ontwikkelsysteem. Hiermee kunt u toepassingen starten, stoppen en beheren met Helm. Als u de Azure Cloud Shell gebruikt, is de Helm CLI al geïnstalleerd. Zie Helm installeren voor installatie-instructies op uw lokale platform.

Belangrijk

Helm is bedoeld om te worden uitgevoerd op Linux-knooppunten. Als u Windows Server-knooppunten in uw cluster hebt, moet u ervoor zorgen dat Helm-pods alleen zijn gepland voor uitvoering op Linux-knooppunten. U moet er ook voor zorgen dat alle Helm-grafieken die u installeert, ook op de juiste knooppunten worden uitgevoerd. De opdrachten in dit artikel gebruiken knooppuntkiezers om ervoor te zorgen dat pods worden gepland op de juiste knooppunten, maar niet in alle Helm-grafieken wordt een knooppuntkiezer weergegeven. U kunt ook andere opties in uw cluster gebruiken, zoals taints.

Uw versie van Helm controleren

  • Gebruik de helm version opdracht om te controleren of Helm 3 is geïnstalleerd.

    helm version
    

    In de volgende voorbeelduitvoer ziet u dat Helm versie 3.0.0 is geïnstalleerd:

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

Een toepassing installeren met Helm v3

Helm-opslagplaatsen toevoegen

  • Voeg de opslagplaats ingress-nginx toe met behulp van de opdracht Helm-opslagplaats .

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

Helm-grafieken zoeken

  1. Zoek naar vooraf gemaakte Helm-grafieken met behulp van de helm-zoekopdracht .

    helm search repo ingress-nginx
    

    De volgende verkorte voorbeelduitvoer toont enkele van de Helm-grafieken die beschikbaar zijn voor gebruik:

    NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
    ingress-nginx/ingress-nginx     4.7.0           1.8.0           Ingress controller for Kubernetes using NGINX a...
    
  2. Werk de lijst met grafieken bij met behulp van de opdracht Helm-opslagplaats bijwerken .

    helm repo update
    

    In de volgende voorbeelduitvoer ziet u een geslaagde update van de opslagplaats:

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

De Helm-grafiekafbeeldingen importeren in uw ACR

In dit artikel wordt de Helm-grafiek van de NGINX-ingangscontroller gebruikt, die afhankelijk is van drie containerinstallatiekopieën.

  • Gebruik az acr import om de installatiekopieën van de NGINX-ingangscontroller te importeren in uw 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
    

    Notitie

    Naast het importeren van containerinstallatiekopieën in uw ACR, kunt u ook Helm-grafieken importeren in uw ACR. Zie Helm-grafieken pushen en ophalen naar een Azure-containerregister voor meer informatie.

Helm-grafieken uitvoeren

  1. Installeer Helm-grafieken met behulp van de opdracht Helm installeren en geef een releasenaam en de naam op van de grafiek die u wilt installeren.

    Tip

    In het volgende voorbeeld wordt een Kubernetes-naamruimte gemaakt voor de toegangsresources met de naam ingress-basic en is bedoeld om binnen die naamruimte te werken. Geef zo nodig een naamruimte op voor uw eigen omgeving.

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

    In de volgende verkorte voorbeelduitvoer ziet u de implementatiestatus van de Kubernetes-resources die zijn gemaakt door de Helm-grafiek:

    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. Haal het EXTERNAL-IP-adres van uw service op met behulp van de kubectl get services opdracht .

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

    De volgende voorbeelduitvoer toont de EXTERNAL-IP voor de service 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
    

Releases weergeven

  • Haal een lijst op met releases die op uw cluster zijn geïnstalleerd met behulp van de helm list opdracht .

    helm list --namespace ingress-basic
    

    In de volgende voorbeelduitvoer ziet u de ingress-nginx-release die in de vorige stap is geïmplementeerd:

    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
    

Resources opschonen

Als u een Helm-grafiek implementeert, worden Kubernetes-resources gemaakt, zoals pods, implementaties en services.

  • Schoon resources op met behulp van de helm-opdracht verwijderen en geef de naam van uw release op.

    helm uninstall --namespace ingress-basic ingress-nginx
    

    In de volgende voorbeelduitvoer ziet u dat de release met de naam ingress-nginx is verwijderd:

    release "nginx-ingress" uninstalled
    
  • Verwijder de volledige voorbeeldnaamruimte samen met de resources met behulp van de opdracht en geef de kubectl delete naam van uw naamruimte op.

    kubectl delete namespace ingress-basic
    

Volgende stappen

Zie de Helm-documentatie voor meer informatie over het beheren van Kubernetes-toepassingsimplementaties met Helm.