مشاركة عبر


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

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

تطبيقات حاويات Azure: حاويات

تدعم Azure Container Apps:

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

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

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

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

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

التكوين

تحتوي معظم تطبيقات الحاويات على حاوية واحدة. في السيناريوهات المتقدمة، قد يحتوي التطبيق أيضا على حاويات sidecar و init. في تعريف تطبيق الحاوية، يتم سرد التطبيق الرئيسي وحاويات sidecar الخاصة به في containers الصفيف في properties.template القسم ، ويتم سرد حاويات init في initContainers الصفيف. يعرض المقتطف التالي خيارات التكوين المتوفرة عند إعداد حاويات التطبيق.

{
  "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 عدد وحدات المعالجة المركزية المخصصة للحاوية. راجع متطلبات تخصيص وحدة المعالجة المركزية الظاهرية والذاكرة
resources.memory مقدار ذاكرة الوصول العشوائي المخصصة للحاوية. راجع متطلبات تخصيص وحدة المعالجة المركزية الظاهرية والذاكرة
volumeMounts صفيف من تعريفات تحميل وحدة التخزين. يمكنك تعريف وحدات تخزين مؤقتة أو دائمة للحاوية الخاصة بك. لمزيد من المعلومات حول وحدات التخزين، راجع استخدام عمليات تحميل التخزين في Azure Container Apps.
probes صفيف من تحقيقات السلامة الممكنة في الحاوية. لمزيد من المعلومات حول إعدادات المجسات، راجع تحقيقات الصحة في 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

إشعار

تقتصر التطبيقات التي تستخدم خطة الاستهلاك في بيئة الاستهلاك فقط على 2 نواة كحد أقصى و4 غيغي بايت من الذاكرة.

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

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

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

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

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

حاويات Sidecar

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

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

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

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

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

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

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

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

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

إشعار

لا يمكن لحاويات 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": "docker-hub-password",
        "value": "my-docker-hub-password"
      }
    ],
    ...
    "registries": [
      {
        "server": "docker.io",
        "username": "someuser",
        "passwordSecretRef": "docker-hub-password"
      }
    ]
  }
}

إشعار

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

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

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

لاستخدام الهوية المدارة مع السجل، يجب تمكين الهوية في التطبيق ويجب تعيين acrPull دور لها في السجل. لتكوين السجل، استخدم معرف مورد الهوية المدارة لهوية معينة من قبل المستخدم، أو system للهوية المعينة من قبل النظام في identity خاصية السجل. لا تقم بتكوين اسم مستخدم وكلمة مرور عند استخدام الهوية المدارة.

{
    "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).

  • الحد الأقصى لحجم الصورة:

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

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