Настройка входящего трафика для приложения в приложениях контейнеров Azure

В этой статье показано, как включить функции входящего трафика для приложения-контейнера. Входящий трафик — это параметр на уровне приложения. Изменения параметров входящего трафика применяются ко всем редакциям одновременно и не создают новые редакции.

Параметры входящего трафика

Вы можете задать следующие свойства шаблона входящего трафика:

Свойство Описание Values Обязательное поле
allowInsecure Разрешает небезопасный трафик к приложению-контейнеру. Если задано значение true HTTP-запросов на порт 80, он не перенаправляется в порт 443 с помощью HTTPS, что позволяет небезопасным подключениям. false (по умолчанию) true включает небезопасные подключения No
clientCertificateMode Режим сертификата клиента для проверки подлинности mTLS. Игнорировать указывает, что сервер удаляет сертификат клиента при переадресации. Принять указывает, что сервер перенаправит сертификат клиента, но не требует сертификата клиента. Требовать, чтобы сервер должен иметь сертификат клиента. Required, , AcceptIgnore (по умолчанию) No
customDomains Привязки личного домена для имен узлов контейнерных приложений. Просмотр пользовательских доменов и сертификатов Массив привязок No
exposedPort (только tcp ingress) Tcp-порт прослушивает. В противном externaltrueслучае значение должно быть уникальным в среде "Приложения контейнеров". Номер порта от1.65535 (не может быть 80 или 443) No
external Разрешить входящий трафик приложению за пределами своей среды приложений контейнеров. true или false(по умолчанию) Да
ipSecurityRestrictions Ограничения для входящих IP-адресов. См. раздел "Настройка ограничений входящего IP-адреса" Массив правил No
stickySessions.affinity Включает сходство сеансов. none (по умолчанию), sticky. No
targetPort Порт, который контейнер прослушивает на наличие входящих запросов. Задайте для этого значения номер порта, используемый контейнером. Для входящего трафика HTTP конечная точка входящего трафика приложения всегда предоставляется через порт 443. Да
traffic Разделение трафика между версиями разбиения веса. Массив правил No
transport Тип транспортного протокола. автоматически (по умолчанию) обнаруживает HTTP/1 или HTTP/2 http для HTTP/1 http2 для HTTP/2 tcp для TCP. No

Подключение входящего трафика

Вы можете настроить входящий трафик для приложения контейнера с помощью Azure CLI, шаблона ARM или портал Azure.

Эта az containerapp ingress enable команда включает входящий трафик для приложения-контейнера. Необходимо указать целевой порт, и при необходимости можно задать предоставленный порт, если тип транспорта .tcp

az containerapp ingress enable \
    --name <app-name> \
    --resource-group <resource-group> \
    --target-port <target-port> \
    --exposed-port <tcp-exposed-port> \
    --transport <transport> \
    --type <external>
    --allow-insecure

az containerapp ingress enable Аргументы входящего трафика:

Параметр Свойство Описание Values Обязательное поле
--type external Разрешить вход в приложение из любого места или ограничить входящий трафик во внутреннюю среду приложений контейнеров. external или internal Да
--allow-insecure allowInsecure Разрешить HTTP-подключения к приложению. No
--target-port targetPort Порт, который контейнер прослушивает на наличие входящих запросов. Задайте для этого значения номер порта, используемый контейнером. Конечная точка входящего трафика приложения всегда предоставляется через порт 443. Да
--exposed-port exposedPort (только tcp ingress) Порт для входящего трафика TCP. Если external это trueтак, значение должно быть уникальным в среде приложений контейнеров, если входящий трафик является внешним. Номер порта от1.65535 (не может быть 80 или 443) No
--transport transport Тип транспортного протокола. автоматически (по умолчанию) обнаруживает HTTP/1 или HTTP/2 http для HTTP/1 http2 для HTTP/2 tcp для TCP. No

Включите входящий трафик для приложения-контейнера с помощью портала.

Вы можете включить входящий трафик при создании приложения контейнера или включить входящий трафик для существующего приложения контейнера.

  • Чтобы настроить входящий трафик при создании приложения контейнера, выберите Ingress на вкладке Конфигурация приложений мастера создания приложения контейнера.
  • Чтобы настроить входящий трафик для существующего приложения-контейнера, выберите Ingress в меню Параметры страницы ресурсов приложения контейнера.

Включение входящего трафика для приложения контейнера:

