نشر مثيلات حاوية في شبكة اتصال Azure ظاهرية

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

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

هام

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

هام

يتوفر توزيع مجموعة الحاويات إلى شبكة ظاهرية بشكل عام لحاويات Linux وWindows، في معظم المناطق التي تتوفر فيها مثيلات حاوية Azure. للحصول على التفاصيل، راجع المناطق المتوفرة.

هام

تم إيقاف ملفات تعريف الشبكة اعتبارًا من 2021-07-01 إصدار واجهة برمجة التطبيقات. إذا كنت تستخدم هذا الإصدار أو إصداراً أحدث، فتجاهل أي خطوات وإجراءات متعلقة بملفات تعريف الشبكة.

يتم تنسيق الأمثلة في هذه المقالة لـ Bash shell. إذا كنت تفضل shell آخر مثل PowerShell أو موجه الأوامر، فاضبط أحرف متابعة السطر وفقاً لذلك.

النشر إلى الشبكة الظاهرية الجديدة

ملاحظة

إذا كنت تستخدم نطاق IP للشبكة الفرعية /29 للحصول على 3 عناوين IP فقط. نوصي دائما بالذهاب إلى نطاق واحد أعلاه (أبدا أدناه). على سبيل المثال، استخدم نطاق IP للشبكة الفرعية /28 حتى تتمكن من الحصول على 1 أو أكثر من مخزن IP مؤقت على الأقل لكل مجموعة حاويات. من خلال القيام بذلك، يمكنك تجنب الحاويات العالقة أو غير قادرة على البدء أو إعادة التشغيل أو حتى عدم القدرة على إيقاف الحالات.

لنشر إلى شبكة ظاهرية جديدة ويكون Azure إنشاء موارد شبكة الاتصال لك تلقائياً، حدد ما يلي عند تنفيذ إنشاء حاوية az:

  • اسم الشبكة الظاهرية
  • بادئة عنوان الشبكة الظاهرية بتنسيق CIDR
  • اسم الشبكة الفرعية
  • بادئة عنوان الشبكة الفرعية بتنسيق CIDR

يحدد بادئا عنواني الشبكة الظاهرية والشبكة الفرعية مسافات عنواني الشبكة الظاهرية والشبكة الفرعية على التوالي. يتم تمثيل هذه القيم في التوجيه بين المجالات دون فئة (CIDR)، على سبيل المثال 10.0.0.0/16. لمزيد من المعلومات حول العمل مع الشبكات الفرعية، راجع إضافة شبكة فرعية لشبكة ظاهرية أو تغييرها أو حذفها.

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

مثال

يعين أمر إنشاء حاوية az التالية إعدادات شبكة ظاهرية جديدة وشبكة فرعية. اذكر اسم مجموعة موارد تم إنشاؤها في منطقة حيث تتوفر عمليات نشر مجموعة حاويات في شبكة ظاهرية. يقوم هذا الأمر بنشر حاوية Microsoft aci-helloworld العامة التي تقوم بتشغيل ملقم ويب صغير Node.js يخدم صفحة ويب ثابتة. في المقطع التالي، ستقوم بنشر مجموعة حاويات ثانية على الشبكة الفرعية نفسها، واختبار الاتصال بين مثيلي الحاوية.

az container create \
  --name appcontainer \
  --resource-group myResourceGroup \
  --image mcr.microsoft.com/azuredocs/aci-helloworld \
  --vnet aci-vnet \
  --vnet-address-prefix 10.0.0.0/16 \
  --subnet aci-subnet \
  --subnet-address-prefix 10.0.0.0/24

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

النشر على الشبكة الظاهرية الموجودة

لنشر مجموعة حاويات إلى شبكة ظاهرية موجودة:

  1. إنشاء شبكة فرعية داخل شبكة الاتصال الظاهرية الموجودة أو استخدام شبكة فرعية موجودة تم فيها توزيع مجموعة حاويات بالفعل أو استخدام شبكة فرعية موجودة تم إفراغها من كل الموارد الأخرى والتكوين.
  2. نشر مجموعة حاويات باستخدام إنشاء حاوية وتحديد واحد مما يلي:
    • اسم الشبكة الظاهرية واسم الشبكة الفرعية
    • معرف مورد الشبكة الظاهرية ومعرف مورد الشبكة الفرعية، والذي يسمح باستخدام شبكة افتراضية من مجموعة موارد مختلفة
    • اسم ملف تعريف الشبكة أو معرفها، والذي يمكنك الحصول عليه باستخدام قائمة ملفات تعريف شبكة الاتصال

مثال

المثال التالي ينشر مجموعة حاوية ثانية إلى الشبكة الفرعية نفسها التي تم إنشاؤها مسبقاً، ويتحقق من الاتصال بين مثيلي الحاوية.

أولاً، احصل على عنوان IP من مجموعة الحاويات الأولى التي نشرتها، appcontainer:

az container show --resource-group myResourceGroup \
  --name appcontainer \
  --query ipAddress.ip --output tsv

يعرض الإخراج عنوان IP لمجموعة الحاوية في الشبكة الفرعية الخاصة. على سبيل المثال:

10.0.0.4

الآن، قم بتعيين CONTAINER_GROUP_IP إلى IP الذي استرجعته باستخدام الأمر az container show وتنفيذ الأمر az container create التالي. هذه الحاوية الثانية، commchecker، تدير صورة المستندة إلى نظام التشغيل Alpine Linux وتنفذ wget مقابل عنوان IP للشبكة الفرعية الخاصة لمجموعة الحاويات الأولى.

