تكوين صورة حاوية لتنفيذ عمليات التوزيع

في هذه المقالة، ستتعلم كيفية إنشاء صور حاوية مخصصة لنشر تعريفات البيئة الخاصة بك في بيئات نشر Azure (ADE).

يتكون تعريف البيئة من ملفين على الأقل: ملف قالب، مثل azuredeploy.json، وملف بيان باسم environment.yaml. يستخدم ADE حاويات لنشر تعريفات البيئة، ويدعم في الأصل أطر عمل Azure Resource Manager (ARM) وBicep IaC.

يتيح لك نموذج قابلية توسعة ADE إنشاء صور حاوية مخصصة لاستخدامها مع تعريفات البيئة الخاصة بك. باستخدام نموذج القابلية للتوسعة، يمكنك إنشاء صور الحاوية المخصصة الخاصة بك وتخزينها في سجل حاوية مثل Azure Container Registry (ACR) أو Docker Hub. يمكنك بعد ذلك الرجوع إلى هذه الصور في تعريفات البيئة الخاصة بك لنشر بيئاتك.

يوفر فريق ADE مجموعة مختارة من الصور للبدء، بما في ذلك صورة أساسية، وصورة Azure Resource Manager (ARM)/Bicep. يمكنك الوصول إلى هذه الصور النموذجية في مجلد الصور المشغلة.

المتطلبات الأساسية

استخدام صور الحاوية مع ADE

يمكنك اتباع أحد الأساليب التالية لاستخدام صور الحاوية مع ADE:

  • استخدم صورة الحاوية القياسية: للسيناريوهات البسيطة، استخدم صورة حاوية Bicep القياسية التي يوفرها ADE.
  • إنشاء صورة حاوية مخصصة: للحصول على سيناريوهات أكثر تعقيدا، قم بإنشاء صورة حاوية مخصصة تفي بمتطلباتك المحددة.

بغض النظر عن الأسلوب الذي تختاره، يجب تحديد صورة الحاوية في تعريف البيئة لنشر موارد Azure.

استخدام صورة قياسية

يدعم ADE Bicep أصلا، بحيث يمكنك تكوين تعريف بيئة ينشر موارد Azure لبيئة نشر عن طريق إضافة ملفات القالب (azuredeploy.json و environment.yaml) إلى الكتالوج الخاص بك. ثم يستخدم ADE صورة حاوية Bicep القياسية لإنشاء بيئة التوزيع.

في ملف environment.yaml، تحدد خاصية المشغل موقع صورة الحاوية التي تريد استخدامها. لاستخدام نموذج الصورة المنشورة على Microsoft Artifact Registry، استخدم مشغل المعرفات المعنية، كما هو موضح في الجدول التالي.

يوضح المثال التالي مشغلا يشير إلى نموذج صورة حاوية Bicep:

    name: WebApp
    version: 1.0.0
    summary: Azure Web App Environment
    description: Deploys a web app in Azure without a datastore
    runner: Bicep
    templatePath: azuredeploy.json

يمكنك مشاهدة صورة حاوية Bicep القياسية في مستودع عينة ADE ضمن مجلد Runner-Images لصورة ARM-Bicep .

لمزيد من المعلومات حول كيفية إنشاء تعريفات البيئة التي تستخدم صور حاوية ADE لنشر موارد Azure، راجع إضافة تعريف بيئة وتكوينه.

إنشاء صورة حاوية مخصصة

يتيح لك إنشاء صورة حاوية مخصصة تخصيص عمليات النشر الخاصة بك لتناسب متطلباتك. يمكنك إنشاء صور مخصصة استنادا إلى صور حاوية ADE القياسية.

بعد إكمال تخصيص الصورة، يجب إنشاء الصورة ودفعها إلى سجل الحاوية.

إنشاء صورة حاوية وتخصيصها باستخدام Docker

في هذا المثال، ستتعلم كيفية إنشاء صورة Docker للاستفادة من عمليات نشر ADE والوصول إلى CLI ADE، استنادا إلى صورك على إحدى الصور التي ألفتها ADE.

