Aracılığıyla paylaş


Uygulamaları bir sanal ağda uçtan uca TLS ile kullanıma sunma

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

Bu makale şunlar için geçerlidir: ✔️ Temel/Standart ✔️ Kurumsal

Bu makalede Application Gateway kullanarak uygulamaların İnternet'te nasıl kullanıma sunulur? Sanal ağınızda bir Azure Spring Apps hizmet örneği dağıtıldığında, hizmet örneğindeki uygulamalara yalnızca özel ağ üzerinden erişilebilir. Uygulamaların İnternet'te erişilebilir olmasını sağlamak için Azure Uygulaması lication Gateway ile tümleştirmeniz gerekir.

Önkoşullar

  • Azure CLI 2.0.4 veya sonraki sürümü.
  • Varsayılan .private.azuremicroservices.io etki alanı soneki kullanılarak özel ağ üzerinden erişilebilen bir uygulamayla sanal ağda dağıtılan bir Azure Spring Apps hizmet örneği. Daha fazla bilgi için bkz . Azure Spring Apps'i sanal ağda dağıtma
  • Uygulamaya erişmek için kullanılacak özel bir etki alanı.
  • Key Vault'ta depolanan ve HTTPS dinleyicisini oluşturmak için kullanılacak özel etki alanıyla eşleşen bir sertifika. Daha fazla bilgi için bkz . Öğretici: Azure Key Vault'ta sertifika içeri aktarma.

Azure Spring Apps için Application Gateway'i yapılandırma

Tarayıcı tarafından görüldüğü gibi etki alanı adının Application Gateway'in trafiği Azure Spring Apps arka ucuna yönlendirmek için kullandığı ana bilgisayar adıyla aynı olmasını öneririz. Bu öneri, Azure Spring Apps'te barındırılan ve bir sanal ağda bulunan uygulamaları kullanıma sunmak için Application Gateway kullanırken en iyi deneyimi sağlar. Application Gateway tarafından sunulan etki alanı Azure Spring Apps tarafından kabul edilen etki alanından farklıysa tanımlama bilgileri ve oluşturulan yeniden yönlendirme URL'leri (örneğin) bozulabilir. Daha fazla bilgi için bkz . Konak adı koruma.

Azure Spring Apps'in önünde Application Gateway'i yapılandırmak için aşağıdaki adımları kullanın.

  1. Azure Spring Apps'i sanal ağa dağıtma başlığındaki yönergeleri izleyin.
  2. Özel bir ağda uygulamanıza erişme başlığındaki yönergeleri izleyin.
  3. Seçtiğiniz etki alanı için bir sertifika alın ve bunu Key Vault'ta depolayın. Daha fazla bilgi için bkz . Öğretici: Azure Key Vault'ta sertifika içeri aktarma.
  4. Azure Spring Apps'e dağıtılan bir uygulamada Key Vault'tan özel bir etki alanı ve ilgili sertifika yapılandırın. Daha fazla bilgi için bkz . Öğretici: Mevcut özel etki alanını Azure Spring Apps ile eşleme.
  5. Application Gateway'i aşağıdaki listeye göre yapılandırılmış bir sanal ağa dağıtın:
    • arka uç havuzunda Azure Spring Apps'i kullanın ve ile private.azuremicroservices.ioekli etki alanı soneki tarafından başvurulur.
    • Key Vault'tan aynı sertifikayı kullanan bir HTTPS dinleyicisi ekleyin.
    • Sanal ağı, ile belirtilen etki alanı soneki yerine Azure Spring Apps'te yapılandırılmış özel etki alanı adını kullanan HTTP ayarlarıyla private.azuremicroservices.ioyapılandırın.
  6. Genel DNS'nizi Application Gateway'e işaret eden şekilde yapılandırın.

Değişkenleri tanımlama

Ardından, Azure Spring Apps'i bir sanal ağda dağıtma bölümünde belirtildiği gibi oluşturduğunuz kaynak grubu ve sanal ağ için değişkenleri tanımlamak için aşağıdaki komutları kullanın. Değerleri gerçek ortamınıza göre özelleştirin. tanımladığınızda SPRING_APP_PRIVATE_FQDNURI'den kaldırın https:// .

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'

Azure'da oturum açma

Azure CLI'da oturum açmak ve etkin aboneliğinizi seçmek için aşağıdaki komutu kullanın.

az login
az account set --subscription $SUBSCRIPTION

Sertifika alma

Üretim dağıtımları için büyük olasılıkla genel olarak imzalanan bir sertifika kullanacaksınız. Bu durumda sertifikayı Azure Key Vault'a aktarın. Daha fazla bilgi için bkz . Öğretici: Azure Key Vault'ta sertifika içeri aktarma. Sertifikanın tüm sertifika zincirini içerdiğinden emin olun.

