Vytvoření služby ASE pomocí šablony Azure Resource Manageru

Přehled

Důležité

Tento článek se týká služby App Service Environment v2, která se používá s plány izolované služby App Service. Služba App Service Environment v2 bude vyřazena 31. srpna 2024. Existuje nová verze služby App Service Environment, která se snadněji používá a běží na výkonnější infrastruktuře. Další informace o nové verzi najdete v úvodu do služby App Service Environment. Pokud aktuálně používáte App Service Environment v2, postupujte podle kroků v tomto článku a proveďte migraci na novou verzi.

Od 29. ledna 2024 už nemůžete vytvářet nové prostředky služby App Service Environment verze 2 pomocí některé z dostupných metod, včetně šablon ARM/Bicep, webu Azure Portal, Azure CLI nebo rozhraní REST API. Před 31. srpnem 2024 musíte migrovat do služby App Service Environment v3 , abyste zabránili odstranění prostředků a ztrátě dat.

prostředí služby Aplikace Azure Service (ASE) je možné vytvořit pomocí koncového bodu přístupného z internetu nebo koncového bodu na interní adrese ve službě Azure Virtual Network. Při vytváření s interním koncovým bodem tento koncový bod poskytuje komponenta Azure označovaná jako interní nástroj pro vyrovnávání zatížení (ILB). Služba ASE na interní IP adrese se nazývá služba ASE s interním nástrojem pro vyrovnávání zatížení. Služba ASE s veřejným koncovým bodem se nazývá externí služba ASE.

Službu ASE můžete vytvořit pomocí webu Azure Portal nebo šablony Azure Resource Manageru. Tento článek vás provede kroky a syntaxí, které potřebujete k vytvoření externí služby ASE nebo služby ASE s interním nástrojem pro vyrovnávání zatížení pomocí šablon Resource Manageru. Informace o vytvoření ASEv2 na webu Azure Portal najdete v tématu [Vytvoření externí služby ASE][MakeExternalASE] nebo vytvoření služby ASE s interním nástrojem pro vyrovnávání zatížení.

Když vytvoříte službu ASE na webu Azure Portal, můžete vytvořit virtuální síť současně nebo zvolit existující virtuální síť, do které se má nasadit.

Když vytvoříte ASE ze šablony, musíte začít takto:

  • Virtuální síť Azure.
  • Podsíť v této virtuální síti. Pro potřeby budoucího růstu a škálování doporučujeme velikost /24 podsítě ASE s 256 adresami. Po vytvoření služby ASE nemůžete změnit velikost.
  • Předplatné, do kterého chcete nasadit.
  • Umístění, do kterého chcete nasadit.

