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
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...
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
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' ...
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.
Azure Kubernetes Service