Spécifications des modèles ARM et YAML pour Azure Container Apps
Les déploiements des applications Azure Container sont alimentés par un modèle Azure Resource Manager (ARM). Certaines commandes CLI de Container Apps prennent également en charge l’utilisation d’un modèle YAML pour spécifier une ressource.
Cet article inclut des exemples de configurations ARM et YAML pour les ressources Container Apps fréquemment utilisées. Pour obtenir la liste complète des ressources Container Apps, consultez les modèles Azure Resource Manager pour Container Apps. Le code répertorié dans cet article est destiné à des fins d’exemple uniquement. Pour obtenir des informations complètes sur le schéma et le type, consultez les définitions JSON de votre version d’API requise.
Versions d’API
Les dernières versions de l’API de gestion pour Azure Container Apps sont les suivantes :
2023-05-01
(stable)2023-08-01-preview
(préversion)
Pour en savoir plus sur les différences entre les versions d’API, consultez Microsoft.App journal des modifications.
Mise à jour des versions d’API
Pour utiliser une version d’API spécifique dans ARM ou Bicep, mettez à jour la version référencée dans vos modèles. Pour utiliser la dernière version de l’API dans Azure CLI ou Azure PowerShell, mettez-les à jour vers la dernière version.
Mettez à jour Azure CLI et l’extension Azure Container Apps en exécutant les commandes suivantes :
az upgrade
az extension add -n containerapp --upgrade
Pour mettre à jour Azure PowerShell, consultez Comment installer Azure PowerShell.
Pour gérer par programmation Azure Container Apps avec la dernière version de l’API, utilisez les dernières versions du Kit de développement logiciel (SDK) de gestion :
Environnement Container Apps
Les tableaux suivants décrivent les propriétés couramment utilisées disponibles dans la ressource d’environnement Container Apps. Pour obtenir la liste complète des propriétés, consultez la référence de l’API REST Azure Container Apps.
Ressource
Une ressource d’environnement Container Apps inclut les propriétés suivantes :
Propriété | Description | Type de données | Lecture seule |
---|---|---|---|
daprAIInstrumentationKey |
Clé d’instrumentation Application Insights utilisée par Dapr. | string | Non |
appLogsConfiguration |
Configuration de la journalisation de l’environnement. | Object | Non |
peerAuthentication |
Comment activer le chiffrement mTLS. | Object | Non |
Exemples
L’exemple d’extrait de modèle ARM suivant déploie un environnement Container Apps.
Remarque
Les commandes permettant de créer des environnements d’application conteneur ne prennent pas en charge l’entrée de configuration YAML.
{
"location": "East US",
"properties": {
"daprAIConnectionString": "InstrumentationKey=00000000-0000-0000-0000-000000000000;IngestionEndpoint=https://northcentralus-0.in.applicationinsights.azure.com/",
"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"
}
}
Application de conteneur
Les tableaux suivants décrivent les propriétés couramment utilisées dans la ressource d’application conteneur. Pour obtenir la liste complète des propriétés, consultez la référence de l’API REST Azure Container Apps.
Ressource
L’objet d’une properties
ressource d’application conteneur inclut les propriétés suivantes :
Propriété | Description | Type de données | Lecture seule |
---|---|---|---|
provisioningState |
État d’une opération de longue durée, par exemple lors de la création d’une nouvelle révision de conteneur. Les valeurs possibles sont les suivantes : approvisionnement, approvisionné, échec. Vérifiez si l’application est en cours d’exécution. | string | Oui |
environmentId |
L’ID d’environnement de votre application conteneur. Il s’agit d’une propriété requise pour créer une application conteneur. Si vous utilisez YAML, vous pouvez spécifier l’ID d’environnement à l’aide de l’option dans Azure CLI à la --environment place. |
string | Non |
latestRevisionName |
Nom de la dernière révision. | string | Oui |
latestRevisionFqdn |
URL de la dernière révision. | string | Oui |
La valeur environmentId
prend la forme suivante :
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Dans cet exemple, vous placez vos valeurs à la place des jetons d’espace réservé placés <>
entre crochets.
properties.configuration
L’objet d’une properties.configuration
ressource inclut les propriétés suivantes :
Propriété | Description | Type de données |
---|---|---|
activeRevisionsMode |
Paramètre pour single désactiver automatiquement les anciennes révisions et conserver uniquement la révision la plus récente active. La définition de la valeur multiple vous permet de gérer plusieurs révisions. |
string |
secrets |
Définit des valeurs secrètes dans votre application conteneur. | object |
ingress |
Objet qui définit la configuration d’accessibilité publique d’une application de conteneur. | object |
registries |
Objet de configuration qui référence les informations d’identification pour les registres de conteneurs privés. Les entrées définies avec secretref référencent l’objet de configuration de secrets. |
object |
dapr |
Objet de configuration qui définit les paramètres Dapr pour l’application de conteneur. | object |
Les modifications apportées à la section configuration
sont des modifications de portée application, qui ne déclenchent pas une nouvelle révision.
properties.template
L’objet d’une properties.template
ressource inclut les propriétés suivantes :
Propriété | Description | Type de données |
---|---|---|
revisionSuffix |
Nom convivial pour une révision. Cette valeur doit être unique car le runtime rejette les conflits avec les valeurs de suffixe de nom de révision existantes. | string |
containers |
Objet de configuration qui définit les images de conteneur incluses dans l’application conteneur. | object |
scale |
Objet de configuration qui définit les règles de mise à l’échelle pour l’application de conteneur. | object |
Les modifications apportées à la section template
sont des modifications d’étendue de révision, qui déclenchent une nouvelle révision.
Exemples
Pour plus d’informations sur les sondes d’intégrité, reportez-vous aux sondes d’intégrité dans Azure Container Apps.
L’exemple d’extrait de modèle ARM suivant déploie une application conteneur.
{
"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"
}
]
}
}
}
Travail Container Apps
Les tableaux suivants décrivent les propriétés couramment utilisées dans la ressource de travail Container Apps. Pour obtenir la liste complète des propriétés, consultez la référence de l’API REST Azure Container Apps.
Ressource
L’objet d’une ressource de properties
travail Container Apps inclut les propriétés suivantes :
Propriété | Description | Type de données | Lecture seule |
---|---|---|---|
environmentId |
ID d’environnement de votre travail Container Apps. Cette propriété est requise pour créer un travail Container Apps. Si vous utilisez YAML, vous pouvez spécifier l’ID d’environnement à l’aide de l’option dans Azure CLI à la --environment place. |
string | Non |
La valeur environmentId
prend la forme suivante :
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Dans cet exemple, vous placez vos valeurs à la place des jetons d’espace réservé placés <>
entre crochets.
properties.configuration
L’objet d’une properties.configuration
ressource inclut les propriétés suivantes :
Propriété | Description | Type de données |
---|---|---|
triggerType |
Type de déclencheur pour un travail Container Apps. Pour obtenir une configuration spécifique pour chaque type de déclencheur, consultez Types de déclencheurs de travaux | string |
replicaTimeout |
Délai d’expiration en secondes pour un travail Container Apps. | entier |
replicaRetryLimit |
Nombre de fois où réessayer un travail Container Apps. | entier |
properties.template
L’objet d’une properties.template
ressource inclut les propriétés suivantes :
Propriété | Description | Type de données |
---|---|---|
containers |
Objet de configuration qui définit les images conteneur incluses dans le travail. | object |
scale |
Objet de configuration qui définit des règles d’échelle pour le travail. | object |
Exemples
L’exemple d’extrait de modèle ARM suivant déploie un travail 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"
}
]
}
]
}
}
}