Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrierenDieser Browser wird nicht mehr unterstützt.
Führen Sie ein Upgrade auf Microsoft Edge durch, um die neuesten Features, Sicherheitsupdates und den technischen Support zu nutzen.
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.
Die neuesten Verwaltungs-API-Versionen für Azure Container-Apps sind:
2024-03-01
(stabil)2024-10-02-preview
(Vorschau)Weitere Informationen zu den Unterschieden zwischen API-Versionen finden Sie unter Microsoft.App Änderungsprotokoll.
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:
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.
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 |
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"
}
}
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.
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.
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.
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.
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"
}
],
"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"
}
]
}
}
}
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.
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.
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 |
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 |
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"
}
]
}
]
}
}
}
Ereignisse
17. März, 21 Uhr - 21. März, 10 Uhr
Nehmen Sie an der Meetup-Serie teil, um skalierbare KI-Lösungen basierend auf realen Anwendungsfällen mit Mitentwicklern und Experten zu erstellen.
Jetzt registrieren