Pokud chcete automatizovat vytváření služby ASE, postupujte podle pokynů v následujících částech. Pokud vytváříte interní nástroj pro vyrovnávání zatížení ASEv2 s vlastní příponou DNS (například internal.contoso.com), můžete udělat několik dalších věcí.

  1. Po vytvoření vlastní přípony DNS ase s interním nástrojem pro vyrovnávání zatížení by se měl nahrát certifikát TLS/SSL, který odpovídá vaší doméně SLUŽBY ASE s interním nástrojem pro vyrovnávání zatížení.

  2. Nahraný certifikát TLS/SSL se službě ASE s interním nástrojem pro vyrovnávání zatížení přiřadí jako jeho výchozí certifikát TLS/SSL. Tento certifikát se používá pro provoz TLS/SSL do aplikací ve službě ASE s interním nástrojem pro vyrovnávání zatížení, když používají společnou kořenovou doménu, která je přiřazená službě ASE (například https://someapp.internal.contoso.com).

Vytvoření služby ASE

Šablona Resource Manageru, která vytvoří ASE a jeho přidružený soubor parametrů, je k dispozici na GitHubu pro ASEv2.

Pokud chcete vytvořit ase, použijte tento příklad šablony Resource Manageru ASEv2 . Většina parametrů v souboru azuredeploy.parameters.json je společná pro vytváření ases interního nástroje pro vyrovnávání zatížení a externích prostředí ASE. Následující seznam obsahuje parametry zvláštní poznámky nebo jedinečné parametry při vytváření služby ASE s interním nástrojem pro vyrovnávání zatížení s existující podsítí.

Parametry

  • aseName: Tento parametr definuje jedinečný název ASE.
  • location: Tento parametr definuje umístění služby App Service Environment.
  • existingVirtualNetworkName: Tento parametr definuje název virtuální sítě existující virtuální sítě a podsítě, ve které se služba ASE nachází.
  • existingVirtualNetworkResourceGroup: Jeho parametr definuje název skupiny prostředků existující virtuální sítě a podsítě, ve které se bude služba ASE nacházet.
  • subnetName: Tento parametr definuje název podsítě existující virtuální sítě a podsítě, ve které se bude služba ASE nacházet.
  • internalLoadBalancingMode: Ve většině případů nastavte tuto hodnotu na hodnotu 3, což znamená provoz HTTP/HTTPS na portech 80/443 a porty řídicího/datového kanálu, které služba FTP naslouchá ve službě ASE, budou svázané s interní adresou přiřazené interní adresou virtuální sítě s přiděleným interním nástrojem pro vyrovnávání zatížení. Pokud je tato vlastnost nastavena na hodnotu 2, jsou na adresu interního nástroje pro vyrovnávání zatížení vázány pouze porty související se službou FTP (řídicí i datové kanály). Pokud je tato vlastnost nastavená na hodnotu 0, provoz HTTP/HTTPS zůstane ve veřejné VIRTUÁLNÍ IP adrese.
  • dnsSuffix: Tento parametr definuje výchozí kořenovou doménu přiřazenou službě ASE. Ve veřejné variantě služby Aplikace Azure Service je výchozí kořenová doména pro všechny webové aplikace azurewebsites.net. Vzhledem k tomu, že služba ASE s interním nástrojem pro vyrovnávání zatížení je interní pro virtuální síť zákazníka, nemá smysl používat výchozí kořenovou doménu veřejné služby. Místo toho by služba ASE s interním nástrojem pro vyrovnávání zatížení měla mít výchozí kořenovou doménu, která dává smysl pro použití v rámci interní virtuální sítě společnosti. Společnost Contoso Může například použít výchozí kořenovou doménu internal.contoso.com pro aplikace, které mají být přeložitelné a přístupné jenom ve virtuální síti společnosti Contoso. Pokud chcete zadat vlastní kořenovou doménu, musíte použít verzi 2018-11-01 rozhraní API nebo starší verze.
  • ipSslAddressCount: Tento parametr automaticky nastaví hodnotu 0 v souboru azuredeploy.json , protože služba ASE s interním nástrojem pro vyrovnávání zatížení má jenom jednu adresu interního nástroje pro vyrovnávání zatížení. Pro službu ASE s interním nástrojem pro vyrovnávání zatížení neexistují žádné explicitní IP adresy SSL. Proto musí být fond IP-SSL adres pro službu ASE s interním nástrojem pro vyrovnávání zatížení nastaven na nulu. V opačném případě dojde k chybě zřizování.

Po vyplnění souboru azuredeploy.parameters.json vytvořte ase pomocí fragmentu kódu PowerShellu. Změňte cesty k souborům tak, aby odpovídaly umístěním souborů šablon Resource Manageru na vašem počítači. Nezapomeňte zadat vlastní hodnoty pro název nasazení Resource Manager a název skupiny prostředků:

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

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

Vytvoření ase trvá přibližně dvě hodiny. Pak se služba ASE zobrazí na portálu v seznamu ase pro předplatné, které aktivovalo nasazení.

Nahrání a konfigurace výchozího certifikátu TLS/SSL

Certifikát TLS/SSL musí být přidružený ke službě ASE jako "výchozí" certifikát TLS/SSL, který se používá k navázání připojení TLS k aplikacím. Pokud je výchozí přípona DNS služby ASE internal.contoso.com, připojení vyžaduje https://some-random-app.internal.contoso.com certifikát TLS/SSL, který je platný pro *.internal.contoso.com.

Získání platného certifikátu TLS/SSL pomocí interních certifikačních autorit, zakoupení certifikátu od externího vystavitele nebo použití certifikátu podepsaného svým držitelem. Bez ohledu na zdroj certifikátu TLS/SSL musí být správně nakonfigurované následující atributy certifikátu:

  • Předmět: Tento atribut musí být nastaven na *.your-root-domain-here.com.
  • Alternativní název subjektu: Tento atribut musí obsahovat *.your-root-domain-here.com i *.scm.your-root-domain-here.com. Připojení TLS k webu SCM/Kudu přidruženému ke každé aplikaci používají adresu formuláře your-app-name.scm.your-root-domain-here.com.

S platným certifikátem TLS/SSL jsou potřeba další dva přípravné kroky. Převeďte nebo uložte certifikát TLS/SSL jako soubor .pfx. Nezapomeňte, že soubor .pfx musí obsahovat všechny zprostředkující a kořenové certifikáty. Zabezpečte ho pomocí hesla.

Soubor .pfx je potřeba převést na řetězec base64, protože certifikát TLS/SSL se nahraje pomocí šablony Resource Manageru. Vzhledem k tomu, že šablony Resource Manageru jsou textové soubory, musí být soubor .pfx převeden na řetězec base64. Tímto způsobem je možné ji zahrnout jako parametr šablony.

Pomocí následujícího fragmentu kódu PowerShellu:

  • Vytvořte certifikát podepsaný svým držitelem (self-signed certificate).
  • Exportujte certifikát jako soubor .pfx.
  • Převeďte soubor .pfx na řetězec kódovaný v base64.
  • Uložte řetězec kódovaný v base64 do samostatného souboru.

Tento kód PowerShellu pro kódování base64 byl upraven z blogu skriptů PowerShellu:

$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")

Po úspěšném vygenerování a převodu certifikátu TLS/SSL na řetězec s kódováním base64 použijte ukázkovou šablonu Resource Manageru Konfigurace výchozího certifikátu SSL na GitHubu.

Parametry v souboru azuredeploy.parameters.json jsou uvedené tady:

  • appServiceEnvironmentName: Název nakonfigurované služby ASE s interním nástrojem pro vyrovnávání zatížení.
  • existingAseLocation: Textový řetězec obsahující oblast Azure, ve které byla nasazena služba ASE s interním nástrojem pro vyrovnávání zatížení. Příklad: "USA – středojižní".
  • pfxBlobString: Řetězcová reprezentace souboru .pfx s kódováním based64. Použijte dříve zobrazený fragment kódu a zkopírujte řetězec obsažený v souboru exportedcert.pfx.b64. Vložte ji jako hodnotu atributu pfxBlobString .
  • heslo: Heslo použité k zabezpečení souboru .pfx.
  • certificateThumbprint: Kryptografický otisk certifikátu. Pokud tuto hodnotu načtete z PowerShellu (například $certificate.Thumbprint z předchozího fragmentu kódu), můžete tuto hodnotu použít tak, jak je. Pokud zkopírujete hodnotu z dialogového okna certifikátu systému Windows, nezapomeňte nadbytečné mezery odstranit. CertifikátThumbprint by měl vypadat přibližně jako AF3143EB61D43F6727842115BB7F17BBCECAECAE.
  • certificateName: Popisný identifikátor řetězce vlastního výběru použitého k identitě certifikátu. Název se používá jako součást jedinečného identifikátoru Resource Manageru pro entitu Microsoft.Web/certificates , která představuje certifikát TLS/SSL. Název musí končit následující příponou: _yourASENameHere_InternalLoadBalancingASE. Azure Portal používá tuto příponu jako indikátor, že se certifikát používá k zabezpečení služby ASE s povoleným interním nástrojem pro vyrovnávání zatížení.

Tady je zkrácený příklad azuredeploy.parameters.json :

{
  "$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"
    }
  }
}

