Specifikationer för AZURE Container Apps ARM- och YAML-mallar
Azure Container Apps-distributioner drivs av en ARM-mall (Azure Resource Manager). Vissa CLI-kommandon för Container Apps stöder också användning av en YAML-mall för att ange en resurs.
Den här artikeln innehåller exempel på ARM- och YAML-konfigurationer för resurser för containerappar som används ofta. En fullständig lista över Container Apps-resurser finns i Azure Resource Manager-mallar för Container Apps. Koden som anges i den här artikeln är endast i exempelsyfte. Fullständig schema- och typinformation finns i JSON-definitionerna för din nödvändiga API-version.
API-versioner
De senaste api-versionerna för hantering av Azure Container Apps är:
2023-05-01
(stabil)2023-08-01-preview
(förhandsgranskning)
Mer information om skillnaderna mellan API-versioner finns i Microsoft.App ändringslogg.
Uppdatera API-versioner
Om du vill använda en specifik API-version i ARM eller Bicep uppdaterar du den version som refereras till i dina mallar. Om du vill använda den senaste API-versionen i Azure CLI eller Azure PowerShell uppdaterar du dem till den senaste versionen.
Uppdatera Azure CLI och Azure Container Apps-tillägget genom att köra följande kommandon:
az upgrade
az extension add -n containerapp --upgrade
Information om hur du uppdaterar Azure PowerShell finns i Så här installerar du Azure PowerShell.
Om du vill hantera Azure Container Apps programmatiskt med den senaste API-versionen använder du de senaste versionerna av hanterings-SDK:n:
Container Apps-miljö
I följande tabeller beskrivs vanliga egenskaper som är tillgängliga i miljöresursen Container Apps. En fullständig lista över egenskaper finns i REST API-referensen för Azure Container Apps.
Resurs
En Container Apps-miljöresurs innehåller följande egenskaper:
Property | beskrivning | Datatyp | Skrivskyddad |
---|---|---|---|
daprAIInstrumentationKey |
Application Insights-instrumentationsnyckeln som används av Dapr. | sträng | Nej |
appLogsConfiguration |
Miljöns loggningskonfiguration. | Objekt | Nej |
peerAuthentication |
Så här aktiverar du mTLS-kryptering. | Objekt | Nej |
Exempel
Följande exempel på ARM-mallfragment distribuerar en Container Apps-miljö.
Kommentar
Kommandona för att skapa containerappmiljöer stöder inte YAML-konfigurationsindata.
{
"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"
}
}
Containerapp
I följande tabeller beskrivs de vanligaste egenskaperna i containerappresursen. En fullständig lista över egenskaper finns i REST API-referensen för Azure Container Apps.
Resurs
Objektet för en containerappresurs properties
innehåller följande egenskaper:
Property | beskrivning | Datatyp | Skrivskyddad |
---|---|---|---|
provisioningState |
Tillståndet för en tidskrävande åtgärd, till exempel när ny containerrevision skapas. Möjliga värden är: etablering, etablerad, misslyckad. Kontrollera om appen är igång. | sträng | Ja |
environmentId |
Miljö-ID för din containerapp. Det här är en obligatorisk egenskap för att skapa en containerapp. Om du använder YAML kan du ange miljö-ID:t med hjälp av --environment alternativet i Azure CLI i stället. |
sträng | Nej |
latestRevisionName |
Namnet på den senaste revisionen. | sträng | Ja |
latestRevisionFqdn |
Den senaste revisionens URL. | sträng | Ja |
Värdet environmentId
har följande formulär:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
I det här exemplet placerar du dina värden i stället för platshållartoken omgivna av <>
hakparenteser.
properties.configuration
Ett resursobjekt properties.configuration
innehåller följande egenskaper:
Property | beskrivning | Datatyp |
---|---|---|
activeRevisionsMode |
Inställningen inaktiverar single automatiskt gamla revisioner och håller bara den senaste revisionen aktiv. Med inställningen kan multiple du underhålla flera revisioner. |
sträng |
secrets |
Definierar hemliga värden i containerappen. | objekt |
ingress |
Objekt som definierar offentlig tillgänglighetskonfiguration för en containerapp. | objekt |
registries |
Konfigurationsobjekt som refererar till autentiseringsuppgifter för privata containerregister. Poster som definierats med secretref referens till konfigurationsobjektet hemligheter. |
objekt |
dapr |
Konfigurationsobjekt som definierar Dapr-inställningarna för containerappen. | objekt |
Ändringar som görs i configuration
avsnittet är ändringar i programomfattningen som inte utlöser en ny revision.
properties.template
Ett resursobjekt properties.template
innehåller följande egenskaper:
Property | beskrivning | Datatyp |
---|---|---|
revisionSuffix |
Ett eget namn för en revision. Det här värdet måste vara unikt eftersom körningen avvisar eventuella konflikter med befintliga suffixvärden för revisionsnamn. | sträng |
containers |
Konfigurationsobjekt som definierar vilka containeravbildningar som ingår i containerappen. | objekt |
scale |
Konfigurationsobjekt som definierar skalningsregler för containerappen. | objekt |
Ändringar som görs i template
avsnittet är ändringar i revisionsomfattningen, vilket utlöser en ny revision.
Exempel
Mer information om hälsoavsökningar finns i Hälsoavsökningar i Azure Container Apps.
Följande exempel på ARM-mallfragment distribuerar en containerapp.
{
"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"
}
]
}
}
}
Container Apps-jobb
I följande tabeller beskrivs de vanliga egenskaperna i jobbresursen Container Apps. En fullständig lista över egenskaper finns i REST API-referensen för Azure Container Apps.
Resurs
Objektet för en Container Apps-jobbresurs properties
innehåller följande egenskaper:
Property | beskrivning | Datatyp | Skrivskyddad |
---|---|---|---|
environmentId |
Miljö-ID:t för ditt Container Apps-jobb. Den här egenskapen krävs för att skapa ett Container Apps-jobb. Om du använder YAML kan du ange miljö-ID:t med hjälp av --environment alternativet i Azure CLI i stället. |
sträng | Nej |
Värdet environmentId
har följande formulär:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
I det här exemplet placerar du dina värden i stället för platshållartoken omgivna av <>
hakparenteser.
properties.configuration
Ett resursobjekt properties.configuration
innehåller följande egenskaper:
Property | beskrivning | Datatyp |
---|---|---|
triggerType |
Typen av utlösare för ett Container Apps-jobb. Specifik konfiguration för varje utlösartyp finns i Jobbutlösartyper | sträng |
replicaTimeout |
Tidsgränsen i sekunder för ett Container Apps-jobb. | integer |
replicaRetryLimit |
Antal gånger som ett Container Apps-jobb ska försöka igen. | integer |
properties.template
Ett resursobjekt properties.template
innehåller följande egenskaper:
Property | beskrivning | Datatyp |
---|---|---|
containers |
Konfigurationsobjekt som definierar vilka containeravbildningar som ingår i jobbet. | objekt |
scale |
Konfigurationsobjekt som definierar skalningsregler för jobbet. | objekt |
Exempel
I följande exempel distribuerar ARM-mallfragmentet ett Container Apps-jobb.
{
"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"
}
]
}
]
}
}
}