مواصفات قالب AZURE Container Apps ARM وYAML
يشغِّل قالب Azure Resource Manager (ARM) عمليات توزيع Azure Container Apps. تدعم بعض أوامر CLI لـ Container Apps أيضاً استخدام قالب YAML لتحديد مورد.
تتضمن هذه المقالة أمثلة على تكوينات ARM وYAML لموارد Container Apps المستخدمة بشكل متكرر. للحصول على قائمة كاملة بموارد Container Apps، راجع قوالب Azure Resource Manager لتطبيقات الحاوية. التعليمات البرمجية المدرجة في هذه المقالة هي لأغراض المثال فقط. للحصول على المخطط الكامل ومعلومات النوع، راجع تعريفات JSON لإصدار واجهة برمجة التطبيقات المطلوب.
إصدار واجهة برمجة التطبيقات
أحدث إصدارات واجهة برمجة تطبيقات الإدارة لتطبيقات حاوية Azure هي:
2023-05-01
(مستقر)2023-08-01-preview
(معاينة)
لمعرفة المزيد حول الاختلافات بين إصدارات واجهة برمجة التطبيقات، راجع Microsoft.App سجل التغيير.
تحديث إصدارات واجهة برمجة التطبيقات
لاستخدام إصدار API معين في ARM أو Bicep، قم بتحديث الإصدار المشار إليه في القوالب. لاستخدام أحدث إصدار من واجهة برمجة التطبيقات في Azure CLI أو Azure PowerShell، قم بتحديثها إلى أحدث إصدار.
تحديث Azure CLI وملحق Azure Container Apps عن طريق تشغيل الأوامر التالية:
az upgrade
az extension add -n containerapp --upgrade
لتحديث Azure PowerShell، راجع كيفية تثبيت Azure PowerShell.
لإدارة تطبيقات حاوية Azure برمجيا باستخدام أحدث إصدار من واجهة برمجة التطبيقات، استخدم أحدث إصدارات SDK للإدارة:
بيئة Container Apps
تصف الجداول التالية الخصائص شائعة الاستخدام المتوفرة في مورد بيئة Container Apps. للحصول على قائمة كاملة بالخصائص، راجع مرجع Azure Container Apps REST API.
Resource
يتضمن مورد بيئة Container Apps الخصائص التالية:
الخاصية | الوصف | نوع البيانات | للقراءة فقط |
---|---|---|---|
daprAIInstrumentationKey |
استخدم Dapr مفتاح تقرير عن حالة النظام لـ Application Insights. | سلسلة | لا |
appLogsConfiguration |
تكوين تسجيل البيئة. | الكائن | لا |
peerAuthentication |
كيفية تمكين تشفير mTLS. | الكائن | لا |
الأمثلة
المثال التالي يقوم مقتطف قالب ARM بنشر بيئة تطبيقات الحاوية.
إشعار
لا تدعم أوامر إنشاء بيئات تطبيق الحاوية إدخال تكوين YAML.
{
"location": "East US",
"properties": {
"appLogsConfiguration": {
"logAnalyticsConfiguration": {
"customerId": "string",
"sharedKey": "string"
}
},
"zoneRedundant": true,
"vnetConfiguration": {
"infrastructureSubnetId": "/subscriptions/<subscription_id>/resourceGroups/RGName/providers/Microsoft.Network/virtualNetworks/VNetName/subnets/subnetName1"
},
"customDomainConfiguration": {
"dnsSuffix": "www.my-name.com",
"certificateValue": "Y2VydA==",
"certificatePassword": "1234"
},
"workloadProfiles": [
{
"name": "My-GP-01",
"workloadProfileType": "GeneralPurpose",
"minimumCount": 3,
"maximumCount": 12
},
{
"name": "My-MO-01",
"workloadProfileType": "MemoryOptimized",
"minimumCount": 3,
"maximumCount": 6
},
{
"name": "My-CO-01",
"workloadProfileType": "ComputeOptimized",
"minimumCount": 3,
"maximumCount": 6
},
{
"name": "My-consumption-01",
"workloadProfileType": "Consumption"
}
],
"infrastructureResourceGroup": "myInfrastructureRgName"
}
}
تطبيق الحاوية
تصف الجداول التالية الخصائص شائعة الاستخدام في مورد تطبيق الحاوية. للحصول على قائمة كاملة بالخصائص، راجع مرجع Azure Container Apps REST API.
Resource
يتضمن كائن مورد properties
تطبيق الحاوية الخصائص التالية:
الخاصية | الوصف | نوع البيانات | للقراءة فقط |
---|---|---|---|
provisioningState |
حالة التشغيل طويل الأمد، على سبيل المثال عند إنشاء مراجعة حاوية جديدة. تتضمن القيم المحتملة: قيد التوفير، ومتوفرة، وغير متوفرة. تحقق مما إذا كان التطبيق قيد التشغيل. | سلسلة | نعم |
environmentId |
معرِّف البيئة لتطبيق الحاوية. هذه خاصية مطلوبة لإنشاء تطبيق حاوية. إذا كنت تستخدم YAML، يمكنك تحديد معرف البيئة باستخدام --environment الخيار في Azure CLI بدلا من ذلك. |
سلسلة | لا |
latestRevisionName |
اسم آخر مراجعة. | سلسلة | نعم |
latestRevisionFqdn |
عنوان URL لأحدث مراجعة. | سلسلة | نعم |
تأخذ قيمة environmentId
شكل النموذج التالي:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
في هذا المثال، يمكنك وضع قيمك بدلاً من الرموز المميزة للعنصر النائب محاطة بأقواس <>
.
properties.configuration
يتضمن كائن المورد properties.configuration
الخصائص التالية:
الخاصية | الوصف | نوع البيانات |
---|---|---|
activeRevisionsMode |
يؤدي الضبط على single إلى إلغاء تنشيط المراجعات القديمة تلقائياً، ويحافظ على أحدث مراجعة نشطة فقط. يسمح لك الضبط على multiple بالحفاظ على مراجعات متعددة. |
سلسلة |
secrets |
تعرِّف قيم البيانات السرية في تطبيق الحاوية. | كائن |
ingress |
الكائن الذي يحدد تكوين إمكانية الوصول العامة لتطبيق حاوية. | كائن |
registries |
كائن التكوين الذي يشير إلى بيانات الاعتماد لسجلات الحاويات الخاصة. تشير الإدخالات المعرفة بـ secretref إلى كائن تكوين البيانات السرية. |
كائن |
dapr |
كائن التكوين الذي يحدد إعدادات Dapr لتطبيق الحاوية. | كائن |
التغييرات التي أُجريت على القسم configuration
هي تغييرات في نطاق التطبيق، ولا تؤدي إلى مراجعة جديدة.
properties.template
يتضمن كائن المورد properties.template
الخصائص التالية:
الخاصية | الوصف | نوع البيانات |
---|---|---|
revisionSuffix |
اسم مألوف للمراجعة. يجب أن تكون هذه القيمة فريدة لأن وقت التشغيل يرفض أي تعارضات مع قيم لاحقة اسم المراجعة الموجودة. | سلسلة |
containers |
كائن التكوين الذي يحدد صور الحاوية المُضمَّنة في تطبيق الحاوية. | كائن |
scale |
كائن التكوين الذي يحدد قواعد المقياس لتطبيق الحاوية. | كائن |
التغييرات التي أُجريت على القسم template
هي تغييرات في نطاق المراجعة، وتؤدي إلى مراجعة جديدة.
الأمثلة
للحصول على تفاصيل حول فحوصات السلامة، راجع فحوصات الصحة في Azure Container Apps.
المثال التالي يوزع مقتطف قالب ARM تطبيق حاوية.
{
"identity": {
"userAssignedIdentities": {
"/subscriptions/<subscription_id>/resourcegroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-user": {
}
},
"type": "UserAssigned"
},
"properties": {
"environmentId": "/subscriptions/<subscription_id>/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
"workloadProfileName": "My-GP-01",
"configuration": {
"ingress": {
"external": true,
"targetPort": 3000,
"customDomains": [
{
"name": "www.my-name.com",
"bindingType": "SniEnabled",
"certificateId": "/subscriptions/<subscription_id>/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-name-dot-com"
},
{
"name": "www.my-other-name.com",
"bindingType": "SniEnabled",
"certificateId": "/subscriptions/<subscription_id>/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube/certificates/my-certificate-for-my-other-name-dot-com"
}
],
"traffic": [
{
"weight": 100,
"revisionName": "testcontainerApp0-ab1234",
"label": "production"
}
],
"ipSecurityRestrictions": [
{
"name": "Allow work IP A subnet",
"description": "Allowing all IP's within the subnet below to access containerapp",
"ipAddressRange": "192.168.1.1/32",
"action": "Allow"
},
{
"name": "Allow work IP B subnet",
"description": "Allowing all IP's within the subnet below to access containerapp",
"ipAddressRange": "192.168.1.1/8",
"action": "Allow"
}
],
"stickySessions": {
"affinity": "sticky"
},
"clientCertificateMode": "accept",
"corsPolicy": {
"allowedOrigins": [
"https://a.test.com",
"https://b.test.com"
],
"allowedMethods": [
"GET",
"POST"
],
"allowedHeaders": [
"HEADER1",
"HEADER2"
],
"exposeHeaders": [
"HEADER3",
"HEADER4"
],
"maxAge": 1234,
"allowCredentials": true
}
},
"dapr": {
"enabled": true,
"appPort": 3000,
"appProtocol": "http",
"httpReadBufferSize": 30,
"httpMaxRequestSize": 10,
"logLevel": "debug",
"enableApiLogging": true
},
"maxInactiveRevisions": 10,
"service": {
"type": "redis"
}
},
"template": {
"containers": [
{
"image": "repo/testcontainerApp0:v1",
"name": "testcontainerApp0",
"probes": [
{
"type": "Liveness",
"httpGet": {
"path": "/health",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "Awesome"
}
]
},
"initialDelaySeconds": 3,
"periodSeconds": 3
}
],
"volumeMounts": [
{
"mountPath": "/myempty",
"volumeName": "myempty"
},
{
"mountPath": "/myfiles",
"volumeName": "azure-files-volume"
},
{
"mountPath": "/mysecrets",
"volumeName": "mysecrets"
}
]
}
],
"initContainers": [
{
"image": "repo/testcontainerApp0:v4",
"name": "testinitcontainerApp0",
"resources": {
"cpu": 0.2,
"memory": "100Mi"
},
"command": [
"/bin/sh"
],
"args": [
"-c",
"while true; do echo hello; sleep 10;done"
]
}
],
"scale": {
"minReplicas": 1,
"maxReplicas": 5,
"rules": [
{
"name": "httpscalingrule",
"custom": {
"type": "http",
"metadata": {
"concurrentRequests": "50"
}
}
}
]
},
"volumes": [
{
"name": "myempty",
"storageType": "EmptyDir"
},
{
"name": "azure-files-volume",
"storageType": "AzureFile",
"storageName": "myazurefiles"
},
{
"name": "mysecrets",
"storageType": "Secret",
"secrets": [
{
"secretRef": "mysecret",
"path": "mysecret.txt"
}
]
}
],
"serviceBinds": [
{
"serviceId": "/subscriptions/<subscription_id>/resourceGroups/rg/providers/Microsoft.App/containerApps/redisService",
"name": "redisService"
}
]
}
}
}
مهمة تطبيقات الحاوية
تصف الجداول التالية الخصائص شائعة الاستخدام في مورد وظيفة Container Apps. للحصول على قائمة كاملة بالخصائص، راجع مرجع Azure Container Apps REST API.
Resource
يتضمن كائن مورد properties
وظيفة Container Apps الخصائص التالية:
الخاصية | الوصف | نوع البيانات | للقراءة فقط |
---|---|---|---|
environmentId |
معرف البيئة لمهمة Container Apps. هذه الخاصية مطلوبة لإنشاء مهمة Container Apps. إذا كنت تستخدم YAML، يمكنك تحديد معرف البيئة باستخدام --environment الخيار في Azure CLI بدلا من ذلك. |
سلسلة | لا |
تأخذ قيمة environmentId
شكل النموذج التالي:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
في هذا المثال، يمكنك وضع قيمك بدلاً من الرموز المميزة للعنصر النائب محاطة بأقواس <>
.
properties.configuration
يتضمن كائن المورد properties.configuration
الخصائص التالية:
الخاصية | الوصف | نوع البيانات |
---|---|---|
triggerType |
نوع المشغل لمهمة Container Apps. للحصول على تكوين محدد لكل نوع مشغل، راجع أنواع مشغلات الوظائف | سلسلة |
replicaTimeout |
المهلة بالثوان لمهمة Container Apps. | integer |
replicaRetryLimit |
عدد مرات إعادة محاولة مهمة Container Apps. | integer |
properties.template
يتضمن كائن المورد properties.template
الخصائص التالية:
الخاصية | الوصف | نوع البيانات |
---|---|---|
containers |
كائن التكوين الذي يحدد صور الحاوية المضمنة في الوظيفة. | كائن |
scale |
كائن التكوين الذي يحدد قواعد المقياس للوظيفة. | كائن |
الأمثلة
المثال التالي يوزع مقتطف قالب ARM مهمة Container Apps.
{
"identity": {
"userAssignedIdentities": {
"/subscriptions/<subscription_id>/resourcegroups/my-rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-user": {
}
},
"type": "UserAssigned"
},
"properties": {
"environmentId": "/subscriptions/<subscription_id>/resourceGroups/rg/providers/Microsoft.App/managedEnvironments/demokube",
"configuration": {
"replicaTimeout": 10,
"replicaRetryLimit": 10,
"manualTriggerConfig": {
"replicaCompletionCount": 1,
"parallelism": 4
},
"triggerType": "Manual"
},
"template": {
"containers": [
{
"image": "repo/testcontainerAppsJob0:v1",
"name": "testcontainerAppsJob0",
"probes": [
{
"type": "Liveness",
"httpGet": {
"path": "/health",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "Awesome"
}
]
},
"initialDelaySeconds": 5,
"periodSeconds": 3
}
],
"volumeMounts": [
{
"mountPath": "/myempty",
"volumeName": "myempty"
},
{
"mountPath": "/myfiles",
"volumeName": "azure-files-volume"
},
{
"mountPath": "/mysecrets",
"volumeName": "mysecrets"
}
]
}
],
"initContainers": [
{
"image": "repo/testcontainerAppsJob0:v4",
"name": "testinitcontainerAppsJob0",
"resources": {
"cpu": 0.2,
"memory": "100Mi"
},
"command": [
"/bin/sh"
],
"args": [
"-c",
"while true; do echo hello; sleep 10;done"
]
}
],
"volumes": [
{
"name": "myempty",
"storageType": "EmptyDir"
},
{
"name": "azure-files-volume",
"storageType": "AzureFile",
"storageName": "myazurefiles"
},
{
"name": "mysecrets",
"storageType": "Secret",
"secrets": [
{
"secretRef": "mysecret",
"path": "mysecret.txt"
}
]
}
]
}
}
}