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


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

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

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

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

Свойство Описание Values Обязательное поле
allowInsecure Разрешает небезопасный трафик к приложению-контейнеру. Если задано значение true HTTP-запросов на порт 80, он не перенаправляется в порт 443 с помощью HTTPS, что позволяет небезопасным подключениям. false (по умолчанию) true включает небезопасные подключения No
clientCertificateMode Режим сертификата клиента для проверки подлинности mTLS. Игнорировать указывает, что сервер удаляет сертификат клиента при переадресации. Принять указывает, что сервер перенаправит сертификат клиента, но не требует сертификата клиента. Требовать, чтобы сервер должен иметь сертификат клиента. Required, , AcceptIgnore (по умолчанию) No
customDomains Привязки личного домена для имен узлов контейнерных приложений. Просмотр пользовательских доменов и сертификатов Массив привязок No
exposedPort (только tcp ingress) Tcp-порт прослушивает. В противном external trueслучае значение должно быть уникальным в среде "Приложения контейнеров". Номер порта от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 на вкладке Конфигурация приложений мастера создания приложения контейнера.
  • Чтобы настроить входящий трафик для существующего приложения контейнера, выберите в меню "Параметры" страницы ресурсов приложения-контейнера входящего трафика.

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

При создании приложения контейнера можно настроить входящий трафик с помощью портал 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значение и задайте свойства transport targetPort. -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 отключает входящий трафик приложения контейнера.

Отключите входящий трафик для приложения-контейнера, опустив 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

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

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

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

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

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