Azure Container Apps ARM ve YAML şablon belirtimleri
Azure Container Apps dağıtımları bir Azure Resource Manager (ARM) şablonuyla desteklenir. Bazı Container Apps CLI komutları, kaynak belirtmek için YAML şablonu kullanmayı da destekler.
Bu makale, sık kullanılan Container Apps kaynakları için ARM ve YAML yapılandırmalarının örneklerini içerir. Container Apps kaynaklarının tam listesi için bkz . Container Apps için Azure Resource Manager şablonları. Bu makalede listelenen kod yalnızca örnek amaçlıdır. Tam şema ve tür bilgileri için gerekli API sürümünüz için JSON tanımlarına bakın.
API sürümleri
Azure Container Apps için en son yönetim API'sinin sürümleri şunlardır:
2023-05-01
(kararlı)2023-08-01-preview
(Önizleme)
API sürümleri arasındaki farklar hakkında daha fazla bilgi edinmek için bkz . değişiklik günlüğünü Microsoft.App.
API sürümlerini güncelleştirme
ARM veya Bicep'te belirli bir API sürümünü kullanmak için şablonlarınızda başvuruda bulunan sürümü güncelleştirin. Azure CLI veya Azure PowerShell'de en son API sürümünü kullanmak için bunları en son sürüme güncelleştirin.
Aşağıdaki komutları çalıştırarak Azure CLI'yi ve Azure Container Apps uzantısını güncelleştirin:
az upgrade
az extension add -n containerapp --upgrade
Azure PowerShell'i güncelleştirmek için bkz . Azure PowerShell'i yükleme.
Azure Container Apps'i en son API sürümüyle program aracılığıyla yönetmek için yönetim SDK'sının en son sürümlerini kullanın:
Container Apps ortamı
Aşağıdaki tablolarda, Container Apps ortam kaynağında yaygın olarak kullanılan özellikler açıklanmaktadır. Özelliklerin tam listesi için bkz . Azure Container Apps REST API başvurusu.
Kaynak
Container Apps ortam kaynağı aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü | Salt Okunur |
---|---|---|---|
daprAIInstrumentationKey |
Dapr tarafından kullanılan Application Insights izleme anahtarı. | Dize | Hayır |
appLogsConfiguration |
Ortamın günlük yapılandırması. | Object | Hayır |
peerAuthentication |
mTLS şifrelemesini etkinleştirme. | Object | Hayır |
Örnekler
Aşağıdaki örnek ARM şablonu parçacığı bir Container Apps ortamı dağıtır.
Not
Kapsayıcı uygulaması ortamları oluşturma komutları YAML yapılandırma girişini desteklemez.
{
"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"
}
}
Kapsayıcı uygulaması
Aşağıdaki tablolarda kapsayıcı uygulaması kaynağında yaygın olarak kullanılan özellikler açıklanmaktadır. Özelliklerin tam listesi için bkz . Azure Container Apps REST API başvurusu.
Kaynak
Kapsayıcı uygulaması kaynağının properties
nesnesi aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü | Salt Okunur |
---|---|---|---|
provisioningState |
Uzun süre çalışan bir işlemin durumu, örneğin yeni kapsayıcı düzeltmesi oluşturulduğunda. Olası değerler şunlardır: sağlama, sağlandı, başarısız. Uygulamanın çalışır durumda olup olmadığını denetleyin. | string | Yes |
environmentId |
Kapsayıcı uygulamanızın ortam kimliği. Bu, kapsayıcı uygulaması oluşturmak için gerekli bir özelliktir. YAML kullanıyorsanız, bunun yerine Azure CLI'daki seçeneği kullanarak --environment ortam kimliğini belirtebilirsiniz. |
Dize | Hayır |
latestRevisionName |
En son düzeltmenin adı. | string | Yes |
latestRevisionFqdn |
En son düzeltmenin URL'si. | string | Yes |
Değer environmentId
aşağıdaki biçimi alır:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Bu örnekte, değerlerinizi köşeli ayraçlarla çevrili <>
yer tutucu belirteçlerin yerine koyarsınız.
properties.configuration
Kaynağın properties.configuration
nesnesi aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü |
---|---|---|
activeRevisionsMode |
ayarı single eski düzeltmeleri otomatik olarak devre dışı bırakır ve yalnızca en son düzeltmeyi etkin tutar. ayarı multiple , birden çok düzeltmeyi korumanıza olanak tanır. |
Dize |
secrets |
Kapsayıcı uygulamanızdaki gizli dizi değerlerini tanımlar. | nesne |
ingress |
Kapsayıcı uygulamasının genel erişilebilirlik yapılandırmasını tanımlayan nesne. | nesne |
registries |
Özel kapsayıcı kayıt defterleri için kimlik bilgilerine başvuran yapılandırma nesnesi. ile secretref tanımlanan girdiler gizli dizi yapılandırma nesnesine başvurur. |
nesne |
dapr |
Kapsayıcı uygulaması için Dapr ayarlarını tanımlayan yapılandırma nesnesi. | nesne |
Bölümünde yapılan configuration
değişiklikler uygulama kapsamı değişiklikleridir ve yeni bir düzeltme tetiklemez.
properties.template
Kaynağın properties.template
nesnesi aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü |
---|---|---|
revisionSuffix |
Düzeltme için kolay ad. Çalışma zamanı var olan düzeltme adı soneki değerleriyle çakışmaları reddettiği için bu değer benzersiz olmalıdır. | Dize |
containers |
Kapsayıcı uygulamasına hangi kapsayıcı görüntülerinin dahil olduğunu tanımlayan yapılandırma nesnesi. | nesne |
scale |
Kapsayıcı uygulaması için ölçek kurallarını tanımlayan yapılandırma nesnesi. | nesne |
bölümünde yapılan template
değişiklikler, yeni bir düzeltmeyi tetikleyen düzeltme kapsamı değişiklikleridir.
Örnekler
Sistem durumu yoklamaları hakkında ayrıntılı bilgi için bkz. Azure Container Apps'te sistem durumu yoklamaları.
Aşağıdaki örnek ARM şablonu parçacığı bir kapsayıcı uygulaması dağıtır.
{
"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 işi
Aşağıdaki tablolarda, Container Apps iş kaynağında yaygın olarak kullanılan özellikler açıklanmaktadır. Özelliklerin tam listesi için bkz . Azure Container Apps REST API başvurusu.
Kaynak
Container Apps iş kaynağının properties
nesnesi aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü | Salt Okunur |
---|---|---|---|
environmentId |
Container Apps işinizin ortam kimliği. Bu özellik bir Container Apps işi oluşturmak için gereklidir. YAML kullanıyorsanız, bunun yerine Azure CLI'daki seçeneği kullanarak --environment ortam kimliğini belirtebilirsiniz. |
Dize | Hayır |
Değer environmentId
aşağıdaki biçimi alır:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Bu örnekte, değerlerinizi köşeli ayraçlarla çevrili <>
yer tutucu belirteçlerin yerine koyarsınız.
properties.configuration
Kaynağın properties.configuration
nesnesi aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü |
---|---|---|
triggerType |
Container Apps işinin tetikleyici türü. Her tetikleyici türü için belirli bir yapılandırma için bkz . İşler tetikleyici türleri | Dize |
replicaTimeout |
Bir Container Apps işi için saniyeler içinde zaman aşımı. | integer |
replicaRetryLimit |
Container Apps işini yeniden deneme sayısı. | integer |
properties.template
Kaynağın properties.template
nesnesi aşağıdaki özellikleri içerir:
Özellik | Açıklama | Veri türü |
---|---|---|
containers |
İşe hangi kapsayıcı görüntülerinin dahil olduğunu tanımlayan yapılandırma nesnesi. | nesne |
scale |
İş için ölçek kurallarını tanımlayan yapılandırma nesnesi. | nesne |
Örnekler
Aşağıdaki örnek ARM şablonu parçacığı bir Container Apps işi dağıtır.
{
"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"
}
]
}
]
}
}
}