Sdílet prostřednictvím


Zveřejnění aplikací na internetu s ukončením protokolu TLS ve službě Application Gateway

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 vysvětluje, jak zpřístupnit aplikace na internetu pomocí služby Application Gateway.

Při nasazení instance služby Azure Spring Apps ve vaší virtuální síti (VNET) jsou aplikace v instanci služby přístupné pouze 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. Příchozí šifrovaný provoz je možné dešifrovat ve službě Application Gateway nebo je možné ho předat do Azure Spring Apps zašifrovaný, aby se dosáhlo kompletního protokolu TLS/SSL. Pro účely vývoje a testování můžete začít s ukončením protokolu SSL ve službě Application Gateway, která je popsána v této příručce. V produkčním prostředí doporučujeme kompletní protokol TLS/SSL s privátním certifikátem, jak je popsáno v tématu Zveřejnění aplikací s kompletním protokolem TLS ve virtuální síti.

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 službou Azure Spring Apps v privátní virtuální síti, postupujte následovně.

  1. Postupujte podle pokynů v tématu Nasazení azure Spring Apps ve virtuální síti.
  2. Postupujte podle pokynů v Accessu k aplikaci v privátní síti.
  3. 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.
  4. 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.
  5. 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.iopří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.iodomény s příponou domény používají vlastní název domény nakonfigurovaný v Azure Spring Apps.
  6. Nakonfigurujte veřejný DNS tak, aby odkazovali na aplikační bránu.

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. <Zástupné symboly ...> nahraďte skutečnými hodnotami na základě vašeho skutečného prostředí. Při definování SPRING_APP_PRIVATE_FQDNodeberte https:// z identifikátoru 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'

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

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 nakonfigurovat aplikaci tak, aby naslouchala tomuto názvu hostitele přes HTTP, použijte následující příkazy k přidání vlastní domény do vaší aplikace a nahrazení <> zástupných symbolů skutečnými hodnotami:

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

Vytvoření síťových prostředků

Služba Application Gateway, která se má vytvořit, se připojí ke stejné virtuální síti jako instance služby Azure Spring Apps. Nejprve vytvořte novou podsíť pro aplikační bránu ve virtuální síti a pak vytvořte veřejnou IP adresu jako front-end aplikační brány, jak je znázorněno v následujícím příkladu.

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 aplikační bránu

Vaše aplikační brána bude muset mít přístup ke službě Key Vault, aby mohla číst certifikát. K tomu bude aplikační brána používat spravovanou identitu přiřazenou uživatelem. Další informace najdete v tématu Co jsou spravované identity pro prostředky Azure? Pomocí následujícího příkazu vytvořte spravovanou identitu a nahraďte <zástupný symbol ...> :

export APPGW_IDENTITY_NAME='<name-for-appgw-managed-identity>'
az identity create \
    --resource-group $RESOURCE_GROUP \
    --name $APPGW_IDENTITY_NAME

Potom pomocí následujícího příkazu načtěte spravovanou objectId identitu. Tato hodnota se použije později 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 pro aplikační bránu byla povolena pro přístup k certifikátu uloženému ve službě 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

Vytvoření brány 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.

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

Vytvoření aplikační brány azure může trvat až 30 minut.

Aktualizace nastavení HTTP tak, aby používala název domény směrem 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, pomocí .private.azuremicroservices.io které se má odesílat provoz 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 aplikační brána dosáhne vaší aplikace prostřednictvím svého privátního plně kvalifikovaného názvu domény (FQDN).

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

Nakonfigurujte veřejný DNS tak, aby odkazovali na aplikační bránu 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.

Vyčištění prostředků

Pokud máte v plánu pokračovat v práci s dalšími články, možná budete chtít tyto prostředky ponechat na místě. Pokud už ji nepotřebujete, odstraňte skupinu prostředků, která odstraní prostředky ve skupině prostředků. Pokud chcete odstranit skupinu prostředků pomocí Azure CLI, použijte následující příkaz:

az group delete --name $RESOURCE_GROUP

Další kroky