Share via


Azure Resource Manager Şablonlarını Kullanarak ILB ASEv1 Oluşturma

Önemli

Bu makale App Service Ortamı v1 hakkındadır. App Service Ortamı v1, 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ı v1 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ı v1 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.

Genel bakış

App Service Ortamı genel VIP yerine bir sanal ağ iç adresiyle oluşturulabilir. Bu iç adres, iç yük dengeleyici (ILB) adlı bir Azure bileşeni tarafından sağlanır. Azure portalı kullanılarak bir ILB ASE oluşturulabilir. Ayrıca Azure Resource Manager şablonları aracılığıyla otomasyon kullanılarak da oluşturulabilir. Bu makalede, Azure Resource Manager şablonlarıyla ILB ASE oluşturmak için gereken adımlar ve söz dizimi açıklanmaktadır.

ILB ASE'nin oluşturulmasını otomatikleştirmenin üç adımı vardır:

  1. İlk olarak temel ASE, genel VIP yerine iç yük dengeleyici adresi kullanılarak sanal ağda oluşturulur. Bu adımın bir parçası olarak, ILB ASE'ye bir kök etki alanı adı atanır.
  2. ILB ASE oluşturulduktan sonra bir TLS/SSL sertifikası yüklenir.
  3. Karşıya yüklenen TLS/SSL sertifikası, ILB ASE'ye açıkça "varsayılan" TLS/SSL sertifikası olarak atanır. Bu TLS/SSL sertifikası, uygulamalar ASE'ye atanan ortak kök etki alanı kullanılarak ele alındığında ILB ASE üzerindeki uygulamalara TLS trafiği için kullanılır (örneğin https://someapp.mycustomrootcomain.com)

Temel ILB ASE oluşturma

Örnek bir Azure Resource Manager şablonu ve ilişkili parametre dosyası burada bulunabilir.

azuredeploy.parameters.json dosyasındaki parametrelerin çoğu hem ILB ASE'leri hem de genel VIP'ye bağlı ASE'leri oluşturmak için yaygındır. Aşağıdaki liste, ILB ASE oluştururken özel not veya benzersiz parametreleri çağırır:

  • internalLoadBalancingMode: Denetim ve veri bağlantı noktalarının nasıl gösterileceğini belirler.
    • 3 , hem 80/443 bağlantı noktalarındaki HTTP/HTTPS trafiğinin hem de ASE'de FTP hizmeti tarafından dinlenen denetim/veri kanalı bağlantı noktalarının ILB ayrılmış bir sanal ağ iç adresine bağlanacağı anlamına gelir.
    • 2 , yalnızca FTP hizmetiyle ilgili bağlantı noktalarının (hem denetim hem de veri kanalları) bir ILB adresine bağlanacağı, HTTP/HTTPS trafiğinin ise genel VIP'de kalacağı anlamına gelir.
    • 0 , tüm trafiğin ASE'yi dış yapan genel VIP'ye bağlı olduğu anlamına gelir.
  • dnsSuffix: Bu parametre ASE'ye atanacak 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. Ancak bir ILB ASE müşterinin sanal ağında 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, varsayımsal bir Contoso Corporation, yalnızca Contoso'nun sanal ağı içinde çözümlenebilir ve erişilebilir olması amaçlanan uygulamalar için varsayılan kök etki alanı internal.contoso.com kullanabilir.
  • ipSslAddressCount: ILB ASE'lerinin tek bir ILB adresi olduğundan bu parametre otomatik olarak azuredeploy.json dosyasında 0 değerine ayarlanır. ILB ASE için açık IP-SSL adresi yoktur ve 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.

ILB ASE için azuredeploy.parameters.json dosyası doldurulduktan sonra, ILB ASE aşağıdaki PowerShell kod parçacığı kullanılarak oluşturulabilir. Dosya yollarını, Azure Resource Manager şablon dosyalarının makinenizde bulunduğu konumla eşleşecek şekilde değiştirin. Ayrıca Azure 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

Azure Resource Manager şablonu gönderildikten sonra ILB ASE'nin oluşturulması birkaç saat sürer. Oluşturma işlemi tamamlandıktan sonra ILB ASE, dağıtımı tetikleyen aboneliğin App Service Ortamı listesinde portal UX'sinde görünür.

"Varsayılan" TLS/SSL Sertifikasını Karşıya Yükleme ve Yapılandırma

ILB ASE oluşturulduktan sonra, uygulamalara TLS/SSL bağlantıları kurmak için "varsayılan" TLS/SSL sertifikası kullanımı olarak ASE ile bir TLS/SSL sertifikası ilişkilendirilmelidir. Varsayımsal Contoso Corporation örneğine devam edersek, ASE'nin varsayılan DNS soneki internal.contoso.com ise, bağlantı için https://some-random-app.internal.contoso.com *.internal.contoso.com için geçerli bir TLS/SSL sertifikası gerekir.

İç CA'lar, dış verenden sertifika satın alma ve otomatik olarak imzalanan sertifika kullanma gibi geçerli bir TLS/SSL sertifikası edinmenin farklı yolları vardır. 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. İkinci girişin nedeni, her uygulamayla ilişkili SCM/Kudu sitesine TLS bağlantılarının form your-app-name.scm.your-root-domain-here.com adresi kullanılarak yapılmasıdır.

Elinizde geçerli bir TLS/SSL sertifikası varsa, iki ek hazırlık adımı gerekir. TLS/SSL sertifikasının dönüştürülmesi/.pfx dosyası olarak kaydedilmesi gerekir. .pfx dosyasının tüm ara ve kök sertifikaları içermesi ve ayrıca parolayla güvenliğinin sağlanması gerektiğini unutmayın.

Daha sonra TLS/SSL sertifikası bir Azure Resource Manager şablonu kullanılarak karşıya yüklenecek olduğundan sonuç .pfx dosyasının base64 dizesine dönüştürülmesi gerekir. Azure Resource Manager şablonları metin dosyaları olduğundan, şablonun parametresi olarak eklenebilmesi için .pfx dosyasının base64 dizesine dönüştürülmesi gerekir.

Aşağıdaki PowerShell kod parçacığında otomatik olarak imzalanan bir sertifika oluşturma, sertifikayı .pfx dosyası olarak dışarı aktarma, .pfx dosyasını base64 kodlanmış dizeye dönüştürme ve ardından base64 kodlanmış dizesini ayrı bir dosyaya kaydetme örneği gösterilmektedir. base64 kodlaması için PowerShell kodu, PowerShell Betikleri Blogu'ndan 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 kodlanmış bir dizeye dönüştürüldükten sonra, varsayılan TLS/SSL sertifikasını yapılandırmaya yönelik örnek Azure Resource Manager şablonu kullanılabilir.

azuredeploy.parameters.json dosyasındaki parametreler aşağıda 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ı kullanarak , "exportedcert.pfx.b64" içinde yer alan dizeyi kopyalayıp pfxBlobString özniteliğinin değeri olarak yapıştırırsınız.
  • 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 , önceki kod parçacığından $certThumbprint ) alırsanız, değeri olduğu gibi kullanabilirsiniz. Ancak değeri Windows sertifika iletişim kutusundan kopyalarsanız, fazlalık alanları ayırmayı unutmayın. certificateThumbprint şöyle görünmelidir: AF3143EB61D43F6727842115BB7F17BBCECAECAE
  • 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 Azure Resource Manager tanımlayıcısının bir parçası olarak kullanılır. Ad şu son ekle bitmelidir : _yourASENameHere_InternalLoadBalancingASE. Bu sonek, portal tarafından sertifikanın ILB özellikli bir ASE'nin güvenliğini sağlamak için kullanıldığını gösteren bir gösterge olarak kullanılır.

