Поделиться через


Microsoft.App containerApps

Определение ресурса Bicep

Тип ресурса containerApps можно развернуть с помощью операций, предназначенных для:

Список измененных свойств в каждой версии API см. в журнале изменений.

Формат ресурсов

Чтобы создать ресурс Microsoft.App/containerApps, добавьте следующий Bicep в шаблон.

resource symbolicname 'Microsoft.App/containerApps@2023-11-02-preview' = {
  name: 'string'
  location: 'string'
  tags: {
    tagName1: 'tagValue1'
    tagName2: 'tagValue2'
  }
  extendedLocation: {
    name: 'string'
    type: 'CustomLocation'
  }
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {}
    }
  }
  managedBy: 'string'
  properties: {
    configuration: {
      activeRevisionsMode: 'string'
      dapr: {
        appId: 'string'
        appPort: int
        appProtocol: 'string'
        enableApiLogging: bool
        enabled: bool
        httpMaxRequestSize: int
        httpReadBufferSize: int
        logLevel: 'string'
      }
      ingress: {
        additionalPortMappings: [
          {
            exposedPort: int
            external: bool
            targetPort: int
          }
        ]
        allowInsecure: bool
        clientCertificateMode: 'string'
        corsPolicy: {
          allowCredentials: bool
          allowedHeaders: [
            'string'
          ]
          allowedMethods: [
            'string'
          ]
          allowedOrigins: [
            'string'
          ]
          exposeHeaders: [
            'string'
          ]
          maxAge: int
        }
        customDomains: [
          {
            bindingType: 'string'
            certificateId: 'string'
            name: 'string'
          }
        ]
        exposedPort: int
        external: bool
        ipSecurityRestrictions: [
          {
            action: 'string'
            description: 'string'
            ipAddressRange: 'string'
            name: 'string'
          }
        ]
        stickySessions: {
          affinity: 'string'
        }
        targetPort: int
        targetPortHttpScheme: 'string'
        traffic: [
          {
            label: 'string'
            latestRevision: bool
            revisionName: 'string'
            weight: int
          }
        ]
        transport: 'string'
      }
      maxInactiveRevisions: int
      registries: [
        {
          identity: 'string'
          passwordSecretRef: 'string'
          server: 'string'
          username: 'string'
        }
      ]
      secrets: [
        {
          identity: 'string'
          keyVaultUrl: 'string'
          name: 'string'
          value: 'string'
        }
      ]
      service: {
        type: 'string'
      }
    }
    environmentId: 'string'
    managedEnvironmentId: 'string'
    template: {
      containers: [
        {
          args: [
            'string'
          ]
          command: [
            'string'
          ]
          env: [
            {
              name: 'string'
              secretRef: 'string'
              value: 'string'
            }
          ]
          image: 'string'
          name: 'string'
          probes: [
            {
              failureThreshold: int
              httpGet: {
                host: 'string'
                httpHeaders: [
                  {
                    name: 'string'
                    value: 'string'
                  }
                ]
                path: 'string'
                port: int
                scheme: 'string'
              }
              initialDelaySeconds: int
              periodSeconds: int
              successThreshold: int
              tcpSocket: {
                host: 'string'
                port: int
              }
              terminationGracePeriodSeconds: int
              timeoutSeconds: int
              type: 'string'
            }
          ]
          resources: {
            cpu: json('decimal-as-string')
            memory: 'string'
          }
          volumeMounts: [
            {
              mountPath: 'string'
              subPath: 'string'
              volumeName: 'string'
            }
          ]
        }
      ]
      initContainers: [
        {
          args: [
            'string'
          ]
          command: [
            'string'
          ]
          env: [
            {
              name: 'string'
              secretRef: 'string'
              value: 'string'
            }
          ]
          image: 'string'
          name: 'string'
          resources: {
            cpu: json('decimal-as-string')
            memory: 'string'
          }
          volumeMounts: [
            {
              mountPath: 'string'
              subPath: 'string'
              volumeName: 'string'
            }
          ]
        }
      ]
      revisionSuffix: 'string'
      scale: {
        maxReplicas: int
        minReplicas: int
        rules: [
          {
            azureQueue: {
              auth: [
                {
                  secretRef: 'string'
                  triggerParameter: 'string'
                }
              ]
              queueLength: int
              queueName: 'string'
            }
            custom: {
              auth: [
                {
                  secretRef: 'string'
                  triggerParameter: 'string'
                }
              ]
              metadata: {
                {customized property}: 'string'
              }
              type: 'string'
            }
            http: {
              auth: [
                {
                  secretRef: 'string'
                  triggerParameter: 'string'
                }
              ]
              metadata: {
                {customized property}: 'string'
              }
            }
            name: 'string'
            tcp: {
              auth: [
                {
                  secretRef: 'string'
                  triggerParameter: 'string'
                }
              ]
              metadata: {
                {customized property}: 'string'
              }
            }
          }
        ]
      }
      serviceBinds: [
        {
          clientType: 'string'
          customizedKeys: {
            {customized property}: 'string'
          }
          name: 'string'
          serviceId: 'string'
        }
      ]
      terminationGracePeriodSeconds: int
      volumes: [
        {
          mountOptions: 'string'
          name: 'string'
          secrets: [
            {
              path: 'string'
              secretRef: 'string'
            }
          ]
          storageName: 'string'
          storageType: 'string'
        }
      ]
    }
    workloadProfileName: 'string'
  }
}

Значения свойств

containerApps

Имя Описание Значение
name имя ресурса. string (обязательно)

Ограничение символов: 2–32

Допустимые символы:
Строчные буквы, цифры и дефисы.

Начинается с буквы и заканчивается буквенно-цифровым символом.
location Географическое расположение, в котором находится ресурс string (обязательно)
tags Теги ресурсов. Словарь имен и значений тегов. См . раздел Теги в шаблонах
extendedLocation Сложный тип расширенного расположения. ExtendedLocation
удостоверение управляемые удостоверения для приложения-контейнера для взаимодействия с другими службами Azure без поддержки каких-либо секретов или учетных данных в коде. Управляемое удостоверение службы
managedBy Полный идентификатор ресурса, который управляет этим ресурсом. Указывает, управляется ли этот ресурс другим ресурсом Azure. Если это так, при развертывании в полном режиме ресурс не будет удален из шаблона, так как он управляется другим ресурсом. строка
properties Свойства ресурса ContainerApp Свойства ContainerApp

ExtendedLocation

Имя Описание Значение
name Имя расширенного расположения. строка
type Тип расширенного расположения. CustomLocation

Управляемое удостоверение службы

Имя Описание Значение
тип Тип управляемого удостоверения службы (где разрешены типы SystemAssigned и UserAssigned). "Нет"
SystemAssigned
"SystemAssigned,UserAssigned"
UserAssigned (обязательно)
userAssignedIdentities Набор назначенных пользователем удостоверений, связанных с ресурсом. Ключи словаря userAssignedIdentities будут иметь идентификаторы ресурсов ARM в формате :/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Значения словаря могут быть пустыми объектами ({}) в запросах. UserAssignedIdentities

UserAssignedIdentities

Имя Описание Значение
{настраиваемое свойство} UserAssignedIdentity

UserAssignedIdentity

Этот объект не содержит свойств, которые необходимо задать во время развертывания. Все свойства доступны только для чтения.

Свойства ContainerApp

Имя Описание Значение
настройка Свойства конфигурации приложения-контейнера без управления версиями. Конфигурация
environmentId Идентификатор ресурса среды. строка
managedEnvironmentId Не рекомендуется. Идентификатор ресурса среды приложения-контейнера. строка
шаблон Определение приложения с управлением версиями приложения-контейнера. Шаблон
workloadProfileName Имя профиля рабочей нагрузки для закрепления для выполнения приложения-контейнера. строка

Конфигурация

Имя Описание Значение
activeRevisionsMode ActiveRevisionsMode управляет обработкой активных редакций для приложения-контейнера:
{list} {item} Несколько: могут быть активны несколько редакций. {/item} {item} Один. Одновременно может быть активна только одна редакция. В этом режиме нельзя использовать весовые коэффициенты редакции. Если значение не указано, используется значение по умолчанию. {/item} {/list}
"Несколько"
"Single"
dapr Конфигурация Dapr для приложения-контейнера. Dapr
Попадания Конфигурации входящего трафика. Входящий трафик
maxInactiveRevisions Необязательный элемент. Максимальное количество неактивных редакций, которые может иметь приложение-контейнер. INT
registries Коллекция учетных данных частного реестра контейнеров для контейнеров, используемых приложением-контейнером RegistryCredentials[]
секретные коды Коллекция секретов, используемых приложением-контейнером Секрет[]
служба Контейнерное приложение, которое будет Служба приложений контейнера разработки Служба

Dapr

