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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вы также можете развернуть частный DNS для среды приложений контейнеров. Дополнительные сведения см. в статье "Создание и настройка зоны azure Частная зона DNS".

Создание виртуальной сети

Примечание.

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

  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

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

Задайте следующие переменные среды. Замените значения следующими <PLACEHOLDERS> значениями:

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"

Теперь создайте виртуальную сеть для связывания с средой "Приложения контейнеров". Эта виртуальная сеть должна иметь подсеть, доступную для развертывания среды.

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

При использовании среды профилей рабочей нагрузки необходимо обновить виртуальную сеть, чтобы делегировать подсеть 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:]'`

Наконец, создайте среду "Приложения контейнеров" с помощью настраиваемой виртуальной сети.

Чтобы создать среду, выполните следующую команду. Чтобы создать внутреннюю среду, добавьте --internal-only.

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

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

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

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

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

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

Внимание

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

az group delete --name $RESOURCE_GROUP

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

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

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