Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Note
Планы "Базовый", "Стандартный" и "Корпоративный" вступили в пенсионный период 17 марта 2025 года. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
В этой статье объясняется, как предоставлять приложения в Интернет с помощью шлюза приложений.
При развертывании экземпляра службы Azure Spring Apps в виртуальной сети (VNET) приложения на экземпляре службы доступны только в частной сети. Чтобы сделать приложения доступными в Интернете, необходимо интегрироваться с Шлюзом приложений Azure. Входящий зашифрованный трафик можно расшифровать на уровне шлюза приложений, либо передать его в Azure Spring Apps в зашифрованном виде для обеспечения сквозного TLS/SSL. В целях разработки и тестирования можно начать с завершения SSL в шлюзе приложений, который рассматривается в этом руководстве. Для рабочей среды рекомендуется использовать сквозной протокол TLS/SSL с частным сертификатом, как описано в разделе "Предоставление приложений с помощью сквозного TLS в виртуальной сети".
Prerequisites
- Azure CLI версии 2.0.4 или более поздней.
- Экземпляр службы Azure Spring Apps, развернутый в виртуальной сети с приложением, доступным через частную сеть, с помощью суффикса домена по умолчанию
.private.azuremicroservices.io. Дополнительные сведения см. в статье "Развертывание Azure Spring Apps в виртуальной сети" - Личный домен, используемый для доступа к приложению.
- Сертификат, хранящийся в Key Vault, который соответствует пользовательскому домену для установки прослушивателя HTTPS. Дополнительные сведения см. в руководстве по импорту сертификата в Azure Key Vault.
Настройка шлюза приложений для Azure Spring Apps
Рекомендуется, чтобы доменное имя, как показано в браузере, совпадает с именем узла, которое шлюз приложений использует для перенаправления трафика в серверную часть Azure Spring Apps. Эта рекомендация обеспечивает оптимальный интерфейс при использовании шлюза приложений для предоставления приложений, размещенных в Azure Spring Apps и находящихся в виртуальной сети. Если домен, предоставляемый Шлюзом приложений, отличается от домена, принятого Azure Spring Apps, это может привести к сбоям в работе файлов cookie и URL-адресов перенаправления. Дополнительные сведения см. в разделе "Сохранение имени узла".
Чтобы настроить шлюз приложений перед Azure Spring Apps в частной виртуальной сети, выполните следующие действия.
- Следуйте инструкциям в статье "Развертывание Azure Spring Apps в виртуальной сети".
- Следуйте инструкциям в Разделе "Доступ к приложению в частной сети".
- Получите сертификат для выбранного домена и сохраните его в Key Vault. Дополнительные сведения см. в руководстве по импорту сертификата в Azure Key Vault.
- Настройте личный домен и соответствующий сертификат из Key Vault в приложении, развернутом в Azure Spring Apps. Дополнительные сведения см. в руководстве Сопоставление существующего личного домена с Azure Spring Apps.
- Развертывание шлюза приложений в виртуальной сети, настроенной в соответствии со следующим списком:
- Используйте Azure Spring Apps в серверном пуле, на который ссылается домен суффиксом
private.azuremicroservices.io. - Включите прослушиватель HTTPS с помощью того же сертификата из Key Vault.
- Настройте виртуальную сеть с параметрами HTTP, которые используют имя личного домена, настроенное в Azure Spring Apps, вместо суффикса
private.azuremicroservices.ioдомена.
- Используйте Azure Spring Apps в серверном пуле, на который ссылается домен суффиксом
- Настройте общедоступный DNS для указания шлюза приложений.
Определение переменных
Затем используйте следующие команды, чтобы определить переменные для группы ресурсов и виртуальной сети, созданной в соответствии с инструкциями по развертыванию Azure Spring Apps в виртуальной сети. Замените заполнители <...> реальными значениями на основе вашей среды. При определении SPRING_APP_PRIVATE_FQDNудалите https:// из URI.
export SUBSCRIPTION='<subscription-id>'
export RESOURCE_GROUP='<resource-group-name>'
export LOCATION='eastus'
export SPRING_CLOUD_NAME='<name-of-Azure-Spring-Apps-instance>'
export APPNAME='<name-of-app-in-Azure-Spring-Apps>'
export SPRING_APP_PRIVATE_FQDN='$APPNAME.private.azuremicroservices.io'
export VIRTUAL_NETWORK_NAME='azure-spring-apps-vnet'
export APPLICATION_GATEWAY_SUBNET_NAME='app-gw-subnet'
export APPLICATION_GATEWAY_SUBNET_CIDR='10.1.2.0/24'
Вход в Azure
Войдите в Azure CLI и выберите активную подписку, выполнив следующую команду:
az login
az account set --subscription $SUBSCRIPTION
Настройка имени общедоступного домена в Azure Spring Apps
Трафик будет направлен в приложение, развернутое в Azure Spring Apps, через общедоступное доменное имя. Чтобы настроить приложение для прослушивания этого имени узла по протоколу HTTP, используйте следующие команды, чтобы добавить личный домен в приложение, заменив <...> заполнители реальными значениями:
export KV_NAME='<name-of-key-vault>'
export KV_RG='<resource-group-name-of-key-vault>'
export CERT_NAME_IN_KV='<name-of-certificate-with-intermediaries-in-key-vault>'
export DOMAIN_NAME=myapp.mydomain.com
az spring app custom-domain bind \
--resource-group $RESOURCE_GROUP \
--service $SPRING_CLOUD_NAME \
--domain-name $DOMAIN_NAME \
--app $APPNAME
Создание сетевых ресурсов
Созданный шлюз приложений присоединяется к той же виртуальной сети, что и экземпляр службы Azure Spring Apps. Сначала создайте новую подсеть для шлюза приложений в виртуальной сети, а затем создайте общедоступный IP-адрес в качестве внешнего интерфейса шлюза приложений, как показано в следующем примере.
export APPLICATION_GATEWAY_PUBLIC_IP_NAME='app-gw-public-ip'
az network vnet subnet create \
--name $APPLICATION_GATEWAY_SUBNET_NAME \
--resource-group $RESOURCE_GROUP \
--vnet-name $VIRTUAL_NETWORK_NAME \
--address-prefix $APPLICATION_GATEWAY_SUBNET_CIDR
az network public-ip create \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
--allocation-method Static \
--sku Standard
Создайте управляемое удостоверение для шлюза приложений
Шлюз приложений должен иметь доступ к Key Vault для чтения сертификата. Для этого шлюз приложений будет использовать управляемое удостоверение, назначаемое пользователем. Дополнительные сведения см. в статье "Что такое управляемые удостоверения для ресурсов Azure"? Создайте управляемое удостоверение с помощью следующей команды, заменив <...> заполнитель:
export APPGW_IDENTITY_NAME='<name-for-appgw-managed-identity>'
az identity create \
--resource-group $RESOURCE_GROUP \
--name $APPGW_IDENTITY_NAME
Затем используйте следующую команду, чтобы получить objectId управляемое удостоверение. Это значение будет использоваться позже для предоставления прав доступа к сертификату в Key Vault.
export APPGW_IDENTITY_CLIENTID=$(az identity show \
--resource-group $RESOURCE_GROUP \
--name $APPGW_IDENTITY_NAME \
--query clientId \
--output tsv)
export APPGW_IDENTITY_OID=$(az ad sp show \
--id $APPGW_IDENTITY_CLIENTID \
--query objectId \
--output tsv)
Настройка политики в Key Vault
Настройте Key Vault с помощью следующей команды, чтобы управляемое удостоверение приложения-шлюза имело разрешение на доступ к сертификату, хранящемуся в Key Vault.
az keyvault set-policy \
--resource-group $KV_RG \
--name $KV_NAME \
--object-id $APPGW_IDENTITY_OID \
--secret-permissions get list \
--certificate-permissions get list
Создание Шлюза приложений
Создайте шлюз для приложений с помощью az network application-gateway create, указав частное полное доменное имя приложения (FQDN) в качестве серверов в резервном пуле. Обязательно используйте управляемое удостоверение пользователя и укажите сертификат в Key Vault, используя секретный идентификатор сертификата.
export APPGW_NAME='<name-for-application-gateway>'
export CERT_NAME_IN_KV='<name-of-certificate-in-key-vault>'
export KEYVAULT_SECRET_ID_FOR_CERT=$(az keyvault certificate show \
--name $CERT_NAME_IN_KV \
--vault-name $KV_NAME \
--query sid \
--output tsv)
az network application-gateway create \
--name $APPGW_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--capacity 2 \
--sku Standard_v2 \
--frontend-port 443 \
--http-settings-cookie-based-affinity Disabled \
--http-settings-port 80 \
--http-settings-protocol Http \
--public-ip-address $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
--vnet-name $VIRTUAL_NETWORK_NAME \
--subnet $APPLICATION_GATEWAY_SUBNET_NAME \
--servers $SPRING_APP_PRIVATE_FQDN \
--key-vault-secret-id $KEYVAULT_SECRET_ID_FOR_CERT \
--identity $APPGW_IDENTITY_NAME
Чтобы создать шлюз приложения в Azure, может понадобиться до 30 минут.
Обновление параметров HTTP для использования доменного имени для серверной части
Обновите параметры HTTP, чтобы использовать имя общедоступного домена в качестве имени хоста вместо домена, суффиксированного .private.azuremicroservices.io, для отправки трафика в Azure Spring Apps.
az network application-gateway http-settings update \
--resource-group $RESOURCE_GROUP \
--gateway-name $APPGW_NAME \
--host-name-from-backend-pool false \
--host-name $DOMAIN_NAME \
--name appGatewayBackendHttpSettings
Проверка развертывания шлюза приложений
После создания проверьте состояние бэкенда с помощью следующей команды. Выходные данные этой команды позволяют определить, подключается ли шлюз приложений к вашему приложению через его частное полное доменное имя (FQDN).
az network application-gateway show-backend-health \
--name $APPGW_NAME \
--resource-group $RESOURCE_GROUP
Выходные данные указывают на работоспособное состояние внутреннего пула, как показано в следующем примере:
{
"backendAddressPools": [
{
"backendHttpSettingsCollection": [
{
"servers": [
{
"address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
"health": "Healthy",
"healthProbeLog": "Success. Received 200 status code",
"ipConfiguration": null
}
]
}
]
}
]
}
Настройка DNS и доступ к приложению
Настройте общедоступный DNS для указания шлюза приложений с помощью записи CNAME или A-record. Общедоступный адрес шлюза приложений можно найти с помощью следующей команды:
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
--query [ipAddress] \
--output tsv
Теперь вы можете получить доступ к приложению с помощью имени общедоступного домена.
Очистите ресурсы
Если вы планируете продолжить работу с последующими статьями, вам стоит оставить эти ресурсы. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующую команду:
az group delete --name $RESOURCE_GROUP