Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
Vérifiez les dernières versions stables et préliminaires de l’API dans la documentation de l’API Resource Manager pour vous assurer que vous utilisez les versions les plus up-to-date.
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é | Descriptif | Type de données | Lecture seule |
|---|---|---|---|
daprAIInstrumentationKey |
Clé d’instrumentation Application Insights utilisée par Dapr. | ficelle | Non |
appLogsConfiguration |
Configuration de la journalisation de l’environnement. | Objet | Non |
peerAuthentication |
Comment activer le chiffrement mTLS. | Objet | 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": {
"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
Une configuration d’application conteneur inclut une propriété de niveau kind supérieur, qui est une chaîne facultative utilisée pour créer une application Functions ou workflow.
| Propriété | Descriptif | Type de données | Lecture seule |
|---|---|---|---|
kind |
Type d’application à créer. Prend actuellement en charge functionapp et workflowapp. Des valeurs supplémentaires peuvent être prises en charge à l’avenir. Si elle est omise, une application conteneur standard est créée par défaut. |
ficelle | Non |
L’objet d’une properties ressource d’application conteneur inclut les propriétés suivantes :
| Propriété | Descriptif | 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. | ficelle | 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. |
ficelle | Non |
latestRevisionName |
Nom de la dernière révision. | ficelle | Oui |
latestRevisionFqdn |
URL de la dernière révision. | ficelle | 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é | Descriptif | 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. |
ficelle |
secrets |
Définit des valeurs secrètes dans votre application conteneur. | objet |
ingress |
Objet qui définit la configuration d’accessibilité publique d’une application de conteneur. | objet |
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. |
objet |
dapr |
Objet de configuration qui définit les paramètres Dapr de l’application conteneur. | objet |
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é | Descriptif | 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. | ficelle |
containers |
Objet de configuration qui définit les images de conteneur incluses dans l’application conteneur. | objet |
scale |
Objet de configuration qui définit les règles de mise à l’échelle pour l’application de conteneur. | objet |
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/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_NAME>": {}
},
"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,
"appHealth": {
"enabled": true,
"path": "/health",
"probeIntervalSeconds": 3,
"probeTimeoutMilliseconds": 1000,
"threshold": 3
},
"maxConcurrency": 10
},
"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"
}
],
"env": [
{
"name": "non-secret-env-var",
"value": "non-secret env var value"
},
{
"name": "secret-env-var",
"secretRef": "mysecret"
}
]
}
],
"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"
],
"env": [
{
"name": "non-secret-env-var",
"value": "non-secret env var value"
},
{
"name": "secret-env-var",
"secretRef": "mysecret"
}
]
}
],
"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"
}
]
}
}
}
L’exemple de modèle ARM suivant montre comment déployer une application Azure Functions sur Container Apps.
{
"kind": "functionapp",
"identity": {
"userAssignedIdentities": {
"/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<USER_NAME>": {}
},
"type": "UserAssigned"
},
"properties": {
// same as regular container app properties
}
}
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é | Descriptif | 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. |
ficelle | 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é | Descriptif | 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 | ficelle |
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é | Descriptif | Type de données |
|---|---|---|
containers |
Objet de configuration qui définit les images conteneur incluses dans le travail. | objet |
scale |
Objet de configuration qui définit des règles d’échelle pour le travail. | objet |
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"
}
]
}
]
}
}
}