Azure Resource Manager şablonu kullanarak ASE oluşturma

Genel bakış

Önemli

Bu makale, Yalıtılmış App Service planlarıyla kullanılan App Service Ortamı v2 hakkındadır. App Service Ortamı v2, 31 Ağustos 2024 tarihinde kullanımdan kaldırılacaktır. Kullanımı daha kolay olan ve daha güçlü bir altyapı üzerinde çalışan yeni bir App Service Ortamı sürümü vardır. Yeni sürüm hakkında daha fazla bilgi edinmek için App Service Ortamı giriş ile başlayın. Şu anda App Service Ortamı v2 kullanıyorsanız, yeni sürüme geçmek için lütfen bu makaledeki adımları izleyin.

29 Ocak 2024 itibarıyla ARM/Bicep şablonları, Azure Portalı, Azure CLI veya REST API gibi kullanılabilir yöntemlerden herhangi birini kullanarak yeni App Service Ortamı v2 kaynakları oluşturamıyabilirsiniz. Kaynak silme ve veri kaybını önlemek için 31 Ağustos 2024'e kadar App Service Ortamı v3'e geçmeniz gerekir.

Azure Uygulaması Hizmet ortamları (ASE'ler) İnternet'te erişilebilir bir uç nokta veya Azure Sanal Ağ iç adresteki bir uç nokta ile oluşturulabilir. Bir iç uç noktayla oluşturulduğunda, bu uç nokta iç yük dengeleyici (ILB) adlı bir Azure bileşeni tarafından sağlanır. İç IP adresi üzerindeki ASE, ILB ASE olarak adlandırılır. Genel uç noktası olan ASE, Dış ASE olarak adlandırılır.

ASE, Azure portalı veya Azure Resource Manager şablonu kullanılarak oluşturulabilir. Bu makalede, Resource Manager şablonlarıyla Bir Dış ASE veya ILB ASE oluşturmanız için gereken adımlar ve söz dizimi açıklanabilir. Azure portalında ASEv2 oluşturmayı öğrenmek için bkz. [Dış ASE Yapma][MakeExternalASE] veya ILB ASE Yapma.

Azure portalında bir ASE oluşturduğunuzda, sanal ağınızı aynı anda oluşturabilir veya dağıtılacak önceden var olan bir sanal ağı seçebilirsiniz.

Bir şablondan ASE oluşturduğunuzda, şununla başlamalısınız:

  • Azure Sanal Ağ.
  • Bu sanal ağdaki bir alt ağ. Gelecekteki büyüme ve ölçeklendirme gereksinimlerini karşılamak için 256 adres içeren bir ASE alt ağ boyutu /24 öneririz. ASE oluşturulduktan sonra boyutu değiştiremezsiniz.
  • Dağıtmak istediğiniz abonelik.
  • Dağıtmak istediğiniz konum.

ASE oluşturma işleminizi otomatikleştirmek için aşağıdaki bölümlerde yer alan yönergeleri izleyin. Özel dnsSuffix ile bir ILB ASEv2 oluşturuyorsanız (örneğin, internal.contoso.com) yapmanız gereken birkaç şey daha vardır.

  1. Özel dnsSuffix içeren ILB ASE'niz oluşturulduktan sonra, ILB ASE etki alanınızla eşleşen bir TLS/SSL sertifikası karşıya yüklenmelidir.

  2. Karşıya yüklenen TLS/SSL sertifikası, ILB ASE'ye "varsayılan" TLS/SSL sertifikası olarak atanır. Bu sertifika, ASE'ye atanmış ortak kök etki alanını (örneğin, https://someapp.internal.contoso.com) kullandıklarında ILB ASE'de uygulamalara TLS/SSL trafiği için kullanılır.

ASE oluşturma

ASE ve ilişkili parametre dosyası oluşturan bir Resource Manager şablonu, ASEv2 için GitHub'da kullanılabilir.

ASE yapmak istiyorsanız, bu Resource Manager şablonu ASEv2 örneğini kullanın. azuredeploy.parameters.json dosyasındaki parametrelerin çoğu ILB ASE'lerinin ve Dış ASE'lerin oluşturulmasında yaygındır. Aşağıdaki listede, mevcut bir alt ağ ile bir ILB ASE oluşturduğunuzda özel notun veya benzersiz olan parametrelerin çağrıları yer alır.

Parametreler

  • aseName: Bu parametre benzersiz bir ASE adı tanımlar.
  • location: Bu parametre App Service Ortamı konumunu tanımlar.
  • existingVirtualNetworkName: Bu parametre, ASE'nin bulunacağı mevcut sanal ağın ve alt ağın sanal ağ adını tanımlar.
  • existingVirtualNetworkResourceGroup: parametresi, ASE'nin bulunacağı mevcut sanal ağın ve alt ağın kaynak grubu adını tanımlar.
  • subnetName: Bu parametre, ASE'nin bulunacağı mevcut sanal ağın ve alt ağın alt ağ adını tanımlar.
  • internalLoadBalancingMode: Çoğu durumda, bunu 3 olarak ayarlayın; bu, hem 80/443 bağlantı noktalarındaki HTTP/HTTPS trafiğinin hem de ASE'deki FTP hizmeti tarafından dinlenen denetim/veri kanalı bağlantı noktalarının ILB tarafından ayrılmış bir sanal ağ iç adresine bağlanacağı anlamına gelir. Bu özellik 2 olarak ayarlanırsa, yalnızca FTP hizmetiyle ilgili bağlantı noktaları (hem denetim hem de veri kanalları) bir ILB adresine bağlıdır. Bu özellik 0 olarak ayarlanırsa, HTTP/HTTPS trafiği genel VIP'de kalır.
  • dnsSuffix: Bu parametre ASE'ye atanan varsayılan kök etki alanını tanımlar. Azure Uygulaması Hizmeti'nin genel varyasyonunda, tüm web uygulamaları için varsayılan kök etki alanı azurewebsites.net. ILB ASE bir müşterinin sanal ağında dahili olduğundan, genel hizmetin varsayılan kök etki alanını kullanmak mantıklı değildir. Bunun yerine, bir ILB ASE'nin bir şirketin iç sanal ağı içinde kullanılması mantıklı olan varsayılan bir kök etki alanına sahip olması gerekir. Örneğin Contoso Corporation, çözümlenebilir ve yalnızca Contoso'nun sanal ağı içinde erişilebilir olması amaçlanan uygulamalar için varsayılan kök etki alanı olan internal.contoso.com kullanabilir. Özel kök etki alanı belirtmek için api sürümünü 2018-11-01 veya önceki sürümleri kullanmanız gerekir.
  • ipSslAddressCount: ILB ASE'lerinin tek bir ILB adresi olduğundan, bu parametre otomatik olarak azuredeploy.json dosyasında 0 değerine varsayılan olarak atanır. ILB ASE için açık IP-SSL adresi yok. Bu nedenle, ILB ASE için IP-SSL adres havuzu sıfır olarak ayarlanmalıdır. Aksi takdirde bir sağlama hatası oluşur.

azuredeploy.parameters.json dosyası doldurulduktan sonra PowerShell kod parçacığını kullanarak ASE'yi oluşturun. Dosya yollarını makinenizdeki Resource Manager şablon-dosya konumlarıyla eşleşecek şekilde değiştirin. Resource Manager dağıtım adı ve kaynak grubu adı için kendi değerlerinizi sağlamayı unutmayın:

$templatePath="PATH\azuredeploy.json"
$parameterPath="PATH\azuredeploy.parameters.json"

New-AzResourceGroupDeployment -Name "CHANGEME" -ResourceGroupName "YOUR-RG-NAME-HERE" -TemplateFile $templatePath -TemplateParameterFile $parameterPath

ASE'nin oluşturulması yaklaşık iki saat sürer. Ardından ASE, dağıtımı tetikleyen aboneliğin ASE'ler listesinde portalda gösterilir.

"Varsayılan" TLS/SSL sertifikasını karşıya yükleme ve yapılandırma

TLS/SSL sertifikası, uygulamalara TLS bağlantıları kurmak için kullanılan "varsayılan" TLS/SSL sertifikası olarak ASE ile ilişkilendirilmelidir. ASE'nin varsayılan DNS soneki internal.contoso.com ise, bağlantısı https://some-random-app.internal.contoso.com için *.internal.contoso.com için geçerli bir TLS/SSL sertifikası gerekir.

İç sertifika yetkililerini kullanarak, bir dış verenden sertifika satın alarak veya otomatik olarak imzalanan bir sertifika kullanarak geçerli bir TLS/SSL sertifikası alın. TLS/SSL sertifikasının kaynağından bağımsız olarak, aşağıdaki sertifika özniteliklerinin düzgün yapılandırılması gerekir:

  • Konu: Bu öznitelik *.your-root-domain-here.com olarak ayarlanmalıdır.
  • Konu Alternatif Adı: Bu öznitelik hem *.your-root-domain-here.com hem de *.scm.your-root-domain-here.com içermelidir. Her uygulamayla ilişkilendirilmiş SCM/Kudu sitesine yapılan TLS bağlantıları, form your-app-name.scm.your-root-domain-here.com adresini kullanır.

Geçerli bir TLS/SSL sertifikası elde olduğundan, iki hazırlık adımı daha gerekir. TLS/SSL sertifikasını .pfx dosyası olarak dönüştürün/kaydedin. .pfx dosyasının tüm ara ve kök sertifikaları içermesi gerektiğini unutmayın. Bir parola ile güvenli hale getirin.

TLS/SSL sertifikası bir Resource Manager şablonu kullanılarak karşıya yüklendiğinden .pfx dosyasının base64 dizesine dönüştürülmesi gerekir. Resource Manager şablonları metin dosyaları olduğundan, .pfx dosyasının base64 dizesine dönüştürülmesi gerekir. Bu şekilde, şablonun parametresi olarak eklenebilir.

Aşağıdaki PowerShell kod parçacığını kullanarak:

  • Otomatik olarak imzalanan sertifika oluşturun.
  • Sertifikayı .pfx dosyası olarak dışarı aktarın.
  • .pfx dosyasını base64 ile kodlanmış bir dizeye dönüştürün.
  • base64 ile kodlanmış dizeyi ayrı bir dosyaya kaydedin.

Base64 kodlaması için bu PowerShell kodu PowerShell betikleri blogundan uyarlanmıştır:

$certificate = New-SelfSignedCertificate -certstorelocation cert:\localmachine\my -dnsname "*.internal.contoso.com","*.scm.internal.contoso.com"

$certThumbprint = "cert:\localMachine\my\" + $certificate.Thumbprint
$password = ConvertTo-SecureString -String "CHANGETHISPASSWORD" -Force -AsPlainText

$fileName = "exportedcert.pfx"
Export-PfxCertificate -cert $certThumbprint -FilePath $fileName -Password $password     

$fileContentBytes = get-content -encoding byte $fileName
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$fileContentEncoded | set-content ($fileName + ".b64")

TLS/SSL sertifikası başarıyla oluşturulduktan ve base64 ile kodlanmış bir dizeye dönüştürüldükten sonra, örnek Resource Manager şablonunu GitHub'da varsayılan SSL sertifikasını yapılandırma şablonunu kullanın.

azuredeploy.parameters.json dosyasındaki parametreler burada listelenmiştir:

  • appServiceEnvironmentName: Yapılandırılan ILB ASE'nin adı.
  • existingAseLocation: ILB ASE'nin dağıtıldığı Azure bölgesini içeren metin dizesi. Örneğin: "Orta Güney ABD".
  • pfxBlobString: .pfx dosyasının based64 kodlanmış dize gösterimi. Daha önce gösterilen kod parçacığını kullanın ve "exportedcert.pfx.b64" içinde yer alan dizeyi kopyalayın. bunu pfxBlobString özniteliğinin değeri olarak yapıştırın.
  • password: .pfx dosyasının güvenliğini sağlamak için kullanılan parola.
  • certificateThumbprint: Sertifikanın parmak izi. Bu değeri PowerShell'den (örneğin, $certificate.Thumbprint önceki kod parçacığından) alırsanız, değeri olduğu gibi kullanabilirsiniz. Değeri Windows sertifikası iletişim kutusundan kopyalarsanız, fazlalık alanları ayırmayı unutmayın. certificateThumbprint AF3143EB61D43F6727842115BB7F17BBCECAECAE gibi görünmelidir.
  • certificateName: Sertifikayı tanımlamak için kullanılan kendi seçtiğiniz kolay dize tanımlayıcısı. Ad, TLS/SSL sertifikasını temsil eden Microsoft.Web/certificates varlığı için benzersiz Resource Manager tanımlayıcısının bir parçası olarak kullanılır. Ad şu son ekle bitmelidir : _yourASENameHere_InternalLoadBalancingASE. Azure portalı, sertifikanın ILB özellikli bir ASE'nin güvenliğini sağlamak için kullanıldığını gösteren bir gösterge olarak bu son eki kullanır.

Burada kısaltılmış bir azuredeploy.parameters.json örneği gösterilmiştir:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServiceEnvironmentName": {
      "value": "yourASENameHere"
    },
    "existingAseLocation": {
      "value": "East US 2"
    },
    "pfxBlobString": {
      "value": "MIIKcAIBAz...snip...snip...pkCAgfQ"
    },
    "password": {
      "value": "PASSWORDGOESHERE"
    },
    "certificateThumbprint": {
      "value": "AF3143EB61D43F6727842115BB7F17BBCECAECAE"
    },
    "certificateName": {
      "value": "DefaultCertificateFor_yourASENameHere_InternalLoadBalancingASE"
    }
  }
}

