Rychlý start: Nasazení kontejnerů Windows do Service Fabric

Azure Service Fabric je platforma distribuovaných systémů pro nasazování a správu škálovatelných a spolehlivých mikroslužeb a kontejnerů.

Spuštění existující aplikace v kontejneru Windows v clusteru Service Fabric nevyžaduje žádné změny aplikace. Tento rychlý start ukazuje, jak nasadit předem připravenou image kontejneru Dockeru v aplikaci Service Fabric. Až budete hotovi, budete mít spuštěný kontejner Windows Server Core 2016 a IIS. Tento rychlý start popisuje nasazení Windows kontejneru. Přečtěte si tento rychlý start pro nasazení kontejneru Linuxu.

Výchozí webová stránka služby IIS

V tomto rychlém startu se naučíte:

  • Zabalení kontejneru image Dockeru
  • Konfigurace komunikace
  • Sestavení a zabalení aplikace Service Fabric
  • Nasazení aplikace typu kontejner do Azure

Poznámka

Tento článek používá modul Azure Az PowerShell, což je doporučený modul PowerShellu pro interakci s Azure. Pokud chcete začít s modulem Az PowerShell, projděte si téma věnované instalaci Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Požadavky

Zabalení kontejneru image Dockeru pomocí sady Visual Studio

Sada Service Fabric SDK a nástroje poskytují šablonu služby, která vám pomůže s nasazením kontejneru do clusteru Service Fabric.

Spusťte sadu Visual Studio jako správce. Vyberte Soubor > Nový > Project.

Vyberte Service Fabric, pojmete ji "MyFirstContainer" a klikněte na Vytvořit.

Z šablon Hostované kontejnery a aplikace vyberte Kontejner.

Do pole Název image zadejte "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", základní image Windows Serveru a služby IIS.

Nakonfigurujte mapování portů kontejneru na porty hostitele tak, aby se příchozí požadavky na službu na portu 80 mapovaly na port 80 v kontejneru. Nastavte Port kontejneru na 80 a Port hostitele také na 80.

Pojmenujte službu MyContainerService a klikněte na OK.

Dialogové okno Nová služba

Specifikace čísla sestavení operačního systému pro image kontejneru

Kontejnery sestavené s konkrétní verzí Windows Serveru nemusí fungovat na hostiteli s jinou verzí Windows Serveru. Například kontejnery vytvořené pomocí Windows Server verze 1709 nespouštěny na hostitelích, na Windows Server 2016. Další informace najdete v článku o kompatibilitě operačního systému kontejneru a operačního systému hostitele s Windows Serverem.

Verze 6.1 modulu runtime služby Service Fabric a novější umožňuje specifikovat více imagí operačního systému na kontejner a označit jednotlivé image verzí sestavení daného operačního systému, na který by se měly nasazovat. Tímto se zajistí, že aplikace poběží na více hostitelích s různými verzemi operačního systému Windows. Další informace najdete v článku o zadání imagí kontejneru pro konkrétní sestavení operačního systému.

Společnost Microsoft publikuje různé image pro verze IIS sestavené na různých verzích Windows Serveru. Abyste měli jistotu, že služba Service Fabric nasadí kontejner kompatibilní s verzí Windows Serveru běžící v uzlech clusteru, ve kterých nasazuje vaši aplikaci, přidejte do souboru ApplicationManifest.xml následující řádky. Verze sestavení pro Windows Server 2016 je 14393 a verze sestavení pro Windows Server verze 1709 je 16299.

    <ContainerHostPolicies CodePackageRef="Code"> 
      <ImageOverrides> 
        ...
          <Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1803" /> 
          <Image Name= "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016" Os="14393" /> 
          <Image Name="mcr.microsoft.com/windows/servercore/iis:windowsservercore-1709" Os="16299" /> 
      </ImageOverrides> 
    </ContainerHostPolicies> 

Manifest služby dále specifikuje jenom jednu image na nanoserver, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.

V souboru ApplicationManifest.xml také změňte PasswordEncrypted na false. Účet a heslo jsou pro veřejnou image kontejneru, která je v Docker Hub, prázdné, takže šifrování vypneme, protože šifrování prázdného hesla vygeneruje chybu sestavení.

<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />

Vytvoření clusteru

Následující ukázkový skript vytvoří cluster s pěti uzly Service Fabric zabezpečený certifikátem X.509. Příkaz vytvoří certifikát podepsaný svým držitelem a nahraje ho do nového trezoru klíčů. Certifikát se také zkopíruje do místního adresáře. Další informace o vytvoření clusteru pomocí tohoto skriptu najdete v tématu Vytvoření clusteru Service Fabric clusteru.

V případě potřeby nainstalujte Azure PowerShell podle pokynů uvedených v Azure PowerShell příručce.

Před spuštěním následujícího skriptu v PowerShellu spusťte Connect-AzAccount příkaz a vytvořte připojení k Azure.

