مواصفات واجهة برمجة تطبيقات قالب ARM ل Container Apps Preview

يتم تشغيل عمليات توزيع Azure Container Apps بواسطة قالب Azure Resource Manager (ARM). تدعم بعض أوامر Container Apps CLI أيضا استخدام قالب YAML لتحديد مورد.

ملاحظة

تم ترحيل موارد Azure Container Apps من Microsoft.Web مساحة الاسم إلى Microsoft.App مساحة الاسم. راجع ترحيل مساحة الاسم من Microsoft.Web إلى Microsoft.App في مارس 2022 للحصول على مزيد من التفاصيل.

بيئة تطبيقات الحاوية

تصف الجداول التالية الخصائص المتوفرة في مورد بيئة Container Apps.

المورد

يحتوي مورد تطبيق الحاوية لقالب ARM على الخصائص التالية:

الخاصية الوصف نوع البيانات
name اسم بيئة Container Apps. سلسلة
location منطقة Azure حيث يتم نشر بيئة Container Apps. سلسلة
type Microsoft.App/managedEnvironments – نوع مورد ARM سلسلة

properties

يحتوي كائن المورد properties على الخصائص التالية:

الخاصية الوصف نوع البيانات للقراءة فقط
daprAIInstrumentationKey مفتاح تقرير عن حالة النظام Insights التطبيق المستخدم من قبل Dapr. سلسلة لا
appLogsConfiguration تكوين تسجيل البيئة. العنصر لا

أمثلة

المثال التالي يقوم قالب ARM بنشر بيئة Container Apps.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "defaultValue": "canadacentral",
      "type": "String"
    },
    "dapr_ai_instrumentation_key": {
      "defaultValue": "",
      "type": "String"
    },
    "environment_name": {
      "defaultValue": "myenvironment",
      "type": "String"
    },
    "log_analytics_customer_id": {
      "type": "String"
    },
    "log_analytics_shared_key": {
      "type": "SecureString"
    },
    "storage_account_name": {
      "type": "String"
    },
    "storage_account_key": {
      "type": "SecureString"
    },
    "storage_share_name": {
      "type": "String"
    }
  },
  "variables": {},
  "resources": [
    {
      "type": "Microsoft.App/managedEnvironments",
      "apiVersion": "2022-03-01",
      "name": "[parameters('environment_name')]",
      "location": "[parameters('location')]",
      "properties": {
        "daprAIInstrumentationKey": "[parameters('dapr_ai_instrumentation_key')]",
        "appLogsConfiguration": {
          "destination": "log-analytics",
          "logAnalyticsConfiguration": {
            "customerId": "[parameters('log_analytics_customer_id')]",
            "sharedKey": "[parameters('log_analytics_shared_key')]"
          }
        }
      },
      "resources": [
        {
          "type": "storages",
          "name": "myazurefiles",
          "apiVersion": "2022-03-01",
          "dependsOn": [
            "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]"
          ],
          "properties": {
            "azureFile": {
              "accountName": "[parameters('storage_account_name')]",
              "accountKey": "[parameters('storage_account_key')]",
              "shareName": "[parameters('storage_share_name')]",
              "accessMode": "ReadWrite"
            }
          }
        }
      ]
    }
  ]
}

تطبيق الحاوية

تصف الجداول التالية الخصائص المتوفرة في مورد تطبيق الحاوية.

المورد

يحتوي مورد تطبيق الحاوية لقالب ARM على الخصائص التالية:

الخاصية الوصف نوع البيانات
name اسم تطبيق Container Apps. سلسلة
location منطقة Azure حيث يتم نشر مثيل Container Apps. سلسلة
tags مجموعة من علامات Azure المقترنة بتطبيق الحاوية. صفيف
type Microsoft.App/containerApps – نوع مورد ARM سلسلة

في هذا المثال، يمكنك وضع قيمك بدلا من الرموز المميزة للعنصر النائب محاطة بأقواس <> .

properties

يحتوي كائن المورد properties على الخصائص التالية:

الخاصية الوصف نوع البيانات للقراءة فقط
provisioningState حالة عملية طويلة الأمد، على سبيل المثال عند إنشاء مراجعة حاوية جديدة. تتضمن القيم المحتملة: التوفير، التوفير، الفشل. تحقق مما إذا كان التطبيق قيد التشغيل. سلسلة نعم
environmentId معرف البيئة لتطبيق الحاوية. هذه خاصية مطلوبة. سلسلة لا
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 القسم هي تغييرات نطاق المراجعة، والتي تؤدي إلى مراجعة جديدة.

أمثلة

للحصول على تفاصيل حول تحقيقات السلامة، راجع تحقيقات Heath في Azure Container Apps.

المثال التالي يقوم قالب ARM بنشر تطبيق حاوية.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "containerappName": {
      "defaultValue": "mycontainerapp",
      "type": "String"
    },
    "location": {
      "defaultValue": "canadacentral",
      "type": "String"
    },
    "environment_name": {
      "defaultValue": "myenvironment",
      "type": "String"
    },
    "container_image": {
      "type": "String"
    },
    "registry_password": {
      "type": "SecureString"
    },
    "storage_share_name": {
      "type": "String"
    }
  },
  "variables": {},
  "resources": [
    {
      "apiVersion": "2022-03-01",
      "type": "Microsoft.App/containerApps",
      "name": "[parameters('containerappName')]",
      "location": "[parameters('location')]",
      "identity": {
        "type": "None"      
      },
      "properties": {
        "managedEnvironmentId": "[resourceId('Microsoft.App/managedEnvironments', parameters('environment_name'))]",
        "configuration": {
          "secrets": [
            {
              "name": "mysecret",
              "value": "thisismysecret"
            },
            {
              "name": "myregistrypassword",
              "value": "[parameters('registry_password')]"
            }
          ],
          "ingress": {
            "external": true,
            "targetPort": 80,
            "allowInsecure": false,
            "traffic": [
              {
                "latestRevision": true,
                "weight": 100
              }
            ]
          },
          "registries": [
            {
              "server": "myregistry.azurecr.io",
              "username": "[parameters('containerappName')]",
              "passwordSecretRef": "myregistrypassword"
            }
          ],
          "dapr": {
            "appId": "[parameters('containerappName')]",
            "appPort": 80,
            "appProtocol": "http",
            "enabled": true
          }
        },
        "template": {
          "revisionSuffix": "myrevision",
          "containers": [
            {
              "name": "main",
              "image": "[parameters('container_image')]",
              "env": [
                {
                  "name": "HTTP_PORT",
                  "value": "80"
                },
                {
                  "name": "SECRET_VAL",
                  "secretRef": "mysecret"
                }
              ],
              "resources": {
                "cpu": 0.5,
                "memory": "1Gi"
              },
              "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
                }
              ],
              "volumeMounts": [
                {
                  "mountPath": "/myempty",
                  "volumeName": "myempty"
                },
                {
                  "mountPath": "/myfiles",
                  "volumeName": "azure-files-volume"
                }
              ]
            }
          ],
          "scale": {
            "minReplicas": 1,
            "maxReplicas": 3
          },
          "volumes": [
            {
              "name": "myempty",
              "storageType": "EmptyDir"
            },
            {
              "name": "azure-files-volume",
              "storageType": "AzureFile",
              "storageName": "myazurefiles"
            }
          ]
        }
      }
    }
  ]
}