Имя Описание Значение
appId Идентификатор приложения Dapr строка
appPort Сообщает Dapr, какой порт прослушивает приложение. INT
appProtocol Передает в Dapr информацию о протоколе, используемом в приложении. Допустимые параметры: http и grpc. Значение по умолчанию — http. 'grpc'
"http"
enableApiLogging Включает ведение журнала API для расширения Dapr bool
Включено Логическое значение, указывающее, включен ли боковой автомобиль Dapr bool
httpMaxRequestSize Увеличение максимального размера параметра http- и grpc-серверов текста запроса в МБ для обработки отправки больших файлов. Значение по умолчанию — 4 МБ. INT
httpReadBufferSize Максимальный размер буфера чтения заголовка HTTP в КБ для обработки при отправке заголовков с несколькими КБ. Значение по умолчанию — 65 КБ. INT
LogLevel Задает уровень ведения журнала для расширения Dapr. Допустимые значения: debug, info, warn, error. Значение по умолчанию — info. "debug"
"error"
"info"
"warn"

Входящий трафик

Имя Описание Значение
additionalPortMappings Параметры для предоставления дополнительных портов в приложении-контейнере IngressPortMapping[]
allowInsecure Логическое значение, указывающее, разрешены ли HTTP-подключения к . Если задано значение false, HTTP-подключения автоматически перенаправляются на HTTPS-подключения. bool
clientCertificateMode Режим сертификата клиента для проверки подлинности mTLS. Игнорировать указывает, что сервер удаляет сертификат клиента при пересылке. Принять означает, что сервер перенаправит сертификат клиента, но не требует сертификата клиента. Требовать указывает, что серверу требуется сертификат клиента. "принять"
'ignore'
"require"
corsPolicy Политика CORS для приложения-контейнера CorsPolicy
customDomains привязки личного домена для имен узлов контейнеров приложений. CustomDomain[]
exposedPort Предоставленный порт в контейнерах для трафика TCP из входящего трафика INT
external Логическое значение, указывающее, предоставляет ли приложение внешнюю конечную точку HTTP bool
ipSecurityRestrictions Правила для ограничения входящих IP-адресов. IpSecurityRestrictionRule[]
stickySessions Прикрепленные сеансы для режима одиночной редакции IngressStickySessions
targetPort Целевой порт в контейнерах для трафика из входящего трафика INT
targetPortHttpScheme Прослушивает ли приложение HTTP http или https "http"
"https"
traffic Весовые коэффициенты трафика для редакций приложения TrafficWeight[]
транспорт Транспортный протокол входящего трафика 'auto'
"http"
"http2"
"tcp"

IngressPortMapping

Имя Описание Значение
exposedPort Указывает предоставленный порт для целевого порта. Если значение не указано, по умолчанию используется целевой порт. INT
external Указывает, доступен ли порт приложения за пределами среды. bool (обязательно)
targetPort Указывает, что контейнер пользователя порта ожидает передачи данных. int (обязательно)

CorsPolicy

Имя Описание Значение
allowCredentials Указывает, разрешает ли ресурс учетные данные. bool
allowedHeaders Указывает содержимое заголовка access-control-allow-headers. string[]
allowedMethods Указывает содержимое заголовка access-control-allow-methods. string[]
allowedOrigins Указывает содержимое заголовка access-control-allow-origins. string[] (обязательно)
exposeHeaders Указывает содержимое заголовка access-control-expose-headers. string[]
maxAge Указывает содержимое для заголовка access-control-max-age. INT

CustomDomain

Имя Описание Значение
bindingType Custom Domain тип привязки. "Отключено"
'SniEnabled'
certificateId Идентификатор ресурса сертификата для привязки к этому имени узла. Должен существовать в управляемой среде. строка
name Имя узла строка (обязательно)

IpSecurityRestrictionRule

Имя Описание Значение
action Правила разрешения или запрета для входящего IP-адреса. Примечание. Правила могут состоять только из all allow или ALL Deny "Разрешить"
Deny (обязательно)
description Описать правило ограничения IP-адресов, которое отправляется в container-app. Это необязательное поле. строка
ipAddressRange Нотация CIDR для сопоставления входящего IP-адреса строка (обязательно)
name Имя правила ограничения IP-адресов. строка (обязательно)

IngressStickySessions

Имя Описание Значение
affinity Закрепление сходства сеансов "none"
"липкий"

Вес трафика

Имя Описание Значение
метка Связывает метку трафика с редакцией строка
latestRevision Указывает, что вес трафика относится к последней стабильной редакции bool
revisionName Имя редакции строка
вес Вес трафика, назначенный редакции INT

RegistryCredentials

Имя Описание Значение
удостоверение Управляемое удостоверение, используемое для проверки подлинности с помощью Реестр контейнеров Azure. Для удостоверений, назначаемых пользователем, используйте полный идентификатор ресурса, назначаемый пользователем. Для удостоверений, назначаемых системой, используйте system. строка
passwordSecretRef Имя секрета, содержащего пароль для входа в реестр строка
server Сервер реестра контейнеров строка
username Имя пользователя реестра контейнеров строка

Секрет

Имя Описание Значение
удостоверение Идентификатор ресурса управляемого удостоверения для проверки подлинности в Azure Key Vault или system для использования назначаемого системой удостоверения. строка
keyVaultUrl AZURE Key Vault URL-адрес, указывающий на секрет, на который ссылается приложение-контейнер. строка
name Имя секрета. строка
value Значение секрета. строка

Ограничения:
Конфиденциальное значение. Передайте в качестве безопасного параметра.

Служба

Имя Описание Значение
тип Тип службы Dev ContainerApp строка (обязательно)

Шаблон

Имя Описание Значение
containers Список определений контейнеров для приложения-контейнера. Container[]
initContainers Список специализированных контейнеров, выполняемых перед контейнерами приложений. InitContainer[]
revisionSuffix Понятный суффикс, добавляемый к имени редакции строка
scale Свойства масштабирования для приложения-контейнера. Масштабирование
serviceBinds Список служб приложений-контейнеров, привязанных к приложению ServiceBind[]
terminationGracePeriodSeconds Необязательный период (в секундах) Экземпляр приложения-контейнера должен корректно завершить работу. Значение должно быть неотрицательно целым числом. Нулевое значение указывает, что остановка немедленно завершается с помощью сигнала завершения (нет возможности завершить работу). Если это значение равно nil, вместо него будет использоваться льготный период по умолчанию. Задайте это значение дольше ожидаемого времени очистки для процесса. Значение по умолчанию — 30 секунд. INT
volumes. Список определений томов для приложения-контейнера. Том[]

Контейнер

Имя Описание Значение
args Аргументы команды запуска контейнера. string[]
. Команда запуска контейнера. string[]
env Переменные среды контейнера. EnvironmentVar[]
Изображение Тег образа контейнера. строка
name Имя настраиваемого контейнера. строка
probes Список проб для контейнера. ContainerAppProbe[]
ресурсов Требования к ресурсам контейнера. ContainerResources
volumeMounts Подключения томов контейнеров. VolumeMount[]

EnvironmentVar

Имя Описание Значение
name Имя переменной среды. строка
secretRef Имя секрета приложения-контейнера, из которого извлекалось значение переменной среды. строка
value Значение переменной среды, не относящееся к секретам. строка

ContainerAppProbe

Имя Описание Значение
failureThreshold Минимальное количество последовательных сбоев для проверки, которые будут считаться неудачными после успешного выполнения. Значение по умолчанию — 3. Минимальное значение — 1. Максимальное значение равно 10. INT
httpGet HTTPGet указывает HTTP-запрос для выполнения. ContainerAppProbeHttpGet
initialDelaySeconds Количество секунд после запуска контейнера до начала пробы активности. Минимальное значение — 1. Максимальное значение — 60. INT
periodSeconds Частота (в секундах) выполнения пробы. Значение по умолчанию — 10 секунд. Минимальное значение — 1. Максимальное значение — 240. INT
successThreshold Минимальный последовательный успех пробы, который будет считаться успешным после сбоя. По умолчанию равен 1. Должно быть 1 для активности и запуска. Минимальное значение — 1. Максимальное значение равно 10. INT
tcpSocket TCPSocket указывает действие, связанное с TCP-портом. Обработчики TCP пока не поддерживаются. ContainerAppProbeTcpSocket
terminationGracePeriodSeconds Необязательная длительность в секундах, которую модуль pod должен корректно завершить после сбоя пробы. Льготный период — это длительность в секундах после отправки сигнала о завершении процесса в модуле pod и время принудительной остановки процессов с помощью сигнала о завершении. Задайте это значение дольше, чем ожидаемое время очистки для процесса. Если это значение равно nil, будет использоваться завершение модуля podGracePeriodSeconds. В противном случае это значение переопределяет значение, предоставленное спецификацией pod. Значение должно быть неотрицательно целым числом. Нулевое значение указывает на остановку немедленно через сигнал завершения (нет возможности завершить работу). Это альфа-поле, и для этого необходимо включить шлюз функций ProbeTerminationGracePeriod. Максимальное значение — 3600 секунд (1 час) INT
timeoutSeconds Время ожидания пробы в секундах. Значение по умолчанию — 1 секунда. Минимальное значение — 1. Максимальное значение — 240. INT
тип Тип пробы. "Живость"
"Готовность"
'Startup'

ContainerAppProbeHttpGet

