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


Предоставление виртуальной сети для внутренней среды Контейнеров приложений Azure

В следующем примере показано, как создать среду Контейнеров приложений в существующей виртуальной сети.

Войдите на портал Azure.

Создание приложения-контейнера

Чтобы создать приложение-контейнер, откройте домашнюю страницу портала Azure.

  1. Введите Приложения-контейнеры в строке поиска вверху.
  2. В результатах поиска выберите Приложения-контейнеры.
  3. Выберите кнопку Создать.

Вкладка "Основные сведения"

На вкладке Основы выполните следующие действия.

  1. Введите приведенные ниже значения в разделе Сведения о проекте.

    Параметр Действие
    Отток подписок Выберите свою подписку Azure.
    Группа ресурсов Выберите Создать и введите my-container-apps.
    Имя приложения-контейнера Введите my-container-app.

Создать среду

Затем создайте среду для приложения-контейнера.

  1. Выберите подходящий регион.

    Параметр Значение
    Область/регион Выберите Центральная часть США.
  2. В поле Создание среды Контейнеров приложений Azure выберите Создать.

  3. На странице Создание среды Контейнеров приложений Azure на вкладке Основные сведения введите следующие значения:

    Параметр Значение
    Имя среды Введите my-environment.
    Тип среды Выберите только потребление.
    Избыточность между зонами Выберите Отключено.
  4. Перейдите на вкладку Мониторинг, чтобы создать рабочую область Log Analytics.

  5. Выберите Azure Log Analytics в качестве назначения журналов.

  6. В поле Рабочая область Log Analytics нажмите Создать и введите приведенные ниже значения.

    Параметр Значение
    Имя. Введите my-container-apps-logs.

    Поле "Расположение " предварительно заполнено центральной частью США .

  7. Нажмите ОК.

Примечание.

Вы можете использовать существующую виртуальную сеть, но выделенная подсеть с диапазоном /23 CIDR или больше требуется для использования с приложениями-контейнерами при использовании только среды потребления. При использовании среды /27 профилей рабочей нагрузки требуется или больше. Дополнительные сведения о размерах подсети см. в обзоре сетевой среды.

  1. Перейдите на вкладку Сеть, чтобы создать виртуальную сеть.

  2. Выберите Да рядом с пунктом Использовать собственную виртуальную сеть.

  3. Рядом с полем Виртуальная сеть выберите ссылку Создать и введите приведенное ниже значение.

    Параметр Значение
    Имя. Введите my-custom-vnet.
  4. Выберите кнопку ОК.

  5. Рядом с полем Подсеть инфраструктуры выберите ссылку Создать и введите следующие значения:

    Параметр Значение
    Имя подсети Введите infrastructure-subnet.
    блок адресов виртуальной сети; Оставьте значения по умолчанию.
    блок адресов подсети; Оставьте значения по умолчанию.
  6. Выберите кнопку ОК.

  7. В поле Виртуальный IP-адрес выберите Внутренний.

  8. Нажмите кнопку создания.

Развертывание приложения-контейнера

  1. Выберите "Рецензирование" и создайте его в нижней части страницы.

    Если ошибки не обнаружены, станет доступна кнопка Создать.

    При наличии ошибок все вкладки с ошибками будут помечены красной точкой. Перейдите на соответствующую вкладку. Поля, содержащие ошибку, выделены красным цветом. После устранения всех ошибок выберите Проверить и создать еще раз.

  2. Нажмите кнопку создания.

    Отобразится страница с сообщением Выполняется развертывание. После успешного завершения развертывания появится сообщение: развертывание завершено.

Необходимые компоненты

  • Учетная запись Azure с активной подпиской.
  • Установите Azure CLI версии 2.28.0 или выше.

Настройка

Чтобы войти в Azure из ИНТЕРФЕЙСА командной строки, выполните следующую команду и следуйте инструкциям, чтобы завершить процесс проверки подлинности.

az login

Чтобы убедиться, что вы используете последнюю версию интерфейса командной строки, выполните команду обновления.

az upgrade

