نقل Azure Container Registry إلى منطقة أخرى

توضح هذه المقالة كيفية نقل موارد Azure Container Registry إلى منطقة أخرى في نفس الاشتراك لمستأجر Active Directory.

إشعار

إذا كنت بحاجة إلى توزيع صور حاوية متطابقة عبر مناطق Azure متعددة، فإن تطبيق سجل الحاوية من Azure يدعم أيضًا النسخ المتماثل الجغرافي. عن طريق النسخ المتماثل الجغرافي لسجل (مستوى الخدمة المتميزة المطلوب)، يمكنك خدمة مناطق متعددة مع أسماء الصور والعلامات المتطابقة من سجل واحد.

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

  • يمكنك فقط نقل سجل داخل نفس مستأجر Active Directory. ينطبق هذا القيد على السجلات المشفرة وغير المشفرة باستخدام مفتاح يديره العميل.

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

اعتبارات نقاط نهاية الخدمة

تقيد نقاط نهاية خدمة الشبكة الظاهرية ل Azure Container Registry الوصول إلى شبكة ظاهرية محددة. يمكن لنقاط النهاية أيضا تقييد الوصول إلى قائمة نطاقات عناوين IPv4 (إصدار بروتوكول الإنترنت 4). يتم رفض وصول أي مستخدم يتصل بالسجل من خارج هذه المصادر. إذا تم تكوين نقاط نهاية الخدمة في منطقة المصدر لمورد التسجيل، يجب القيام بنفس الشيء في الهدف. خطوات هذا السيناريو مذكورة أدناه:

  • لإعادة إنشاء السجل بنجاح إلى المنطقة المستهدفة، يجب إنشاء الشبكة الظاهرية والشبكة الفرعية مسبقا. إذا تم تنفيذ نقل هذين الموردين باستخدام أداة Azure Resource Mover، فلن يتم تكوين نقاط نهاية الخدمة تلقائيا وبالتالي ستحتاج إلى توفير تكوين يدوي.

  • ثانيا، يجب إجراء تغييرات في IaC ل Azure Container Registry. في networkAcl القسم ، ضمن virtualNetworkRules، أضف قاعدة الشبكة الفرعية الهدف. تأكد من تعيين العلامة ignoreMissingVnetServiceEndpoint إلى False، بحيث يفشل IaC في نشر Azure Container Registry في حالة عدم تكوين نقطة نهاية الخدمة في المنطقة المستهدفة. وسيضمن ذلك استيفاء المتطلبات الأساسية في المنطقة المستهدفة

مراعاة نقطة النهاية الخاصة

يوفر Azure Private Link اتصالا خاصا من شبكة ظاهرية إلى نظام Azure الأساسي كخدمة (PaaS) أو خدمات مملوكة للعملاء أو شركاء Microsoft. يعمل Private Link على تبسيط بنية الشبكة وتأمين الاتصال بين نقاط النهاية في Azure عن طريق القضاء على تعرض البيانات للإنترنت العام.

لإعادة إنشاء موردك بنجاح في المنطقة المستهدفة، يجب إنشاء الشبكة الظاهرية والشبكة الفرعية قبل حدوث الترفيه الفعلي.

اعتبارات تكامل Azure Private Endpoint DNS

من المهم تكوين إعدادات DNS بشكل صحيح لحل عنوان IP لنقطة النهاية الخاصة إلى اسم المجال المؤهل بالكامل (FQDN) سلسلة الاتصال.

قد يكون لدى خدمات Microsoft Azure الموجودة بالفعل تكوين DNS لنقطة نهاية عامة. يجب تجاوز هذا التكوين للاتصال باستخدام نقطة النهاية الخاصة بك.

تحتوي واجهة الشبكة المرتبطة بنقطة النهاية الخاصة على معلومات لتكوين DNS الخاص بك. تتضمن معلومات واجهة الشبكة FQDN وعناوين IP خاصة لمورد الارتباط الخاص بك.

