ARM- und YAML-Vorlagenspezifikationen für Azure Container Apps
Azure Container Apps-Bereitstellungen basieren auf einer Azure Resource Manager-Vorlage (ARM). Einige Container Apps-CLI-Befehle unterstützen auch die Verwendung einer YAML-Vorlage zum Angeben einer Ressource.
Dieser Artikel enthält Beispiele für die ARM- und YAML-Konfigurationen für häufig verwendete Container-Apps-Ressourcen. Eine vollständige Liste der Container-Apps-Ressourcen finden Sie unter Azure Resource Manager-Vorlagen für Container-Apps. Der in diesem Artikel aufgeführte Code dient nur zu Beispielzwecken. Vollständige Schema- und Typinformationen finden Sie in den JSON-Definitionen für Die erforderliche API-Version.
API-Versionen
Die neuesten Verwaltungs-API-Versionen für Azure Container-Apps sind:
2023-05-01
(stabil)2023-08-01-preview
(Vorschau)
Weitere Informationen zu den Unterschieden zwischen API-Versionen finden Sie unter Microsoft.App Änderungsprotokoll.
Updaten von API-Versionen
Um eine bestimmte API-Version in ARM oder Bicep zu verwenden, aktualisieren Sie die Version, auf die in Ihren Vorlagen verwiesen wird. Um die neueste API-Version in Azure CLI oder Azure PowerShell zu verwenden, aktualisieren Sie sie auf die neueste Version.
Aktualisieren Sie azure CLI und die Azure Container Apps-Erweiterung, indem Sie die folgenden Befehle ausführen:
az upgrade
az extension add -n containerapp --upgrade
Informationen zum Aktualisieren von Azure PowerShell finden Sie unter Installieren von Azure PowerShell.
Verwenden Sie die neuesten Versionen des Management SDK, um Azure Container-Apps mit der neuesten API-Version programmgesteuert zu verwalten:
Container-Apps-Umgebung
In den folgenden Tabellen werden häufig verwendete Eigenschaften beschrieben, die in der Umgebungsressource "Container-Apps" verfügbar sind. Eine vollständige Liste der Eigenschaften finden Sie in der REST-API-Referenz zu Azure-Container-Apps.
Resource
Eine Container-Apps-Umgebungsressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp | Schreibgeschützt |
---|---|---|---|
daprAIInstrumentationKey |
Von Dapr verwendeter Application Insights-Instrumentierungsschlüssel | Zeichenfolge | No |
appLogsConfiguration |
Protokollierungskonfiguration der Umgebung | Objekt | No |
peerAuthentication |
So aktivieren Sie die MTLS-Verschlüsselung. | Objekt | No |
Beispiele
Der folgende ARM-Vorlagenausschnitt stellt eine Container-Apps-Umgebung bereit.
Hinweis
Die Befehle zum Erstellen von Container-App-Umgebungen unterstützen keine YAML-Konfigurationseingabe.
{
"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"
}
}
Container-App
In den folgenden Tabellen werden die häufig verwendeten Eigenschaften in der Container-App-Ressource beschrieben. Eine vollständige Liste der Eigenschaften finden Sie in der REST-API-Referenz zu Azure-Container-Apps.
Resource
Das properties
Objekt einer Container-App-Ressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp | Schreibgeschützt |
---|---|---|---|
provisioningState |
Der Status eines Vorgangs mit langer Ausführung, z. B. wenn eine neue Containerrevision erstellt wird. Mögliche Werte sind: Bereitstellung, bereitgestellt, Fehler. Überprüfen Sie, ob die App ausgeführt wird. | Zeichenfolge | Ja |
environmentId |
Die Umgebungs-ID für Ihre Container-App Dies ist eine erforderliche Eigenschaft zum Erstellen einer Container-App. Wenn Sie YAML verwenden, können Sie stattdessen die Umgebungs-ID mithilfe der --environment Option in der Azure CLI angeben. |
Zeichenfolge | No |
latestRevisionName |
Der Name der neuesten Revision | Zeichenfolge | Ja |
latestRevisionFqdn |
Die URL der neuesten Revision | Zeichenfolge | Ja |
Der environmentId
-Wert nimmt die folgende Form an:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
In diesem Beispiel geben Sie Ihre Werte an Stelle der Platzhaltertoken ein, die von <>
-Klammern umgeben sind.
properties.configuration
Das properties.configuration
Objekt einer Ressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp |
---|---|---|
activeRevisionsMode |
Wenn Sie auf single festlegen, werden alte Revisionen automatisch deaktiviert, und nur die neueste Revision bleibt aktiv. Wenn Sie auf multiple festlegen, können Sie mehrere Revisionen verwalten. |
Zeichenfolge |
secrets |
Definiert Geheimniswerte in Ihrer Container-App | Objekt |
ingress |
Ein Objekt, das die öffentliche Zugriffskonfiguration einer Container-App definiert | Objekt |
registries |
Konfigurationsobjekt, das auf Anmeldeinformationen für private Containerregister verweist Mit secretref definierte Einträge verweisen auf das Geheimniskonfigurationsobjekt. |
Objekt |
dapr |
Konfigurationsobjekt, das Dapr-Einstellungen für die Container-App definiert | Objekt |
Änderungen am Abschnitt configuration
sind Änderungen am Anwendungsbereich, die keine neue Revision auslösen.
properties.template
Das properties.template
Objekt einer Ressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp |
---|---|---|
revisionSuffix |
Ein Anzeigename für eine Revision Dieser Wert muss eindeutig sein, da die Runtime Konflikte mit vorhandenen Suffixwerten von Revisionsnamen ablehnt. | Zeichenfolge |
containers |
Konfigurationsobjekt, das definiert, welche Containerimages in der Container-App enthalten sind | Objekt |
scale |
Konfigurationsobjekt, das Skalierungsregeln für die Container-App definiert | Objekt |
Änderungen am Abschnitt template
sind Änderungen am Revisionsbereich, die keine neue Revision auslösen.
Beispiele
Ausführliche Informationen zu Integritätssonden finden Sie unter "Integritätssonden" in Azure-Container-Apps.
Der folgende ARM-Vorlagenausschnitt stellt eine Container-App bereit.
{
"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-Auftrag
In den folgenden Tabellen werden die häufig verwendeten Eigenschaften in der Auftragsressource "Container-Apps" beschrieben. Eine vollständige Liste der Eigenschaften finden Sie in der REST-API-Referenz zu Azure-Container-Apps.
Resource
Das properties
Objekt einer Container-Apps-Auftragsressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp | Schreibgeschützt |
---|---|---|---|
environmentId |
Die Umgebungs-ID für Ihren Container-Apps-Auftrag. Diese Eigenschaft ist erforderlich, um einen Container-Apps-Auftrag zu erstellen. Wenn Sie YAML verwenden, können Sie stattdessen die Umgebungs-ID mithilfe der --environment Option in der Azure CLI angeben. |
Zeichenfolge | No |
Der environmentId
-Wert nimmt die folgende Form an:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
In diesem Beispiel geben Sie Ihre Werte an Stelle der Platzhaltertoken ein, die von <>
-Klammern umgeben sind.
properties.configuration
Das properties.configuration
Objekt einer Ressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp |
---|---|---|
triggerType |
Der Triggertyp für einen Container-Apps-Auftrag. Spezifische Konfiguration für jeden Triggertyp finden Sie unter Auftragstriggertypen | Zeichenfolge |
replicaTimeout |
Das Timeout in Sekunden für einen Container-Apps-Auftrag. | integer |
replicaRetryLimit |
Die Anzahl der Wiederholungen eines Container-Apps-Auftrags. | integer |
properties.template
Das properties.template
Objekt einer Ressource enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung | Datentyp |
---|---|---|
containers |
Konfigurationsobjekt, das definiert, welche Containerimages im Auftrag enthalten sind. | Objekt |
scale |
Konfigurationsobjekt, das Skalierungsregeln für den Auftrag definiert. | Objekt |
Beispiele
Der folgende ARM-Vorlagenausschnitt stellt einen Container-Apps-Auftrag bereit.
{
"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"
}
]
}
]
}
}
}