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


Предоставление виртуальной сети для внешней среды Контейнеров приложений 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 пространств имен.

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"

Теперь создайте виртуальную сеть Azure, чтобы связать ее со средой Контейнеров приложений. Эта виртуальная сеть должна иметь подсеть, доступную для развертывания среды.

Примечание.

Префикс адреса подсети сети требует минимального /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/21

При использовании среды профилей рабочей нагрузки необходимо обновить виртуальную сеть, чтобы делегировать подсеть Microsoft.App/environments. Это делегирование неприменимо к среде только для потребления.

az network vnet subnet update \
  --resource-group $RESOURCE_GROUP \
  --vnet-name $VNET_NAME \
  --name infrastructure-subnet \
  --delegations Microsoft.App/environments

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

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

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

Параметр Описание
name Имя среды приложений-контейнеров.
resource-group Имя группы ресурсов.
location Расположение Azure, в котором будет развернута среда.
infrastructure-subnet-resource-id Идентификатор ресурса подсети для компонентов инфраструктуры и контейнеров пользовательских приложений.

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

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

Вы можете развернуть частную службу доменных имен (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 автоматически создает значения диапазона на основе диапазона адресов виртуальной сети, чтобы избежать конфликтов.

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

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

Внимание

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

az group delete --name $RESOURCE_GROUP

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