Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Из этой статьи вы узнаете, как использовать частную конечную точку для безопасного доступа к приложению контейнера Azure без предоставления доступа к общедоступному Интернету.
Частная конечная точка использует частный IP-адрес из виртуальной сети. Эта конечная точка подключает вас приватно и безопасно к службе, созданной на Приватный канал Azure.
Это важно
В планах "Выделенный" и "Потребление" дополнительная плата взимается за включение частных конечных точек.
Необходимые компоненты
- Учетная запись Azure с активной подпиской.
- Если у вас нет учетной записи, вы можете создать ее бесплатно.
Создание приложения-контейнера
Войдите на портал Azure.
Введите Приложения-контейнеры в строке поиска вверху.
В результатах поиска выберите Приложения-контейнеры.
Выберите кнопку Создать.
На странице "Создание приложения контейнера " на вкладке "Основы " введите следующие значения.
Параметр Действие Отток подписок Выберите свою подписку Azure. Группа ресурсов Выберите ссылку "Создать группу ресурсов " и введите my-container-apps. Имя приложения-контейнера Введите my-container-app. Источник развертывания Выберите образ контейнера. Область/регион Выберите Центральная часть США. В поле "Создание среды приложений контейнеров" выберите ссылку "Создать новую среду ".
На странице "Создание среды приложений контейнеров " на вкладке "Основы " введите следующие значения:
Параметр Значение Имя среды Введите my-environment. Избыточность между зонами Выберите Отключено. Выберите вкладку "Сеть".
Установите Доступ к общедоступной сети на Отключить: блокировать весь входящий трафик из Интернета. По умолчанию доступ к общедоступной сети включен, в связи с чем частные конечные точки отключены.
Оставьте собственный набор виртуальных сетей равным No. Вы можете использовать существующую виртуальную сеть, но частные конечные точки поддерживаются только средами профилей рабочих нагрузок, для которых требуется подсеть с минимальным диапазоном
/27CIDR или больше. Дополнительные сведения о размерах подсети см. в обзоре сетевой архитектуры.Установите для частных конечных точек значение "Да".
Задайте имячастной конечной точки для моей частной конечной точки.
В поле виртуальной сети частной конечной точки выберите ссылку "Создать".
На странице "Создание виртуальная сеть" задайте виртуальная сетьmy-private-endpoint-vnet. Нажмите ОК.
В поле подсети виртуальной сети частной конечной точки выберите ссылку "Создать".
На странице "Создание подсети" задайте имяподсети my-private-endpoint-vnet-subnet. Нажмите ОК.
Оставьте для DNS значение "Зона Частная зона DNS Azure".
Нажмите кнопку создания.
На странице "Создание приложения контейнера" выберите вкладку "Контейнер ".
Выберите "Использовать образ быстрого запуска".
Развертывание приложения-контейнера
В нижней части страницы нажмите кнопку "Просмотр и создание".
- Если ошибки не найдены, кнопка "Создать " доступна.
- Если возникают ошибки, любая вкладка, содержащая ошибку, помечается красной точкой. Перейдите на каждую из этих вкладок. Поля, содержащие ошибку, выделены красным или помечены красным X. Исправьте все ошибки, а затем нажмите кнопку "Проверить и создать " еще раз.
Нажмите кнопку создания.
Отобразится страница с сообщением Выполняется развертывание. После успешного завершения развертывания появится сообщение о завершении развертывания .
Проверка развертывания
Выберите Перейти к ресурсу для просмотра нового приложения-контейнера.
Рядом с URL-адресом приложения выберите ссылку для просмотра приложения.
При переходе к конечной точке приложения контейнера вы увидите следующее сообщение:
The public network access on this managed environment is disabled. To connect to this managed environment, please use the Private Endpoint from inside your virtual network. To learn more https://aka.ms/PrivateEndpointTroubleshooting.
Необходимые компоненты
Учетная запись Azure с активной подпиской.
- Если у вас нет учетной записи, вы можете создать ее бесплатно.
Последняя версия Azure CLI. Чтобы убедиться, что вы используете последнюю версию, выполните следующую команду.
az upgradeПоследняя версия расширения приложений контейнеров Azure для Azure CLI. Чтобы убедиться, что вы используете последнюю версию, выполните следующую команду.
az extension add --name containerapp --upgrade --allow-preview trueПримечание.
Начиная с мая 2024 г. расширения Azure CLI больше не поддерживают предварительные версии функций по умолчанию. Чтобы получить доступ к функциям предварительной версии контейнерных приложений, установите расширение "Приложения контейнеров" с
--allow-preview trueпомощью .
Дополнительные сведения о предварительных требованиях и настройке см . в кратком руководстве. Развертывание первого приложения контейнера с помощью containerapp up.
Настройка переменных среды
Задайте следующие переменные среды.
RESOURCE_GROUP="my-container-apps"
LOCATION="centralus"
ENVIRONMENT_NAME="my-environment"
CONTAINERAPP_NAME="my-container-app"
VNET_NAME="my-vnet"
SUBNET_NAME="my-subnet"
PRIVATE_ENDPOINT="my-private-endpoint"
PRIVATE_ENDPOINT_CONNECTION="my-private-endpoint-connection"
PRIVATE_DNS_ZONE="privatelink.${LOCATION}.azurecontainerapps.io"
DNS_LINK="my-dns-link"
создание группы ресурсов Azure;
Создайте группу ресурсов для упорядочивания служб, связанных с развертыванием приложения контейнера.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Создание виртуальной сети
Создайте виртуальную сеть Azure ( виртуальную сеть). Вы можете использовать существующую виртуальную сеть, но частные конечные точки поддерживаются только средами профилей рабочих нагрузок, для которых требуется подсеть с минимальным диапазоном
/27CIDR или больше. Дополнительные сведения о размерах подсети см. в обзоре сетевой архитектуры.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 $SUBNET_NAME \ --address-prefixes 10.0.0.0/21Получение идентификатора подсети. Этот идентификатор используется для создания частной конечной точки.
SUBNET_ID=$(az network vnet subnet show \ --resource-group $RESOURCE_GROUP \ --vnet-name $VNET_NAME \ --name $SUBNET_NAME \ --query "id" \ --output tsv)
Создать среду
Создайте среду "Приложения контейнеров". Частные конечные точки поддерживаются только в средах профилей рабочих нагрузок, которые являются типом по умолчанию для новых сред.
az containerapp env create \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --location $LOCATIONПолучение идентификатора среды. Этот идентификатор используется для настройки среды.
ENVIRONMENT_ID=$(az containerapp env show \ --resource-group $RESOURCE_GROUP \ --name $ENVIRONMENT_NAME \ --query "id" \ --output tsv)Отключите доступ к общедоступной сети для среды. Этот параметр необходим для включения частных конечных точек.
az containerapp env update \ --id $ENVIRONMENT_ID \ --public-network-access Disabled
Создание частной конечной точки
Создайте частную конечную точку в среде и подсети, созданной ранее.
az network private-endpoint create \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--name $PRIVATE_ENDPOINT \
--subnet $SUBNET_ID \
--private-connection-resource-id $ENVIRONMENT_ID \
--connection-name $PRIVATE_ENDPOINT_CONNECTION \
--group-id managedEnvironments
Настройка частной зоны DNS
Получение IP-адреса частной конечной точки. Этот адрес используется для добавления записи DNS в частную зону DNS.
PRIVATE_ENDPOINT_IP_ADDRESS=$(az network private-endpoint show \ --name $PRIVATE_ENDPOINT \ --resource-group $RESOURCE_GROUP \ --query 'customDnsConfigs[0].ipAddresses[0]' \ --output tsv)Получите домен среды по умолчанию. Этот домен используется для добавления записи DNS в частную зону DNS.
DNS_RECORD_NAME=$(az containerapp env show \ --id $ENVIRONMENT_ID \ --query 'properties.defaultDomain' \ --output tsv | sed 's/\..*//')Создайте частную зону DNS.
az network private-dns zone create \ --resource-group $RESOURCE_GROUP \ --name $PRIVATE_DNS_ZONEСоздайте связь между виртуальной сетью и частной зоной DNS.
az network private-dns link vnet create \ --resource-group $RESOURCE_GROUP \ --zone-name $PRIVATE_DNS_ZONE \ --name $DNS_LINK \ --virtual-network $VNET_NAME \ --registration-enabled falseДобавьте запись для частной конечной точки в частную зону DNS.
az network private-dns record-set a add-record \ --resource-group $RESOURCE_GROUP \ --zone-name $PRIVATE_DNS_ZONE \ --record-set-name $DNS_RECORD_NAME \ --ipv4-address $PRIVATE_ENDPOINT_IP_ADDRESS
Развертывание приложения-контейнера
Разверните приложение-контейнер в вашей среде. Это приложение контейнера просто использует образ краткого руководства.
При переходе к конечной точке приложения-контейнера вы получаете ERR_CONNECTION_CLOSED , так как среда приложения-контейнера отключена общедоступного доступа. Вместо этого вы обращаетесь к приложению-контейнеру с помощью частной конечной точки.
az containerapp up \
--name $CONTAINERAPP_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT_NAME \
--image mcr.microsoft.com/k8se/quickstart:latest \
--target-port 80 \
--ingress external \
--query properties.configuration.ingress.fqdn
Проверка подключения частной конечной точки
В этом разделе описано, как создать виртуальную машину, связанную с виртуальной сетью, чтобы получить доступ к приложению контейнера, определенному с помощью частной конечной точки.
Создание виртуальной машины.
Войдите на портал Azure.
Найдите виртуальные машины в верхней строке поиска.
В результатах поиска выберите Виртуальные машины.
Нажмите кнопку создания.
На вкладке "Основные сведения" на странице "Создание виртуальной машины" введите следующие значения.
Параметр Действие Отток подписок Выберите свою подписку Azure. Группа ресурсов Выберите my-container-apps. Название виртуальной машины Введите azurevm. Область/регион Выберите Центральная часть США. Параметры доступности Выберите Избыточность инфраструктуры не требуется. Тип безопасности Выберите Стандартное. Изображения Выберите Windows Server 2022 Datacenter : Azure Edition — x64-го поколения 2-го поколения. Имя пользователя Введите azureuser. Пароль Введите пароль. Подтверждение пароля Введите пароль еще раз. Общедоступные входящие порты Выберите Отсутствует. На вкладке "Сеть" введите следующие значения.
Параметр Действие Виртуальная сеть Выберите my-private-endpoint-vnet. Подсеть Выберите my-private-endpoint-vnet-subnet (10.0.0.0/23). Общедоступный IP-адрес Выберите Отсутствует. Группа безопасности сети сетевого адаптера Выберите Дополнительно. Выберите Review + Create (Просмотреть и создать).
Нажмите кнопку создания.
Настройка переменных среды
Задайте следующие переменные среды.
VM_NAME="azurevm"
VM_ADMIN_USERNAME="azureuser"
Создание виртуальной машины.
Выполните следующую команду.
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Win2022Datacenter \
--public-ip-address "" \
--vnet-name $VNET_NAME \
--subnet $SUBNET_NAME \
--admin-username $VM_ADMIN_USERNAME
После выполнения этой команды появится запрос на ввод пароля администратора для виртуальной машины.
Имя пользователя администратора должно составлять от 1 до 20 символов.
Пароль администратора имеет следующие требования:
- Должно быть от 12 до 123 символов длиной.
- Должен иметь три из следующих символов: 1 нижний регистр, 1 верхний регистр, 1 номер и 1 специальный символ.
Проверка подключения
Войдите на портал Azure.
Найдите виртуальную машину, созданную в верхней строке поиска, и выберите ее в результатах поиска.
На странице "Обзор" виртуальной машины выберите "Подключиться", а затем нажмите кнопку "Подключиться через бастион".
На странице Бастиона выберите "Развернуть бастион".
Задайте имя пользователя и пароль виртуальной машины, которые вы использовали при создании виртуальной машины.
Нажмите Подключиться.
После подключения запустите PowerShell на виртуальной машине.
В PowerShell выполните следующую команду. Замените <заполнители вашими значениями> .
nslookup <CONTAINER_APP_ENDPOINT>Выходные данные аналогичны следующему примеру с значениями, заменяющими <ЗАПОЛНИТЕЛИ.>
Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: <ENVIRONMENT_DEFAULT_DOMAIN>.privatelink.<LOCATION>.azurecontainerapps.io Address: 10.0.0.4 Aliases: <CONTAINER_APP_ENDPOINT>Откройте браузер на виртуальной машине.
Перейдите к конечной точке приложения-контейнера. Выходные данные для образа приложения контейнера быстрого запуска отображаются.
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, можно удалить группу ресурсов my-container-apps . Это действие удаляет экземпляр azure Container Apps и все связанные службы.
Внимание
Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если ресурсы вне области этого руководства существуют в указанной группе ресурсов, они также будут удалены.
az group delete --name $RESOURCE_GROUP