azuredeploy.parameters.json dosyası doldurulduktan sonra, PowerShell kod parçacığını kullanarak varsayılan TLS/SSL sertifikasını yapılandırın. Dosya yollarını Resource Manager şablon dosyalarının makinenizde bulunduğu konumla eşleşecek şekilde değiştirin. Resource Manager dağıtım adı ve kaynak grubu adı için kendi değerlerinizi sağlamayı unutmayın:

$templatePath="PATH\azuredeploy.json"
$parameterPath="PATH\azuredeploy.parameters.json"

New-AzResourceGroupDeployment -Name "CHANGEME" -ResourceGroupName "YOUR-RG-NAME-HERE" -TemplateFile $templatePath -TemplateParameterFile $parameterPath

Değişikliğin uygulanması ASE ön ucu başına yaklaşık 40 dakika sürer. Örneğin, iki ön uç kullanan varsayılan boyutlu bir ASE için şablonun tamamlanması yaklaşık 1 saat 20 dakika sürer. Şablon çalışırken ASE ölçeklendirilemez.

Şablon tamamlandıktan sonra ILB ASE'de bulunan uygulamalara HTTPS üzerinden erişilebilir. Bağlantıların güvenliği varsayılan TLS/SSL sertifikası kullanılarak sağlanır. Varsayılan TLS/SSL sertifikası, ILB ASE üzerindeki uygulamalar, uygulama adının yanı sıra varsayılan ana bilgisayar adı birleşimi kullanılarak ele alındığında kullanılır. Örneğin, https://mycustomapp.internal.contoso.com *.internal.contoso.com için varsayılan TLS/SSL sertifikasını kullanır.

Ancak, genel çok kiracılı hizmette çalışan uygulamalar gibi geliştiriciler de tek tek uygulamalar için özel konak adları yapılandırabilir. Ayrıca tek tek uygulamalar için benzersiz SNI TLS/SSL sertifika bağlamaları yapılandırabilir.