الحاويات في Azure Container Apps
تدير Azure Container Apps تفاصيل Kubernetes وتنسيق الحاوية نيابة عنك. يمكن للحاويات في Azure Container Apps استخدام أي وقت تشغيل أو لغة برمجة أو مكدس تطوير من اختيارك.
تدعم 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
).