يمكنك استخدام الخيارات التالية لتكوين إعدادات DNS لنقاط النهاية الخاصة:

  • استخدم ملف المضيف (غير مستحسن إلا للاختبار فقط). يمكنك استخدام ملف المضيف على جهاز ظاهري لتجاوز DNS.
  • استخدم منطقة DNS خاصة يمكنك استخدام مناطق DNS خاصة لتجاوز دقة DNS لنقطة نهاية خاصة. يمكن ربط منطقة DNS خاصة بشبكة الاتصال الظاهرية لإعادة حل مجالات معينة.
  • استخدم معبر إعادة توجيه DNS (اختياري). يمكنك استخدام معبر إعادة توجيه DNS لتجاوز دقة DNS لمورد ارتباط خاص. إنشاء قاعدة إعادة توجيه DNS لاستخدام منطقة DNS خاصة على خادم DNS الخاص بك مستضافة في شبكة اتصال ظاهرية.
  • يجب تكوين Azure Container Registry في المنطقة المستهدفة مع المستوى المتميز.

  • عند تعطيل الوصول إلى الشبكة العامة إلى سجل، يتطلب الوصول إلى السجل بواسطة بعض الخدمات الموثوق بها - بما في ذلك مركز أمان Azure - تمكين إعداد شبكة لتجاوز قواعد الشبكة.

  • إذا كان السجل يحتوي على نقطة نهاية خاصة معتمدة وتم تعطيل الوصول إلى الشبكة العامة، فلا يمكن سرد المستودعات والعلامات خارج الشبكة الظاهرية باستخدام مدخل Microsoft Azure أو Azure CLI أو أدوات أخرى.

  • في حالة وجود نسخة متماثلة جديدة، من الضروري إضافة سجل DNS جديد يدويا لنقطة نهاية البيانات في المنطقة المستهدفة.

وقت التعطل

لفهم أوقات التعطل المحتملة المتضمنة، راجع Cloud Adoption Framework ل Azure: حدد أسلوب نقل.

تجهيز

إشعار

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

لعرض قوالب تكوين التوفر الأخرى، انتقل إلى تعريف الموارد باستخدام Bicep وقوالب ARM وموفر Terraform AzAPI

للتحضير للنقل مع ترحيل البيانات:

  1. إنشاء مخطط تبعية مع جميع خدمات Azure المستخدمة من قبل السجل. بالنسبة للخدمات التي تقع في نطاق النقل، يجب عليك اختيار استراتيجية النقل المناسبة.

  2. حدد تخطيط شبكة المصدر ل Azure Container Registry (ACR) مثل جدار الحماية وعزل الشبكة.

  3. استرداد أي صور مطلوبة من السجل المصدر للاستيراد إلى السجل الهدف. لاسترداد الصور، قم بتشغيل الأمر التالي:

    
    Get-AzContainerRegistryRepository -RegistryName registry
    
    
  4. استخدم مهام ACR لاسترداد تكوينات التنفيذ التلقائي لسجل المصدر للاستيراد إلى السجل الهدف.

قالب التصدير

للبدء، قم بتصدير قالب Resource Manager. يحتوي هذا القالب على إعدادات تصف سجل الحاوية. لمزيد من المعلومات حول كيفية استخدام القوالب المصدرة، راجع [استخدام القالب المصدر من مدخل Microsoft Azure](.. /azure-resource-manager/templates/template-tutorial-Azure portale.md) ومرجع القالب.

  1. في مدخل Azure، انتقل إلى السجل المصدر.

  2. في القائمة، ضمن "التنفيذ التلقائي"، حدد "تصدير قالب">"تنزيل".

    لقطة شاشة لقالب التصدير لسجل الحاوية.

  3. حدد موقع الملف .zip الذي قمت بتنزيله من المدخل، وقم بفك ضغط الملف إلى مجلد من اختيارك.

    يحتوي هذا الملف المضغوط على ملفات .json التي تتضمن القالب والبرامج النصية لتوزيع القالب.

تعديل القالب

فحص خصائص التسجيل في ملف قالب JSON الذي قمت بتحميله، وإجراء التغييرات اللازمة. عند حدٍ أدنى:

  • تغيير اسم التسجيل defaultValue إلى الاسم المطلوب للتسجيل الهدف
  • تحديث location إلى منطقة Azure المطلوبة للتسجيل الهدف
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "registries_myregistry_name": {
            "defaultValue": "myregistry",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.ContainerRegistry/registries",
            "apiVersion": "2020-11-01-preview",
            "name": "[parameters('myregistry_name')]",
            "location": "centralus",
        ...
        }
    ]
}
  • تحقق من صحة جميع تفاصيل الموارد المقترنة في القالب الذي تم تنزيله مثل Registry scopeMaps وتكوين النسخ المتماثلة وإعدادات التشخيص مثل تحليلات السجل.

  • إذا تم تشفير سجل المصدر، فقم بتشفير السجل الهدف باستخدام مفتاح مدار من قبل العميل وتحديث القالب بإعدادات للهوية المدارة المطلوبة وخزنة المفاتيح والمفتاح. يمكنك تمكين المفتاح المدار من قبل العميل فقط عند توزيع التسجيل.

