الحاويات في Azure Container Apps

تدير Azure Container Apps تفاصيل Kubernetes وتنسيق الحاوية نيابة عنك. يمكن للحاويات في Azure Container Apps استخدام أي وقت تشغيل أو لغة برمجة أو مكدس تطوير من اختيارك.

Azure Container Apps: Containers

تدعم Azure Container Apps:

  • أي صورة حاوية x86-64 (linux/amd64) مستندة إلى Linux بدون صورة أساسية مطلوبة
  • حاويات من أي سجل حاويات عام أو خاص
  • حاويات Sidecar و init

تتضمن الميزات أيضا:

  • تؤدي التغييرات في template قسم التكوين إلى مراجعة تطبيق حاوية جديدة.
  • إذا تعطل الحاوية، يتم إعادة تشغيلها تلقائياً.

تتضمن ميزات الوظائف ما يلي:

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

التكوين

التعليمات البرمجية التالية هي مثال على containers الصفيف في properties.template قسم قالب مورد تطبيق الحاوية. يعرض المقتطف خيارات التكوين المتوفرة عند إعداد حاوية.

{
  "properties": {
    "template": {
      "containers": [
        {
          "name": "main",
          "image": "[parameters('container_image')]",
          "env": [
            {
              "name": "HTTP_PORT",
              "value": "80"
            },
            {
              "name": "SECRET_VAL",
              "secretRef": "mysecret"
            }
          ],
          "resources": {
            "cpu": 0.5,
            "memory": "1Gi"
          },
          "volumeMounts": [
            {
              "mountPath": "/appsettings",
              "volumeName": "appsettings-volume"
            }
          ],
          "probes": [
            {
              "type": "liveness",
              "httpGet": {
                "path": "/health",
                "port": 8080,
                "httpHeaders": [
                  {
                    "name": "Custom-Header",
                    "value": "liveness probe"
                  }
                ]
              },
              "initialDelaySeconds": 7,
              "periodSeconds": 3
            },
            {
              "type": "readiness",
              "tcpSocket": {
                "port": 8081
              },
              "initialDelaySeconds": 10,
              "periodSeconds": 3
            },
            {
              "type": "startup",
              "httpGet": {
                "path": "/startup",
                "port": 8080,
                "httpHeaders": [
                  {
                    "name": "Custom-Header",
                    "value": "startup probe"
                  }
                ]
              },
              "initialDelaySeconds": 3,
              "periodSeconds": 3
            }
          ]
        }
      ]
    },
    "initContainers": [
      {
        "name": "init",
        "image": "[parameters('init_container_image')]",
        "resources": {
          "cpu": 0.25,
          "memory": "0.5Gi"
        },
        "volumeMounts": [
          {
            "mountPath": "/appsettings",
            "volumeName": "appsettings-volume"
          }
        ]
      }
    ]
    ...
  }
  ...
}
الإعدادات ‏‏الوصف ملاحظات
image اسم صورة الحاوية لتطبيق الحاوية. تأخذ هذه القيمة شكل repository/<IMAGE_NAME>:<TAG>.
name اسم مألوف للحاوية. يستخدم في إعداد التقارير وتحديد الهوية.
command أمر بدء تشغيل الحاوية. ما يعادل حقل نقطة دخول Docker.
args بدء تشغيل وسيطات الأمر. يتم ربط الإدخالات في الصفيف معاً لإنشاء قائمة معلمات لتمريرها إلى أمر بدء التشغيل.
env صفيف من أزواج المفاتيح/القيم التي تحدد متغيرات البيئة. استخدم secretRef بدلاً من value الحقل للإشارة إلى سر.
resources.cpu عدد وحدات المعالجة المركزية المخصصة للحاوية. مع خطة الاستهلاك، يجب أن تلتزم القيم بالقواعد التالية:

• أكبر من الصفر
• أقل من أو يساوي 2
• يمكن أن يكون أي رقم عشري (بحد أقصى منزلتين عشريتين)

