Specyfikacje szablonów arm i YAML usługi Azure Container Apps
Wdrożenia usługi Azure Container Apps są obsługiwane przez szablon usługi Azure Resource Manager (ARM). Niektóre polecenia interfejsu wiersza polecenia usługi Container Apps obsługują również używanie szablonu YAML do określania zasobu.
Ten artykuł zawiera przykłady konfiguracji usługi ARM i YAML dla często używanych zasobów usługi Container Apps. Aby uzyskać pełną listę zasobów usługi Container Apps, zobacz Szablony usługi Azure Resource Manager dla usługi Container Apps. Kod wymieniony w tym artykule jest przeznaczony tylko do celów przykładowych. Aby uzyskać pełne informacje o schemacie i typie, zobacz definicje JSON wymaganej wersji interfejsu API.
Wersje interfejsu API
Najnowsze wersje interfejsu API zarządzania dla usługi Azure Container Apps to:
2023-05-01
(stabilny)2023-08-01-preview
(wersja zapoznawcza)
Aby dowiedzieć się więcej o różnicach między wersjami interfejsu API, zobacz Microsoft.App dziennik zmian.
Aktualizowanie wersji interfejsu API
Aby użyć określonej wersji interfejsu API w usłudze ARM lub Bicep, zaktualizuj wersję przywołyną w szablonach. Aby użyć najnowszej wersji interfejsu API w interfejsie wiersza polecenia platformy Azure lub programie Azure PowerShell, zaktualizuj je do najnowszej wersji.
Zaktualizuj interfejs wiersza polecenia platformy Azure i rozszerzenie usługi Azure Container Apps, uruchamiając następujące polecenia:
az upgrade
az extension add -n containerapp --upgrade
Aby zaktualizować program Azure PowerShell, zobacz Jak zainstalować program Azure PowerShell.
Aby programowo zarządzać usługą Azure Container Apps przy użyciu najnowszej wersji interfejsu API, użyj najnowszych wersji zestawu SDK zarządzania:
Środowisko usługi Container Apps
W poniższych tabelach opisano często używane właściwości dostępne w zasobie środowiska usługi Container Apps. Aby uzyskać pełną listę właściwości, zobacz Dokumentacja interfejsu API REST usługi Azure Container Apps.
Zasób
Zasób środowiska usługi Container Apps zawiera następujące właściwości:
Właściwości | opis | Typ danych | Tylko do odczytu |
---|---|---|---|
daprAIInstrumentationKey |
Klucz instrumentacji usługi Application Insights używany przez dapr. | string | Nie |
appLogsConfiguration |
Konfiguracja rejestrowania środowiska. | Objekt | Nie. |
peerAuthentication |
Jak włączyć szyfrowanie mTLS. | Objekt | Nie. |
Przykłady
Poniższy przykładowy fragment kodu szablonu usługi ARM wdraża środowisko usługi Container Apps.
Uwaga
Polecenia służące do tworzenia środowisk aplikacji kontenera nie obsługują danych wejściowych konfiguracji YAML.
{
"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"
}
}
Aplikacja kontenera
W poniższych tabelach opisano często używane właściwości w zasobie aplikacji kontenera. Aby uzyskać pełną listę właściwości, zobacz Dokumentacja interfejsu API REST usługi Azure Container Apps.
Zasób
Obiekt zasobu aplikacji kontenera properties
zawiera następujące właściwości:
Właściwości | opis | Typ danych | Tylko do odczytu |
---|---|---|---|
provisioningState |
Stan długotrwałej operacji, na przykład podczas tworzenia nowej poprawki kontenera. Możliwe wartości to: aprowizowanie, aprowizowanie, niepowodzenie. Sprawdź, czy aplikacja jest uruchomiona. | string | Tak |
environmentId |
Identyfikator środowiska dla aplikacji kontenera. Jest to właściwość wymagana do utworzenia aplikacji kontenera. Jeśli używasz języka YAML, możesz określić identyfikator środowiska przy użyciu --environment opcji w interfejsie wiersza polecenia platformy Azure. |
string | Nie |
latestRevisionName |
Nazwa najnowszej poprawki. | string | Tak |
latestRevisionFqdn |
Adres URL najnowszej poprawki. | string | Tak |
Wartość environmentId
ma następującą formę:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
W tym przykładzie wartości są umieszczane zamiast tokenów zastępczych otoczonych <>
nawiasami kwadratowymi.
properties.configuration
Obiekt zasobu properties.configuration
zawiera następujące właściwości:
Właściwości | opis | Typ danych |
---|---|---|
activeRevisionsMode |
Ustawienie automatycznie single dezaktywuje stare poprawki i zachowuje tylko najnowszą wersję aktywną. Ustawienie umożliwia multiple obsługę wielu poprawek. |
string |
secrets |
Definiuje wartości wpisów tajnych w aplikacji kontenera. | obiekt |
ingress |
Obiekt definiujący publiczną konfigurację ułatwień dostępu aplikacji kontenera. | obiekt |
registries |
Obiekt konfiguracji odwołujący się do poświadczeń dla prywatnych rejestrów kontenerów. Wpisy zdefiniowane przy użyciu secretref odwołania do obiektu konfiguracji wpisów tajnych. |
obiekt |
dapr |
Obiekt konfiguracji, który definiuje ustawienia języka Dapr dla aplikacji kontenera. | obiekt |
Zmiany wprowadzone w configuration
sekcji to zmiany zakresu aplikacji, które nie wyzwalają nowej poprawki.
properties.template
Obiekt zasobu properties.template
zawiera następujące właściwości:
Właściwości | opis | Typ danych |
---|---|---|
revisionSuffix |
Przyjazna nazwa poprawki. Ta wartość musi być unikatowa, ponieważ środowisko uruchomieniowe odrzuca wszelkie konflikty z istniejącymi wartościami sufiksów nazw poprawek. | string |
containers |
Obiekt konfiguracji definiujący, jakie obrazy kontenerów są zawarte w aplikacji kontenera. | obiekt |
scale |
Obiekt konfiguracji, który definiuje reguły skalowania dla aplikacji kontenera. | obiekt |
Zmiany wprowadzone w template
sekcji to zmiany zakresu poprawek, które wyzwalają nową poprawkę.
Przykłady
Aby uzyskać szczegółowe informacje na temat sond kondycji, zobacz Sondy kondycji w usłudze Azure Container Apps.
Poniższy przykładowy fragment kodu szablonu usługi ARM wdraża aplikację kontenera.
{
"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"
}
]
}
}
}
Zadanie usługi Container Apps
W poniższych tabelach opisano często używane właściwości w zasobie zadania usługi Container Apps. Aby uzyskać pełną listę właściwości, zobacz Dokumentacja interfejsu API REST usługi Azure Container Apps.
Zasób
Obiekt zasobu properties
zadania usługi Container Apps zawiera następujące właściwości:
Właściwości | opis | Typ danych | Tylko do odczytu |
---|---|---|---|
environmentId |
Identyfikator środowiska dla zadania usługi Container Apps. Ta właściwość jest wymagana do utworzenia zadania usługi Container Apps. Jeśli używasz języka YAML, możesz określić identyfikator środowiska przy użyciu --environment opcji w interfejsie wiersza polecenia platformy Azure. |
string | Nie |
Wartość environmentId
ma następującą formę:
/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.App/environmentId/<ENVIRONMENT_NAME>
W tym przykładzie wartości są umieszczane zamiast tokenów zastępczych otoczonych <>
nawiasami kwadratowymi.
properties.configuration
Obiekt zasobu properties.configuration
zawiera następujące właściwości:
Właściwości | opis | Typ danych |
---|---|---|
triggerType |
Typ wyzwalacza dla zadania usługi Container Apps. Aby uzyskać określoną konfigurację dla każdego typu wyzwalacza, zobacz Typy wyzwalaczy zadań | string |
replicaTimeout |
Limit czasu w sekundach zadania usługi Container Apps. | integer |
replicaRetryLimit |
Liczba ponownych prób wykonania zadania usługi Container Apps. | integer |
properties.template
Obiekt zasobu properties.template
zawiera następujące właściwości:
Właściwości | opis | Typ danych |
---|---|---|
containers |
Obiekt konfiguracji, który definiuje, jakie obrazy kontenerów są zawarte w zadaniu. | obiekt |
scale |
Obiekt konfiguracji, który definiuje reguły skalowania dla zadania. | obiekt |
Przykłady
Poniższy przykładowy fragment kodu szablonu usługi ARM umożliwia wdrożenie zadania usługi Container Apps.
{
"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"
}
]
}
]
}
}
}