Po vyplnění souboru azuredeploy.parameters.json nakonfigurujte výchozí certifikát TLS/SSL pomocí fragmentu kódu PowerShellu. Změňte cesty k souborům tak, aby odpovídaly umístění souborů šablon Resource Manageru na vašem počítači. Nezapomeňte zadat vlastní hodnoty pro název nasazení Resource Manager a název skupiny prostředků:

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

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

Použití změny trvá přibližně 40 minut na front-end služby ASE. Například pro službu ASE s výchozí velikostí, která používá dva front-endy, trvá dokončení šablony přibližně 1 hodinu a 20 minut. Zatímco je šablona spuštěná, služba ASE nemůže škálovat.

Po dokončení šablony budou aplikace ve službě ASE s interním nástrojem pro vyrovnávání zatížení přístupné přes PROTOKOL HTTPS. Připojení jsou zabezpečená pomocí výchozího certifikátu TLS/SSL. Výchozí certifikát TLS/SSL se používá, když se aplikace ve službě ASE s interním nástrojem pro vyrovnávání zatížení řeší pomocí kombinace názvu aplikace a výchozího názvu hostitele. Například https://mycustomapp.internal.contoso.com používá výchozí certifikát TLS/SSL pro *.internal.contoso.com.

Stejně jako aplikace, které běží ve veřejné víceklientové službě, můžou vývojáři nakonfigurovat vlastní názvy hostitelů pro jednotlivé aplikace. Můžou také nakonfigurovat jedinečné vazby certifikátů TLS/SSL SNI pro jednotlivé aplikace.