على سبيل المثال، 1.25 صالح، ولكنه 1.555 غير صالح.
الافتراضي هو 0.25 وحدة معالجة مركزية لكل حاوية.

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

عند استخدام الخطة المخصصة، يجب أن يكون الحد الأقصى لوحدات المعالجة المركزية أقل من أو يساوي عدد الذاكرات الأساسية المتوفرة في ملف التعريف حيث يتم تشغيل تطبيق الحاوية.
resources.memory مقدار ذاكرة الوصول العشوائي المخصصة للحاوية. مع خطة الاستهلاك، يجب أن تلتزم القيم بالقواعد التالية:

• أكبر من الصفر
• أقل من أو يساوي 4Gi
• يمكن أن يكون أي رقم عشري (بحد أقصى منزلتين عشريتين)

على سبيل المثال، 1.25Gi صالح، ولكنه 1.555Gi غير صالح.
الإعداد الافتراضي هو 0.5Gi لكل حاوية.

عند استخدام حمل عمل الاستهلاك على الخطة المخصصة، تنطبق نفس القواعد باستثناء أن تكون الذاكرة أقل من أو تساوي 8Gi.

عند استخدام الخطة المخصصة، يجب أن تكون الذاكرة القصوى أقل من أو تساوي مقدار الذاكرة المتوفرة في ملف التعريف حيث يتم تشغيل تطبيق الحاوية.
volumeMounts صفيف من تعريفات تحميل وحدة التخزين. يمكنك تعريف وحدة تخزين مؤقتة أو وحدات تخزين دائمة متعددة للحاوية الخاصة بك. لمزيد من المعلومات حول وحدات التخزين، راجع استخدام عمليات تحميل التخزين في Azure Container Apps.
probes صفيف من تحقيقات السلامة الممكنة في الحاوية. تستند هذه الميزة إلى تحقيقات صحة Kubernetes. لمزيد من المعلومات حول إعدادات المجسات، راجع تحقيقات الصحة في Azure Container Apps.

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

وحدات المعالجة المركزية الظاهرية (الذاكرات الأساسية) الذاكرة خطة الاستهلاك ملف تعريف حمل عمل الاستهلاك
0.25 0.5Gi
0.5 1.0Gi
0.75 1.5Gi
1.0 2.0Gi
1.25 2.5Gi
1.5 3.0Gi
1.75 3.5Gi
2.0 4.0Gi
2.25 4.5Gi
2.5 5.0Gi
2.75 5.5Gi
3.0 6.0Gi
3.25 6.5Gi
3.5 7.0Gi
3.75 7.5Gi
4.0 8.0Gi
  • يجب أن يتطابق إجمالي طلبات وحدة المعالجة المركزية في جميع الحاويات الخاصة بك مع إحدى القيم في عمود وحدات المعالجة المركزية الظاهرية.

  • يجب أن يتطابق إجمالي طلبات الذاكرة في جميع الحاويات مع قيمة الذاكرة في عمود الذاكرة في الصف نفسه من عمود CPU.

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

حاويات متعددة

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

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

تشترك الحاويات المتعددة في نفس تطبيق الحاوية في موارد القرص الثابت والشبكة وتختبر نفس دورة حياة التطبيق.

هناك طريقتان لتشغيل حاويات متعددة في تطبيق حاوية: حاويات sidecar وحاويات التهيئة.

حاويات Sidecar

يمكنك تحديد حاويات متعددة في تطبيق حاوية واحدة لتنفيذ نمط sidecar.

تتضمن أمثلة حاويات sidecar ما يلي:

  • عامل يقرأ السجلات من حاوية التطبيق الأساسية على وحدة تخزين مشتركة ويحيلها إلى خدمة تسجيل.

  • عملية خلفية تقوم بتحديث ذاكرة التخزين المؤقت المستخدمة بواسطة حاوية التطبيق الأساسية في وحدة تخزين مشتركة.

