Especificações de modelo ARM e YAML dos Aplicativos de Contêiner do Azure
As implantações de Aplicativos de Contêiner do Azure são alimentadas por um modelo do Azure Resource Manager (ARM). Alguns comandos da CLI de Aplicativos de Contêiner também suportam o uso de um modelo YAML para especificar um recurso.
Este artigo inclui exemplos das configurações ARM e YAML para recursos de Aplicativos de Contêiner usados com freqüência. Para obter uma lista completa dos recursos de Aplicativos de Contêiner, consulte Modelos do Azure Resource Manager para Aplicativos de Contêiner. O código listado neste artigo é apenas para fins de exemplo. Para obter informações completas sobre esquema e tipo, consulte as definições JSON para sua versão de API necessária.
Versões da API
As versões mais recentes da API de gerenciamento para Aplicativos de Contêiner do Azure são:
2023-05-01
(Estável)2023-08-01-preview
(pré-visualização)
Para saber mais sobre as diferenças entre as versões da API, consulte Microsoft.App log de alterações.
Atualizando versões da API
Para usar uma versão específica da API no ARM ou Bicep, atualize a versão referenciada em seus modelos. Para usar a versão mais recente da API na CLI do Azure ou no Azure PowerShell, atualize-as para a versão mais recente.
Atualize a CLI do Azure e a extensão Aplicativos de Contêiner do Azure executando os seguintes comandos:
az upgrade
az extension add -n containerapp --upgrade
Para atualizar o Azure PowerShell, consulte Como instalar o Azure PowerShell.
Para gerenciar programaticamente os Aplicativos de Contêiner do Azure com a versão mais recente da API, use as versões mais recentes do SDK de gerenciamento:
Ambiente de aplicativos de contêiner
As tabelas a seguir descrevem as propriedades comumente usadas disponíveis no recurso de ambiente Aplicativos de Contêiner. Para obter uma lista completa de propriedades, consulte Referência da API REST dos Aplicativos de Contêiner do Azure.
Recurso
Um recurso de ambiente de Aplicativos de Contêiner inclui as seguintes propriedades:
Property | Descrição | Tipo de dados | Só de Leitura |
---|---|---|---|
daprAIInstrumentationKey |
A chave de instrumentação do Application Insights usada pelo Dapr. | string | Não |
appLogsConfiguration |
A configuração de log do ambiente. | Object | Não |
peerAuthentication |
Como ativar a criptografia mTLS. | Object | Não |
Exemplos
O trecho de modelo ARM de exemplo a seguir implanta um ambiente de Aplicativos de Contêiner.
Nota
Os comandos para criar ambientes de aplicativos de contêiner não suportam a entrada de configuração 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"
}
}
Aplicativo de contêiner
As tabelas a seguir descrevem as propriedades comumente usadas no recurso de aplicativo de contêiner. Para obter uma lista completa de propriedades, consulte Referência da API REST dos Aplicativos de Contêiner do Azure.
Recurso
O objeto de um recurso de properties
aplicativo contêiner inclui as seguintes propriedades:
Property | Descrição | Tipo de dados | Só de Leitura |
---|---|---|---|
provisioningState |
O estado de uma operação de longa duração, por exemplo, quando uma nova revisão de contêiner é criada. Os valores possíveis incluem: provisionamento, provisionado, falha. Verifique se o aplicativo está em execução. | string | Sim |
environmentId |
A ID do ambiente para seu aplicativo de contêiner. Esta é uma propriedade necessária para criar um aplicativo de contêiner. Se você estiver usando YAML, poderá especificar a ID do ambiente usando a --environment opção na CLI do Azure. |
string | Não |
latestRevisionName |
O nome da última revisão. | string | Sim |
latestRevisionFqdn |
URL da última revisão. | string | Sim |
O environmentId
valor assume a seguinte forma:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Neste exemplo, você coloca seus valores no lugar dos tokens de espaço reservado entre <>
colchetes.
properties.configuration
O objeto de properties.configuration
um recurso inclui as seguintes propriedades:
Property | Descrição | Tipo de dados |
---|---|---|
activeRevisionsMode |
A configuração para single desativar automaticamente as revisões antigas e mantém ativa apenas a revisão mais recente. Configuração para multiple permitir que você mantenha várias revisões. |
string |
secrets |
Define valores secretos em seu aplicativo de contêiner. | objeto |
ingress |
Objeto que define a configuração de acessibilidade pública de um aplicativo de contêiner. | objeto |
registries |
Objeto de configuração que faz referência a credenciais para registros de contêiner privado. Entradas definidas com secretref referência ao objeto de configuração secrets. |
objeto |
dapr |
Objeto de configuração que define as configurações de Dapr para o aplicativo de contêiner. | objeto |
As alterações feitas na seção são alterações no escopo do configuration
aplicativo, que não acionam uma nova revisão.
properties.template
O objeto de properties.template
um recurso inclui as seguintes propriedades:
Property | Descrição | Tipo de dados |
---|---|---|
revisionSuffix |
Um nome amigável para uma revisão. Esse valor deve ser exclusivo, pois o tempo de execução rejeita quaisquer conflitos com valores de sufixo de nome de revisão existentes. | string |
containers |
Objeto de configuração que define quais imagens de contêiner são incluídas no aplicativo de contêiner. | objeto |
scale |
Objeto de configuração que define regras de escala para o aplicativo contêiner. | objeto |
As alterações feitas na seção são alterações de escopo de revisão, o template
que desencadeia uma nova revisão.
Exemplos
Para obter detalhes sobre testes de integridade, consulte Sondas de integridade em Aplicativos de Contêiner do Azure.
O trecho de modelo ARM de exemplo a seguir implanta um aplicativo de contêiner.
{
"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"
}
]
}
}
}
Trabalho de aplicativos de contêiner
As tabelas a seguir descrevem as propriedades comumente usadas no recurso de trabalho Aplicativos de Contêiner. Para obter uma lista completa de propriedades, consulte Referência da API REST dos Aplicativos de Contêiner do Azure.
Recurso
O objeto de um recurso de properties
trabalho Container Apps inclui as seguintes propriedades:
Property | Descrição | Tipo de dados | Só de Leitura |
---|---|---|---|
environmentId |
A ID do ambiente para seu trabalho de Aplicativos de Contêiner. Essa propriedade é necessária para criar um trabalho de Aplicativos de Contêiner. Se você estiver usando YAML, poderá especificar a ID do ambiente usando a --environment opção na CLI do Azure. |
string | Não |
O environmentId
valor assume a seguinte forma:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
Neste exemplo, você coloca seus valores no lugar dos tokens de espaço reservado entre <>
colchetes.
properties.configuration
O objeto de properties.configuration
um recurso inclui as seguintes propriedades:
Property | Descrição | Tipo de dados |
---|---|---|
triggerType |
O tipo de gatilho para um trabalho de Aplicativos de Contêiner. Para obter uma configuração específica para cada tipo de gatilho, consulte Tipos de gatilho de trabalhos | string |
replicaTimeout |
O tempo limite em segundos para um trabalho de Aplicativos de Contêiner. | integer |
replicaRetryLimit |
O número de vezes para tentar novamente um trabalho de Aplicativos de Contêiner. | integer |
properties.template
O objeto de properties.template
um recurso inclui as seguintes propriedades:
Property | Descrição | Tipo de dados |
---|---|---|
containers |
Objeto de configuração que define quais imagens de contêiner são incluídas no trabalho. | objeto |
scale |
Objeto de configuração que define regras de escala para o trabalho. | objeto |
Exemplos
O trecho de modelo ARM de exemplo a seguir implanta um trabalho de Aplicativos de Contêiner.
{
"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"
}
]
}
]
}
}
}