Создание приватной ссылки на приложение контейнера Azure с помощью Azure Front Door (предварительная версия)
В этой статье вы узнаете, как подключиться непосредственно из Azure Front Door к приложениям контейнеров Azure, используя приватный канал вместо общедоступного Интернета. В этом руководстве вы создадите среду профилей рабочих нагрузок контейнеров Azure, Azure Front Door и безопасно подключите их через приватный канал. Затем вы проверяете подключение между приложением контейнера и Azure Front Door.
Необходимые компоненты
Учетная запись Azure с активной подпиской.
- Если у вас нет учетной записи, вы можете создать ее бесплатно.
Эта функция доступна только в Azure CLI. Чтобы убедиться, что вы используете последнюю версию 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"
AFD_PROFILE="my-afd-profile"
AFD_ENDPOINT="my-afd-endpoint"
AFD_ORIGIN_GROUP="my-afd-origin-group"
AFD_ORIGIN="my-afd-origin"
AFD_ROUTE="my-afd-route"
создание группы ресурсов Azure;
Создайте группу ресурсов для упорядочивания служб, связанных с развертыванием приложения контейнера.
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
Создать среду
Создайте среду "Приложения контейнеров".
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 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
Получите конечную точку приложения-контейнера.
ACA_ENDPOINT=$(az containerapp show \ --name $CONTAINERAPP_NAME \ --resource-group $RESOURCE_GROUP \ --query properties.configuration.ingress.fqdn \ --output tsv)
Если перейти к конечной точке приложения-контейнера, вы получите
ERR_CONNECTION_CLOSED
, так как среда приложения-контейнера отключена. Вместо этого вы используете конечную точку AFD для доступа к приложению контейнера.
Создание профиля Azure Front Door
Создайте профиль AFD. Приватный канал не поддерживается для источников в профиле AFD с SKU Standard_AzureFrontDoor
.
az afd profile create \
--profile-name $AFD_PROFILE \
--resource-group $RESOURCE_GROUP \
--sku Premium_AzureFrontDoor
Создание конечной точки Azure Front Door
Добавьте конечную точку в профиль AFD.
az afd endpoint create \
--resource-group $RESOURCE_GROUP \
--endpoint-name $AFD_ENDPOINT \
--profile-name $AFD_PROFILE \
--enabled-state Enabled
Создание группы источников Azure Front Door
Создайте группу источников AFD.
az afd origin-group create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--profile-name $AFD_PROFILE \
--probe-request-type GET \
--probe-protocol Http \
--probe-interval-in-seconds 60 \
--probe-path / \
--sample-size 4 \
--successful-samples-required 3 \
--additional-latency-in-milliseconds 50
Создание источника Azure Front Door
Добавьте источник AFD в группу источников.
az afd origin create \
--resource-group $RESOURCE_GROUP \
--origin-group-name $AFD_ORIGIN_GROUP \
--origin-name $AFD_ORIGIN \
--profile-name $AFD_PROFILE \
--host-name $ACA_ENDPOINT \
--origin-host-header $ACA_ENDPOINT \
--priority 1 \
--weight 500 \
--enable-private-link true \
--private-link-location $LOCATION \
--private-link-request-message "AFD Private Link Request" \
--private-link-resource $ENVIRONMENT_ID \
--private-link-sub-resource-type managedEnvironments
Вывод списка подключений к частной конечной точке
Выполните следующую команду, чтобы вывести список подключений к частной конечной точке для вашей среды.
az network private-endpoint-connection list \ --name $ENVIRONMENT_NAME \ --resource-group $RESOURCE_GROUP \ --type Microsoft.App/managedEnvironments
Запишите идентификатор ресурса подключения частной конечной точки из ответа. Подключение к частной конечной точке
properties.privateLinkServiceConnectionState.description
имеет значениеAFD Private Link Request
. Идентификатор ресурса подключения к частной конечной точке выглядит следующим образом./subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.App/managedEnvironments/my-environment/privateEndpointConnections/<PRIVATE_ENDPOINT_CONNECTION_ID>
Не путайте это с идентификатором частной конечной точки, который выглядит следующим образом.
/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/eafd-Prod-centralus/providers/Microsoft.Network/privateEndpoints/<PRIVATE_ENDPOINT_ID>
Утверждение подключения частной конечной точки
Выполните следующую команду, чтобы утвердить подключение. Замените PLACEHOLDER> идентификатором ресурса подключения к частной <конечной точке, записанным в предыдущем разделе.
az network private-endpoint-connection approve --id <PRIVATE_ENDPOINT_CONNECTION_RESOURCE_ID>
Добавление маршрута
Выполните следующую команду, чтобы сопоставить конечную точку, созданную ранее, с группой источников. Частные конечные точки в приложениях контейнеров Azure поддерживают только входящий HTTP-трафик. Tcp-трафик не поддерживается.
az afd route create \
--resource-group $RESOURCE_GROUP \
--profile-name $AFD_PROFILE \
--endpoint-name $AFD_ENDPOINT \
--forwarding-protocol MatchRequest \
--route-name $AFD_ROUTE \
--https-redirect Enabled \
--origin-group $AFD_ORIGIN_GROUP \
--supported-protocols Http Https \
--link-to-default-domain Enabled
Доступ к приложению-контейнеру из Azure Front Door
Получите имя узла конечной точки AFD.
az afd endpoint show \ --resource-group $RESOURCE_GROUP \ --profile-name $AFD_PROFILE \ --endpoint-name $AFD_ENDPOINT \ --query hostName \ --output tsv
Имя узла выглядит так, как показано в следующем примере.
my-afd-endpoint.<HASH>.b01.azurefd.net
Перейдите к имени узла. Выходные данные для образа приложения контейнера быстрого запуска отображаются.
Для глобального развертывания профиля AFD требуется несколько минут, поэтому если вы не видите ожидаемые выходные данные сначала, подождите несколько минут, а затем обновите его.
Очистка ресурсов
Если вы не собираетесь продолжать использовать это приложение, можно удалить группу ресурсов my-container-apps . При этом удаляется экземпляр приложений контейнеров Azure и все связанные службы. Она также удаляет группу ресурсов, созданную службой "Приложения контейнеров", и которая содержит пользовательские сетевые компоненты.
Внимание
Следующая команда удаляет указанную группу ресурсов и все ресурсы, содержащиеся в ней. Если ресурсы вне области этого руководства существуют в указанной группе ресурсов, они также будут удалены.
az group delete --name $RESOURCE_GROUP