Uwidacznianie aplikacji w Internecie za pomocą kończenia żądań protokołu TLS w usłudze Application Gateway
Uwaga
Plany Podstawowa, Standardowa i Enterprise zostaną wycofane od połowy marca 2025 r. z 3-letnim okresem emerytalnym. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz ogłoszenie o wycofaniu usługi Azure Spring Apps.
Zużycie standardowe i dedykowany plan zostaną wycofane od 30 września 2024 r. z całkowitym zamknięciem po sześciu miesiącach. Zalecamy przejście do usługi Azure Container Apps. Aby uzyskać więcej informacji, zobacz Migrowanie użycia usługi Azure Spring Apps w warstwie Standardowa i dedykowanego planu do usługi Azure Container Apps.
W tym artykule wyjaśniono, jak uwidaczniać aplikacje w Internecie przy użyciu usługi Application Gateway.
Po wdrożeniu wystąpienia usługi Azure Spring Apps w sieci wirtualnej aplikacje w wystąpieniu usługi są dostępne tylko w sieci prywatnej. Aby aplikacje były dostępne w Internecie, należy zintegrować je z usługą aplikacja systemu Azure Gateway. Przychodzący zaszyfrowany ruch można odszyfrować w bramie aplikacji lub przekazać go do usługi Azure Spring Apps zaszyfrowane w celu uzyskania kompleksowego protokołu TLS/SSL. Na potrzeby tworzenia i testowania można rozpocząć od zakończenia protokołu SSL w bramie aplikacji, która jest omówiona w tym przewodniku. W przypadku środowiska produkcyjnego zalecamy kompleksowe protokoły TLS/SSL z certyfikatem prywatnym, zgodnie z opisem w temacie Uwidacznij aplikacje z kompleksową protokołem TLS w sieci wirtualnej.
Wymagania wstępne
- Interfejs wiersza polecenia platformy Azure w wersji 2.0.4 lub nowszej.
- Wystąpienie usługi Azure Spring Apps wdrożone w sieci wirtualnej z aplikacją dostępną za pośrednictwem sieci prywatnej przy użyciu domyślnego
.private.azuremicroservices.io
sufiksu domeny. Aby uzyskać więcej informacji, zobacz Wdrażanie usługi Azure Spring Apps w sieci wirtualnej - Domena niestandardowa, która ma być używana do uzyskiwania dostępu do aplikacji.
- Certyfikat przechowywany w usłudze Key Vault, który pasuje do domeny niestandardowej, która ma być używana do ustanowienia odbiornika HTTPS. Aby uzyskać więcej informacji, zobacz Samouczek: importowanie certyfikatu w usłudze Azure Key Vault.
Konfigurowanie usługi Application Gateway dla usługi Azure Spring Apps
Zalecamy, aby nazwa domeny, jak widać w przeglądarce, jest taka sama jak nazwa hosta używana przez usługę Application Gateway do kierowania ruchu do zaplecza usługi Azure Spring Apps. To zalecenie zapewnia najlepsze środowisko korzystania z usługi Application Gateway w celu uwidaczniania aplikacji hostowanych w usłudze Azure Spring Apps i znajdujących się w sieci wirtualnej. Jeśli domena uwidoczniona przez usługę Application Gateway różni się od domeny zaakceptowanej przez usługę Azure Spring Apps, pliki cookie i wygenerowane adresy URL przekierowania (na przykład) mogą być uszkodzone. Aby uzyskać więcej informacji, zobacz Zachowywanie nazwy hosta.
Aby skonfigurować usługę Application Gateway przed usługą Azure Spring Apps w prywatnej sieci wirtualnej, wykonaj następujące kroki.
- Postępuj zgodnie z instrukcjami w artykule Deploy Azure Spring Apps in a virtual network (Wdrażanie usługi Azure Spring Apps w sieci wirtualnej).
- Postępuj zgodnie z instrukcjami w artykule Uzyskiwanie dostępu do aplikacji w sieci prywatnej.
- Uzyskaj certyfikat dla wybranej domeny i zapisz go w usłudze Key Vault. Aby uzyskać więcej informacji, zobacz Samouczek: importowanie certyfikatu w usłudze Azure Key Vault.
- Skonfiguruj domenę niestandardową i odpowiedni certyfikat z usługi Key Vault w aplikacji wdrożonej w usłudze Azure Spring Apps. Aby uzyskać więcej informacji, zobacz Samouczek: mapowania istniejącej domeny niestandardowej na usługę Azure Spring Apps.
- Wdróż usługę Application Gateway w sieci wirtualnej skonfigurowanej zgodnie z następującą listą:
- Użyj usługi Azure Spring Apps w puli zaplecza, do których odwołuje się domena z sufiksem
private.azuremicroservices.io
. - Dołącz odbiornik HTTPS przy użyciu tego samego certyfikatu z usługi Key Vault.
- Skonfiguruj sieć wirtualną przy użyciu ustawień PROTOKOŁU HTTP, które używają niestandardowej nazwy domeny skonfigurowanej w usłudze Azure Spring Apps zamiast sufiksu domeny z
private.azuremicroservices.io
.
- Użyj usługi Azure Spring Apps w puli zaplecza, do których odwołuje się domena z sufiksem
- Skonfiguruj publiczny system DNS, aby wskazywał bramę aplikacji.
Definiowanie zmiennych
Następnie użyj następujących poleceń, aby zdefiniować zmienne dla grupy zasobów i sieci wirtualnej utworzonej zgodnie z instrukcjami w temacie Wdrażanie usługi Azure Spring Apps w sieci wirtualnej. Zastąp <symbole zastępcze ...> rzeczywistymi wartościami na podstawie rzeczywistego środowiska. Po zdefiniowaniu SPRING_APP_PRIVATE_FQDN
elementu usuń https://
element z identyfikatora 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'
Logowanie się do platformy Azure
Użyj następującego polecenia, aby zalogować się do interfejsu wiersza polecenia platformy Azure i wybrać aktywną subskrypcję.
az login
az account set --subscription $SUBSCRIPTION
Konfigurowanie nazwy domeny publicznej w usłudze Azure Spring Apps
Ruch spowoduje wprowadzenie aplikacji wdrożonej w usłudze Azure Spring Apps przy użyciu nazwy domeny publicznej. Aby skonfigurować aplikację do nasłuchiwania tej nazwy hosta za pośrednictwem protokołu HTTP, użyj następujących poleceń, aby dodać domenę niestandardową do aplikacji, zastępując <symbole zastępcze ...> rzeczywistymi wartościami:
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
Tworzenie zasobów sieciowych
Brama aplikacji, która ma zostać utworzona, dołączy tę samą sieć wirtualną co wystąpienie usługi Azure Spring Apps. Najpierw utwórz nową podsieć dla bramy aplikacji w sieci wirtualnej, a następnie utwórz publiczny adres IP jako fronton bramy aplikacji, jak pokazano w poniższym przykładzie.
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
Tworzenie tożsamości zarządzanej dla bramy aplikacji
Brama aplikacji musi mieć dostęp do usługi Key Vault, aby odczytać certyfikat. W tym celu brama aplikacji będzie używać tożsamości zarządzanej przypisanej przez użytkownika. Aby uzyskać więcej informacji, zobacz Co to są tożsamości zarządzane dla zasobów platformy Azure? Utwórz tożsamość zarządzaną przy użyciu następującego polecenia, zastępując <symbol zastępczy ...>
export APPGW_IDENTITY_NAME='<name-for-appgw-managed-identity>'
az identity create \
--resource-group $RESOURCE_GROUP \
--name $APPGW_IDENTITY_NAME
Następnie użyj następującego polecenia, aby pobrać objectId
element dla tożsamości zarządzanej. Ta wartość będzie używana później w celu udzielenia praw dostępu do certyfikatu w usłudze 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)
Ustawianie zasad w usłudze Key Vault
Skonfiguruj usługę Key Vault przy użyciu następującego polecenia, aby tożsamość zarządzana bramy aplikacji mogła uzyskać dostęp do certyfikatu przechowywanego w usłudze 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
Tworzenie bramy aplikacji
Utwórz bramę aplikacji przy użyciu i az network application-gateway create
określ prywatną w pełni kwalifikowaną nazwę domeny (FQDN) aplikacji jako serwery w puli zaplecza. Pamiętaj, aby użyć tożsamości zarządzanej przypisanej przez użytkownika i wskazać certyfikat w usłudze Key Vault przy użyciu identyfikatora tajnego certyfikatu.
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
Tworzenie bramy aplikacji na platformie Azure może potrwać do 30 minut.
Aktualizowanie ustawień PROTOKOŁU HTTP w celu używania nazwy domeny w kierunku zaplecza
Zaktualizuj ustawienia PROTOKOŁU HTTP, aby używać nazwy domeny publicznej jako nazwy hosta zamiast sufiksu domeny z sufiksem .private.azuremicroservices.io
w celu wysyłania ruchu do usługi Azure Spring Apps za pomocą polecenia .
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
Sprawdzanie wdrożenia bramy aplikacji
Po utworzeniu sprawdź kondycję zaplecza, używając następującego polecenia. Dane wyjściowe tego polecenia umożliwiają określenie, czy brama aplikacji dociera do aplikacji za pośrednictwem jej prywatnej w pełni kwalifikowanej nazwy domeny (FQDN).
az network application-gateway show-backend-health \
--name $APPGW_NAME \
--resource-group $RESOURCE_GROUP
Dane wyjściowe wskazują stan dobrej kondycji puli zaplecza, jak pokazano w poniższym przykładzie:
{
"backendAddressPools": [
{
"backendHttpSettingsCollection": [
{
"servers": [
{
"address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
"health": "Healthy",
"healthProbeLog": "Success. Received 200 status code",
"ipConfiguration": null
}
]
}
]
}
]
}
Konfigurowanie systemu DNS i uzyskiwanie dostępu do aplikacji
Skonfiguruj publiczny system DNS, aby wskazywał bramę aplikacji przy użyciu rekordu CNAME lub A. Publiczny adres bramy aplikacji można znaleźć przy użyciu następującego polecenia:
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
--query [ipAddress] \
--output tsv
Teraz możesz uzyskać dostęp do aplikacji przy użyciu nazwy domeny publicznej.
Czyszczenie zasobów
Jeśli planujesz kontynuować pracę z kolejnymi artykułami, możesz pozostawić te zasoby na swoim miejscu. Gdy grupa zasobów nie będzie już potrzebna, usuń grupę zasobów, która usuwa zasoby w grupie zasobów. Aby usunąć grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następującego polecenia:
az group delete --name $RESOURCE_GROUP