Sdílet prostřednictvím


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ě.

  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 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_FQDNodeberte 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 createa 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.

Další kroky