Имя Описание Значение
узел Имя узла, к которому нужно подключиться, по умолчанию использует IP-адрес pod. Скорее всего, вы хотите задать "Host" в httpHeaders. строка
httpHeaders Настраиваемые заголовки для задания в запросе. HTTP разрешает повторяющиеся заголовки. ContainerAppProbeHttpGetHttpHeadersItem[]
path Путь для доступа на HTTP-сервере. строка
порт Имя или номер порта для доступа к контейнеру. Число должно находиться в диапазоне от 1 до 65535. Имя должно быть IANA_SVC_NAME. int (обязательно)
схема Схема, используемая для подключения к узлу. Значение по умолчанию — HTTP. "HTTP"
"HTTPS"

ContainerAppProbeHttpGetHttpHeadersItem

Имя Описание Значение
name Имя поля заголовка строка (обязательно)
значение Значение поля заголовка строка (обязательно)

ContainerAppProbeTcpSocket

Имя Описание Значение
узел Необязательно. Имя узла для подключения. По умолчанию используется IP-адрес pod. строка
порт Номер или имя порта для доступа к контейнеру. Число должно находиться в диапазоне от 1 до 65535. Имя должно быть IANA_SVC_NAME. int (обязательно)

ContainerResources

Имя Описание Значение
cpu Обязательный ЦП в ядрах, например 0,5. Чтобы указать десятичное значение, используйте функцию json(). int или json decimal
Память Требуемая память, например "250 Мб" строка

VolumeMount

Имя Описание Значение
mountPath Путь в контейнере, к которому должен быть подключен том. Не должен содержать ":". строка
subPath Путь в томе, из которого должен быть подключен том контейнера. По умолчанию — "" (корень тома). строка
volumeName Оно должно совпадать с именем тома. строка

InitContainer

Имя Описание Значение
args Аргументы команды запуска контейнера. string[]
. Команда запуска контейнера. string[]
env Переменные среды контейнера. EnvironmentVar[]
Изображение Тег образа контейнера. строка
name Имя настраиваемого контейнера. строка
ресурсов Требования к ресурсам контейнера. ContainerResources
volumeMounts Подключения тома контейнера. VolumeMount[]

Масштабирование

Имя Описание Значение
maxReplicas Необязательный элемент. Максимальное число реплик контейнеров. Значение по умолчанию — 10, если не задано. INT
minReplicas Необязательный элемент. Минимальное количество реплик контейнеров. INT
правила Правила масштабирования. ScaleRule[]

ScaleRule

Имя Описание Значение
azureQueue Масштабирование на основе очередей Azure. QueueScaleRule
custom Настраиваемое правило масштабирования. CustomScaleRule
http Масштабирование на основе HTTP-запросов. HttpScaleRule
name Имя правила масштабирования строка
TCP Масштабирование на основе TCP-запросов. TcpScaleRule

QueueScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для правила масштабирования очереди. ScaleRuleAuth[]
queueLength Длина очереди. INT
queueName Имя очереди. строка

ScaleRuleAuth

Имя Описание Значение
secretRef Имя секрета, из которого следует извлечь параметры проверки подлинности. строка
triggerParameter Параметр триггера, использующий секрет строка

CustomScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для настраиваемого правила масштабирования. ScaleRuleAuth[]
метаданные Свойства метаданных для описания настраиваемого правила масштабирования. CustomScaleRuleMetadata
тип Тип настраиваемого правила масштабирования
Например, azure-servicebus, redis и т. д.
строка

CustomScaleRuleMetadata

Имя Описание Значение
{настраиваемое свойство} строка

HttpScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для настраиваемого правила масштабирования. ScaleRuleAuth[]
метаданные Свойства метаданных для описания правила масштабирования HTTP. HttpScaleRuleMetadata

HttpScaleRuleMetadata

Имя Описание Значение
{настраиваемое свойство} строка

TcpScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для правила масштабирования TCP. ScaleRuleAuth[]
метаданные Свойства метаданных для описания правила масштабирования TCP. TcpScaleRuleMetadata

TcpScaleRuleMetadata

Имя Описание Значение
{настраиваемое свойство} строка

ServiceBind

Имя Описание Значение
clientType Тип клиента, используемого для подключения к службе строка
customizedKeys Настраиваемые ключи для настройки внедренных значений в приложение ServiceBindCustomizedKeys
name Имя привязки службы строка
serviceId Идентификатор ресурса целевой службы строка

ServiceBindCustomizedKeys

Имя Описание Значение
{настроенное свойство} строка

Громкость

Имя Описание Значение
mountOptions Параметры подключения, используемые при подключении общей папки Azure или общей папки NFS Azure. Должен быть строкой, разделенной запятыми. строка
name Имя тома. строка
секретные коды Список секретов, добавляемых в том. Если секреты не указаны, все секреты в коллекции будут добавлены в том. SecretVolumeItem[]
storageName Имя ресурса хранилища. Не нужно предоставлять значения EmptyDir и Secret. строка
storageType Тип хранилища для тома. Если параметр не указан, используйте EmptyDir. AzureFile
EmptyDir
'NfsAzureFile'
"Секрет"

SecretVolumeItem

Имя Описание Значение
path Путь к секрету проекта. Если путь не указан, по умолчанию используется имя секрета, указанное в secretRef. строка
secretRef Имя секрета приложения-контейнера, из которого извлекалось значение секрета. строка

Шаблоны быстрого запуска

Следующие шаблоны быстрого запуска развертывают этот тип ресурса.

Шаблон Описание
Создание приложения-контейнера и среды с реестром

Развертывание в Azure
Создайте среду приложения-контейнера с базовым приложением-контейнером из Реестр контейнеров Azure. Он также развертывает рабочую область Log Analytics для хранения журналов.
Создание приложения с двумя контейнерами со средой приложений-контейнеров

Развертывание в Azure
Создайте среду двух контейнеров приложений с базовым приложением-контейнером. Он также развертывает рабочую область Log Analytics для хранения журналов.
Создание приложения-контейнера в среде приложения-контейнера

Развертывание в Azure
Создайте среду приложения-контейнера с базовым приложением-контейнером. Он также развертывает рабочую область Log Analytics для хранения журналов.
Создает приложение-контейнер с определенным правилом масштабирования HTTP

Развертывание в Azure
Создайте среду приложения-контейнера с базовым приложением-контейнером, которое масштабируется на основе трафика HTTP.
Создает внешнюю среду приложения-контейнера с виртуальной сетью

Развертывание в Azure
Создает внешнюю среду приложения-контейнера с виртуальной сетью.
Создает внутреннюю среду приложения-контейнера с виртуальной сетью

Развертывание в Azure
Создает внутреннюю среду приложения-контейнера с виртуальной сетью.

Определение ресурса шаблона ARM

Тип ресурса containerApps можно развернуть с помощью операций, предназначенных для:

Список измененных свойств в каждой версии API см. в журнале изменений.

Формат ресурсов

Чтобы создать ресурс Microsoft.App/containerApps, добавьте следующий код JSON в шаблон.