ADE CLI هي أداة تسمح لك بإنشاء صور مخصصة باستخدام صور ADE الأساسية. يمكنك استخدام ADE CLI لتخصيص عمليات النشر والحذف لتناسب سير العمل الخاص بك. تم تثبيت ADE CLI مسبقا على عينات الصور. لمعرفة المزيد حول CLI ADE، راجع مرجع صورة مشغل CLI المخصص.

لإنشاء صورة تم تكوينها ل ADE، اتبع الخطوات التالية:

  1. قم بإسناد صورتك إلى صورة عينة مؤلفة من ADE أو الصورة التي تختارها باستخدام عبارة FROM.
  2. قم بتثبيت أي حزم ضرورية لصورتك باستخدام عبارة RUN.
  3. أنشئ مجلد البرامج النصية في نفس مستوى Dockerfile الخاص بك، وقم بتخزين deploy.sh وملفات delete.sh داخله، وتأكد من أن هذه البرامج النصية قابلة للاكتشاف والتنفيذ داخل الحاوية التي تم إنشاؤها. هذه الخطوة ضرورية للنشر الخاص بك للعمل باستخدام الصورة الأساسية ADE.

حدد نموذج صورة حاوية باستخدام عبارة FROM

لإنشاء صورة Docker لاستخدام عمليات نشر ADE والوصول إلى ADE CLI، يجب أن تستند صورتك إلى إحدى الصور المؤلفة من ADE. تضمين عبارة FROM داخل DockerFile تم إنشاؤه لصورتك الجديدة التي تشير إلى صورة عينة مؤلفة من ADE مستضافة على Microsoft Artifact Registry. عند استخدام الصور المؤلفة من ADE، يجب أن تستند صورتك المخصصة إلى الصورة الأساسية ل ADE.

فيما يلي مثال على عبارة FROM، التي تشير إلى نموذج الصورة الأساسية:

FROM mcr.microsoft.com/deployment-environments/runners/core:latest

تسحب هذه العبارة أحدث صورة أساسية منشورة، وتجعلها أساسا لصورتك المخصصة.

تثبيت الحزم في صورة

يمكنك تثبيت الحزم باستخدام Azure CLI باستخدام عبارة RUN، كما هو موضح في المثال التالي:

RUN az bicep install

تستند صور عينة ADE إلى صورة Azure CLI، ويتم تثبيت حزم ADE CLI وJQ مسبقا. يمكنك معرفة المزيد حول Azure CLI وحزمة JQ.

لتثبيت أي حزم أخرى تحتاج إليها داخل صورتك، استخدم عبارة RUN.

تنفيذ البرامج النصية ل shell العملية

داخل نماذج الصور، يتم تحديد العمليات وتنفيذها استنادا إلى اسم العملية. حاليا، يتم نشر اسمي العملية المدعومين وحذفهما.

لإعداد صورتك المخصصة لاستخدام هذه البنية، حدد مجلدا على مستوى Dockerfile المسمى البرامج النصية، وحدد ملفين، deploy.sh، delete.sh. يتم تشغيل البرنامج النصي deploy shell عند إنشاء بيئتك أو إعادة توزيعها، ويتم تشغيل البرنامج النصي delete shell عند حذف البيئة الخاصة بك. يمكنك مشاهدة أمثلة على البرامج النصية shell في المستودع ضمن صورة مجلد Runner-Images.

للتأكد من أن هذه البرامج النصية shell قابلة للتنفيذ، أضف الأسطر التالية إلى Dockerfile الخاص بك:

