Zveřejnění aplikací s kompletním protokolem TLS ve virtuální síti
Poznámka:
Plány Basic, Standard a Enterprise budou od poloviny března 2025 vyřazeny ze 3letého období vyřazení. Doporučujeme přejít na Azure Container Apps. Další informace najdete v oznámení o vyřazení Azure Spring Apps.
Od 30. září 2024 bude od 30. září 2024 zastaralý plán s úplným vypnutím po šesti měsících. Doporučujeme přejít na Azure Container Apps. Další informace najdete v tématu Migrace spotřeby Azure Spring Apps Úrovně Standard a vyhrazeného plánu do Azure Container Apps.
Tento článek se vztahuje na:✅ Basic/Standard ✅ Enterprise
Tento článek vysvětluje, jak zpřístupnit aplikace na internetu pomocí služby Application Gateway. Když je instance služby Azure Spring Apps nasazená ve vaší virtuální síti, aplikace v instanci služby jsou přístupné jenom v privátní síti. Pokud chcete, aby aplikace byly přístupné na internetu, je potřeba integrovat se službou Aplikace Azure lication Gateway.
Požadavky
- Azure CLI verze 2.0.4 nebo novější.
- Instance služby Azure Spring Apps nasazená ve virtuální síti s aplikací přístupnou přes privátní síť s použitím výchozí
.private.azuremicroservices.io
přípony domény. Další informace najdete v tématu Nasazení služby Azure Spring Apps ve virtuální síti. - Vlastní doména, která se má použít pro přístup k aplikaci.
- Certifikát uložený ve službě Key Vault, který odpovídá vlastní doméně, která se má použít k navázání naslouchacího procesu HTTPS. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault.
Konfigurace služby Application Gateway pro Azure Spring Apps
Doporučujeme, aby název domény, jak je vidět v prohlížeči, byl stejný jako název hostitele, který Application Gateway používá k směrování provozu do back-endu Azure Spring Apps. Toto doporučení poskytuje nejlepší prostředí při používání služby Application Gateway ke zveřejnění aplikací hostovaných v Azure Spring Apps a umístění ve virtuální síti. Pokud se doména vystavená službou Application Gateway liší od domény přijaté službou Azure Spring Apps, soubory cookie a vygenerované adresy URL pro přesměrování (například) můžou být přerušené. Další informace naleznete v tématu Zachování názvu hostitele.
Pokud chcete službu Application Gateway nakonfigurovat před azure Spring Apps, postupujte následovně.
- Postupujte podle pokynů v tématu Nasazení azure Spring Apps ve virtuální síti.
- Postupujte podle pokynů v Accessu k aplikaci v privátní síti.
- Získejte certifikát pro zvolenou doménu a uložte ho ve službě Key Vault. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault.
- Nakonfigurujte vlastní doménu a odpovídající certifikát ze služby Key Vault v aplikaci nasazené do Azure Spring Apps. Další informace najdete v tématu Kurz: Mapování existující vlastní domény na Azure Spring Apps.
- Nasaďte službu Application Gateway ve virtuální síti nakonfigurované podle následujícího seznamu:
- Použijte Azure Spring Apps v back-endovém fondu, na který odkazuje přípona domény s
private.azuremicroservices.io
příponou . - Zahrňte naslouchací proces HTTPS, který používá stejný certifikát ze služby Key Vault.
- Nakonfigurujte virtuální síť s nastavením HTTP, které místo přípony
private.azuremicroservices.io
domény s příponou domény používají vlastní název domény nakonfigurovaný v Azure Spring Apps.
- Použijte Azure Spring Apps v back-endovém fondu, na který odkazuje přípona domény s
- Nakonfigurujte veřejný DNS tak, aby odkazovali na Službu Application Gateway.
Definování proměnných
Dále pomocí následujících příkazů definujte proměnné pro skupinu prostředků a virtuální síť, kterou jste vytvořili podle pokynů v nasazení Azure Spring Apps ve virtuální síti. Přizpůsobte hodnoty na základě skutečného prostředí. Při definování SPRING_APP_PRIVATE_FQDN
odeberte https://
z identifikátoru URI.
export SUBSCRIPTION='subscription-id'
export RESOURCE_GROUP='my-resource-group'
export LOCATION='eastus'
export SPRING_CLOUD_NAME='name-of-spring-cloud-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'
Přihlášení k Azure
Pomocí následujícího příkazu se přihlaste k Azure CLI a zvolte aktivní předplatné.
az login
az account set --subscription $SUBSCRIPTION
Získání certifikátu
Pro produkční nasazení budete pravděpodobně používat veřejně podepsaný certifikát. V tomto případě importujte certifikát do služby Azure Key Vault. Další informace najdete v tématu Kurz: Import certifikátu ve službě Azure Key Vault. Ujistěte se, že certifikát obsahuje celý řetěz certifikátů.
Konfigurace názvu veřejné domény v Azure Spring Apps
Provoz zadá aplikaci nasazenou v Azure Spring Apps s použitím názvu veřejné domény. Pokud chcete aplikaci nakonfigurovat tak, aby naslouchala tomuto názvu hostitele a aby to udělala přes HTTPS, přidejte do aplikace vlastní doménu pomocí následujících příkazů:
export KV_NAME='name-of-key-vault'
export KV_RG='resource-group-name-of-key-vault'
export CERT_NAME_IN_AZURE_SPRING_APPS='name-of-certificate-in-Azure-Spring-Apps'
export CERT_NAME_IN_KEY_VAULT='name-of-certificate-with-intermediaries-in-key-vault'
export DOMAIN_NAME=myapp.mydomain.com
# provide permissions to Azure Spring Apps to read the certificate from Key Vault:
export VAULTURI=$(az keyvault show \
--resource-group $KV_RG \
--name $KV_NAME \
--query properties.vaultUri \
--output tsv)
# get the object id for the Azure Spring Apps Domain-Management Service Principal:
export ASADM_OID=$(az ad sp show \
--id 03b39d0f-4213-4864-a245-b1476ec03169 \
--query objectId \
--output tsv)
# allow this Service Principal to read and list certificates and secrets from Key Vault:
az keyvault set-policy \
--resource-group $KV_RG \
--name $KV_NAME \
--object-id $ASADM_OID \
--certificate-permissions get list \
--secret-permissions get list
# add custom domain name and configure TLS using the certificate:
az spring certificate add \
--resource-group $RESOURCE_GROUP \
--service $SPRING_CLOUD_NAME \
--name $CERT_NAME_IN_AZURE_SPRING_APPS \
--vault-certificate-name $CERT_NAME_IN_KEY_VAULT \
--vault-uri $VAULTURI
az spring app custom-domain bind \
--resource-group $RESOURCE_GROUP \
--service $SPRING_CLOUD_NAME \
--domain-name $DOMAIN_NAME \
--certificate $CERT_NAME_IN_AZURE_SPRING_APPS \
--app $APPNAME
Vytvoření síťových prostředků
Brána Aplikace Azure lication, která se má vytvořit, připojí stejnou virtuální síť jako partnerský vztah k instanci služby Azure Spring Apps. Nejprve vytvořte novou podsíť pro službu Application Gateway ve virtuální síti pomocí az network vnet subnet create
a také vytvořte veřejnou IP adresu jako front-end služby Application Gateway pomocí az network public-ip create
.
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
Vytvoření spravované identity pro Službu Application Gateway
Application Gateway bude muset mít přístup ke službě Key Vault, aby mohl číst certifikát. K tomu použije spravovanou identitu přiřazenou uživatelem. Spravovanou identitu vytvořte pomocí následujícího příkazu:
export APPGW_IDENTITY_NAME='name-for-appgw-managed-identity'
az identity create \
--resource-group $RESOURCE_GROUP \
--name $APPGW_IDENTITY_NAME
Potom načtěte ID objektu pro spravovanou identitu, protože se později použije k udělení oprávnění pro přístup k certifikátu ve službě 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)
Nastavení zásad ve službě Key Vault
Nakonfigurujte službu Key Vault pomocí následujícího příkazu, aby spravovaná identita služby Application Gateway byla povolena pro přístup k certifikátu uloženému ve službě Key Vault:
az keyvault set-policy \
--name $KV_NAME \
--resource-group $KV_RG \
--object-id $APPGW_IDENTITY_OID \
--secret-permissions get list \
--certificate-permissions get list
Vytvoření služby Application Gateway
Vytvořte aplikační bránu pomocí az network application-gateway create
privátního plně kvalifikovaného názvu domény (FQDN) vaší aplikace jako servery v back-endovém fondu. Nezapomeňte použít spravovanou identitu přiřazenou uživatelem a odkazovat na certifikát ve službě Key Vault pomocí ID tajného klíče certifikátu. Potom aktualizujte nastavení HTTP tak az network application-gateway http-settings update
, aby používalo veřejný název hostitele.
export APPGW_NAME='name-for-application-gateway'
export KEYVAULT_SECRET_ID_FOR_CERT=$(az keyvault certificate show \
--name $CERT_NAME_IN_KEY_VAULT \
--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 443 \
--http-settings-protocol Https \
--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
Vytvoření aplikační brány azure může trvat až 30 minut.
Aktualizace nastavení HTTP tak, aby používala název domény k back-endu
Aktualizujte nastavení HTTP tak, aby používalo název veřejné domény jako název hostitele místo přípony domény s příponou .private.azuremicroservices.io, aby se provoz odesílal do 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
Kontrola nasazení služby Application Gateway
Po vytvoření zkontrolujte stav back-endu pomocí následujícího příkazu. Výstup tohoto příkazu umožňuje určit, jestli služba Application Gateway dosáhne vaší aplikace prostřednictvím privátního plně kvalifikovaného názvu domény.
az network application-gateway show-backend-health \
--name $APPGW_NAME \
--resource-group $RESOURCE_GROUP
Výstup označuje stav back-endového fondu v pořádku, jak je znázorněno v následujícím příkladu:
{
"backendAddressPools": [
{
"backendHttpSettingsCollection": [
{
"servers": [
{
"address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
"health": "Healthy",
"healthProbeLog": "Success. Received 200 status code",
"ipConfiguration": null
}
]
}
]
}
]
}
Konfigurace DNS a přístup k aplikaci
Teď nakonfigurujte veřejný DNS tak, aby odkazovali na Službu Application Gateway pomocí záznamu CNAME nebo A. Veřejnou adresu služby Application Gateway najdete pomocí následujícího příkazu:
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
--query [ipAddress] \
--output tsv
Teď můžete k aplikaci přistupovat pomocí názvu veřejné domény.