Затем установите или обновите расширение "Приложения контейнеров Azure" для интерфейса командной строки.

Если при выполнении az containerapp команд в Azure CLI или командлетах из модуля Azure PowerShell возникают ошибки о отсутствующих параметрах Az.App , убедитесь, что установлена последняя версия расширения "Приложения контейнеров Azure".

az extension add --name containerapp --upgrade

Примечание.

Начиная с мая 2024 г. расширения Azure CLI больше не поддерживают предварительные версии функций по умолчанию. Чтобы получить доступ к функциям предварительной версии контейнерных приложений, установите расширение "Приложения контейнеров" с --allow-preview trueпомощью .

az extension add --name containerapp --upgrade --allow-preview true

Теперь, когда установлено текущее расширение или модуль, зарегистрируйте Microsoft.App пространства имен и Microsoft.OperationalInsights пространств имен.

Примечание.

Ресурсы Контейнеров приложений Azure перенесены из пространства имен Microsoft.Web в пространство имен Microsoft.App. Дополнительные сведения см. в статье о миграции пространства имен из Microsoft.Web в Microsoft.App в марте 2022 г..

az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights

Настройка переменных среды

Задайте следующие переменные среды. Замените <ЗАПОЛНИТЕЛИ вашими значениями> :

RESOURCE_GROUP="<RESOURCE_GROUP>"
LOCATION="<LOCATION>"
CONTAINERAPPS_ENVIRONMENT="<CONTAINERAPPS_ENVIRONMENT>"

создание группы ресурсов Azure;

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

az group create \
  --name $RESOURCE_GROUP \
  --location "$LOCATION"

Создать среду

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

Microsoft.ContainerService Зарегистрируйте поставщика.

az provider register --namespace Microsoft.ContainerService

Объявите переменную для хранения имени виртуальной сети.

VNET_NAME="my-custom-vnet"

Теперь создайте экземпляр виртуальной сети, чтобы связаться со средой Контейнеров приложений. В виртуальной сети должно быть две подсети, доступные для экземпляра приложений-контейнеров.

Примечание.

Префикс адреса подсети сети требует минимального диапазона /23 CIDR для использования с приложениями-контейнерами при использовании только среды потребления. При использовании среды /27 профилей рабочих нагрузок требуется или больше. Дополнительные сведения о размерах подсети см. в обзоре сетевой среды.

az network vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --location $LOCATION \
  --address-prefix 10.0.0.0/16
az network vnet subnet create \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --address-prefixes 10.0.0.0/23

После установки виртуальной сети теперь можно запросить идентификатор подсети инфраструктуры.

INFRASTRUCTURE_SUBNET=`az network vnet subnet show --resource-group ${RESOURCE_GROUP} --vnet-name $VNET_NAME --name infrastructure-subnet --query "id" -o tsv | tr -d '[:space:]'`

Наконец, создайте среду Контейнеров приложений с виртуальной сетью и подсетью.

az containerapp env create \
  --name $CONTAINERAPPS_ENVIRONMENT \
  --resource-group $RESOURCE_GROUP \
  --location "$LOCATION" \
  --infrastructure-subnet-resource-id $INFRASTRUCTURE_SUBNET \
  --internal-only

В таблице ниже описаны параметры, используемые для containerapp env create.

Параметр Описание
name Имя среды приложений-контейнеров.
resource-group Имя группы ресурсов.
logs-workspace-id (Необязательно) Идентификатор существующей рабочей области Log Analytics. Если опущено, для вас создается рабочая область.
logs-workspace-key Секрет клиента Log Analytics. Обязателен при использовании существующей рабочей области.
location Расположение Azure, в котором будет развернута среда.
infrastructure-subnet-resource-id Идентификатор ресурса подсети для компонентов инфраструктуры и контейнеров пользовательских приложений.
internal-only (Необязательно) Среда не использует общедоступный статический IP-адрес, а только внутренние IP-адреса, доступные в настраиваемой виртуальной сети. (Требуется идентификатор ресурса подсети инфраструктуры).

После создания среды с использованием пользовательской виртуальной сети в этой среде с помощью команды az containerapp create можно развернуть приложения-контейнеры.