هذه السيناريوهات هي أمثلة، ولا تمثل الطرق الوحيدة التي يمكنك من خلالها تنفيذ sidecar.

لتشغيل حاويات متعددة في تطبيق حاوية، أضف أكثر من حاوية واحدة في containers صفيف قالب تطبيق الحاوية.

حاوية التهيئة

يمكنك تعريف حاوية init واحدة أو أكثر في تطبيق حاوية. يتم تشغيل حاويات Init قبل حاوية التطبيق الأساسية وتستخدم لتنفيذ مهام التهيئة مثل تنزيل البيانات أو إعداد البيئة.

يتم تعريف حاويات Init في initContainers صفيف قالب تطبيق الحاوية. يتم تشغيل الحاويات بالترتيب الذي تم تعريفها به في الصفيف ويجب إكمالها بنجاح قبل بدء تشغيل حاوية التطبيق الأساسي.

إشعار

تدعم حاويات Init سحب الصور باستخدام الهويات المدارة، ولكن العمليات التي تعمل في حاويات init ليس لديها حق الوصول إلى الهويات المدارة.

سجلات الحاويات

يمكنك نشر الصور المستضافة على السجلات الخاصة عن طريق توفير بيانات الاعتماد في تكوين Container Apps.

لاستخدام سجل حاوية، يمكنك تعريف الحقول المطلوبة في registries الصفيف في properties.configuration قسم من قالب مورد تطبيق الحاوية. passwordSecretRef يعرف الحقل اسم السر في اسم الصفيفsecrets حيث قمت بتعريف كلمة المرور.

{
  ...
  "registries": [{
    "server": "docker.io",
    "username": "my-registry-user-name",
    "passwordSecretRef": "my-password-secret-name"
  }]
}

يتم استخدام بيانات الاعتماد المحفوظة لسحب صورة حاوية من السجل الخاص عند نشر تطبيقك.

يوضح المثال التالي كيفية تكوين بيانات اعتماد Azure Container Registry في تطبيق حاوية.

{
  ...
  "configuration": {
    "secrets": [
      {
        "name": "acr-password",
        "value": "my-acr-password"
      }
    ],
    ...
    "registries": [
      {
        "server": "myacr.azurecr.io",
        "username": "someuser",
        "passwordSecretRef": "acr-password"
      }
    ]
  }
}

إشعار

يحدد Docker Hub عدد تنزيلات صور Docker. عند الوصول إلى الحد، ستفشل الحاويات في تطبيقك في البدء. استخدم سجلا بحدود كافية، مثل Azure Container Registry لتجنب هذه المشكلة.

الهوية المدارة باستخدام Azure Container Registry

يمكنك استخدام هوية مدارة من Azure للمصادقة باستخدام Azure Container Registry بدلا من استخدام اسم مستخدم وكلمة مرور. لمزيد من المعلومات، راجع الهويات المدارة في Azure Container Apps.

عند تعيين هوية مدارة إلى سجل، استخدم معرف مورد الهوية المدارة لهوية معينة من قبل المستخدم، أو system للهوية المعينة من قبل النظام.

{
    "identity": {
        "type": "SystemAssigned,UserAssigned",
        "userAssignedIdentities": {
            "<IDENTITY1_RESOURCE_ID>": {}
        }
    }
    "properties": {
        "configuration": {
            "registries": [
            {
                "server": "myacr1.azurecr.io",
                "identity": "<IDENTITY1_RESOURCE_ID>"
            },
            {
                "server": "myacr2.azurecr.io",
                "identity": "system"
            }]
        }
        ...
    }
}

لمزيد من المعلومات حول تكوين الهويات المعينة من قبل المستخدم، راجع إضافة هوية معينة من قبل المستخدم.

القيود

Azure Container Apps لها القيود التالية:

  • الحاويات المميزة: لا تسمح Azure Container Apps بوضع الحاويات المميزة مع الوصول على مستوى المضيف.

  • نظام التشغيل: مطلوب صور الحاوية المستندة إلى Linux (linux/amd64).

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