برنامج تعليمي: قم بتوزيع مجموعة متعددة الحاويات باستخدام قالب Resource Manager
تدعم مثيلات حاوية Azure توزيع عدة حاويات على مضيف واحد باستخدام مجموعة حاويات. تعد مجموعة الحاوية مفيدة عند إنشاء عنصر جانبي للتطبيق للتسجيل، أو المراقبة، أو أي تكوين آخر حيث تحتاج الخدمة إلى عملية ملحقة ثانية.
في هذا البرنامج التعليمي، يمكنك اتباع الخطوات لتشغيل تكوين sidecar مكون من حاويتين عن طريق نشر قالب Azure Resource Manager باستخدام Azure CLI. ستتعلم كيفية:
- هيِّئ قالب مجموعة متعدد الحاويات
- انشر مجموعة الحاوية
- عرض سجلات الحاويات
يمكن تكييف قالب Resource Manager بسهولة للسيناريوهات عندما تحتاج إلى نشر المزيد من موارد خدمة Azure (على سبيل المثال، مشاركة ملفات Azure أو شبكة ظاهرية) مع مجموعة الحاويات.
إشعار
المجموعات متعددة الحاويات مقصورة حاليًا على حاويات Linux.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
المتطلبات الأساسية
استخدم بيئة Bash في Azure Cloud Shell. لمزيد من المعلومات، راجع التشغيل السريع ل Bash في Azure Cloud Shell.
إذا كنت تفضل تشغيل أوامر مرجع CLI محلياً قم بتثبيت CLI Azure. إذا كنت تعمل على نظام تشغيل Windows أو macOS، ففكر في تشغيل Azure CLI في حاوية Docker. لمزيد من المعلومات، راجع كيفية تشغيل Azure CLI في حاوية Docker.
إذا كنت تستخدم تثبيت محلي، يُرجى تسجيل الدخول إلى Azure CLI مستخدمًا أمر az login. لإنهاء عملية المصادقة، اتبع الخطوات المعروضة في جهازك. للحصول على خيارات أخرى لتسجيل دخول، راجع تسجيل الدخول باستخدام Azure CLI.
عندما يُطلب منك، قم بتثبيت ملحق Azure CLI عند الاستخدام لأول مرة. لمزيد من المعلومات بشأن الامتدادات، راجع استخدام امتدادات مع Azure CLI.
يُرجى تشغيل إصدار az للوصول إلى الإصدار والمكتبات التابعة التي تم تثبيتها. للتحديث لآخر إصدار، يُرجى تشغيل تحديث az.
تكوين قالب
ابدأ بنسخ JSON التالي في ملف جديد باسم azuredeploy.json
. في Azure Cloud Shell، يمكنك استخدامVisual Studio Code لإنشاء الملف في دليل العمل الخاص بك:
code azuredeploy.json
يعرّف قالب Azure Resource Manager هذا مجموعة حاويات تحتوي على حاويتين وعنوان IP عام، ومنفذين مكشوفين. تقوم الحاوية الأولى في المجموعة بتشغيل تطبيق ويب مواجه للإنترنت. الحاوية الثانية، السيارة الجانبية، تقدم طلب HTTP إلى تطبيق الويب الرئيسي عبر الشبكة المحلية للمجموعة.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"containerGroupName": {
"type": "string",
"defaultValue": "myContainerGroup",
"metadata": {
"description": "Container Group name."
}
}
},
"variables": {
"container1name": "aci-tutorial-app",
"container1image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"container2name": "aci-tutorial-sidecar",
"container2image": "mcr.microsoft.com/azuredocs/aci-tutorial-sidecar"
},
"resources": [
{
"name": "[parameters('containerGroupName')]",
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2019-12-01",
"location": "[resourceGroup().location]",
"properties": {
"containers": [
{
"name": "[variables('container1name')]",
"properties": {
"image": "[variables('container1image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
},
"ports": [
{
"port": 80
},
{
"port": 8080
}
]
}
},
{
"name": "[variables('container2name')]",
"properties": {
"image": "[variables('container2image')]",
"resources": {
"requests": {
"cpu": 1,
"memoryInGb": 1.5
}
}
}
}
],
"osType": "Linux",
"ipAddress": {
"type": "Public",
"ports": [
{
"protocol": "tcp",
"port": 80
},
{
"protocol": "tcp",
"port": 8080
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', parameters('containerGroupName'))).ipAddress.ip]"
}
}
}
لاستخدام سجل صورة حاوية خاصة، أضف كائنًا إلى مستند JSON بالتنسيق التالي. للحصول على مثال لتطبيق هذا التكوين، راجع وثائق مرجع قالب ACI Resource Manager.
"imageRegistryCredentials": [
{
"server": "[parameters('imageRegistryLoginServer')]",
"username": "[parameters('imageRegistryUsername')]",
"password": "[parameters('imageRegistryPassword')]"
}
]
نشر القالب
أنشئ مجموعة موارد باستخدام الأمر az group create.
az group create --name myResourceGroup --location eastus
قم بنشر القالب باستخدام الأمر az deployment group create.
az deployment group create --resource-group myResourceGroup --template-file azuredeploy.json
في غضون ثوانٍ قليلة، من المفترض أن تتلقى استجابة أولية من Azure.
عرض حالة النشر
لعرض حالة التوزيع، استخدم الأمر التالي az container show:
az container show --resource-group myResourceGroup --name myContainerGroup --output table
إذا كنت ترغب في عرض التطبيق قيد التشغيل، فانتقل إلى عنوان IP الخاص به في متصفحك. على سبيل المثال، عنوان IP هو 52.168.26.124
في هذا المثال الناتج:
Name ResourceGroup Status Image IP:ports Network CPU/Memory OsType Location
---------------- --------------- -------- -------------------------------------------------------------------------------------------------- -------------------- --------- --------------- -------- ----------
myContainerGroup danlep0318r Running mcr.microsoft.com/azuredocs/aci-tutorial-sidecar,mcr.microsoft.com/azuredocs/aci-helloworld:latest 20.42.26.114:80,8080 Public 1.0 core/1.5 gb Linux eastus
عرض سجلات الحاوية
اعرض إخراج السجل للحاوية باستخدام الأمر az container logs. تحدد الوسيطة --container-name
الحاوية التي يتم سحب السجلات منها. في هذا المثال، تم تحديد الحاوية aci-tutorial-app
.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-app
إخراج:
listening on port 80
::1 - - [02/Jul/2020:23:17:48 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:51 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
::1 - - [02/Jul/2020:23:17:54 +0000] "HEAD / HTTP/1.1" 200 1663 "-" "curl/7.54.0"
لمشاهدة سجلات الحاوية الجانبية، قم بتشغيل أمر مشابه يحدد الحاوية aci-tutorial-sidecar
.
az container logs --resource-group myResourceGroup --name myContainerGroup --container-name aci-tutorial-sidecar
إخراج:
Every 3s: curl -I http://localhost 2020-07-02 20:36:41
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 1663 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
HTTP/1.1 200 OK
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Wed, 29 Nov 2017 06:40:40 GMT
ETag: W/"67f-16006818640"
Content-Type: text/html; charset=UTF-8
Content-Length: 1663
Date: Thu, 02 Jul 2020 20:36:41 GMT
Connection: keep-alive
كما ترى، يقوم sidecar بشكل دوري بإجراء طلب HTTP إلى تطبيق الويب الرئيسي عبر الشبكة المحلية للمجموعة للتأكد من تشغيله. يمكن توسيع هذا المثال الجانبي ليطلق تنبيهًا إذا تلقى رمز استجابة HTTP غير 200 OK
.
الخطوات التالية
في هذا البرنامج التعليمي، استخدمت قالب Azure Resource Manager لتوزيع مجموعة متعددة الحاويات في مثيلات Azure Container. لقد تعرفت على كيفية:
- هيِّئ قالب مجموعة متعدد الحاويات
- انشر مجموعة الحاوية
- عرض سجلات الحاويات
لمزيد من نماذج القوالب، راجع قوالب Azure Resource Manager لمثيلات حاوية Azure.
يمكنك أيضًا تحديد مجموعة متعددة الحاويات باستخدام ملف YAML. نظرًا لطبيعة تنسيق YAML الأكثر إيجازًا، يعد التوزيع باستخدام ملف YAML خيارًا جيدًا عندما يتضمن التوزيع الخاص بك حالات الحاوية فقط.