При создании приложения контейнера можно настроить входящий трафик с помощью портал Azure.

  1. Установите для входящего трафиказначение "Включено".
  2. Настройте параметры входящего трафика для приложения-контейнера.
  3. Выберите "Ограничена средой приложений контейнеров" для внутреннего входящего трафика или приема трафика из любого места для внешнего входящего трафика.
  4. Выберите тип входящего трафика: HTTP или TCP (входящий трафик TCP доступен только в средах, настроенных с помощью пользовательской виртуальной сети).
  5. Если для типа входящего трафика выбран HTTP, выберите транспорт: авто, HTTP/1 или HTTP/2.
  6. Выберите небезопасные подключения, если вы хотите разрешить HTTP-подключения к приложению.
  7. Введите целевой порт для приложения-контейнера.
  8. Если вы выбрали TCP для параметра транспорта, введите предоставленный порт для приложения-контейнера. Доступный номер порта может быть1.65535 (не может быть 80 или 443)

Страница параметров входящего трафика для приложения-контейнера также позволяет настроить ограничения IP-адресов. Сведения о настройке ограничения IP см. в разделе "Ограничения IP".

Включите входящий трафик для приложения-контейнера с помощью ingress свойства конфигурации. external Задайте для свойства trueзначение и задайте свойства transporttargetPort.
-external свойство может иметь значение true для внешнего или false для внутреннего входящего трафика.

  • transport Задайте для auto обнаружения HTTP/1 или HTTP/2 для HTTP/1, http2 для HTTP/2 http или tcp TCP.
  • targetPort Задайте номер порта, используемый контейнером. Конечная точка входящего трафика приложения всегда предоставляется через порт 443.
  • Задайте свойство, exposedPort если тип транспорта является tcp портом для входящего трафика TCP. Значение должно быть уникальным в среде приложений контейнеров, если входящий трафик является внешним. Номер порта от1.65535 (не может быть 80 или 443)
{
  ...
  "configuration": {
    "ingress": {
        "external": true,
        "transport": "tcp",
        "targetPort": 80,
        "exposedPort": 8080,
    },
  }
}

Отключение входящего трафика

Отключите входящий трафик для приложения контейнера с помощью az containerapp ingress команды.

az containerapp ingress disable \
    --name <app-name> \
    --resource-group <resource-group> \

Вы можете отключить входящий трафик для приложения-контейнера с помощью портала.

  1. Выберите входящего трафика в меню Параметры страницы приложения контейнера.
  2. Отмените выбор параметра входящего трафика.
  3. Выберите Сохранить.

Sceenshot of disabling container app ingress.

Отключите входящий трафик для приложения-контейнера, опустив ingress свойство конфигурации полностью properties.configuration .

Использование дополнительных TCP-портов

Вы можете предоставлять дополнительные TCP-порты из приложения. Дополнительные сведения см. в статье о входящего трафика.

Примечание.

Чтобы использовать эту функцию, необходимо иметь расширение CLI для приложений контейнеров. Выполните команду az extension add -n containerapp , чтобы установить последнюю версию расширения ИНТЕРФЕЙСА командной строки для приложений контейнеров.

Добавление дополнительных TCP-портов можно сделать с помощью интерфейса командной строки, ссылаясь на YAML-файл с конфигурациями TCP-порта.

az containerapp create \
    --name <app-name> \
    --resource-group <resource-group> \
    --yaml <your-yaml-file>

Ниже приведен пример ФАЙЛА YAML, на который можно ссылаться в приведенной выше команде CLI. Конфигурация дополнительных TCP-портов находится в разделе additionalPortMappings.

location: northcentralus
name: multiport-example
properties:
  configuration:
    activeRevisionsMode: Single
    ingress:
      additionalPortMappings:
      - exposedPort: 21025
        external: false
        targetPort: 1025
      allowInsecure: false
      external: true
      targetPort: 1080
      traffic:
      - latestRevision: true
        weight: 100
      transport: http
  managedEnvironmentId: <env id>
  template:
    containers:
    - image: maildev/maildev
      name: maildev
      resources:
        cpu: 0.25
        memory: 0.5Gi
    scale:
      maxReplicas: 1
      minReplicas: 1
  workloadProfileName: Consumption
type: Microsoft.App/containerApps

Эта функция не поддерживается в портал Azure.

В следующем шаблоне ARM приведен пример добавления дополнительных портов в приложения контейнеров. Каждый дополнительный порт должен быть добавлен additionalPortMappings в ingress разделе для configurationproperties приложения контейнера. Ниже приведен пример:

{
  ...
  "properties": {
    ...
    "configuration": {
      "ingress": {
        ...
        "additionalPortMappings": [
          {
            "external": false
            "targetPort": 80
            "exposedPort": 12000
          }
        ]
      }
    }
  ...
}

Следующие шаги