Specifikace šablon AZURE Container Apps ARM a YAML
Nasazení Azure Container Apps využívají šablonu Azure Resource Manageru (ARM). Některé příkazy rozhraní příkazového řádku Container Apps podporují také použití šablony YAML k zadání prostředku.
Tento článek obsahuje příklady konfigurací ARM a YAML pro často používané prostředky Container Apps. Úplný seznam prostředků Container Apps najdete v šablonách Azure Resource Manageru pro Container Apps. Kód uvedený v tomto článku je určený pouze pro ukázkové účely. Úplné informace o schématu a typu najdete v definicích JSON pro požadovanou verzi rozhraní API.
Verze rozhraní API
Nejnovější verze rozhraní API pro správu pro Azure Container Apps jsou:
2024-03-01
(stabilní)2024-10-02-preview
(Preview)
Další informace o rozdílech mezi verzemi rozhraní API najdete v Microsoft.App protokolu změn.
Aktualizace verzí rozhraní API
Pokud chcete použít konkrétní verzi rozhraní API v ARM nebo Bicep, aktualizujte verzi, na které odkazuje vaše šablony. Pokud chcete použít nejnovější verzi rozhraní API v Azure CLI nebo Azure PowerShellu, aktualizujte je na nejnovější verzi.
Spuštěním následujících příkazů aktualizujte Azure CLI a rozšíření Azure Container Apps:
az upgrade
az extension add -n containerapp --upgrade
Informace o aktualizaci Azure PowerShellu najdete v tématu Postup instalace Azure PowerShellu.
Pokud chcete programově spravovat Azure Container Apps s nejnovější verzí rozhraní API, použijte nejnovější verze sady SDK pro správu:
Prostředí Container Apps
Následující tabulky popisují běžně používané vlastnosti dostupné v prostředku prostředí Container Apps. Úplný seznam vlastností najdete v referenčních informacích k rozhraní REST API služby Azure Container Apps.
Prostředek
Prostředek prostředí Container Apps obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ | Jen pro čtení |
---|---|---|---|
daprAIInstrumentationKey |
Instrumentační klíč Application Insights, který používá Dapr. | string | No |
appLogsConfiguration |
Konfigurace protokolování prostředí. | Object | No |
peerAuthentication |
Jak povolit šifrování mTLS | Object | No |
Příklady
Následující příklad fragmentu šablony ARM nasadí prostředí Container Apps.
Poznámka:
Příkazy pro vytvoření prostředí kontejnerových aplikací nepodporují vstup konfigurace 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"
}
}
Kontejnerová aplikace
Následující tabulky popisují běžně používané vlastnosti v prostředku aplikace kontejneru. Úplný seznam vlastností najdete v referenčních informacích k rozhraní REST API služby Azure Container Apps.
Prostředek
Objekt prostředku properties
aplikace kontejneru obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ | Jen pro čtení |
---|---|---|---|
provisioningState |
Stav dlouhotrvající operace, například při vytvoření nové revize kontejneru. Mezi možné hodnoty patří: zřizování, zřizování, neúspěšné. Zkontrolujte, jestli je aplikace spuštěná a spuštěná. | string | Ano |
environmentId |
ID prostředí pro vaši aplikaci kontejneru. Toto je požadovaná vlastnost pro vytvoření aplikace typu kontejner. Pokud používáte YAML, můžete místo toho zadat ID prostředí pomocí --environment možnosti v Azure CLI. |
string | No |
latestRevisionName |
Název poslední revize. | string | Ano |
latestRevisionFqdn |
Adresa URL nejnovější revize. | string | Ano |
Hodnota environmentId
má následující tvar:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
V tomto příkladu umístíte hodnoty místo zástupných tokenů obklopených hranatými <>
závorkami.
properties.configuration
Objekt prostředku properties.configuration
obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ |
---|---|---|
activeRevisionsMode |
Nastavení pro single automatickou deaktivaci starých revizí a aktivní bude jenom nejnovější revize. Nastavení, které multiple vám umožní udržovat více revizí. |
string |
secrets |
Definuje hodnoty tajných kódů v aplikaci kontejneru. | objekt |
ingress |
Objekt, který definuje konfiguraci veřejné přístupnosti aplikace typu kontejner. | objekt |
registries |
Objekt konfigurace, který odkazuje na přihlašovací údaje pro privátní registry kontejnerů. Položky definované odkazem secretref na objekt konfigurace tajných kódů. |
objekt |
dapr |
Objekt konfigurace, který definuje nastavení Dapr pro aplikaci kontejneru. | objekt |
Změny provedené v oddílu configuration
jsou změny oboru aplikace, které neaktivují novou revizi.
properties.template
Objekt prostředku properties.template
obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ |
---|---|---|
revisionSuffix |
Popisný název revize Tato hodnota musí být jedinečná, protože modul runtime odmítne všechny konflikty s existujícími hodnotami přípony názvu revize. | string |
containers |
Objekt konfigurace, který definuje, jaké image kontejneru jsou součástí aplikace kontejneru. | objekt |
scale |
Objekt konfigurace, který definuje pravidla škálování pro aplikaci kontejneru. | objekt |
Změny provedené v oddílu template
jsou změny v oboru revizí, které aktivují novou revizi.
Příklady
Podrobnosti o sondách stavu najdete v tématu Sondy stavu v Azure Container Apps.
Následující příklad fragmentu šablony ARM nasadí aplikaci typu kontejner.
{
"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"
}
]
}
}
}
Úloha Container Apps
Následující tabulky popisují běžně používané vlastnosti v prostředku úlohy Container Apps. Úplný seznam vlastností najdete v referenčních informacích k rozhraní REST API služby Azure Container Apps.
Prostředek
Objekt prostředku properties
úlohy Container Apps obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ | Jen pro čtení |
---|---|---|---|
environmentId |
ID prostředí pro vaši úlohu Container Apps Tato vlastnost se vyžaduje k vytvoření úlohy Container Apps. Pokud používáte YAML, můžete místo toho zadat ID prostředí pomocí --environment možnosti v Azure CLI. |
string | No |
Hodnota environmentId
má následující tvar:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
V tomto příkladu umístíte hodnoty místo zástupných tokenů obklopených hranatými <>
závorkami.
properties.configuration
Objekt prostředku properties.configuration
obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ |
---|---|---|
triggerType |
Typ triggeru pro úlohu Container Apps. Konkrétní konfiguraci pro jednotlivé typy aktivačních událostí najdete v tématu Typy triggerů úloh. | string |
replicaTimeout |
Časový limit pro úlohu Container Apps v sekundách. | integer |
replicaRetryLimit |
Počet opakování úlohy Container Apps | integer |
properties.template
Objekt prostředku properties.template
obsahuje následující vlastnosti:
Vlastnost | Popis | Datový typ |
---|---|---|
containers |
Objekt konfigurace, který definuje, jaké image kontejneru jsou součástí úlohy. | objekt |
scale |
Objekt konfigurace, který definuje pravidla škálování pro úlohu. | objekt |
Příklady
Následující příklad fragmentu šablony ARM nasadí úlohu 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"
}
]
}
]
}
}
}