Aracılığıyla paylaş


Azure Kubernetes Service'te (AKS) Helm ile mevcut uygulamaları yükleme

Helm , Kubernetes uygulamalarının yaşam döngüsünü yüklemenize ve yönetmenize yardımcı olan bir açık kaynak paketleme aracıdır. APT ve Yum gibi Linux paket yöneticilerine benzer şekilde Helm'i kullanarak önceden yapılandırılmış Kubernetes kaynaklarının paketleri olan Kubernetes grafiklerini yönetebilirsiniz.

Bu makalede, Azure Kubernetes Service (AKS) üzerindeki bir Kubernetes kümesinde Helm'i yapılandırma ve kullanma adımları gösterilmektedir.

Başlamadan önce

  • Bu makalede, mevcut bir AKS kümeniz olduğu varsayılır. AKS kümesine ihtiyacınız varsa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturun.
  • AKS kümenizin tümleşik bir ACR'ye sahip olması gerekir. Tümleşik ACR ile AKS kümesi oluşturma hakkında ayrıntılı bilgi için bkz . Azure Kubernetes Service'ten Azure Container Registry ile kimlik doğrulaması.
  • Geliştirme sisteminizde çalışan istemci olan Helm CLI'nin de yüklü olması gerekir. Helm ile uygulamaları başlatmanıza, durdurmanıza ve yönetmenize olanak tanır. Azure Cloud Shell kullanıyorsanız Helm CLI zaten yüklüdür. Yerel platformunuzda yükleme yönergeleri için bkz . Helm'i Yükleme.

Önemli

Helm, Linux düğümlerinde çalışacak şekilde tasarlanmıştır. Kümenizde Windows Server düğümleriniz varsa Helm podlarının yalnızca Linux düğümlerinde çalışacak şekilde zamanlandığından emin olmanız gerekir. Ayrıca yüklediğiniz Helm grafiklerinin de doğru düğümlerde çalışacak şekilde zamanlandığından emin olmanız gerekir. Bu makaledeki komutlar, podların doğru düğümlere zamanlandığından emin olmak için düğüm seçicileri kullanır, ancak tüm Helm grafikleri bir düğüm seçiciyi kullanıma sunmayabilir. Ayrıca, kümenizde renk tonları gibi diğer seçenekleri de kullanabilirsiniz.

Helm sürümünüzü doğrulama

  • Helm 3'ü yüklediğinizi helm version doğrulamak için komutunu kullanın.

    helm version
    

    Aşağıdaki örnek çıktıda Helm sürüm 3.0.0'ın yüklü olduğu gösterilmektedir:

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

Helm v3 ile uygulama yükleme

Helm depoları ekleme

  • Helm repo komutunu kullanarak ingress-nginx deposunu ekleyin.

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

Helm grafiklerini bulma

  1. Helm search komutunu kullanarak önceden oluşturulmuş Helm grafiklerini arayın .

    helm search repo ingress-nginx
    

    Aşağıdaki daraltılmış örnek çıktı, kullanılabilecek Helm grafiklerinden bazılarını gösterir:

    NAME                            CHART VERSION   APP VERSION     DESCRIPTION                                       
    ingress-nginx/ingress-nginx     4.7.0           1.8.0           Ingress controller for Kubernetes using NGINX a...
    
  2. Helm repo update komutunu kullanarak grafik listesini güncelleştirin.

    helm repo update
    

    Aşağıdaki örnek çıkışta başarılı bir depo güncelleştirmesi gösterilmektedir:

    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 grafiği görüntülerini ACR'nize aktarma

Bu makalede üç kapsayıcı görüntüsüne dayalı NGINX giriş denetleyicisi Helm grafiği kullanılmaktadır.

  • NGINX giriş denetleyicisi görüntülerini ACR'nize aktarmak için kullanın az acr import .

    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
    

    Not

    Kapsayıcı görüntülerini ACR'nize aktarmanın yanı sıra Helm grafiklerini de ACR'nize aktarabilirsiniz. Daha fazla bilgi için bkz . Helm grafiklerini Azure kapsayıcı kayıt defterine gönderme ve çekme.

Helm grafiklerini çalıştırma

  1. Helm yükleme komutunu kullanarak Helm grafiklerini yükleyin ve bir yayın adı ve yüklenecek grafiğin adını belirtin.

    İpucu

    Aşağıdaki örnek, giriş kaynakları için ingress-basic adlı bir Kubernetes ad alanı oluşturur ve bu ad alanı içinde çalışması amaçlanmıştır. Gerektiğinde kendi ortamınız için bir ad alanı belirtin.

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

    Aşağıdaki daraltılmış örnek çıktı, Helm grafiği tarafından oluşturulan Kubernetes kaynaklarının dağıtım durumunu gösterir:

    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. komutunu kullanarak hizmetinizin EXTERNAL-IP değerini kubectl get services alın.

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

    Aşağıdaki örnek çıktıda, ing-nginx-ingress-nginx-controller hizmeti için EXTERNAL-IP gösterilmektedir:

    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
    

Sürümleri listeleme

  • komutunu kullanarak kümenizde yüklü olan sürümlerin helm list listesini alın.

    helm list --namespace ingress-basic
    

    Aşağıdaki örnek çıktı, önceki adımda dağıtılan ingress-nginx sürümünü gösterir:

    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
    

Kaynakları temizleme

Helm grafiğinin dağıtılması podlar, dağıtımlar ve hizmetler gibi Kubernetes kaynakları oluşturur.

  • Helm uninstall komutunu kullanarak kaynakları temizleyin ve yayın adınızı belirtin.

    helm uninstall --namespace ingress-basic ingress-nginx
    

    Aşağıdaki örnek çıktıda ingress-nginx adlı sürümün kaldırıldığı gösterilmektedir:

    release "nginx-ingress" uninstalled
    
  • komutunu kullanarak kubectl delete örnek ad alanının tamamını ve kaynakları silin ve ad alanı adınızı belirtin.

    kubectl delete namespace ingress-basic
    

Sonraki adımlar

Helm ile Kubernetes uygulama dağıtımlarını yönetme hakkında daha fazla bilgi için Helm belgelerine bakın.