COPY scripts/* /scripts/
RUN find /scripts/ -type f -iname "*.sh" -exec dos2unix '{}' '+'
RUN find /scripts/ -type f -iname "*.sh" -exec chmod +x {} \;

جعل الصورة المخصصة قابلة للوصول إلى ADE

يجب إنشاء صورة Docker ودفعها إلى سجل حاوية لجعلها متاحة للاستخدام في ADE.

يمكنك إنشاء صورتك باستخدام Docker CLI، أو باستخدام برنامج نصي يوفره ADE.

حدد علامة التبويب المناسبة لمعرفة المزيد حول كل نهج.

قبل إنشاء الصورة التي سيتم دفعها إلى السجل الخاص بك، تأكد من تثبيت Docker Engine على جهاز الكمبيوتر الخاص بك. ثم انتقل إلى دليل Dockerfile الخاص بك، ثم قم بتشغيل الأمر التالي:

docker build . -t {YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}

على سبيل المثال، إذا كنت تريد حفظ صورتك ضمن مستودع داخل السجل الخاص بك المسمى customImage، وتحميلها باستخدام إصدار العلامة من 1.0.0، يمكنك تشغيل:

docker build . -t {YOUR_REGISTRY}.azurecr.io/customImage:1.0.0

دفع الصورة إلى سجل

لاستخدام الصور المخصصة، تحتاج إلى تخزينها في سجل حاوية. يوصى بشدة ب Azure Container Registry (ACR) لذلك. نظرا لتكاملها المحكم مع ADE، يمكن نشر الصورة دون السماح بالوصول إلى السحب المجهول العام.

من الممكن أيضا تخزين الصورة في سجل حاويات مختلف مثل Docker Hub، ولكن في هذه الحالة يجب أن تكون متاحة للجمهور.

تنبيه

تخزين صورة الحاوية في سجل مع وصول سحب مجهول (غير مصادق عليه) يجعلها قابلة للوصول بشكل عام. لا تفعل ذلك إذا كانت صورتك تحتوي على أي معلومات حساسة. بدلا من ذلك، قم بتخزينه في Azure Container Registry (ACR) مع تعطيل الوصول إلى السحب المجهول.

لاستخدام صورة مخصصة مخزنة في ACR، تحتاج إلى التأكد من أن ADE لديه الأذونات المناسبة للوصول إلى صورتك. عند إنشاء مثيل ACR، يكون آمنا بشكل افتراضي ويسمح فقط للمستخدمين المصادق عليهم بالوصول.

لإنشاء مثيل ACR، والذي يمكن القيام به من خلال Azure CLI ومدخل Azure والأوامر PowerShell والمزيد، اتبع إحدى عمليات التشغيل السريع.

استخدام سجل عام مع سحب مجهول

لإعداد السجل الخاص بك لتمكين سحب الصور المجهولة، قم بتشغيل الأوامر التالية في Azure CLI:

az login
az acr login -n {YOUR_REGISTRY}
az acr update -n {YOUR_REGISTRY} --public-network-enabled true
az acr update -n {YOUR_REGISTRY} --anonymous-pull-enabled true

عندما تكون مستعدا لدفع صورتك إلى السجل الخاص بك، قم بتشغيل الأمر التالي:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

استخدام ACR مع الوصول الآمن

بشكل افتراضي، لا يتوفر الوصول إلى سحب المحتوى أو دفعه من Azure Container Registry إلا للمستخدمين المصادق عليهم. يمكنك تأمين الوصول إلى ACR عن طريق الحد من الوصول من شبكات معينة وتعيين أدوار محددة.

تقييد الوصول إلى الشبكة

لتأمين الوصول إلى الشبكة إلى ACR الخاص بك، يمكنك تقييد الوصول إلى الشبكات الخاصة بك، أو تعطيل الوصول إلى الشبكة العامة بالكامل. إذا قمت بتحديد الوصول إلى الشبكة، يجب تمكين استثناء جدار الحماية السماح خدمات Microsoft الموثوق بها بالوصول إلى سجل الحاوية هذا.

لتعطيل الوصول من الشبكات العامة:

  1. إنشاء مثيل ACR أو استخدام مثيل موجود.

  2. في مدخل Microsoft Azure، انتقل إلى ACR الذي تريد تكوينه.

  3. في القائمة اليسرى، ضمن Settings، حدد Networking.

  4. في صفحة Networking، في علامة التبويب Public access ، ضمن Public network access، حدد Disabled.

    لقطة شاشة لمدخل Microsoft Azure، تعرض إعدادات شبكة ACR، مع تمييز الوصول العام والمعطل.

  5. ضمن استثناء جدار الحماية، تحقق من تحديد السماح خدمات Microsoft الموثوق بها بالوصول إلى سجل الحاوية هذا، ثم حدد حفظ.

    لقطة شاشة لإعدادات شبكة ACR، مع تمييز Allow trusted خدمات Microsoft للوصول إلى سجل الحاوية هذا والحفظ.

تعيين دور AcrPull

يستخدم إنشاء بيئات باستخدام صور الحاوية البنية الأساسية ل ADE، بما في ذلك المشاريع وأنواع البيئة. يحتوي كل مشروع على نوع واحد أو أكثر من أنواع بيئة المشروع، والتي تحتاج إلى الوصول للقراءة إلى صورة الحاوية التي تحدد البيئة التي سيتم نشرها. للوصول إلى الصور داخل ACR الخاص بك بشكل آمن، قم بتعيين دور AcrPull لكل نوع بيئة مشروع.

لتعيين دور AcrPull إلى نوع بيئة المشروع:

  1. في مدخل Microsoft Azure، انتقل إلى ACR الذي تريد تكوينه.

  2. في القائمة اليسرى، حدد Access Control (IAM).

  3. حدد إضافة>Add role assignmen.

  4. تعيين الدور التالي. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

    الإعداد القيمة‬
    الدور حدد AcrPull.
    تعيين حق الوصول إلى حدد المستخدم أو المجموعة أو كيان الخدمة.
    الأعضاء أدخل اسم نوع بيئة المشروع الذي يحتاج إلى الوصول إلى الصورة في الحاوية.

    يعرض نوع بيئة المشروع مثل المثال التالي:

    لقطة شاشة لجزء Select members، تعرض قائمة أنواع بيئة المشروع مع تمييز جزء من الاسم.

في هذا التكوين، يستخدم ADE الهوية المدارة ل PET، سواء تم تعيين النظام أو تعيين المستخدم.

تلميح

يجب إجراء تعيين الدور هذا لكل نوع بيئة مشروع. يمكن تشغيله تلقائيا من خلال Azure CLI.

عندما تكون مستعدا لدفع صورتك إلى السجل الخاص بك، قم بتشغيل الأمر التالي:

docker push {YOUR_REGISTRY}.azurecr.io/{YOUR_IMAGE_LOCATION}:{YOUR_TAG}

توصيل الصورة بتعريف البيئة

عند تأليف تعريفات البيئة لاستخدام صورتك المخصصة في توزيعها، قم بتحرير runner الخاصية على ملف البيان (environment.yaml أو manifest.yaml).

runner: "{YOUR_REGISTRY}.azurecr.io/{YOUR_REPOSITORY}:{YOUR_TAG}"

الوصول إلى سجلات العمليات وتفاصيل الخطأ

يخزن ADE تفاصيل الخطأ لتوزيع فاشل في ملف $ADE_ERROR_LOG داخل الحاوية.

لاستكشاف أخطاء التوزيع الفاشلة وإصلاحها:

  1. سجل الدخول إلى مدخل المطور.

  2. حدد البيئة التي فشلت في النشر، وحدد عرض التفاصيل.

    لقطة شاشة تعرض تفاصيل خطأ التوزيع الفاشلة، وتحديدا اسم غير صالح لحساب تخزين.

  3. راجع تفاصيل الخطأ في قسم تفاصيل الخطأ.

    لقطة شاشة تعرض عملية توزيع فاشلة لبيئة مع عرض الزر

بالإضافة إلى ذلك، يمكنك استخدام Azure CLI لعرض تفاصيل خطأ البيئة باستخدام الأمر التالي:

az devcenter dev environment show --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}

لعرض سجلات العملية لنشر بيئة أو حذفها، استخدم Azure CLI لاسترداد أحدث عملية بيئة، ثم اعرض سجلات معرف العملية هذا.

# Get list of operations on the environment, choose the latest operation
az devcenter dev environment list-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME}
# Using the latest operation ID, view the operation logs
az devcenter dev environment show-logs-by-operation --environment-name {YOUR_ENVIRONMENT_NAME} --project {YOUR_PROJECT_NAME} --operation-id {LATEST_OPERATION_ID}