Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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
Kontrollera de senaste stabila api-versionerna och förhandsversionerna i Resource Manager API-dokumentationen för att se till att du använder de mest up-to-date-versionerna.
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:
| Fastighet | 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
En konfiguration av containerappen innehåller en toppnivåegenskap kind , som är en valfri sträng som används för att skapa antingen en Functions- eller arbetsflödesapp.
| Fastighet | beskrivning | Datatyp | Skrivskyddad |
|---|---|---|---|
kind |
Den typ av app som ska skapas.
functionapp Stöder för närvarande och workflowapp. Ytterligare värden kan stödjas i framtiden. Om den utelämnas skapas en standardcontainerapp som standard. |
sträng | Nej |
Objektet för en containerappresurs properties innehåller följande egenskaper:
| Fastighet | 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:
| Fastighet | 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:
| Fastighet | 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/<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"
}
]
}
}
}
Följande exempel på ARM-mallexempel visar hur du distribuerar en Azure Functions-app i 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
}
}
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:
| Fastighet | 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:
| Fastighet | 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. | heltal |
replicaRetryLimit |
Antal gånger som ett Container Apps-jobb ska försöka igen. | heltal |
properties.template
Ett resursobjekt properties.template innehåller följande egenskaper:
| Fastighet | 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"
}
]
}
]
}
}
}