إنشاء مجموعة الموارد

إنشاء مجموعة موارد للسجل الهدف باستخدام إنشاء مجموعة az. في المثال التالي، سيتم إنشاء مجموعة موارد باسم myResourceGroup في موقع eastus.

az group create --name myResourceGroup --location eastus

إعادة التوزيع

استخدم الأمر إنشاء مجموعة توزيع az لتوزيع التسجيل الهدف باستخدام القالب:

az deployment group create --resource-group myResourceGroup \
   --template-file template.json --name mydeployment

إشعار

إذا رأيت أخطاء أثناء التوزيع، فقد تحتاج إلى تحديث تكوينات معينة في ملف القالب وإعادة محاولة الأمر.

استيراد محتوى التسجيل في التسجيل الهدف

بعد إنشاء السجل في المنطقة المستهدفة:

  1. استخدم الأمر az acr import، أو أمر Import-AzContainerImagePowerShell المكافئ ، لاستيراد الصور والبيانات الاصطناعية الأخرى التي تريد الاحتفاظ بها من السجل المصدر إلى السجل الهدف. للحصول على أمثلة الأمر، راجع استيراد صور الحاوية إلى تسجيل حاوية.

  2. استخدم قائمة مستودع Az CLI لأوامر Azure ACR وعلامات إظهار مستودع az acr، أو مكافئات Azure PowerShell، للمساعدة في تعداد محتويات السجل المصدر.

  3. تشغيل أمر استيراد القطع الملموسة الفردية أو البرنامج النصي لتشغيل أكثر من قائمة من artifacts.

تعداد البرنامج النصي Azure CLI النموذج التالي مستودعات المصدر والعلامات ثم استيراد artifacts إلى تسجيل هدف في نفس اشتراك Azure. تعديل حسب الحاجة لاستيراد مستودعات أو علامات معينة. لاستيراد من تسجيل في اشتراك أو مستأجر آخر، راجع الأمثلة في استيراد صور حاوية إلى تسجيل حاوية.

#!/bin/bash
# Modify registry names for your environment
SOURCE_REG=myregistry
TARGET_REG=targetregistry

# Get list of source repositories
REPO_LIST=$(az acr repository list \
    --name $SOURCE_REG --output tsv)

# Enumerate tags and import to target registry
for repo in $REPO_LIST; do
    TAGS_LIST=$(az acr repository show-tags --name $SOURCE_REG --repository $repo --output tsv);
    for tag in $TAGS_LIST; do
        echo "Importing $repo:$tag";
        az acr import --name $TARGET_REG --source $SOURCE_REG.azurecr.io/$repo":"$tag;
    done
done
  1. إقران الموارد التابعة بسجل حاويات Azure الهدف مثل مساحة عمل تحليلات السجل في إعدادات التشخيص.

  2. تكوين تكامل Azure Container Registry مع كلا النوعين من مجموعات AKS، المقدمة أو التي لم يتم توفيرها بعد عن طريق تشغيل الأمر التالي:


Set-AzAksCluster -Name myAKSCluster -ResourceGroupName myResourceGroup -AcrNameToAttach <acr-name>

  1. قم بإجراء التغييرات اللازمة على ملف بيان Kubernetes لتكامل نفسه مع Azure Container Registry (ACR) الذي تم نقله.

  2. تحديث أنظمة التطوير والتوزيع لاستخدام التسجيل الهدف بدلاً من التسجيل المصدر.

  3. تحديث أي قواعد جدار حماية العميل للسماح بالوصول إلى التسجيل الهدف.

تحقق

تأكيد المعلومات التالية في التسجيل الهدف:

  • إعدادات التسجيل مثل اسم التسجيل، وفئة الخدمة، والوصول العام، والنسخ المتماثل
  • مستودعات وعلامات للمحتوى الذي تريد الاحتفاظ به.

حذف التسجيل الأصلي

بعد توزيع التسجيل الهدف بنجاح، المحتوى الذي تم ترحيله وإعدادات التسجيل التحقق، قد حذف التسجيل المصدر.