Дополнительные настройки

Вы можете развернуть частную службу доменных имен (DNS) и определить настраиваемые диапазоны IP-адресов сети для среды Контейнеров приложений.

Развертывание с использованием частной DNS

Если вы хотите развернуть приложение-контейнер с частной DNS, выполните приведенные ниже команды.

Сначала извлеките из среды идентифицируемую информацию.

ENVIRONMENT_DEFAULT_DOMAIN=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.defaultDomain --out json | tr -d '"'`
ENVIRONMENT_STATIC_IP=`az containerapp env show --name ${CONTAINERAPPS_ENVIRONMENT} --resource-group ${RESOURCE_GROUP} --query properties.staticIp --out json | tr -d '"'`
VNET_ID=`az network vnet show --resource-group ${RESOURCE_GROUP} --name ${VNET_NAME} --query id --out json | tr -d '"'`

Затем настройте частную службу DNS.

az network private-dns zone create \
  --resource-group $RESOURCE_GROUP \
  --name $ENVIRONMENT_DEFAULT_DOMAIN
az network private-dns link vnet create \
  --resource-group $RESOURCE_GROUP \
  --name $VNET_NAME \
  --virtual-network $VNET_ID \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN -e true
az network private-dns record-set a add-record \
  --resource-group $RESOURCE_GROUP \
  --record-set-name "*" \
  --ipv4-address $ENVIRONMENT_STATIC_IP \
  --zone-name $ENVIRONMENT_DEFAULT_DOMAIN

Параметры сети

Существует три необязательных сетевых параметра, которые можно определить при вызове containerapp env create. Используйте эти параметры, если у вас есть пиринговая виртуальная сеть с отдельными диапазонами адресов. Явно настраивая эти диапазоны, гарантирует, что адреса, используемые средой "Приложения контейнеров", не конфликтуют с другими диапазонами в сетевой инфраструктуре.

Либо укажите значения для всех трех этих свойств, либо не указывайте ни одного из них. Если они не указаны, то для вас создаются значения.

Параметр Описание
platform-reserved-cidr Диапазон адресов, используемый внутренне для служб инфраструктуры среды. Должен иметь размер между /23 средой потребления и /12 только при использовании среды потребления
platform-reserved-dns-ip IP-адрес из диапазона platform-reserved-cidr, используемого для внутреннего DNS-сервера. Этот адрес не может быть первым адресом в диапазоне или адресом сети. Например, если для platform-reserved-cidr задано значение 10.2.0.0/16, то platform-reserved-dns-ip не может иметь значение 10.2.0.0 (это адрес сети) или 10.2.0.1 (инфраструктура резервирует использование этого IP-адреса). В этом примере первым IP-адресом, пригодным для использования в DNS, будет 10.2.0.2.
docker-bridge-cidr Диапазон адресов, назначенный сети моста Docker. Этот диапазон должен иметь размер от /28 до /12.
  • Диапазоны адресов platform-reserved-cidr и docker-bridge-cidr не могут конфликтовать друг с другом или с диапазонами любой из предоставленных подсетей. Кроме того, убедитесь, что эти диапазоны не конфликтуют с любым другим диапазоном адресов в виртуальной сети.

  • Если эти свойства не предоставлены, CLI автоматически создает значения диапазона на основе диапазона адресов виртуальной сети, чтобы избежать конфликтов.

Очистка ресурсов

Если вы не собираетесь продолжать использовать это приложение, можете удалить экземпляр Контейнеров приложений Azure и все связанные службы, удалив группу ресурсов my-container-apps. При удалении этой группы ресурсов группа ресурсов автоматически удаляет группу ресурсов, созданную службой приложений контейнеров, содержащей пользовательские сетевые компоненты.

Внимание

Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если ресурсы вне области этого руководства существуют в указанной группе ресурсов, они также будут удалены.

az group delete --name $RESOURCE_GROUP

Дополнительные ресурсы

  • Чтобы использовать входящий трафик в области виртуальной сети, необходимо настроить DNS.

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