Aşağıda 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, varsayılan TLS/SSL sertifikası aşağıdaki PowerShell kod parçacığı kullanılarak yapılandırılabilir. Dosya yollarını, Azure Resource Manager şablon dosyalarının makinenizde bulunduğu konumla eşleşecek şekilde değiştirin. Ayrıca Azure 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

Azure Resource Manager şablonu gönderildikten sonra, 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 ASE ile şablonun tamamlanması yaklaşık 1 saat 20 dakika sürer. Şablon çalışırken ASE ölçeklendirilemez.

Şablon tamamlandıktan sonra ILB ASE üzerindeki uygulamalara HTTPS üzerinden erişilebilir ve bağlantılar varsayılan TLS/SSL sertifikası kullanılarak güvenli hale getirilecektir. Varsayılan TLS/SSL sertifikası, ILB ASE'de 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 ve ardından tek tek uygulamalar için benzersiz SNI TLS/SSL sertifika bağlamaları yapılandırabilir.

Başlarken

App Service Ortamı kullanmaya başlamak için bkz. App Service Ortamı giriş

Not

Azure hesabı için kaydolmadan önce Azure App Service’i kullanmaya başlamak isterseniz, App Service’te hemen kısa süreli bir başlangıç web uygulaması oluşturabileceğiniz App Service’i Deneyin sayfasına gidin. Kredi kartı ve taahhüt gerekmez.