دفع وسحب مخططات Helm إلى سجل حاوية Azure
لإدارة التطبيقات ونشرها بسرعة ل Kubernetes، يمكنك استخدام "open-source Helm package manager". تعرف حزم التطبيقات في Helmكمخططات بيانية، والتي تجمع وتخزن في مستودع مخططات Helm البيانية.
توضح هذه المقالة كيفية استضافة مستودعات مخططات Helm البيانية في Azure container registry باستخدام أوامرHelm 3 وتخزين المخططات "OCI artifacts". في كثير من السيناريوهات، يمكنك تحويل وتحميل المخططات للتطبيقات التي تقوم بتطويرها. لمزيد من المعلومات حول كيفية تحويل مخططات Helm البيانية، راجع "Chart Template Developer"s Guide". يمكن أيضاً تخزين مخطط Helm البياني الحالي من مستودع Helm آخر.
هام
تم تحديث هذه المقالة بأوامر Helm 3. يتضمن Helm 3.7 تغييرات على أوامر Helm CLI ودعم OCI المقدم في الإصدارات السابقة من Helm 3. حسب التصميم يتحرك helm
إلى الأمام مع الإصدار. نوصي باستخدام الإصدار 3.7.2 أو أحدث.
Helm 3 أو Helm 2؟
لتخزين مخططات Helm البيانية وإدارتها وتثبيتها، يمكنك استخدام الأوامر في Helm CLI. وتشمل الإصدارات الرئيسية Helm 3 وHelm 2. للحصول على تفاصيل حول اختلافات الإصدار، راجع الأسئلة المتداولةحول الإصدار.
يجب استخدام Helm 3 لاستضافة مخططات Helm البيانية في Azure Container Registry. يمكن بـ Helm 3:
- تخزين وإدارة مخططات Helm البيانية في Azure Container Registry.
- تخزين مخططات Helm البيانية في السجل الخاص بك OCI artifacts. يوفر Azure Container Registry دعم التوفر العام لـOCI artifacts، بما في ذلك مخططات Helm البيانية.
- المصادقة بالتسجيل باستخدام الأمر
helm registry login
"أو"az acr login
- استخدام
helm
الأوامر لدفع مخططات Helm البيانية وسحبها وإدارتها في السجل - استخدام
helm install
لتثبيت المخططات إلى مقطع تخزين Kubernetes من السجل.
دعم الميزة
يدعم Azure Container Registry ميزات إدارة محددة لمخطط Helm اعتماداً على ما إذا كنت تستخدم Helm 3 (الحالي) أو Helm 2 (المهمل).
الميزة | Helm 2 | Helm 3 |
---|---|---|
إدارة المخططات باستخدام أوامر az acr helm |
✔️ | |
تخزين المخططات كـ OCI artifacts | ✔️ | |
إدارة المخططات باستخدام az acr repository الأوامر وشفرة المستودعات في مدخل Azure |
✔️ |
إشعار
اعتبارا من Helm 3, az acr helm تُهمل أوامر الاستخدام مع عميل Helm 2. يُقدم إشعار لا تقل مدته عن 3 أشهر قبل إزالة الأمر.
توافق إصدار المخطط
يمكن تخزين إصدارات مخططات Helm البيانية التالية في Azure Container Registry وتكون قابلة للتثبيت بواسطة عملاء Helm 2 وHelm 3.
الإصدار | Helm 2 | Helm 3 |
---|---|---|
apiVersion v1 | ✔️ | ✔️ |
apiVersion v2 | ✔️ |
الترحيل من Helm 2 إلى Helm 3
إذا قمت بتخزين المخططات ونشرها مسبقاً باستخدام Helm 2 وAzure Container Registry،فنوصي بترحيلها إلى Helm 3. راجع:
- ترحيل Helm 2 إلى 3 في وثائق Helm.
- ترحيل السجل لتخزين Helm OCI artifacts، لاحقا في هذه المقالة
المتطلبات الأساسية
الموارد التالية مطلوبة للسيناريو في هذه المقالة:
- An Azure container registry في اشتراك Azure. إذا لزم الأمر، إنشاء سجل باستخدام مدخل Azure أو CLI Azure.
- إصدار عميل Helm 3.7 أو أحدث - قم بتشغيل
helm version
للعثور على الإصدار الحالي الخاص بك. لمزيد من المعلومات حول كيفية تثبيت Helm وترقيته، راجع تثبيت Helm. إذا قمت بالترقية من إصدار سابق من Helm 3، راجع ملاحظات حول الإصدار. - كتلة Kubernetes حيث سيتم تثبيت مخطط هيلم. إذا لزم الأمر، قم بإنشاء نظام مجموعة AKS باستخدام Azure CLI، باستخدام Azure PowerShell، أو باستخدام مدخل Microsoft Azure.
- Azure CLI إصدار 2.0.71 أو أحدث - تشغيل
az --version
للبحث عن الإصدار. إذا كنت بحاجة إلى التثبيت أو الترقية، فراجع تثبيت Azure CLI.
إعداد عميل Helm
استخدم helm version
الأمر للتحقق من تثبيت Helm 3:
helm version
إشعار
ينبغي أن يكون الإصدار المشار إليه 3.8.0 على الأقل، حيث كان دعم OCI في الإصدارات السابقة تجريبيًا.
قم بتعيين متغيرات البيئة التالية للسجل الهدف. ACR_NAME هو اسم مورد التسجيل. إذا كان عنوان URL لسجل ACR هو myregistry.azurecr.io، فاضبط ACR_NAME على myregistry
ACR_NAME=<container-registry-name>
إنشاء مخطط عينة
إنشاء مخطط اختبار باستخدام الأوامر التالية:
mkdir helmtest
cd helmtest
helm create hello-world
كمثال أساسي، تغيير الدليل إلى templates
المجلد وحذف المحتويات هناك أولاُ:
cd hello-world/templates
rm -rf *
في templates
المجلد، قم بإنشاء ملف يسمى configmap.yaml
، عن طريق تشغيل الأمر التالي:
cat <<EOF > configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: hello-world-configmap
data:
myvalue: "Hello World"
EOF
لمزيد من الاطلاع على إنشاء هذا المثال وتشغيله، راجع "Getting Started" في وثائق Helm.
حفظ المخطط إلى الأرشيف المحلي
غيّر الدليل إلى مجلد المشروع hello-world
. ثم قم بتشغيل helm package
لحفظ التخطيط إلى أرشيف محلي.
في المثال التالي، يُحفظ المخطط بالاسم والإصدار في Chart.yaml
.
cd ..
helm package .
الإخراج مشابه لما يلي:
Successfully packaged chart and saved it to: /my/path/hello-world-0.1.0.tgz
المصادقة مع السجل
تشغيل helm registry login
للتحقق من الصحة مع السجل. يمكنك تمرير بيانات اعتماد السجل المناسبة للسيناريو الخاص بك، مثل بيانات اعتماد الخدمة الأساسية أو هوية المستخدم أو رمز مميز لنطاق المستودع.
- المصادقة باستخدام كيان خدمة Microsoft Entra مع أذونات السحب والدفع (دور AcrPush) إلى السجل.
SERVICE_PRINCIPAL_NAME=<acr-helm-sp> ACR_REGISTRY_ID=$(az acr show --name $ACR_NAME --query id --output tsv) PASSWORD=$(az ad sp create-for-rbac --name $SERVICE_PRINCIPAL_NAME \ --scopes $(az acr show --name $ACR_NAME --query id --output tsv) \ --role acrpush \ --query "password" --output tsv) USER_NAME=$(az identity show -n $SERVICE_PRINCIPAL_NAME -g $RESOURCE_GROUP_NAME --subscription $SUBSCRIPTION_ID --query "clientId" -o tsv)
- قم بالمصادقة باستخدام هوية Microsoft Entra الفردية لدفع مخططات Helm وسحبها باستخدام رمز AD المميز.
USER_NAME="00000000-0000-0000-0000-000000000000" PASSWORD=$(az acr login --name $ACR_NAME --expose-token --output tsv --query accessToken)
- المصادقة باستخدام رمز مميز محدد النطاق للمستودع (إصدار أولي).
USER_NAME="helmtoken" PASSWORD=$(az acr token create -n $USER_NAME \ -r $ACR_NAME \ --scope-map _repositories_admin \ --only-show-errors \ --query "credentials.passwords[0].value" -o tsv)
- ثم قم بتزويد بيانات الاعتماد إلى
helm registry login
.helm registry login $ACR_NAME.azurecr.io \ --username $USER_NAME \ --password $PASSWORD
دفع المخطط إلى السجل كـ OCI artifact
تشغيل helm push
الأمر في Helm 3 CLI لدفع أرشيف المخطط إلى مستودع الهدف المؤهل بالكامل. افصل الكلمات في أسماء المخططات واستخدم الأحرف الصغيرة والأرقام فقط. في المثال التالي، مساحة اسم المستودع الهدف هو helm/hello-world
، ويتم وضع علامة على المخطط 0.1.0
:
helm push hello-world-0.1.0.tgz oci://$ACR_NAME.azurecr.io/helm
بعد دفعة ناجحة، يتشابه الإخراج مع ما يلي:
Pushed: <registry>.azurecr.io/helm/hello-world:0.1.0
digest: sha256:5899db028dcf96aeaabdadfa5899db02589b2899b025899b059db02
سرد المخططات في المستودع
كما هو الحال مع الصور المخزنة في Azure container registry، يمكن استخدام أوامر مستودع az acr لإظهار المستودعات التي تستضيف المخططات، وعلامات المخططات وبيانات التجميع.
على سبيل المثال، تشغيل az acr مستودع إظهار لمشاهدة خصائص المستودع الذي قمت بإنشائه في الخطوة السابقة:
az acr repository show \
--name $ACR_NAME \
--repository helm/hello-world
الإخراج مشابه لما يلي:
{
"changeableAttributes": {
"deleteEnabled": true,
"listEnabled": true,
"readEnabled": true,
"writeEnabled": true
},
"createdTime": "2021-10-05T12:11:37.6701689Z",
"imageName": "helm/hello-world",
"lastUpdateTime": "2021-10-05T12:11:37.7637082Z",
"manifestCount": 1,
"registry": "mycontainerregistry.azurecr.io",
"tagCount": 1
}
قم بتشغيل الأمر az acr manifest list-metadata للاطلاع على تفاصيل المخطط المخزن في المستودع. على سبيل المثال:
az acr manifest list-metadata \
--registry $ACR_NAME \
--name helm/hello-world
يُظهر الإخراج، المختصر في هذا المثال، configMediaType
من application/vnd.cncf.helm.config.v1+json
:
[
{
[...]
"configMediaType": "application/vnd.cncf.helm.config.v1+json",
"createdTime": "2021-10-05T12:11:37.7167893Z",
"digest": "sha256:0c03b71c225c3ddff53660258ea16ca7412b53b1f6811bf769d8c85a1f0663ee",
"imageSize": 3301,
"lastUpdateTime": "2021-10-05T12:11:37.7167893Z",
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"tags": [
"0.1.0"
]
تثبيت مخطط Helm
تشغيل helm install
لتثبيت مخطط Helm المدفوع إلى السجل. تمرر علامة المخطط باستخدام --version
المعلمة. حدد اسم إصدار مثل myhelmtestأو مرر --generate-name
المعلمة. على سبيل المثال:
helm install myhelmtest oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
يتشابه الإخراج بعد تثبيت المخطط الناجح مع ما يلي:
NAME: myhelmtest
LAST DEPLOYED: Tue Oct 4 16:59:51 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
للتحقق من التثبيت، قم بتشغيل الأمر helm get manifest
.
helm get manifest myhelmtest
إرجاع الأمر بيانات YAML في configmap.yaml
ملف القالب.
تشغيل helm uninstall
لإلغاء تثبيت إصدار المخطط على نظام المجموعة:
helm uninstall myhelmtest
سحب المخطط إلى الأرشيف المحلي
يمكنك اختيارياً سحب مخطط من سجل الحاوية إلى أرشيف محلي باستخدامhelm pull
. تمرر علامة المخطط باستخدام --version
المعلمة. إذا كان هناك أرشيف محلي في المسار الحالي، فإن هذا الأمر يقوم بالكتابة فوقه.
helm pull oci://$ACR_NAME.azurecr.io/helm/hello-world --version 0.1.0
حذف المخطط من السجل
لحذف مخطط من تسجيل الحاوية، استخدم الأمر حذف مستودع az acr. تشغيل الأمر التالي وتأكيد العملية عند المطالبة:
az acr repository delete --name $ACR_NAME --image helm/hello-world:0.1.0
ترحيل السجل الخاص بك لتخزينHelm OCI artifacts
إذا قمت مسبقا بإعداد Azure container registry كمستودع تخطيط باستخدام Helm 2 az acr helm
والأوامر، نوصي بالترقية إلى عميل Helm 3. ثم اتبع هذه الخطوات لتخزين المخططات OCI artifacts في السجل.
هام
- بعد إكمال الترحيل من مستودع مخطط Helm 2 نمط (index.yaml المستندة إلى) إلى مستودعات ARTIFACT OCI استخدامCLI Helm
az acr repository
والأوامر لإدارة المخططات. راجع المقاطع السابقة في هذه المقالة. - مستودعات Artifact OCI Helm غير قابلة للاكتشاف باستخدام أوامر Helm مثل
helm search
وhelm repo list
. لمزيد من المعلومات حول أوامر Helm المستخدمة لتخزين المخططات OCI artifacts راجع وثائق Helm.
تمكين دعم OCI (ممكن افتراضيا في Helm v3.8.0)
تأكد من استخدام عميل Helm 3:
helm version
إذا كنت تستخدم Helm v3.8.0 أو أعلى، يتم تمكين هذا بشكل افتراضي. إذا كنت تستخدم إصدارا أقل، يمكنك تمكين إعداد دعم OCI لمتغير البيئة:
export HELM_EXPERIMENTAL_OCI=1
سرد المخططات الحالية
سرد المخططات المخزنة حالياً في السجل، هنا يسمى myregistry:
helm search repo myregistry
يظهر الإخراج المخططات وإصدارات المخططات:
NAME CHART VERSION APP VERSION DESCRIPTION
myregistry/ingress-nginx 3.20.1 0.43.0 Ingress controller for Kubernetes...
myregistry/wordpress 9.0.3 5.3.2 Web publishing platform for building...
[...]
سحب أرشيفات المخطط محلياً
لكل مخطط في المستودع اسحب أرشيف المخطط محلياً، وحدد اسم الملف:
helm pull myregisry/ingress-nginx
ls *.tgz
يتم إنشاء أرشيف مخطط محلي ingress-nginx-3.20.1.tgz
مثل.
دفع المخططات OCI artifacts للسجل
تسجيل الدخول إلى السجل:
az acr login --name $ACR_NAME
دفع كل أرشيف مخطط إلى السجل. مثال:
helm push ingress-nginx-3.20.1.tgz oci://$ACR_NAME.azurecr.io/helm
بعد دفع مخطط، تأكد من تخزينه في السجل:
az acr repository list --name $ACR_NAME
بعد دفع جميع المخططات، قم بإزالة مستودع المخطط ذي النمطين 2Helm اختيارياً من السجل. يؤدي القيام بذلك إلى تقليل التخزين في السجل:
helm repo remove $ACR_NAME
الخطوات التالية
- لمزيد من المعلومات حول كيفية إنشاء ونشر مخططات Helm راجع تطوير مخططات Helm.
- تعرف على المزيد حول تثبيت التطبيقات مع Helm في Azure Kubernetes Service.
- يمكن استخدام مخططات Helm كجزء من عملية بناء الحاوية. لمزيد من المعلومات، راجع Use Azure Container Registry Tasks.
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