Spesifikasi templat AZURE Container Apps ARM dan YAML
Penyebaran Azure Container Apps didukung oleh templat Azure Resource Manager (ARM). Beberapa perintah Container Apps CLI juga mendukung penggunaan template YAML untuk menentukan sumber daya.
Artikel ini mencakup contoh konfigurasi ARM dan YAML untuk sumber daya Container Apps yang sering digunakan. Untuk daftar lengkap sumber daya Container Apps, lihat Templat Azure Resource Manager untuk Aplikasi Kontainer. Kode yang tercantum dalam artikel ini hanya untuk tujuan contoh. Untuk informasi skema dan jenis lengkap, lihat definisi JSON untuk versi API yang diperlukan.
Versi API
Versi API manajemen terbaru untuk Azure Container Apps adalah:
2023-05-01
(stabil)2023-08-01-preview
(pratinjau)
Untuk mempelajari selengkapnya tentang perbedaan antara versi API, lihat Microsoft.App mengubah log.
Memperbarui versi API
Untuk menggunakan versi API tertentu di ARM atau Bicep, perbarui versi yang dirujuk dalam templat Anda. Untuk menggunakan versi API terbaru di Azure CLI atau Azure PowerShell, perbarui ke versi terbaru.
Perbarui Azure CLI dan ekstensi Azure Container Apps dengan menjalankan perintah berikut:
az upgrade
az extension add -n containerapp --upgrade
Untuk memperbarui Azure PowerShell, lihat Cara menginstal Azure PowerShell.
Untuk mengelola Azure Container Apps secara terprogram dengan versi API terbaru, gunakan versi terbaru SDK manajemen:
Lingkungan Container Apps
Tabel berikut ini menjelaskan properti yang umum digunakan yang tersedia di sumber daya lingkungan Container Apps. Untuk daftar lengkap properti, lihat Referensi REST API Azure Container Apps.
Sumber daya
Sumber daya lingkungan Container Apps mencakup properti berikut:
Properti | Deskripsi | Jenis Data | Baca saja |
---|---|---|---|
daprAIInstrumentationKey |
Kunci instrumentasi Application Insights yang digunakan oleh Dapr. | string | No |
appLogsConfiguration |
Konfigurasi pengelogan lingkungan. | Objek | No |
peerAuthentication |
Cara mengaktifkan enkripsi mTLS. | Objek | No |
Contoh
Contoh cuplikan templat ARM berikut menyebarkan lingkungan Container Apps.
Catatan
Perintah untuk membuat lingkungan aplikasi kontainer tidak mendukung input konfigurasi 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"
}
}
Container Apps
Tabel berikut ini menjelaskan properti yang umum digunakan di sumber daya aplikasi kontainer. Untuk daftar lengkap properti, lihat Referensi REST API Azure Container Apps.
Sumber daya
Objek sumber daya properties
aplikasi kontainer mencakup properti berikut:
Properti | Deskripsi | Jenis Data | Baca saja |
---|---|---|---|
provisioningState |
Kondisi operasi yang sudah berjalan lama, misalnya ketika revisi kontainer baru dibuat. Nilai yang mungkin termasuk: provisi, tersedia, gagal. Periksa apakah aplikasi siap dan berjalan. | string | Ya |
environmentId |
ID lingkungan untuk aplikasi kontainer Anda. Ini adalah properti yang diperlukan untuk membuat aplikasi kontainer. Jika Anda menggunakan YAML, Anda dapat menentukan ID lingkungan menggunakan --environment opsi di Azure CLI sebagai gantinya. |
string | No |
latestRevisionName |
Nama revisi terbaru. | string | Ya |
latestRevisionFqdn |
URL revisi terbaru. | string | Ya |
Nilai environmentId
mengambil formulir berikut:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Dalam contoh ini, Anda menempatkan nilai di tempat token placeholder yang dikelilingi oleh tanda kurung <>
.
properties.configuration
Objek sumber daya properties.configuration
mencakup properti berikut:
Properti | Deskripsi | Jenis Data |
---|---|---|
activeRevisionsMode |
Atur ke single untuk secara otomatis menonaktifkan revisi lama, dan hanya membuat revisi terbaru aktif. Atur ke multiple untuk memungkinkan Anda mempertahankan beberapa revisi. |
string |
secrets |
Mendefinisikan nilai rahasia di aplikasi kontainer Anda. | object |
ingress |
Objek yang mendefinisikan konfigurasi aksesibilitas publik dari aplikasi kontainer. | object |
registries |
Objek konfigurasi yang mereferensikan info masuk untuk pendaftar kontainer privat. Entri yang didefinisikan dengan secretref mereferensikan objek konfigurasi rahasia. |
object |
dapr |
Objek konfigurasi yang mendefinisikan pengaturan Dapr untuk aplikasi kontainer. | object |
Perubahan yang dilakukan pada bagian configuration
adalah perubahan lingkup aplikasi, yang tidak memicu revisi baru.
properties.template
Objek sumber daya properties.template
mencakup properti berikut:
Properti | Deskripsi | Jenis Data |
---|---|---|
revisionSuffix |
Nama yang ramah untuk revisi. Nilai ini harus unik karena runtime menolak konflik dengan nilai akhiran nama revisi yang ada. | string |
containers |
Objek konfigurasi yang menentukan gambar kontainer apa yang disertakan dalam aplikasi kontainer. | object |
scale |
Objek konfigurasi yang mendefinisikan aturan skala untuk aplikasi kontainer. | object |
Perubahan yang dilakukan pada bagian template
adalah perubahan lingkup revisi, yang memicu revisi baru.
Contoh
Untuk detail tentang pemeriksaan kesehatan, lihat Pemeriksaan kesehatan di Azure Container Apps.
Contoh cuplikan templat ARM berikut menyebarkan aplikasi kontainer.
{
"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"
}
]
}
}
}
Pekerjaan Aplikasi Kontainer
Tabel berikut ini menjelaskan properti yang umum digunakan di sumber daya pekerjaan Container Apps. Untuk daftar lengkap properti, lihat Referensi REST API Azure Container Apps.
Sumber daya
Objek sumber daya properties
pekerjaan Container Apps mencakup properti berikut:
Properti | Deskripsi | Jenis Data | Baca saja |
---|---|---|---|
environmentId |
ID lingkungan untuk pekerjaan Aplikasi Kontainer Anda. Properti ini diperlukan untuk membuat pekerjaan Aplikasi Kontainer. Jika Anda menggunakan YAML, Anda dapat menentukan ID lingkungan menggunakan --environment opsi di Azure CLI sebagai gantinya. |
string | No |
Nilai environmentId
mengambil formulir berikut:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Dalam contoh ini, Anda menempatkan nilai di tempat token placeholder yang dikelilingi oleh tanda kurung <>
.
properties.configuration
Objek sumber daya properties.configuration
mencakup properti berikut:
Properti | Deskripsi | Jenis Data |
---|---|---|
triggerType |
Jenis pemicu untuk pekerjaan Container Apps. Untuk konfigurasi tertentu untuk setiap jenis pemicu, lihat Jenis pemicu pekerjaan | string |
replicaTimeout |
Batas waktu dalam detik untuk pekerjaan Aplikasi Kontainer. | Integer |
replicaRetryLimit |
Berapa kali untuk mencoba kembali pekerjaan Container Apps. | Integer |
properties.template
Objek sumber daya properties.template
mencakup properti berikut:
Properti | Deskripsi | Jenis Data |
---|---|---|
containers |
Objek konfigurasi yang menentukan gambar kontainer apa yang disertakan dalam pekerjaan. | object |
scale |
Objek konfigurasi yang menentukan aturan skala untuk pekerjaan tersebut. | object |
Contoh
Contoh cuplikan templat ARM berikut menyebarkan pekerjaan 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"
}
]
}
]
}
}
}