برنامج تعليمي: قم بتوزيع مجموعة متعددة الحاويات باستخدام قالب Resource Manager

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

في هذا البرنامج التعليمي، يمكنك اتباع الخطوات لتشغيل تكوين جانبي بسيط من حاويتين، عن طريق توزيع قالب Azure Resource Manager باستخدام Azure CLI. ‏‫ستتعلم كيفية:

  • هيِّئ قالب مجموعة متعدد الحاويات
  • انشر مجموعة الحاوية
  • عرض سجلات الحاويات

يمكن تكييف قالب Resource Manager بسهولة مع السيناريوهات عندما تحتاج إلى توزيع موارد خدمة Azure إضافية (على سبيل المثال، مشاركة ملفات Azure أو شبكة افتراضية) مع مجموعة الحاوية.

إشعار

المجموعات متعددة الحاويات مقصورة حاليًا على حاويات Linux.

إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.

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

تكوين قالب

ابدأ بنسخ 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

كما ترى، يقوم الجهاز الجانبي بشكل دوري بتقديم طلب HTTP إلى تطبيق الويب الرئيسي عبر الشبكة المحلية للمجموعة للتأكد من أنه يعمل. يمكن توسيع هذا المثال الجانبي ليطلق تنبيهًا إذا تلقى رمز استجابة HTTP غير 200 OK.

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

في هذا البرنامج التعليمي، استخدمت قالب Azure Resource Manager لتوزيع مجموعة متعددة الحاويات في مثيلات Azure Container. لقد تعرفت على كيفية:

  • هيِّئ قالب مجموعة متعدد الحاويات
  • انشر مجموعة الحاوية
  • عرض سجلات الحاويات

للحصول على نماذج قوالب إضافية، راجع قوالب Azure Resource Manager لمثيلات حاوية Azure.

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