Azure Container Apps ARM- en YAML-sjabloonspecificaties
Implementaties van Azure Container Apps worden mogelijk gemaakt door een ARM-sjabloon (Azure Resource Manager). Sommige CLI-opdrachten voor Container Apps bieden ook ondersteuning voor het gebruik van een YAML-sjabloon om een resource op te geven.
Dit artikel bevat voorbeelden van de ARM- en YAML-configuraties voor veelgebruikte Container Apps-resources. Zie Azure Resource Manager-sjablonen voor Container Apps voor Container Apps voor een volledige lijst met Container Apps-resources. De code die in dit artikel wordt vermeld, is alleen bedoeld als voorbeeld. Zie de JSON-definities voor uw vereiste API-versie voor volledige schema- en typegegevens.
API-versies
De nieuwste beheer-API-versies voor Azure Container Apps zijn:
2023-05-01
(stabiel)2023-08-01-preview
(preview)
Zie Microsoft.App wijzigingslogboek voor meer informatie over de verschillen tussen API-versies.
API-versies bijwerken
Als u een specifieke API-versie in ARM of Bicep wilt gebruiken, werkt u de versie bij waarnaar wordt verwezen in uw sjablonen. Als u de nieuwste API-versie in Azure CLI of Azure PowerShell wilt gebruiken, werkt u deze bij naar de nieuwste versie.
Werk Azure CLI en de Azure Container Apps-extensie bij door de volgende opdrachten uit te voeren:
az upgrade
az extension add -n containerapp --upgrade
Zie Azure PowerShell installeren om Azure PowerShell bij te werken.
Als u Azure Container Apps programmatisch wilt beheren met de nieuwste API-versie, gebruikt u de nieuwste versies van de beheer-SDK:
Container Apps-omgeving
In de volgende tabellen worden veelgebruikte eigenschappen beschreven die beschikbaar zijn in de Container Apps-omgevingsresource. Zie azure Container Apps REST API-naslaginformatie voor een volledige lijst met eigenschappen.
Bron
Een Container Apps-omgevingsresource bevat de volgende eigenschappen:
Eigenschappen | Beschrijving | Gegevenstype | Alleen-lezen |
---|---|---|---|
daprAIInstrumentationKey |
De Instrumentatiesleutel van Application Insights die door Dapr wordt gebruikt. | tekenreeks | Nee |
appLogsConfiguration |
De logboekregistratieconfiguratie van de omgeving. | Object | Nee |
peerAuthentication |
MTLS-versleuteling inschakelen. | Object | Nee |
Voorbeelden
In het volgende voorbeeld wordt een Container Apps-omgeving geïmplementeerd in een ARM-sjabloonfragment.
Notitie
De opdrachten voor het maken van container-app-omgevingen bieden geen ondersteuning voor YAML-configuratie-invoer.
{
"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 de volgende tabellen worden de veelgebruikte eigenschappen in de container-app-resource beschreven. Zie azure Container Apps REST API-naslaginformatie voor een volledige lijst met eigenschappen.
Bron
Het object van properties
een container-app-resource bevat de volgende eigenschappen:
Eigenschappen | Beschrijving | Gegevenstype | Alleen-lezen |
---|---|---|---|
provisioningState |
De status van een langdurige bewerking, bijvoorbeeld wanneer er nieuwe containerrevisie wordt gemaakt. Mogelijke waarden zijn: inrichten, ingericht, mislukt. Controleer of de app actief is. | tekenreeks | Ja |
environmentId |
De omgevings-id voor uw container-app. Dit is een vereiste eigenschap voor het maken van een container-app. Als u YAML gebruikt, kunt u in plaats daarvan de omgevings-id opgeven met behulp van de --environment optie in de Azure CLI. |
tekenreeks | Nee |
latestRevisionName |
De naam van de meest recente revisie. | tekenreeks | Ja |
latestRevisionFqdn |
De URL van de meest recente revisie. | tekenreeks | Ja |
De environmentId
waarde heeft de volgende vorm:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
In dit voorbeeld plaatst u de waarden in plaats van de tijdelijke aanduidingstokens tussen <>
vierkante haken.
properties.configuration
Het object van properties.configuration
een resource bevat de volgende eigenschappen:
Eigenschappen | Beschrijving | Gegevenstype |
---|---|---|
activeRevisionsMode |
Als u wilt instellen dat single oude revisies automatisch worden gedeactiveerd en alleen de meest recente revisie actief blijft. multiple Met deze instelling kunt u meerdere revisies onderhouden. |
tekenreeks |
secrets |
Hiermee definieert u geheime waarden in uw container-app. | object |
ingress |
Object waarmee de configuratie van openbare toegankelijkheid van een container-app wordt gedefinieerd. | object |
registries |
Configuratieobject dat verwijst naar referenties voor privécontainerregisters. Vermeldingen die zijn gedefinieerd met secretref verwijzing naar het configuratieobject geheimen. |
object |
dapr |
Configuratieobject waarmee de Dapr-instellingen voor de container-app worden gedefinieerd. | object |
Wijzigingen in de configuration
sectie zijn wijzigingen in toepassingsbereik, waardoor er geen nieuwe revisie wordt geactiveerd.
properties.template
Het object van properties.template
een resource bevat de volgende eigenschappen:
Eigenschappen | Beschrijving | Gegevenstype |
---|---|---|
revisionSuffix |
Een beschrijvende naam voor een revisie. Deze waarde moet uniek zijn omdat de runtime conflicten met bestaande achtervoegselwaarden voor revisienamen weigert. | tekenreeks |
containers |
Configuratieobject waarmee wordt gedefinieerd welke containerinstallatiekopieën worden opgenomen in de container-app. | object |
scale |
Configuratieobject waarmee schaalregels voor de container-app worden gedefinieerd. | object |
Wijzigingen in de template
sectie zijn wijzigingen in het revisiebereik, waardoor een nieuwe revisie wordt geactiveerd.
Voorbeelden
Raadpleeg statustests in Azure Container Apps voor meer informatie over statustests.
In het volgende voorbeeld wordt een container-app geïmplementeerd met een ARM-sjabloonfragment.
{
"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-taak
In de volgende tabellen worden de veelgebruikte eigenschappen in de Container Apps-taakresource beschreven. Zie azure Container Apps REST API-naslaginformatie voor een volledige lijst met eigenschappen.
Bron
Het object van properties
een Container Apps-taakresource bevat de volgende eigenschappen:
Eigenschappen | Beschrijving | Gegevenstype | Alleen-lezen |
---|---|---|---|
environmentId |
De omgevings-id voor uw Container Apps-taak. Deze eigenschap is vereist voor het maken van een Container Apps-taak. Als u YAML gebruikt, kunt u in plaats daarvan de omgevings-id opgeven met behulp van de --environment optie in de Azure CLI. |
tekenreeks | Nee |
De environmentId
waarde heeft de volgende vorm:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
In dit voorbeeld plaatst u de waarden in plaats van de tijdelijke aanduidingstokens tussen <>
vierkante haken.
properties.configuration
Het object van properties.configuration
een resource bevat de volgende eigenschappen:
properties.template
Het object van properties.template
een resource bevat de volgende eigenschappen:
Eigenschappen | Beschrijving | Gegevenstype |
---|---|---|
containers |
Configuratieobject dat definieert welke containerinstallatiekopieën zijn opgenomen in de taak. | object |
scale |
Configuratieobject waarmee schaalregels voor de taak worden gedefinieerd. | object |
Voorbeelden
In het volgende voorbeeld implementeert het ARM-sjabloonfragment een Container Apps-taak.
{
"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"
}
]
}
]
}
}
}