{
  "type": "Microsoft.App/containerApps",
  "apiVersion": "2023-11-02-preview",
  "name": "string",
  "location": "string",
  "tags": {
    "tagName1": "tagValue1",
    "tagName2": "tagValue2"
  },
  "extendedLocation": {
    "name": "string",
    "type": "CustomLocation"
  },
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {}
    }
  },
  "managedBy": "string",
  "properties": {
    "configuration": {
      "activeRevisionsMode": "string",
      "dapr": {
        "appId": "string",
        "appPort": "int",
        "appProtocol": "string",
        "enableApiLogging": "bool",
        "enabled": "bool",
        "httpMaxRequestSize": "int",
        "httpReadBufferSize": "int",
        "logLevel": "string"
      },
      "ingress": {
        "additionalPortMappings": [
          {
            "exposedPort": "int",
            "external": "bool",
            "targetPort": "int"
          }
        ],
        "allowInsecure": "bool",
        "clientCertificateMode": "string",
        "corsPolicy": {
          "allowCredentials": "bool",
          "allowedHeaders": [ "string" ],
          "allowedMethods": [ "string" ],
          "allowedOrigins": [ "string" ],
          "exposeHeaders": [ "string" ],
          "maxAge": "int"
        },
        "customDomains": [
          {
            "bindingType": "string",
            "certificateId": "string",
            "name": "string"
          }
        ],
        "exposedPort": "int",
        "external": "bool",
        "ipSecurityRestrictions": [
          {
            "action": "string",
            "description": "string",
            "ipAddressRange": "string",
            "name": "string"
          }
        ],
        "stickySessions": {
          "affinity": "string"
        },
        "targetPort": "int",
        "targetPortHttpScheme": "string",
        "traffic": [
          {
            "label": "string",
            "latestRevision": "bool",
            "revisionName": "string",
            "weight": "int"
          }
        ],
        "transport": "string"
      },
      "maxInactiveRevisions": "int",
      "registries": [
        {
          "identity": "string",
          "passwordSecretRef": "string",
          "server": "string",
          "username": "string"
        }
      ],
      "secrets": [
        {
          "identity": "string",
          "keyVaultUrl": "string",
          "name": "string",
          "value": "string"
        }
      ],
      "service": {
        "type": "string"
      }
    },
    "environmentId": "string",
    "managedEnvironmentId": "string",
    "template": {
      "containers": [
        {
          "args": [ "string" ],
          "command": [ "string" ],
          "env": [
            {
              "name": "string",
              "secretRef": "string",
              "value": "string"
            }
          ],
          "image": "string",
          "name": "string",
          "probes": [
            {
              "failureThreshold": "int",
              "httpGet": {
                "host": "string",
                "httpHeaders": [
                  {
                    "name": "string",
                    "value": "string"
                  }
                ],
                "path": "string",
                "port": "int",
                "scheme": "string"
              },
              "initialDelaySeconds": "int",
              "periodSeconds": "int",
              "successThreshold": "int",
              "tcpSocket": {
                "host": "string",
                "port": "int"
              },
              "terminationGracePeriodSeconds": "int",
              "timeoutSeconds": "int",
              "type": "string"
            }
          ],
          "resources": {
            "cpu": "[json('decimal-as-string')]",
            "memory": "string"
          },
          "volumeMounts": [
            {
              "mountPath": "string",
              "subPath": "string",
              "volumeName": "string"
            }
          ]
        }
      ],
      "initContainers": [
        {
          "args": [ "string" ],
          "command": [ "string" ],
          "env": [
            {
              "name": "string",
              "secretRef": "string",
              "value": "string"
            }
          ],
          "image": "string",
          "name": "string",
          "resources": {
            "cpu": "[json('decimal-as-string')]",
            "memory": "string"
          },
          "volumeMounts": [
            {
              "mountPath": "string",
              "subPath": "string",
              "volumeName": "string"
            }
          ]
        }
      ],
      "revisionSuffix": "string",
      "scale": {
        "maxReplicas": "int",
        "minReplicas": "int",
        "rules": [
          {
            "azureQueue": {
              "auth": [
                {
                  "secretRef": "string",
                  "triggerParameter": "string"
                }
              ],
              "queueLength": "int",
              "queueName": "string"
            },
            "custom": {
              "auth": [
                {
                  "secretRef": "string",
                  "triggerParameter": "string"
                }
              ],
              "metadata": {
                "{customized property}": "string"
              },
              "type": "string"
            },
            "http": {
              "auth": [
                {
                  "secretRef": "string",
                  "triggerParameter": "string"
                }
              ],
              "metadata": {
                "{customized property}": "string"
              }
            },
            "name": "string",
            "tcp": {
              "auth": [
                {
                  "secretRef": "string",
                  "triggerParameter": "string"
                }
              ],
              "metadata": {
                "{customized property}": "string"
              }
            }
          }
        ]
      },
      "serviceBinds": [
        {
          "clientType": "string",
          "customizedKeys": {
            "{customized property}": "string"
          },
          "name": "string",
          "serviceId": "string"
        }
      ],
      "terminationGracePeriodSeconds": "int",
      "volumes": [
        {
          "mountOptions": "string",
          "name": "string",
          "secrets": [
            {
              "path": "string",
              "secretRef": "string"
            }
          ],
          "storageName": "string",
          "storageType": "string"
        }
      ]
    },
    "workloadProfileName": "string"
  }
}

Значения свойств

containerApps

Имя Описание Значение
тип Тип ресурса "Microsoft.App/containerApps"
версия_API Версия API ресурсов '2023-11-02-preview'
name имя ресурса. string (обязательно)

Ограничение символов: 2–32

Допустимые символы:
Строчные буквы, цифры и дефисы.

Начинается с буквы и заканчивается буквенно-цифровым символом.
location Географическое расположение, в котором находится ресурс string (обязательно)
tags Теги ресурсов. Словарь имен и значений тегов. См . раздел Теги в шаблонах
extendedLocation Сложный тип расширенного расположения. ExtendedLocation
удостоверение управляемые удостоверения для приложения-контейнера для взаимодействия с другими службами Azure без поддержки каких-либо секретов или учетных данных в коде. Управляемое удостоверение службы
managedBy Полный идентификатор ресурса, который управляет этим ресурсом. Указывает, управляется ли этот ресурс другим ресурсом Azure. Если это так, при развертывании в полном режиме ресурс не будет удален из шаблона, так как он управляется другим ресурсом. строка
properties Свойства ресурса ContainerApp Свойства ContainerApp

ExtendedLocation

Имя Описание Значение
name Имя расширенного расположения. строка
type Тип расширенного расположения. CustomLocation

Управляемое удостоверение службы

Имя Описание Значение
тип Тип управляемого удостоверения службы (где разрешены типы SystemAssigned и UserAssigned). "Нет"
SystemAssigned
"SystemAssigned,UserAssigned"
UserAssigned (обязательно)
userAssignedIdentities Набор назначенных пользователем удостоверений, связанных с ресурсом. Ключи словаря userAssignedIdentities будут иметь идентификаторы ресурсов ARM в формате :/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Значения словаря могут быть пустыми объектами ({}) в запросах. UserAssignedIdentities

UserAssignedIdentities

Имя Описание Значение
{настраиваемое свойство} UserAssignedIdentity

UserAssignedIdentity

Этот объект не содержит свойств, которые необходимо задать во время развертывания. Все свойства доступны только для чтения.

Свойства ContainerApp

Имя Описание Значение
настройка Свойства конфигурации приложения-контейнера без управления версиями. Конфигурация
environmentId Идентификатор ресурса среды. строка
managedEnvironmentId Не рекомендуется. Идентификатор ресурса среды приложения-контейнера. строка
шаблон Определение приложения с версией контейнера. Шаблон
workloadProfileName Имя профиля рабочей нагрузки для закрепления для выполнения приложения-контейнера. строка

Конфигурация

Имя Описание Значение
activeRevisionsMode ActiveRevisionsMode управляет обработкой активных редакций для приложения-контейнера:
{list} {item} Несколько: могут быть активны несколько редакций. {/item} {item} Одиночная версия. Одновременно может быть активна только одна редакция. В этом режиме нельзя использовать весовые коэффициенты редакции. Если значение не указано, это значение по умолчанию. {/item} {/list}
"Несколько"
"Single"
dapr Конфигурация Dapr для приложения-контейнера. Dapr
Попадания Конфигурации входящего трафика. Входящий трафик
maxInactiveRevisions Необязательный элемент. Максимальное количество неактивных редакций, которые может иметь контейнерное приложение. INT
registries Коллекция учетных данных частного реестра контейнеров для контейнеров, используемых приложением-контейнером RegistryCredentials[]
секретные коды Коллекция секретов, используемых приложением-контейнером Секрет[]
служба Контейнерное приложение будет Служба приложений контейнера разработки Служба

Dapr

Имя Описание Значение
appId Идентификатор приложения Dapr строка
appPort Сообщает Dapr, какой порт прослушивается приложением INT
appProtocol Передает в Dapr информацию о протоколе, используемом в приложении. Допустимые параметры: http и grpc. Значение по умолчанию — http. 'grpc'
"http"
enableApiLogging Включает ведение журнала API для расширения Dapr bool
Включено Логическое значение, указывающее, включена ли боковая машина Dapr bool
httpMaxRequestSize Увеличение максимального размера параметра http и grpc server в тексте запроса в МБ для обработки отправки больших файлов. Значение по умолчанию — 4 МБ. INT
httpReadBufferSize Максимальный размер dapr буфера чтения заголовков HTTP в КБ для обработки при отправке заголовков с несколькими КБ. Значение по умолчанию — 65 КБ. INT
LogLevel Задает уровень журнала для расширения Dapr. Допустимые значения: debug, info, warn, error. Значение по умолчанию — info. 'debug'
"error"
"info"
"предупреждать"

Входящий трафик

Имя Описание Значение
additionalPortMappings Параметры для предоставления дополнительных портов в контейнерном приложении IngressPortMapping[]
allowInsecure Логическое значение, указывающее, разрешены ли HTTP-подключения к. Если установлено значение false, http-подключения автоматически перенаправляются на HTTPS-подключения. bool
clientCertificateMode Режим сертификата клиента для проверки подлинности mTLS. Игнорировать означает, что сервер удаляет сертификат клиента при переадресации. Принять означает, что сервер пересылает сертификат клиента, но не требует сертификата клиента. Требовать указывает, что серверу требуется сертификат клиента. "принять"
"игнорировать"
"require"
corsPolicy Политика CORS для приложения-контейнера CorsPolicy
customDomains привязки личного домена для имен узлов контейнеров приложений. CustomDomain[]
exposedPort Предоставленный порт в контейнерах для трафика TCP из входящего трафика INT
external Логическое значение, указывающее, предоставляет ли приложение внешнюю конечную точку HTTP bool
ipSecurityRestrictions Правила для ограничения входящего IP-адреса. IpSecurityRestrictionRule[]
stickySessions Прикрепленные сеансы для режима одиночной редакции IngressStickySessions
targetPort Целевой порт в контейнерах для трафика из входящего трафика INT
targetPortHttpScheme Указывает, прослушивает ли приложение HTTP http или https "http"
"https"
traffic Весовые коэффициенты трафика для редакций приложения TrafficWeight[]
транспорт Транспортный протокол входящего трафика "auto"
"http"
"http2"
"tcp"

IngressPortMapping

Имя Описание Значение
exposedPort Указывает предоставленный порт для целевого порта. Если не указано, по умолчанию используется целевой порт. INT
external Указывает, доступен ли порт приложения за пределами среды. bool (обязательно)
targetPort Указывает, что контейнер пользователя порта ожидает передачи данных. int (обязательно)