Zkopírujte následující skript do schránky a otevřete Windows PowerShell ISE. Vložte obsah do prázdného Untitled1.ps1 okna. Pak zadejte hodnoty pro proměnné ve skriptu: subscriptionId , , , , certpwd certfolder adminuser adminpwd atd. Adresář, který zadáte pro certfolder , musí existovat před spuštěním skriptu.

#Provide the subscription Id
$subscriptionId = 'yourSubscriptionId'

# Certificate variables.
$certpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force
$certfolder="c:\mycertificates\"

# Variables for VM admin.
$adminuser="vmadmin"
$adminpwd="Password#1234" | ConvertTo-SecureString -AsPlainText -Force 

# Variables for common values
$clusterloc="SouthCentralUS"
$clustername = "mysfcluster"
$groupname="mysfclustergroup"       
$vmsku = "Standard_D2_v2"
$vaultname = "mykeyvault"
$subname="$clustername.$clusterloc.cloudapp.azure.com"

# Set the number of cluster nodes. Possible values: 1, 3-99
$clustersize=5 

# Set the context to the subscription Id where the cluster will be created
Select-AzSubscription -SubscriptionId $subscriptionId

# Create the Service Fabric cluster.
New-AzServiceFabricCluster -Name $clustername -ResourceGroupName $groupname -Location $clusterloc `
-ClusterSize $clustersize -VmUserName $adminuser -VmPassword $adminpwd -CertificateSubjectName $subname `
-CertificatePassword $certpwd -CertificateOutputFolder $certfolder `
-OS WindowsServer2016DatacenterwithContainers -VmSku $vmsku -KeyVaultName $vaultname

Jakmile pro proměnné zadáte hodnoty, spusťte skript stisknutím klávesy F5.

Po spuštění skriptu a vytvoření clusteru vyhledejte ve ClusterEndpoint výstupu . Například:

...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0

Instalace certifikátu pro cluster

Teď nainstalujeme PFX do úložiště certifikátů CurrentUser\My. Soubor PFX bude v adresáři, který jste zadali pomocí proměnné certfolder prostředí ve výše uvedeném skriptu PowerShellu.

Změňte adresář na tento adresář a pak spusťte následující příkaz PowerShellu, nahraďte název souboru PFX, který je ve vašem adresáři, a heslo, které jste zadali v certfolder certpwd proměnné . V tomto příkladu je aktuální adresář nastavený na adresář určený certfolder proměnnou ve skriptu PowerShellu. Odtud Import-PfxCertificate se spustí příkaz :

PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)

Příkaz vrátí kryptografický otisk:

  ...
  PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint                                Subject
----------                                -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686  CN=mysfcluster.SouthCentralUS.cloudapp.azure.com

Zapamatujte si hodnotu kryptografického otisku pro následující krok.

Nasazení aplikace do Azure pomocí sady Visual Studio

Aplikace je teď připravená a přímo ze sady Visual Studio ji můžete nasadit do clusteru.

V Průzkumníku řešení klikněte pravým tlačítkem na MyFirstContainer a zvolte Publikovat. Zobrazí se dialogové okno Publikovat.

Při spuštění výše uvedeného příkazu zkopírujte do okna PowerShellu následující obsah CN= a Import-PfxCertificate přidejte do něj 19000 port. Například, mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Zkopírujte ho do pole Koncový bod připojení. Tuto hodnotu si zapamatovat, protože ji budete potřebovat v dalším kroku.

Klikněte na Rozšířené parametry připojení a ověřte informace o parametrech připojení. Hodnoty FindValue a ServerCertThumbprint musí odpovídat kryptografického otisku certifikátu nainstalovaného při spuštění Import-PfxCertificate v předchozím kroku.

Dialogové okno Publikovat

Klikněte na Publikovat.

Každá aplikace v clusteru musí mít jedinečný název. Pokud dojde ke konfliktu názvů, přejmenujte projekt Visual Studio a nasaďte ho znovu.

Otevřete prohlížeč a přejděte na adresu, kterou jste vložili do pole Koncový bod připojení v předchozím kroku. Volitelně můžete před adresu URL přidat identifikátor schématu http:// a připojit za ní port :80. Příklad: http: / /mysfcluster.SouthCentralUS.cloudapp.azure.com:80.

Měla by se zobrazit výchozí webová stránka služby IIS: Výchozí webová stránka služby IIS

Vyčištění

Za spuštěný cluster se vám budou dál účtovány poplatky. Zvažte odstranění clusteru.

Další kroky

V tomto rychlém startu jste se naučili:

  • Zabalení kontejneru image Dockeru
  • Konfigurace komunikace
  • Sestavení a zabalení aplikace Service Fabric
  • Nasazení aplikace typu kontejner do Azure

Další informace o práci s kontejnery Windows v Service Fabric najdete v kurzu věnovaném aplikacím typu kontejner pro Windows.