Buka aplikasi dengan TLS ujung ke ujung dalam jaringan virtual
Catatan
Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.
Artikel ini berlaku untuk: ️✔️ Tingkat Dasar/Standar ️✔️ Tingkat Enterprise
Artikel ini akan menjelaskan cara mengekspos aplikasi ke internet menggunakan Application Gateway. Saat instans layanan Azure Spring Apps disebarkan di jaringan virtual Anda, aplikasi pada instans layanan hanya dapat diakses di jaringan privat. Untuk membuat aplikasi dapat diakses di Internet, Anda perlu berintegrasi dengan Azure Application Gateway.
Prasyarat
- Azure CLI versi 2.0.4 atau yang lebih baru.
- Instans layanan Azure Spring Apps yang disebarkan dalam jaringan virtual dengan aplikasi yang dapat diakses melalui jaringan privat menggunakan
.private.azuremicroservices.ioakhiran domain default. Untuk informasi selengkapnya, lihat Menyebarkan Azure Spring Apps dalam jaringan virtual - Domain kustom yang akan digunakan untuk mengakses aplikasi.
- Sertifikat, disimpan di Key Vault, yang cocok dengan domain kustom yang akan digunakan untuk membentuk pendengar HTTPS. Untuk informasi selengkapnya, lihat Tutorial: Mengimpor sertifikat di Azure Key Vault.
Mengonfigurasikan Application Gateway for Azure Spring Apps
Kami menyarankan agar nama domain, seperti yang dilihat oleh browser, sama dengan nama host yang digunakan Application Gateway untuk mengarahkan lalu lintas ke backend Azure Spring Apps. Rekomendasi ini memberikan pengalaman terbaik saat menggunakan Application Gateway untuk mengekspos aplikasi yang di-host di Azure Spring Apps dan berada di jaringan virtual. Jika domain yang diekspos oleh Application Gateway berbeda dari domain yang diterima oleh Azure Spring Apps, cookie dan URL pengalihan yang dihasilkan (misalnya) dapat rusak.
Untuk mengonfigurasikan Application Gateway di depan Azure Spring Apps, gunakan langkah-langkah berikut.
- Ikuti instruksi di Menyebarkan Azure Spring Apps di jaringan virtual.
- Ikuti instruksi di Mengakses aplikasi Anda di jaringan privat.
- Dapatkan sertifikat untuk domain pilihan Anda dan simpan di Key Vault. Untuk informasi selengkapnya, lihat Tutorial: Mengimpor sertifikat di Azure Key Vault.
- Konfigurasikan domain kustom dan sertifikat yang sesuai dari Key Vault pada aplikasi yang disebarkan ke Azure Spring Apps. Untuk informasi selengkapnya, lihat Tutorial: Memetakan domain kustom yang sudah ada ke Azure Spring Apps.
- Sebarkan Application Gateway di jaringan virtual yang dikonfigurasikan sesuai dengan daftar berikut:
- Gunakan Azure Spring Apps di kumpulan backend, direferensikan oleh domain yang diakhiri dengan
private.azuremicroservices.io. - Sertakan pendengar HTTPS menggunakan sertifikat yang sama dari Key Vault.
- Konfigurasikan jaringan virtual dengan pengaturan HTTP yang menggunakan nama domain kustom yang dikonfigurasikan di Azure Spring Apps, bukan domain yang diakhiri dengan
private.azuremicroservices.io.
- Gunakan Azure Spring Apps di kumpulan backend, direferensikan oleh domain yang diakhiri dengan
- Konfigurasikan DNS publik Anda untuk menunjuk ke Application Gateway.
Tentukan variabel
Berikutnya, gunakan perintah berikut untuk menentukan variabel untuk grup sumber daya dan jaringan virtual yang Anda buat sebagaimana diarahkan dalam Menyebarkan Azure Spring Apps di jaringan virtual. Sesuaikan nilai berdasarkan lingkungan Anda yang sebenarnya. Saat Anda menentukan SPRING_APP_PRIVATE_FQDN, hapus https:// dari URI.
SUBSCRIPTION='subscription-id'
RESOURCE_GROUP='my-resource-group'
LOCATION='eastus'
SPRING_CLOUD_NAME='name-of-spring-cloud-instance'
APPNAME='name-of-app-in-azure-spring-apps'
SPRING_APP_PRIVATE_FQDN='$APPNAME.private.azuremicroservices.io'
VIRTUAL_NETWORK_NAME='azure-spring-apps-vnet'
APPLICATION_GATEWAY_SUBNET_NAME='app-gw-subnet'
APPLICATION_GATEWAY_SUBNET_CIDR='10.1.2.0/24'
Masuk ke Azure
Gunakan perintah berikut untuk masuk ke Azure CLI dan pilih langganan aktif Anda.
az login
az account set --subscription $SUBSCRIPTION
Memperoleh sertifikat
- Menggunakan sertifikat yang ditandatangani publik
- Menggunakan sertifikat yang ditandatangani sendiri
Untuk penyebaran produksi, kemungkinan besar Anda akan menggunakan sertifikat yang ditandatangani publik. Dalam kasus ini, impor sertifikat di Azure Key Vault. Untuk informasi selengkapnya, lihat Tutorial: Mengimpor sertifikat di Azure Key Vault. Pastikan sertifikat mencakup seluruh rantai sertifikat.
Konfigurasikan nama domain publik di Azure Spring Apps
Lalu lintas akan memasuki aplikasi yang disebarkan di Azure Spring Apps menggunakan nama domain publik. Untuk mengonfigurasikan aplikasi Anda untuk mendengarkan nama host ini dan melakukannya melalui HTTPS, gunakan perintah berikut untuk menambahkan domain kustom ke aplikasi Anda:
KV_NAME='name-of-key-vault'
KV_RG='resource-group-name-of-key-vault'
CERT_NAME_IN_AZURE_SPRING_APPS='name-of-certificate-in-Azure-Spring-Apps'
CERT_NAME_IN_KEY_VAULT='name-of-certificate-with-intermediaries-in-key-vault'
DOMAIN_NAME=myapp.mydomain.com
# provide permissions to Azure Spring Apps to read the certificate from Key Vault:
VAULTURI=$(az keyvault show -n $KV_NAME -g $KV_RG --query properties.vaultUri -o tsv)
# get the object id for the Azure Spring Apps Domain-Management Service Principal:
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 -g $KV_RG -n $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
Membuat sumber daya jaringan
Azure Application Gateway yang akan dibuat akan bergabung dengan jaringan virtual yang sama seperti--atau jaringan virtual yang di-peering ke--contoh layanan Azure Spring Apps. Pertama-tama, buat subnet baru untuk Application Gateway di jaringan virtual menggunakan az network vnet subnet create, dan juga buat alamat IP Publik sebagai Frontend Application Gateway menggunakan az network public-ip create.
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
Buat Identitas Terkelola untuk Application Gateway.
Application Gateway akan harus dapat mengakses Key Vault untuk membaca sertifikat. Untuk melakukannya, ini akan menggunakan Identitas Terkelola yang ditetapkan pengguna. Buat Identitas Terkelola dengan menggunakan perintah berikut:
APPGW_IDENTITY_NAME='name-for-appgw-managed-identity'
az identity create \
--resource-group $RESOURCE_GROUP \
--name $APPGW_IDENTITY_NAME
Kemudian ambil objectId untuk Identitas Terkelola karena akan digunakan nanti untuk memberikan hak untuk mengakses sertifikat di Key Vault:
APPGW_IDENTITY_CLIENTID=$(az identity show --resource-group $RESOURCE_GROUP --name $APPGW_IDENTITY_NAME --query clientId --output tsv)
APPGW_IDENTITY_OID=$(az ad sp show --id $APPGW_IDENTITY_CLIENTID --query objectId --output tsv)
Mengatur kebijakan pada Key Vault
Konfigurasikan Key Vault menggunakan perintah berikut sehingga Identitas Terkelola untuk Application Gateway diizinkan untuk mengakses sertifikat yang disimpan di 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
Membuat Application Gateway
Buat gateway aplikasi menggunakan az network application-gateway create dan tentukan nama domain yang sepenuhnya memenuhi syarat (FQDN) pribadi aplikasi sebagai server di kumpulan backend. Pastikan untuk menggunakan Identitas Terkelola yang ditetapkan pengguna dan menunjuk ke sertifikat di Key Vault menggunakan ID Rahasia sertifikat. Kemudian, perbarui pengaturan HTTP menggunakan az network application-gateway http-settings update untuk menggunakan nama host publik.
APPGW_NAME='name-for-application-gateway'
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
Diperlukan waktu hingga 30 menit bagi Azure untuk membuat gateway aplikasi.
Memperbarui Pengaturan HTTP untuk menggunakan nama domain ke backend
- Menggunakan sertifikat yang ditandatangani publik
- Menggunakan sertifikat yang ditandatangani sendiri
Perbarui pengaturan HTTP untuk menggunakan nama domain publik sebagai nama host alih-alih domain yang diakhiri dengan ".private.azuremicroservices.io" untuk mengirim lalu lintas ke Azure Spring Apps dengan.
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
Periksa penyebaran Application Gateway
Setelah dibuat, periksa kesehatan backend dengan menggunakan perintah berikut. Output dari perintah ini memungkinkan Anda menentukan apakah application gateway mencapai aplikasi Anda melalui FQDN privatnya.
az network application-gateway show-backend-health \
--name $APPGW_NAME \
--resource-group $RESOURCE_GROUP
Output menunjukkan status sehat kumpulan backend, seperti yang ditunjukkan pada contoh berikut:
{
"backendAddressPools": [
{
"backendHttpSettingsCollection": [
{
"servers": [
{
"address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
"health": "Healthy",
"healthProbeLog": "Success. Received 200 status code",
"ipConfiguration": null
}
]
}
]
}
]
}
Mengonfigurasikan DNS dan mengakses aplikasi
Sekarang konfigurasikan DNS publik untuk menunjuk ke Application Gateway menggunakan CNAME atau A-record. Anda dapat menemukan alamat publik untuk Application Gateway dengan menggunakan perintah berikut:
az network public-ip show \
--resource-group $RESOURCE_GROUP \
--name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
--query [ipAddress] \
--output tsv
Anda sekarang dapat mengakses aplikasi menggunakan nama domain publik.