CorsPolicy

Имя Описание Значение
allowCredentials Указывает, разрешает ли ресурс учетные данные. bool
allowedHeaders Указывает содержимое заголовка access-control-allow-headers. string[]
allowedMethods Указывает содержимое заголовка access-control-allow-methods. string[]
allowedOrigins Указывает содержимое заголовка access-control-allow-origins. string[] (обязательно)
exposeHeaders Указывает содержимое заголовка access-control-expose-headers. string[]
maxAge Указывает содержимое заголовка access-control-max-age. INT

CustomDomain

Имя Описание Значение
bindingType Custom Domain тип привязки. "Отключено"
'SniEnabled'
certificateId Идентификатор ресурса сертификата, привязанного к этому имени узла. Должен существовать в управляемой среде. строка
name Имя узла string (обязательно)

IpSecurityRestrictionRule

Имя Описание Значение
action Разрешить или запретить правила для определения входящего IP-адреса. Примечание. Правила могут состоять только из all allow или ALL Deny "Разрешить"
Deny (обязательно)
description Описать правило ограничения IP-адресов, которое отправляется в container-app. Это необязательное поле. строка
ipAddressRange Нотация CIDR для сопоставления входящего IP-адреса string (обязательно)
name Имя правила ограничения IP-адресов. string (обязательно)

IngressStickySessions

Имя Описание Значение
affinity Закрепление сходства сеансов "none"
'sticky'

Вес трафика

Имя Описание Значение
метка Связывает метку трафика с редакцией строка
latestRevision Указывает, что вес трафика относится к последней стабильной редакции bool
revisionName Имя редакции строка
вес Вес трафика, назначенный редакции INT

RegistryCredentials

Имя Описание Значение
удостоверение Управляемое удостоверение, используемое для проверки подлинности с помощью Реестр контейнеров Azure. Для удостоверений, назначаемых пользователем, используйте полный идентификатор ресурса удостоверения, назначаемого пользователем. Для удостоверений, назначаемых системой, используйте "system" строка
passwordSecretRef Имя секрета, содержащего пароль для входа в реестр. строка
server Сервер реестра контейнеров строка
username Имя пользователя реестра контейнеров строка

Секрет

Имя Описание Значение
удостоверение Идентификатор ресурса управляемого удостоверения для проверки подлинности в Azure Key Vault или system для использования назначаемого системой удостоверения. строка
keyVaultUrl URL-адрес Key Vault Azure, указывающий на секрет, на который ссылается приложение-контейнер. строка
name Имя секрета. строка
value Значение секрета. строка

Ограничения:
Конфиденциальное значение. Передайте в качестве безопасного параметра.

Служба

Имя Описание Значение
тип Тип службы Dev ContainerApp string (обязательно)

Шаблон

Имя Описание Значение
containers Список определений контейнеров для приложения-контейнера. Container[]
initContainers Список специализированных контейнеров, выполняемых перед контейнерами приложений. InitContainer[]
revisionSuffix Понятный суффикс, добавляемый к имени редакции строка
scale Свойства масштабирования для приложения-контейнера. Масштабирование
serviceBinds Список служб приложений-контейнеров, привязанных к приложению ServiceBind[]
terminationGracePeriodSeconds Необязательная длительность (в секундах) экземпляру приложения-контейнера необходимо корректно завершить работу. Значение должно быть неотрицательно целым числом. Нулевое значение указывает на остановку немедленно через сигнал завершения (нет возможности завершить работу). Если это значение равно нулю, вместо него будет использоваться льготный период по умолчанию. Задайте это значение дольше, чем ожидаемое время очистки для процесса. Значение по умолчанию — 30 секунд. INT
volumes. Список определений томов для приложения-контейнера. Том[]

Контейнер

Имя Описание Значение
args Аргументы команды запуска контейнера. string[]
. Команда запуска контейнера. string[]
env Переменные среды контейнера. EnvironmentVar[]
Изображение Тег образа контейнера. строка
name Имя настраиваемого контейнера. строка
probes Список проб для контейнера. ContainerAppProbe[]
ресурсов Требования к ресурсам контейнера. ContainerResources
volumeMounts Подключения томов контейнеров. VolumeMount[]

EnvironmentVar

Имя Описание Значение
name Имя переменной среды. строка
secretRef Имя секрета приложения-контейнера, из которого извлекалось значение переменной среды. строка
value Значение переменной среды, не относящееся к секретам. строка

ContainerAppProbe

Имя Описание Значение
failureThreshold Минимальное количество последовательных сбоев для проверки, которые будут считаться неудачными после успешного выполнения. Значение по умолчанию — 3. Минимальное значение — 1. Максимальное значение равно 10. INT
httpGet HTTPGet указывает HTTP-запрос для выполнения. ContainerAppProbeHttpGet
initialDelaySeconds Количество секунд после запуска контейнера до начала пробы активности. Минимальное значение — 1. Максимальное значение — 60. INT
periodSeconds Частота (в секундах) выполнения пробы. Значение по умолчанию — 10 секунд. Минимальное значение — 1. Максимальное значение — 240. INT
successThreshold Минимальный последовательный успех пробы, который будет считаться успешным после сбоя. По умолчанию равен 1. Должно быть 1 для активности и запуска. Минимальное значение — 1. Максимальное значение равно 10. INT
tcpSocket TCPSocket указывает действие, связанное с TCP-портом. Обработчики TCP пока не поддерживаются. ContainerAppProbeTcpSocket
terminationGracePeriodSeconds Необязательная длительность в секундах, которую модуль pod должен корректно завершить после сбоя пробы. Льготный период — это длительность в секундах после отправки сигнала о завершении процесса в модуле pod и время принудительной остановки процессов с помощью сигнала о завершении. Задайте это значение дольше, чем ожидаемое время очистки для процесса. Если это значение равно nil, будет использоваться завершение модуля podGracePeriodSeconds. В противном случае это значение переопределяет значение, предоставленное спецификацией pod. Значение должно быть неотрицательно целым числом. Нулевое значение указывает на остановку немедленно через сигнал завершения (нет возможности завершить работу). Это альфа-поле, и для этого необходимо включить шлюз функций ProbeTerminationGracePeriod. Максимальное значение — 3600 секунд (1 час) INT
timeoutSeconds Время ожидания пробы в секундах. Значение по умолчанию — 1 секунда. Минимальное значение — 1. Максимальное значение — 240. INT
тип Тип пробы. "Живость"
"Готовность"
'Startup'

ContainerAppProbeHttpGet

Имя Описание Значение
узел Имя узла, к которому нужно подключиться, по умолчанию использует IP-адрес pod. Скорее всего, вы хотите задать "Host" в httpHeaders. строка
httpHeaders Настраиваемые заголовки для задания в запросе. HTTP разрешает повторяющиеся заголовки. ContainerAppProbeHttpGetHttpHeadersItem[]
path Путь для доступа на HTTP-сервере. строка
порт Имя или номер порта для доступа к контейнеру. Число должно находиться в диапазоне от 1 до 65535. Имя должно быть IANA_SVC_NAME. int (обязательно)
схема Схема, используемая для подключения к узлу. Значение по умолчанию — HTTP. "HTTP"
"HTTPS"

ContainerAppProbeHttpGetHttpHeadersItem

Имя Описание Значение
name Имя поля заголовка string (обязательно)
значение Значение поля заголовка строка (обязательно)

ContainerAppProbeTcpSocket

Имя Описание Значение
узел Необязательно. Имя узла для подключения. По умолчанию используется IP-адрес pod. строка
порт Номер или имя порта для доступа к контейнеру. Число должно находиться в диапазоне от 1 до 65535. Имя должно быть IANA_SVC_NAME. int (обязательно)

ContainerResources

Имя Описание Значение
cpu Обязательный ЦП в ядрах, например 0,5. Чтобы указать десятичное значение, используйте функцию json(). int или json decimal
Память Требуемая память, например "250 Мб" строка

VolumeMount

Имя Описание Значение
mountPath Путь в контейнере, к которому должен быть подключен том. Не должен содержать ":". строка
subPath Путь в томе, из которого должен быть подключен том контейнера. По умолчанию — "" (корень тома). строка
volumeName Оно должно совпадать с именем тома. строка

InitContainer

Имя Описание Значение
args Аргументы команды запуска контейнера. string[]
. Команда запуска контейнера. string[]
env Переменные среды контейнера. EnvironmentVar[]
Изображение Тег образа контейнера. строка
name Имя настраиваемого контейнера. строка
ресурсов Требования к ресурсам контейнера. ContainerResources
volumeMounts Подключения тома контейнера. VolumeMount[]

Масштабирование

Имя Описание Значение
maxReplicas Необязательный элемент. Максимальное число реплик контейнеров. Значение по умолчанию — 10, если не задано. INT
minReplicas Необязательный элемент. Минимальное количество реплик контейнеров. INT
правила Правила масштабирования. ScaleRule[]

ScaleRule

Имя Описание Значение
azureQueue Масштабирование на основе очередей Azure. QueueScaleRule
custom Настраиваемое правило масштабирования. CustomScaleRule
http Масштабирование на основе HTTP-запросов. HttpScaleRule
name Имя правила масштабирования строка
TCP Масштабирование на основе TCP-запросов. TcpScaleRule

QueueScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для правила масштабирования очереди. ScaleRuleAuth[]
queueLength Длина очереди. INT
queueName Имя очереди. строка

ScaleRuleAuth

Имя Описание Значение
secretRef Имя секрета, из которого будут извлекаться параметры проверки подлинности. строка
triggerParameter Параметр триггера, использующий секрет строка

CustomScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для настраиваемого правила масштабирования. ScaleRuleAuth[]
метаданные Свойства метаданных для описания настраиваемого правила масштабирования. CustomScaleRuleMetadata
тип Тип настраиваемого правила масштабирования
Например, azure-servicebus, redis и т. д.
строка

CustomScaleRuleMetadata

Имя Описание Значение
{настроенное свойство} строка

HttpScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для настраиваемого правила масштабирования. ScaleRuleAuth[]
метаданные Свойства метаданных для описания правила масштабирования HTTP. HttpScaleRuleMetadata

HttpScaleRuleMetadata

Имя Описание Значение
{настроенное свойство} строка

TcpScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для правила масштабирования TCP. ScaleRuleAuth[]
метаданные Свойства метаданных для описания правила масштабирования TCP. TcpScaleRuleMetadata

TcpScaleRuleMetadata

Имя Описание Значение
{настроенное свойство} строка

ServiceBind

Имя Описание Значение
clientType Тип клиента, используемого для подключения к службе строка
customizedKeys Настраиваемые ключи для настройки внедренных значений в приложение ServiceBindCustomizedKeys
name Имя привязки службы строка
serviceId Идентификатор ресурса целевой службы строка

ServiceBindCustomizedKeys

Имя Описание Значение
{настроенное свойство} строка

Громкость

Имя Описание Значение
mountOptions Параметры подключения, используемые при подключении общей папки Azure или общей папки NFS Azure. Должен быть строкой, разделенной запятыми. строка
name Имя тома. строка
секретные коды Список секретов, добавляемых в том. Если секреты не указаны, все секреты в коллекции будут добавлены в том. SecretVolumeItem[]
storageName Имя ресурса хранилища. Не нужно предоставлять значения EmptyDir и Secret. строка
storageType Тип хранилища для тома. Если параметр не указан, используйте EmptyDir. AzureFile
EmptyDir
'NfsAzureFile'
"Секрет"

SecretVolumeItem

Имя Описание Значение
path Путь к секрету проекта. Если путь не указан, по умолчанию используется имя секрета, указанное в secretRef. строка
secretRef Имя секрета приложения-контейнера, из которого извлекалось значение секрета. строка

Шаблоны быстрого запуска

Следующие шаблоны быстрого запуска развертывают этот тип ресурса.

Шаблон Описание
Создание приложения-контейнера и среды с реестром

Развертывание в Azure
Создайте среду приложения-контейнера с базовым приложением-контейнером из Реестр контейнеров Azure. Он также развертывает рабочую область Log Analytics для хранения журналов.
Создание приложения с двумя контейнерами со средой приложений-контейнеров

Развертывание в Azure
Создайте среду двух контейнеров приложений с базовым приложением-контейнером. Он также развертывает рабочую область Log Analytics для хранения журналов.
Создание приложения-контейнера в среде приложения-контейнера

Развертывание в Azure
Создайте среду приложения-контейнера с базовым приложением-контейнером. Он также развертывает рабочую область Log Analytics для хранения журналов.
Создает приложение-контейнер с определенным правилом масштабирования HTTP

Развертывание в Azure
Создайте среду приложения-контейнера с базовым приложением-контейнером, которое масштабируется на основе трафика HTTP.
Создает внешнюю среду приложения-контейнера с виртуальной сетью

Развертывание в Azure
Создает внешнюю среду приложения-контейнера с виртуальной сетью.
Создает внутреннюю среду приложения-контейнера с виртуальной сетью

Развертывание в Azure
Создает внутреннюю среду приложения-контейнера с виртуальной сетью.

Определение ресурса Terraform (поставщик AzAPI)

Тип ресурса containerApps можно развернуть с помощью операций, предназначенных для:

  • Группы ресурсов

Список измененных свойств в каждой версии API см. в журнале изменений.

Формат ресурсов

Чтобы создать ресурс Microsoft.App/containerApps, добавьте в шаблон следующую строку Terraform.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.App/containerApps@2023-11-02-preview"
  name = "string"
  location = "string"
  parent_id = "string"
  tags = {
    tagName1 = "tagValue1"
    tagName2 = "tagValue2"
  }
  identity {
    type = "string"
    identity_ids = []
  }
  body = jsonencode({
    properties = {
      configuration = {
        activeRevisionsMode = "string"
        dapr = {
          appId = "string"
          appPort = int
          appProtocol = "string"
          enableApiLogging = bool
          enabled = bool
          httpMaxRequestSize = int
          httpReadBufferSize = int
          logLevel = "string"
        }
        ingress = {
          additionalPortMappings = [
            {
              exposedPort = int
              external = bool
              targetPort = int
            }
          ]
          allowInsecure = bool
          clientCertificateMode = "string"
          corsPolicy = {
            allowCredentials = bool
            allowedHeaders = [
              "string"
            ]
            allowedMethods = [
              "string"
            ]
            allowedOrigins = [
              "string"
            ]
            exposeHeaders = [
              "string"
            ]
            maxAge = int
          }
          customDomains = [
            {
              bindingType = "string"
              certificateId = "string"
              name = "string"
            }
          ]
          exposedPort = int
          external = bool
          ipSecurityRestrictions = [
            {
              action = "string"
              description = "string"
              ipAddressRange = "string"
              name = "string"
            }
          ]
          stickySessions = {
            affinity = "string"
          }
          targetPort = int
          targetPortHttpScheme = "string"
          traffic = [
            {
              label = "string"
              latestRevision = bool
              revisionName = "string"
              weight = int
            }
          ]
          transport = "string"
        }
        maxInactiveRevisions = int
        registries = [
          {
            identity = "string"
            passwordSecretRef = "string"
            server = "string"
            username = "string"
          }
        ]
        secrets = [
          {
            identity = "string"
            keyVaultUrl = "string"
            name = "string"
            value = "string"
          }
        ]
        service = {
          type = "string"
        }
      }
      environmentId = "string"
      managedEnvironmentId = "string"
      template = {
        containers = [
          {
            args = [
              "string"
            ]
            command = [
              "string"
            ]
            env = [
              {
                name = "string"
                secretRef = "string"
                value = "string"
              }
            ]
            image = "string"
            name = "string"
            probes = [
              {
                failureThreshold = int
                httpGet = {
                  host = "string"
                  httpHeaders = [
                    {
                      name = "string"
                      value = "string"
                    }
                  ]
                  path = "string"
                  port = int
                  scheme = "string"
                }
                initialDelaySeconds = int
                periodSeconds = int
                successThreshold = int
                tcpSocket = {
                  host = "string"
                  port = int
                }
                terminationGracePeriodSeconds = int
                timeoutSeconds = int
                type = "string"
              }
            ]
            resources = {
              cpu = "decimal-as-string"
              memory = "string"
            }
            volumeMounts = [
              {
                mountPath = "string"
                subPath = "string"
                volumeName = "string"
              }
            ]
          }
        ]
        initContainers = [
          {
            args = [
              "string"
            ]
            command = [
              "string"
            ]
            env = [
              {
                name = "string"
                secretRef = "string"
                value = "string"
              }
            ]
            image = "string"
            name = "string"
            resources = {
              cpu = "decimal-as-string"
              memory = "string"
            }
            volumeMounts = [
              {
                mountPath = "string"
                subPath = "string"
                volumeName = "string"
              }
            ]
          }
        ]
        revisionSuffix = "string"
        scale = {
          maxReplicas = int
          minReplicas = int
          rules = [
            {
              azureQueue = {
                auth = [
                  {
                    secretRef = "string"
                    triggerParameter = "string"
                  }
                ]
                queueLength = int
                queueName = "string"
              }
              custom = {
                auth = [
                  {
                    secretRef = "string"
                    triggerParameter = "string"
                  }
                ]
                metadata = {
                  {customized property} = "string"
                }
                type = "string"
              }
              http = {
                auth = [
                  {
                    secretRef = "string"
                    triggerParameter = "string"
                  }
                ]
                metadata = {
                  {customized property} = "string"
                }
              }
              name = "string"
              tcp = {
                auth = [
                  {
                    secretRef = "string"
                    triggerParameter = "string"
                  }
                ]
                metadata = {
                  {customized property} = "string"
                }
              }
            }
          ]
        }
        serviceBinds = [
          {
            clientType = "string"
            customizedKeys = {
              {customized property} = "string"
            }
            name = "string"
            serviceId = "string"
          }
        ]
        terminationGracePeriodSeconds = int
        volumes = [
          {
            mountOptions = "string"
            name = "string"
            secrets = [
              {
                path = "string"
                secretRef = "string"
              }
            ]
            storageName = "string"
            storageType = "string"
          }
        ]
      }
      workloadProfileName = "string"
    }
    extendedLocation = {
      name = "string"
      type = "CustomLocation"
    }
    managedBy = "string"
  })
}