CONTAINER_GROUP_IP=<container-group-IP-address>

az container create \
  --resource-group myResourceGroup \
  --name commchecker \
  --image alpine:3.5 \
  --command-line "wget $CONTAINER_GROUP_IP" \
  --restart-policy never \
  --vnet aci-vnet \
  --subnet aci-subnet

بعد اكتمال نشر الحاوية الثانية هذا، اسحب سجلاتها بحيث يمكنك مشاهدة إخراج الأمر wget الذي قام بتنفيذه:

az container logs --resource-group myResourceGroup --name commchecker

إذا تم توصيل الحاوية الثانية بنجاح مع الأولى، يشبه الإخراج لما يلي:

Connecting to 10.0.0.4 (10.0.0.4:80)
index.html           100% |*******************************|  1663   0:00:00 ETA

يجب أن يبين الإخراج السجل الذي كان wget قادراً على الاتصال به ويحمّل ملف الفهرس من الحاوية الأولى باستخدام عنوان IP الخاص به على الشبكة الفرعية المحلية. وظلت حركة مرور الشبكة بين مجموعتي الحاويات داخل الشبكة الافتراضية.

مثال - YAML

يمكنك أيضاً نشر مجموعة حاويات إلى شبكة ظاهرية موجودة باستخدام ملف YAML أو قالب Azure Resource Manager أو أسلوب برمجي آخر كما هو الحال مع مجموعة تطوير برمجيات PYTHON.

على سبيل المثال، عند استخدام ملف YAML، يمكنك النشر إلى شبكة اتصال ظاهرية مع شبكة فرعية مفوضة إلى مثيلات حاوية Azure. حدد الخصائص التالية:

  • ipAddress: إعدادات عنوان IP الخاص لمجموعة الحاوية.
    • ports: المنافذ المقرر فتحها، إن وجدت.
    • protocol: البروتوكول (TCP أو UDP) للمنفذ المفتوح.
  • subnetIds: معرفات الموارد للشبكات الفرعية التي سيتم توزيعها إليها
    • id: معرف المورد للشبكة الفرعية
    • name: اسم الشبكة الفرعية

ينشئ YAML هذا مجموعة حاويات تسمى appcontaineryaml في الشبكة الظاهرية.

apiVersion: '2021-07-01'
location: westus
name: appcontaineryaml
properties:
  containers:
  - name: appcontaineryaml
    properties:
      image: mcr.microsoft.com/azuredocs/aci-helloworld
      ports:
      - port: 80
        protocol: TCP
      resources:
        requests:
          cpu: 1.0
          memoryInGB: 1.5
  ipAddress:
    type: Private
    ports:
    - protocol: tcp
      port: '80'
  osType: Linux
  restartPolicy: Always
  subnetIds:
    - id: <subnet-id>
      name: default
tags: null
type: Microsoft.ContainerInstance/containerGroups

نشر مجموعة الحاوية باستخدام الأمر إنشاء حاوية az مع تحديد اسم ملف YAML للمعلمة --file:

az container create --resource-group myResourceGroup \
  --file vnet-deploy-aci.yaml

بمجرد اكتمال النشر، قم بتشغيل الأمر إظهار حاوية az لعرض حالته. إخراج العينة:

Name              ResourceGroup    Status    Image                                       IP:ports     Network    CPU/Memory       OsType    Location
----------------  ---------------  --------  ------------------------------------------  -----------  ---------  ---------------  --------  ----------
appcontaineryaml  myResourceGroup  Running   mcr.microsoft.com/azuredocs/aci-helloworld  10.0.0.5:80  Private    1.0 core/1.5 gb  Linux     westus

تنظيف الموارد

حذف مثيلات الحاوية

عند الانتهاء من العمل مع مثيلات الحاوية التي أنشأتها، احذفها بالأوامر التالية:

az container delete --resource-group myResourceGroup --name appcontainer -y
az container delete --resource-group myResourceGroup --name commchecker -y
az container delete --resource-group myResourceGroup --name appcontaineryaml -y

حذف موارد الشبكة

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

قبل تنفيذ البرنامج النصي، قم بتعيين المتغير RES_GROUP إلى اسم مجموعة الموارد التي تحتوي على الشبكة الظاهرية والشبكة الفرعية التي يجب حذفها. تحديث اسم الشبكة الظاهرية إذا لم تستخدم اسم aci-vnet المقترح سابقا. يتم تنسيق البرنامج النصي لـ Bash shell. إذا كنت تفضل shell أخرى مثل PowerShell أو موجه الأوامر، فستحتاج إلى ضبط تعيين متغير وموصل وفقاً لذلك.

تحذير

هذا البرنامج النصي يحذف الموارد! يحذف الشبكة الظاهرية وكل الشبكات الفرعية التي تحتوي عليها. تأكد من أنك لم تعد بحاجة إلى أي من الموارد في شبكة الاتصال الظاهرية، بما في ذلك أي شبكات فرعية يحتوي عليها، قبل تشغيل هذا البرنامج النصي. بمجرد الحذف، تصبح هذه الموارد غير قابلة للاسترداد.

# Replace <my-resource-group> with the name of your resource group
# Assumes one virtual network in resource group
RES_GROUP=<my-resource-group>

# Get network profile ID
# Assumes one profile in virtual network
NETWORK_PROFILE_ID=$(az network profile list --resource-group $RES_GROUP --query [0].id --output tsv)

# Delete the network profile
az network profile delete --id $NETWORK_PROFILE_ID -y

# Delete virtual network
az network vnet delete --resource-group $RES_GROUP --name aci-vnet

الخطوات التالية