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


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

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

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

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

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

Автоматическое обнаружение портов

Если в приложении-контейнере включена функция входящего трафика HTTP и вы не устанавливаете целевой порт, приложение Azure Container Apps автоматически обнаруживает целевой порт, сканируя все прослушиваемые порты контейнера. Если обнаружен только один порт, этот порт устанавливается в качестве целевого порта для приложения контейнера. Если обнаружено несколько портов, приложение-контейнер не настраивает автоматически целевой порт и необходимо вручную задать целевой порт.

  • Автоматическое обнаружение портов работает только для HTTP-трафика, а не TCP-трафика.
  • Если у вас есть пробы работоспособности HTTP, прослушивающие порты 80 или 443, эта конфигурация может повлиять на автоматическое обнаружение портов. Конфигурация входящего трафика по умолчанию использует пробы работоспособности TCP. Дополнительные сведения см. в статье о пробах работоспособности.

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

Вы можете настроить входящий трафик для приложения контейнера с помощью 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 Аргументы входящего трафика:

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

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

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

  • Чтобы настроить входящий трафик при создании приложения контейнера, выберите 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, http для HTTP/2 http2 или 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. Выберите Сохранить.

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

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

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

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

Примечание.

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

Вы можете добавить дополнительные 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

Снимок экрана: добавление дополнительных TCP-портов для входящего трафика приложений контейнеров на портале.

  1. Разверните раздел "Дополнительные TCP-порты" в колонке "Входящий трафик".
  2. Добавьте дополнительные TCP-порты, которые приложение принимает трафик в поле "Целевой порт ". Если вы оставляете открытый порт пустым , он использует то же значение, что и целевой порт.
  3. При необходимости измените поле трафика входящего трафика . Это поле настраивает, где трафик входящего трафика ограничен для каждого порта.
  4. По завершении щелкните Сохранить.

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

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

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