Значения свойств

containerApps

Имя Описание Значение
тип Тип ресурса "Microsoft.App/containerApps@2023-11-02-preview"
name имя ресурса. строка (обязательно)

Ограничение символов: 2–32

Допустимые символы:
Строчные буквы, цифры и дефисы.

Начинается с буквы и заканчивается буквенно-цифровым символом.
location Географическое расположение, в котором находится ресурс строка (обязательно)
parent_id Чтобы выполнить развертывание в группе ресурсов, используйте идентификатор этой группы ресурсов. строка (обязательно)
tags Теги ресурсов. Словарь имен и значений тегов.
extendedLocation Сложный тип расширенного расположения. ExtendedLocation
удостоверение управляемые удостоверения для контейнерного приложения для взаимодействия с другими службами Azure без сохранения секретов или учетных данных в коде. Управляемое удостоверение службы
managedBy Полный идентификатор ресурса, который управляет этим ресурсом. Указывает, управляется ли этот ресурс другим ресурсом Azure. При наличии полного режима развертывания ресурс не будет удален из шаблона, так как он управляется другим ресурсом. строка
properties Свойства ресурса ContainerApp Свойства ContainerApp

ExtendedLocation

Имя Описание Значение
name Имя расширенного расположения. строка
type Тип расширенного расположения. "CustomLocation"

Управляемое удостоверение службы

Имя Описание Значение
тип Тип управляемого удостоверения службы (где разрешены типы SystemAssigned и UserAssigned). "SystemAssigned"
"SystemAssigned,UserAssigned"
UserAssigned (обязательно)
identity_ids Набор назначенных пользователем удостоверений, связанных с ресурсом. Ключи словаря userAssignedIdentities будут иметь идентификаторы ресурсов ARM в формате :/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}. Значения словаря могут быть пустыми объектами ({}) в запросах. Массив идентификаторов удостоверений пользователей.

UserAssignedIdentities

Имя Описание Значение
{настраиваемое свойство} UserAssignedIdentity

UserAssignedIdentity

Этот объект не содержит свойств, которые необходимо задать во время развертывания. Все свойства доступны только для чтения.

Свойства ContainerApp

Имя Описание Значение
настройка Свойства конфигурации приложения-контейнера без управления версиями. Конфигурация
environmentId Идентификатор ресурса среды. строка
managedEnvironmentId Не рекомендуется. Идентификатор ресурса среды приложения-контейнера. строка
шаблон Определение приложения с версией контейнера. Шаблон
workloadProfileName Имя профиля рабочей нагрузки для закрепления для выполнения приложения-контейнера. строка

Конфигурация

Имя Описание Значение
activeRevisionsMode ActiveRevisionsMode управляет обработкой активных редакций для приложения-контейнера:
{list} {item} Несколько: могут быть активны несколько редакций. {/item} {item} Одиночная версия. Одновременно может быть активна только одна редакция. В этом режиме нельзя использовать весовые коэффициенты редакции. Если значение не указано, это значение по умолчанию. {/item} {/list}
"Несколько"
"Single"
dapr Конфигурация Dapr для приложения-контейнера. Dapr
Попадания Конфигурации входящего трафика. Входящий трафик
maxInactiveRevisions Необязательный элемент. Максимальное количество неактивных редакций, которые может иметь контейнерное приложение. INT
registries Коллекция учетных данных частного реестра контейнеров для контейнеров, используемых приложением-контейнером RegistryCredentials[]
секретные коды Коллекция секретов, используемых приложением-контейнером Секрет[]
служба Контейнерное приложение будет Служба приложений контейнера разработки Служба

Dapr

Имя Описание Значение
appId Идентификатор приложения Dapr строка
appPort Сообщает Dapr, какой порт прослушивается приложением INT
appProtocol Передает в Dapr информацию о протоколе, используемом в приложении. Допустимые параметры: http и grpc. Значение по умолчанию — http. "grpc"
"http"
enableApiLogging Включает ведение журнала API для расширения Dapr bool
Включено Логическое значение, указывающее, включена ли боковая машина Dapr bool
httpMaxRequestSize Увеличение максимального размера параметра http и grpc server в тексте запроса в МБ для обработки отправки больших файлов. Значение по умолчанию — 4 МБ. INT
httpReadBufferSize Максимальный размер dapr буфера чтения заголовков HTTP в КБ для обработки при отправке заголовков с несколькими КБ. Значение по умолчанию — 65 КБ. INT
LogLevel Задает уровень журнала для расширения Dapr. Допустимые значения: debug, info, warn, error. Значение по умолчанию — info. "debug"
"error"
"info"
"предупреждать"

Входящий трафик

Имя Описание Значение
additionalPortMappings Параметры для предоставления дополнительных портов в контейнерном приложении IngressPortMapping[]
allowInsecure Логическое значение, указывающее, разрешены ли HTTP-подключения к. Если установлено значение false, http-подключения автоматически перенаправляются на HTTPS-подключения. bool
clientCertificateMode Режим сертификата клиента для проверки подлинности mTLS. Игнорировать означает, что сервер удаляет сертификат клиента при переадресации. Принять означает, что сервер пересылает сертификат клиента, но не требует сертификата клиента. Требовать указывает, что серверу требуется сертификат клиента. "принять"
"игнорировать"
"require"
corsPolicy Политика CORS для приложения-контейнера CorsPolicy
customDomains привязки личного домена для имен узлов контейнеров приложений. CustomDomain[]
exposedPort Предоставленный порт в контейнерах для трафика TCP из входящего трафика INT
external Логическое значение, указывающее, предоставляет ли приложение внешнюю конечную точку HTTP bool
ipSecurityRestrictions Правила для ограничения входящего IP-адреса. IpSecurityRestrictionRule[]
stickySessions Прикрепленные сеансы для режима одиночной редакции IngressStickySessions
targetPort Целевой порт в контейнерах для трафика из входящего трафика INT
targetPortHttpScheme Указывает, прослушивает ли приложение HTTP http или https "http"
"https"
traffic Весовые коэффициенты трафика для редакций приложения TrafficWeight[]
транспорт Транспортный протокол входящего трафика "auto"
"http"
"http2"
"tcp"

IngressPortMapping

Имя Описание Значение
exposedPort Указывает предоставленный порт для целевого порта. Если не указано, по умолчанию используется целевой порт. INT
external Указывает, доступен ли порт приложения за пределами среды. bool (обязательно)
targetPort Указывает, что контейнер пользователя порта ожидает передачи данных. int (обязательно)

CorsPolicy

Имя Описание Значение
allowCredentials Указывает, разрешает ли ресурс учетные данные. bool
allowedHeaders Указывает содержимое заголовка access-control-allow-headers. string[]
allowedMethods Указывает содержимое заголовка access-control-allow-methods. string[]
allowedOrigins Указывает содержимое заголовка access-control-allow-origins. string[] (обязательно)
exposeHeaders Указывает содержимое заголовка access-control-expose-headers. string[]
maxAge Указывает содержимое для заголовка access-control-max-age. INT

CustomDomain

Имя Описание Значение
bindingType Custom Domain тип привязки. "Отключено"
"SniEnabled"
certificateId Идентификатор ресурса сертификата для привязки к этому имени узла. Должен существовать в управляемой среде. строка
name Имя узла строка (обязательно)

IpSecurityRestrictionRule

Имя Описание Значение
action Правила разрешения или запрета для входящего IP-адреса. Примечание. Правила могут состоять только из all allow или ALL Deny "Разрешить"
"Deny" (обязательно)
description Описать правило ограничения IP-адресов, которое отправляется в container-app. Это необязательное поле. строка
ipAddressRange Нотация CIDR для сопоставления входящего IP-адреса строка (обязательно)
name Имя правила ограничения IP-адресов. строка (обязательно)

IngressStickySessions

Имя Описание Значение
affinity Закрепление сходства сеансов "none"
"липкий"

Вес трафика

Имя Описание Значение
метка Связывает метку трафика с редакцией строка
latestRevision Указывает, что вес трафика относится к последней стабильной редакции bool
revisionName Имя редакции строка
вес Вес трафика, назначенный редакции INT

RegistryCredentials

Имя Описание Значение
удостоверение Управляемое удостоверение, используемое для проверки подлинности с помощью Реестр контейнеров Azure. Для удостоверений, назначаемых пользователем, используйте полный идентификатор ресурса, назначаемый пользователем. Для удостоверений, назначаемых системой, используйте system. строка
passwordSecretRef Имя секрета, содержащего пароль для входа в реестр строка
server Сервер реестра контейнеров строка
username Имя пользователя реестра контейнеров строка

Секрет

Имя Описание Значение
удостоверение Идентификатор ресурса управляемого удостоверения для проверки подлинности в Azure Key Vault или system для использования назначаемого системой удостоверения. строка
keyVaultUrl AZURE Key Vault URL-адрес, указывающий на секрет, на который ссылается приложение-контейнер. строка
name Имя секрета. строка
value Значение секрета. строка

Ограничения:
Конфиденциальное значение. Передайте в качестве безопасного параметра.

Служба

