Настройка входящего трафика для приложения в приложениях контейнеров Azure
В этой статье показано, как включить функции входящего трафика для приложения-контейнера. Входящий трафик — это параметр на уровне приложения. Изменения параметров входящего трафика применяются ко всем редакциям одновременно и не создают новые редакции.
Параметры входящего трафика
Вы можете задать следующие свойства шаблона входящего трафика:
Свойство | Описание | Values | Обязательное поле |
---|---|---|---|
allowInsecure |
Разрешает небезопасный трафик к приложению-контейнеру. Если задано значение true HTTP-запросов на порт 80, он не перенаправляется в порт 443 с помощью HTTPS, что позволяет небезопасным подключениям. |
false (по умолчанию) true включает небезопасные подключения |
No |
clientCertificateMode |
Режим сертификата клиента для проверки подлинности mTLS. Игнорировать указывает, что сервер удаляет сертификат клиента при переадресации. Принять указывает, что сервер перенаправит сертификат клиента, но не требует сертификата клиента. Требовать, чтобы сервер должен иметь сертификат клиента. | Required , , Accept Ignore (по умолчанию) |
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.
- Установите для входящего трафика значение "Включено".
- Настройте параметры входящего трафика для приложения-контейнера.
- Выберите "Ограничена средой приложений контейнеров" для внутреннего входящего трафика или приема трафика из любого места для внешнего входящего трафика.
- Выберите тип входящего трафика: HTTP или TCP (входящий трафик TCP доступен только в средах, настроенных с пользовательской виртуальной сетью).
- Если для типа входящего трафика выбран HTTP, выберите транспорт: авто, HTTP/1 или HTTP/2.
- Выберите небезопасные подключения, если вы хотите разрешить HTTP-подключения к приложению.
- Введите целевой порт для приложения-контейнера.
- Если для параметра транспорта выбран 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/2http
или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> \
Вы можете отключить входящий трафик для приложения-контейнера с помощью портала.
- Выберите входящего трафика в меню "Параметры " страницы приложения контейнера.
- Отмените выбор параметра входящего трафика.
- Выберите Сохранить.
Отключите входящий трафик для приложения-контейнера, опустив 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-порты" в колонке "Входящий трафик".
- Добавьте дополнительные TCP-порты, которые приложение будет принимать трафик в поле "Целевой порт ". Если предоставленный порт остается пустым, это приведет к тому же значению, заданному в целевом порту.
- При необходимости измените поле трафика входящего трафика . Будет настроено, где трафик входящего трафика будет ограничен для каждого порта.
- По завершении щелкните Сохранить.
В следующем шаблоне ARM приведен пример добавления дополнительных портов в приложения контейнеров. Каждый дополнительный порт должен быть добавлен additionalPortMappings
в ingress
разделе для configuration
properties
приложения контейнера. Ниже приведен пример:
{
...
"properties": {
...
"configuration": {
"ingress": {
...
"additionalPortMappings": [
{
"external": false
"targetPort": 80
"exposedPort": 12000
}
]
}
}
...
}