نشر مثيلات حاوية في شبكة اتصال 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
عند النشر إلى شبكة ظاهرية جديدة باستخدام هذا الأسلوب، قد يستغرق النشر بضع دقائق أثناء إنشاء موارد شبكة الاتصال. بعد النشر الأولي، يتم إكمال عمليات نشر مجموعة حاويات إضافية إلى الشبكة الفرعية نفسها بسرعة أكبر.
النشر على الشبكة الظاهرية الموجودة
لنشر مجموعة حاويات إلى شبكة ظاهرية موجودة:
- إنشاء شبكة فرعية داخل شبكة الاتصال الظاهرية الموجودة أو استخدام شبكة فرعية موجودة تم فيها توزيع مجموعة حاويات بالفعل أو استخدام شبكة فرعية موجودة تم إفراغها من كل الموارد الأخرى والتكوين.
- نشر مجموعة حاويات باستخدام إنشاء حاوية وتحديد واحد مما يلي:
- اسم الشبكة الظاهرية واسم الشبكة الفرعية
- معرف مورد الشبكة الظاهرية ومعرف مورد الشبكة الفرعية، والذي يسمح باستخدام شبكة افتراضية من مجموعة موارد مختلفة
- اسم ملف تعريف الشبكة أو معرفها، والذي يمكنك الحصول عليه باستخدام قائمة ملفات تعريف شبكة الاتصال
مثال
المثال التالي ينشر مجموعة حاوية ثانية إلى الشبكة الفرعية نفسها التي تم إنشاؤها مسبقاً، ويتحقق من الاتصال بين مثيلي الحاوية.
أولاً، احصل على عنوان 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
الخطوات التالية
لنشر شبكة ظاهرية جديدة وشبكة فرعية وملف تعريف شبكة الاتصال ومجموعة حاويات باستخدام قالب إدارة الموارد، راجع إنشاء مجموعة حاويات Azure باستخدام VNet.
لتوزيع مثيلات حاوية Azure التي يمكنها سحب الصور من Azure Container Registry من خلال نقطة نهاية خاصة، راجع التوزيع إلى مثيلات حاوية Azure من Azure Container Registry باستخدام هوية مدارة.