تعرف على المزيد حول تثبيت التطبيقات باستخدام Helm في خدمة Azure Kubernetes Service.
Helm أداة تعبئة مفتوحة المصدر تساعدك على تثبيت دورة حياة تطبيقات Kubernetes وإدارتها. على غرار مديري حزم Linux، مثل APT وYum، يمكنك استخدام Helm لإدارة مخططات Kubernetes، وهي حزم من موارد Kubernetes التي تم تكوينها مسبقا.
توضح هذه المقالة كيفية تكوين Helm واستخدامه في مجموعة Kubernetes على خدمة Azure Kubernetes (AKS).
قبل البدء
- تفترض هذه المقالة أن لديك مجموعة AKS موجودة. إذا كنت بحاجة إلى نظام مجموعة AKS، قم بإنشاء مجموعة باستخدام Azure CLI أو Azure PowerShell أو مدخل Azure.
- تحتاج مجموعة AKS الخاصة بك إلى ACR متكامل. للحصول على تفاصيل حول إنشاء نظام مجموعة AKS باستخدام ACR متكامل، راجع المصادقة باستخدام Azure Container Registry من Azure Kubernetes Service.
- تحتاج أيضًا إلى تثبيت Helm CLI، وهو العميل الذي يتم تشغيله على نظام التطوير الخاص بك. فهو يسمح لك ببدء التطبيقات وإيقافها وإدارتها باستخدام Helm. في حال كنت تستخدم Azure Cloud Shell، يكون Helm CLI مثبتًا بالفعل. للحصول على إرشادات التثبيت على النظام الأساسي المحلي، راجع تثبيت Helm.
هام
يهدف Helm إلى التشغيل على عقد Linux. إذا كان لديك عقد Windows Server في نظام المجموعة، يجب التأكد من جدولة Helm pods فقط للتشغيل على عقد Linux. تحتاج أيضًا إلى التأكد من جدولة أي مخططات Helm تقوم بتثبيتها أيضًا للتشغيل على العقد الصحيحة. تستخدم الأوامر الواردة في هذه المقالة محددات العقدة للتأكد من جدولة pods إلى العقد الصحيحة، ولكن ليس كل مخططات Helm قد تعرض محدد عقدة. يمكنك أيضا التفكير في استخدام خيارات أخرى على نظام المجموعة، مثل العيوب.
تحقق من إصدار Helm
helm version
استخدم الأمر للتحقق من تثبيت Helm 3.helm version
يظهر إخراج المثال التالي إصدار Helm 3.0.0 المثبت:
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}
تثبيت التطبيق باستخدام Helm v3
إضافة مستودعات Helm
أضف مستودع ingress-nginx باستخدام أمر helm repo.
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
البحث عن مخططات helm
ابحث عن مخططات Helm التي تم إنشاؤها مسبقا باستخدام أمر بحث helm.
helm search repo ingress-nginx
يظهر إخراج المثال التالي بعض مخططات Helm المتوفرة للاستخدام:
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.
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!⎈
استيراد صور مخطط Helm إلى ACR الخاص بك
تستخدم هذه المقالة مخطط Helm لوحدة تحكم دخول NGINX، والذي يعتمد على ثلاث صور للحاوية.
استخدم
az acr import
لاستيراد صور وحدة تحكم دخول NGINX إلى 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
إشعار
إلى جانب استيراد صور الحاويات إلى ACR الخاص بك، يمكنك أيضاً استيراد مخططات Helm إلى ACR الخاص بك. لمزيد من المعلومات، راجع «Push and pull Helm charts» إلى سجل حاويات Azure Container Registry.
تشغيل مخططات Helm
قم بتثبيت مخططات Helm باستخدام أمر تثبيت helm وحدد اسم الإصدار واسم المخطط المراد تثبيته.
تلميح
ينشئ المثال التالي مساحة اسم Kubernetes لموارد الدخول التي تحمل اسم ingress-basic وتهدف إلى العمل ضمن مساحة الاسم. حدد مساحة االاسم للبيئة الخاصة بك حسب الحاجة.
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=""
يظهر إخراج المثال المكثف التالي حالة نشر موارد Kubernetes التي تم إنشاؤها بواسطة مخطط Helm:
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' ...
احصل على EXTERNAL-IP للخدمة
kubectl get services
الخاصة بك باستخدام الأمر .kubectl --namespace ingress-basic get services -o wide -w ingress-nginx-ingress-nginx-controller
يظهر إخراج المثال التالي EXTERNAL-IP لخدمة 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
إصدارات القائمة
احصل على قائمة الإصدارات المثبتة على نظام المجموعة باستخدام
helm list
الأمر .helm list --namespace ingress-basic
يظهر إخراج المثال التالي إصدار ingress-nginx المنشور في الخطوة السابقة:
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
تنظيف الموارد
يؤدي نشر مخطط Helm إلى إنشاء موارد Kubernetes مثل الحجيرات والنشرات والخدمات.
قم بتنظيف الموارد باستخدام الأمر helm uninstall وحدد اسم الإصدار الخاص بك.
helm uninstall --namespace ingress-basic ingress-nginx
يظهر إخراج المثال التالي أن الإصدار المسمى ingress-nginx قد تم إلغاء تثبيته:
release "nginx-ingress" uninstalled
احذف عينة مساحة الاسم بأكملها مع الموارد باستخدام
kubectl delete
الأمر وحدد اسم مساحة الاسم.kubectl delete namespace ingress-basic
الخطوات التالية
لمزيد من المعلومات حول إدارة عمليات نشر تطبيقات Kubernetes مع Helm، راجع وثائق Helm.
Azure Kubernetes Service