Имя Описание Значение
тип Тип службы Dev ContainerApp строка (обязательно)

Шаблон

Имя Описание Значение
containers Список определений контейнеров для приложения-контейнера. Container[]
initContainers Список специализированных контейнеров, выполняемых перед контейнерами приложений. InitContainer[]
revisionSuffix Понятный суффикс, добавляемый к имени редакции строка
scale Свойства масштабирования для приложения-контейнера. Масштабирование
serviceBinds Список служб приложений-контейнеров, привязанных к приложению ServiceBind[]
terminationGracePeriodSeconds Необязательный период (в секундах) Экземпляр приложения-контейнера должен корректно завершить работу. Значение должно быть неотрицательно целым числом. Нулевое значение указывает, что остановка немедленно завершается с помощью сигнала завершения (нет возможности завершить работу). Если это значение равно nil, вместо него будет использоваться льготный период по умолчанию. Задайте это значение дольше ожидаемого времени очистки для процесса. Значение по умолчанию — 30 секунд. INT
volumes. Список определений томов для приложения-контейнера. Том[]

Контейнер

Имя Описание Значение
args Аргументы команды запуска контейнера. string[]
. Команда запуска контейнера. string[]
env Переменные среды контейнера. EnvironmentVar[]
Изображение Тег образа контейнера. строка
name Имя настраиваемого контейнера. строка
probes Список проб для контейнера. ContainerAppProbe[]
ресурсов Требования к ресурсам контейнера. ContainerResources
volumeMounts Подключения тома контейнера. VolumeMount[]

EnvironmentVar

Имя Описание Значение
name Имя переменной среды. строка
secretRef Имя секрета приложения-контейнера, из которого извлекалось значение переменной среды. строка
value Значение несекретной переменной среды. строка

ContainerAppProbe

Имя Описание Значение
failureThreshold Минимальные последовательные сбои пробы, которые будут считаться неудачными после успешного завершения. Значение по умолчанию — 3. Минимальное значение — 1. Максимальное значение равно 10. INT
httpGet HTTPGet указывает HTTP-запрос для выполнения. ContainerAppProbeHttpGet
initialDelaySeconds Количество секунд после запуска контейнера до начала пробы активности. Минимальное значение — 1. Максимальное значение — 60. INT
periodSeconds Частота (в секундах) выполнения пробы. Значение по умолчанию — 10 секунд. Минимальное значение — 1. Максимальное значение — 240. INT
successThreshold Минимальный последовательный успех пробы, который будет считаться успешным после сбоя. По умолчанию равен 1. Должно быть 1 для активности и запуска. Минимальное значение — 1. Максимальное значение равно 10. INT
tcpSocket TCPSocket указывает действие, связанное с TCP-портом. Обработчики TCP пока не поддерживаются. ContainerAppProbeTcpSocket
terminationGracePeriodSeconds Необязательная длительность в секундах, которую модуль pod должен корректно завершить после сбоя пробы. Льготный период — это длительность в секундах после отправки сигнала о завершении процесса в модуле pod и время принудительной остановки процессов с помощью сигнала о завершении. Задайте это значение дольше, чем ожидаемое время очистки для процесса. Если это значение равно nil, будет использоваться завершение модуля podGracePeriodSeconds. В противном случае это значение переопределяет значение, предоставленное спецификацией pod. Значение должно быть неотрицательно целым числом. Нулевое значение указывает на остановку немедленно через сигнал завершения (нет возможности завершить работу). Это альфа-поле, и для этого необходимо включить шлюз функций ProbeTerminationGracePeriod. Максимальное значение — 3600 секунд (1 час) INT
timeoutSeconds Время ожидания пробы в секундах. Значение по умолчанию — 1 секунда. Минимальное значение — 1. Максимальное значение — 240. INT
тип Тип пробы. "Живость"
"Готовность"
"Запуск"

ContainerAppProbeHttpGet

Имя Описание Значение
узел Имя узла, к которому нужно подключиться, по умолчанию использует IP-адрес pod. Скорее всего, вы хотите задать "Host" в httpHeaders. строка
httpHeaders Настраиваемые заголовки для задания в запросе. HTTP разрешает повторяющиеся заголовки. ContainerAppProbeHttpGetHttpHeadersItem[]
path Путь для доступа на HTTP-сервере. строка
порт Имя или номер порта для доступа к контейнеру. Число должно находиться в диапазоне от 1 до 65535. Имя должно быть IANA_SVC_NAME. int (обязательно)
схема Схема, используемая для подключения к узлу. Значение по умолчанию — HTTP. HTTP
"HTTPS"

ContainerAppProbeHttpGetHttpHeadersItem

Имя Описание Значение
name Имя поля заголовка string (обязательно)
значение Значение поля заголовка string (обязательно)

ContainerAppProbeTcpSocket

Имя Описание Значение
узел Необязательно. Имя узла для подключения. По умолчанию используется IP-адрес pod. строка
порт Номер или имя порта для доступа к контейнеру. Число должно находиться в диапазоне от 1 до 65535. Имя должно быть IANA_SVC_NAME. int (обязательно)

ContainerResources

Имя Описание Значение
cpu Обязательный ЦП в ядрах, например 0,5 Укажите десятичное значение в виде строки. int или json decimal
Память Необходимая память, например "250Mb" строка

VolumeMount

Имя Описание Значение
mountPath Путь в контейнере, к которому должен быть подключен том. Не должен содержать ":". строка
subPath Путь в томе, из которого должен быть подключен том контейнера. По умолчанию — "" (корень тома). строка
volumeName Оно должно совпадать с именем тома. строка

InitContainer

Имя Описание Значение
args Аргументы команды запуска контейнера. string[]
. Команда запуска контейнера. string[]
env Переменные среды контейнера. EnvironmentVar[]
Изображение Тег образа контейнера. строка
name Имя настраиваемого контейнера. строка
ресурсов Требования к ресурсам контейнера. ContainerResources
volumeMounts Подключения тома контейнера. VolumeMount[]

Масштабирование

Имя Описание Значение
maxReplicas Необязательный элемент. Максимальное число реплик контейнеров. Значение по умолчанию — 10, если не задано. INT
minReplicas Необязательный элемент. Минимальное количество реплик контейнеров. INT
правила Правила масштабирования. ScaleRule[]

ScaleRule

Имя Описание Значение
azureQueue Масштабирование на основе очередей Azure. QueueScaleRule
custom Настраиваемое правило масштабирования. CustomScaleRule
http Масштабирование на основе HTTP-запросов. HttpScaleRule
name Имя правила масштабирования строка
TCP Масштабирование на основе TCP-запросов. TcpScaleRule

QueueScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для правила масштабирования очереди. ScaleRuleAuth[]
queueLength Длина очереди. INT
queueName Имя очереди. строка

ScaleRuleAuth

Имя Описание Значение
secretRef Имя секрета, из которого будут извлекаться параметры проверки подлинности. строка
triggerParameter Параметр триггера, использующий секрет строка

CustomScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для настраиваемого правила масштабирования. ScaleRuleAuth[]
метаданные Свойства метаданных для описания настраиваемого правила масштабирования. CustomScaleRuleMetadata
тип Тип настраиваемого правила масштабирования
Например, azure-servicebus, redis и т. д.
строка

CustomScaleRuleMetadata

Имя Описание Значение
{настраиваемое свойство} строка

HttpScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для настраиваемого правила масштабирования. ScaleRuleAuth[]
метаданные Свойства метаданных для описания правила масштабирования HTTP. HttpScaleRuleMetadata

HttpScaleRuleMetadata

Имя Описание Значение
{настраиваемое свойство} строка

TcpScaleRule

Имя Описание Значение
auth Секреты проверки подлинности для правила масштабирования TCP. ScaleRuleAuth[]
метаданные Свойства метаданных для описания правила масштабирования TCP. TcpScaleRuleMetadata

TcpScaleRuleMetadata

Имя Описание Значение
{настраиваемое свойство} строка

ServiceBind

Имя Описание Значение
clientType Тип клиента, используемого для подключения к службе строка
customizedKeys Настраиваемые ключи для настройки внедренных значений в приложение ServiceBindCustomizedKeys
name Имя привязки службы строка
serviceId Идентификатор ресурса целевой службы строка

ServiceBindCustomizedKeys

Имя Описание Значение
{настраиваемое свойство} строка

Громкость

Имя Описание Значение
mountOptions Параметры подключения, используемые при подключении файлового ресурса Azure или общей папки NFS Azure. Должен быть строкой, разделенной запятыми. строка
name Имя тома. строка
секретные коды Список секретов, добавляемых в том. Если секреты не предоставлены, все секреты в коллекции будут добавлены в том. SecretVolumeItem[]
storageName Имя ресурса хранилища. Нет необходимости в указании EmptyDir и Secret. строка
storageType Тип хранилища для тома. Если этот параметр не указан, используйте EmptyDir. "AzureFile"
"EmptyDir"
"NfsAzureFile"
"Секрет"

SecretVolumeItem

Имя Описание Значение
path Путь к секрету проекта. Если путь не указан, по умолчанию используется имя секрета, указанного в secretRef. строка
secretRef Имя секрета приложения-контейнера, из которого извлекалось значение секрета. строка