Azure Spring Apps'te genel etki alanı adını yapılandırma

Trafik, genel etki alanı adını kullanarak Azure Spring Apps'te dağıtılan uygulamayı girer. Uygulamanızı bu ana bilgisayar adını dinleyecek ve HTTPS üzerinden yapacak şekilde yapılandırmak için aşağıdaki komutları kullanarak uygulamanıza özel bir etki alanı ekleyin:

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

Ağ kaynakları oluşturma

Oluşturulacak Azure Uygulaması Lication Gateway, Azure Spring Apps hizmet örneğiyle aynı sanal ağı veya eşlenmiş sanal ağı birleştirir. önce kullanarak az network vnet subnet createsanal ağda Application Gateway için yeni bir alt ağ oluşturun ve ayrıca kullanarak az network public-ip createApplication Gateway'in Ön Ucu olarak bir Genel IP adresi oluşturun.

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

Application Gateway için yönetilen kimlik oluşturma

Application Gateway'in sertifikayı okumak için Key Vault'a erişebilmesi gerekir. Bunu yapmak için kullanıcı tarafından atanan yönetilen kimliği kullanır. Aşağıdaki komutu kullanarak yönetilen kimliği oluşturun:

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

Ardından, daha sonra Key Vault'ta sertifikaya erişim hakları vermek için kullanılacağından yönetilen kimliğin objectId değerini getirin:

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)

Key Vault'ta ilke ayarlama

Application Gateway'in yönetilen kimliğinin Key Vault'ta depolanan sertifikaya erişmesine izin vermek için aşağıdaki komutu kullanarak Key Vault'ı yapılandırın:

az keyvault set-policy \
    --name $KV_NAME \
    --resource-group $KV_RG \
    --object-id $APPGW_IDENTITY_OID \
    --secret-permissions get list \
    --certificate-permissions get list

Application Gateway oluşturma

kullanarak az network application-gateway create bir uygulama ağ geçidi oluşturun ve arka uç havuzunda sunucu olarak uygulamanızın özel tam etki alanı adını (FQDN) belirtin. Kullanıcı tarafından atanan yönetilen kimliği kullandığınızdan ve sertifikanın Gizli Dizi Kimliğini kullanarak Key Vault'taki sertifikayı işaret etmeyi unutmayın. Ardından genel ana bilgisayar adını kullanmak için kullanarak az network application-gateway http-settings update HTTP ayarını güncelleştirin.

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

Azure'ın uygulama ağ geçidini oluşturması 30 dakika kadar sürebilir.

HTTP Ayarlar arka uç için etki alanı adını kullanacak şekilde güncelleştirme

Ile Azure Spring Apps'e trafik göndermek için ".private.azuremicroservices.io" ile belirtilen etki alanı soneki yerine ana bilgisayar adı olarak genel etki alanı adını kullanacak şekilde HTTP ayarlarını güncelleştirin.

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

Application Gateway dağıtımını denetleme

Oluşturulduktan sonra aşağıdaki komutu kullanarak arka uç durumunu denetleyin. Bu komutun çıkışı, uygulama ağ geçidinin özel FQDN'siyle uygulamanıza ulaşıp ulaşmadığını belirlemenizi sağlar.

az network application-gateway show-backend-health \
    --name $APPGW_NAME \
    --resource-group $RESOURCE_GROUP

Çıkış, aşağıdaki örnekte gösterildiği gibi arka uç havuzunun iyi durumda olduğunu gösterir:

{
  "backendAddressPools": [
    {
      "backendHttpSettingsCollection": [
        {
          "servers": [
            {
              "address": "my-azure-spring-apps-hello-vnet.private.azuremicroservices.io",
              "health": "Healthy",
              "healthProbeLog": "Success. Received 200 status code",
              "ipConfiguration": null
            }
          ]
        }
      ]
    }
  ]
}

DNS'yi yapılandırma ve uygulamaya erişme

Şimdi genel DNS'yi CNAME veya A kaydı kullanarak Application Gateway'e işaret eden şekilde yapılandırın. Aşağıdaki komutu kullanarak Application Gateway'in genel adresini bulabilirsiniz:

az network public-ip show \
    --resource-group $RESOURCE_GROUP \
    --name $APPLICATION_GATEWAY_PUBLIC_IP_NAME \
    --query [ipAddress] \
    --output tsv

Artık genel etki alanı adını kullanarak uygulamaya erişebilirsiniz.

Sonraki adımlar