Snabbstart: Distribuera Windows-containers till Service Fabric
Azure Service Fabric är en plattform för distribuerade system för distribution och hantering av skalbara och tillförlitliga mikrotjänster och containrar.
Du behöver inga göra några ändringar i din app för att köra en befintlig app i en Windows-container i ett Service Fabric-kluster. Den här snabbstarten beskriver hur du distribuerar en fördefinierad Docker-containeravbildning i ett Service Fabric-program. När du är klar har du en körd server Windows Server Core 2016 Server och IIS-container. Den här snabbstarten beskriver hur du distribuerar Windows container. Läs den här snabbstarten för att distribuera en Linux-container.

I den här snabbstarten lär du dig att:
- Paketera en Docker-avbildningscontainer
- Konfigurera kommunikation
- Utveckla och distribuera ett Service Fabric-program
- Distribuera containerprogrammet till Azure
Anteckning
I den här artikeln används Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för att interagera med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Förutsättningar
- En Azure-prenumeration (du kan skapa ett kostnadsfritt konto).
- En utvecklingsdator som kör:
- Visual Studio 2019 eller Windows 2019.
- Service Fabric SDK och verktyg.
Paketera en Docker-avbildningscontainer med Visual Studio
Service Fabric SDK och verktygen innehåller en tjänstmall som hjälper dig att distribuera en container till ett Service Fabric-kluster.
Starta Visual Studio som Administratör. Välj Arkiv > Ny > Project.
Välj Service Fabric, ge den namnet "MyFirstContainer" och klicka på Skapa.
Välj Behållare från mallarna Hosted Containers and Applications (Värdbaserade behållare och program).
I Avbildningsnamn anger du "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", Windows Server Core Server och IIS-basavbildningen.
Konfigurera containerns portmappning från port till värd så att inkommande begäranden till tjänsten på port 80 mappas till port 80 i containern. Ge Containerport värdet 80 och Värdport värdet 80.
Ge tjänsten namnet ”MyContainerService” och klicka på OK.

Ange operativsystemets version för containeravbildningen
Containrar som skapats med en viss Windows Server-version kan kanske inte köras på en värd som kör en annan Windows Server-version. Containrar som skapats med Windows Server version 1709 körs till exempel inte på värdar som kör Windows Server 2016. Mer information finns i Kompatibilitet mellan operativsystem för Windows Server-containrar och värdoperativsystem.
Med version 6.1 och senare av Service Fabric Runtime kan du ange flera operativsystemsavbildningar per container och tagga var och en med den version av operativsystemet som de ska distribueras till. Detta hjälper dig att säkerställa att programmet kan köras på värdar som kör olika versioner av Windows operativsystem. Mer information finns i Ange specifika containeravbildningar för operativsystemet.
Microsoft publicerar olika avbildningar för de olika versioner av IIS som har skapats på olika versioner av Windows Server. Om du vill säkerställa att Service Fabric distribuerar en container som är kompatibel med den version av Windows Server som körs på de klusternoder där dina program distribueras, så lägger du till följande rader i filen ApplicationManifest.xml. Versionen för Windows Server 2016 är 14393, och versionen för Windows Server version 1709 är 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>
Tjänstmanifestet fortsätter att ange endast en avbildning för nanoservern, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.
I filen ApplicationManifest.xml ska du också ändra PasswordEncrypted till false. Kontot och lösenordet är tomma för den offentliga containeravbildningen i Docker Hub, så vi inaktiverar kryptering eftersom kryptering av ett tomt lösenord genererar ett kompileringsfel.
<RepositoryCredentials AccountName="" Password="" PasswordEncrypted="false" />
Skapa ett kluster
I följande exempelskript skapas ett Service Fabric-kluster med fem noder som skyddas med ett X.509-certifikat. Kommandot skapar ett självsignerat certifikat och laddar upp det till ett nytt nyckelvalv. Certifikatet kopieras även till en lokal katalog. Du kan läsa mer om hur du skapar ett kluster med det här skriptet i Skapa ett Service Fabric-kluster.
Installera Azure PowerShell med hjälp av anvisningarna i Azure PowerShell-guiden om det behövs.
Innan du kör följande skript i PowerShell ska du köra Connect-AzAccount för att skapa en anslutning till Azure.
Kopiera följande skript till Urklipp och öppna Windows PowerShell ISE. Klistra in innehållet i det tomma fönstret Untitled1.ps1. Ange sedan värden för variablerna i skriptet: subscriptionId , , , , , och så certpwd certfolder adminuser adminpwd vidare. Katalogen du anger för certfolder måste finnas innan du kör skriptet.
#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
När du har angett värdena för variablerna trycker du på F5 för att köra skriptet.
När skriptet har körts och klustret är skapat letar du reda på ClusterEndpoint i utdata. Exempel:
...
ClusterEndpoint : https://southcentralus.servicefabric.azure.com/runtime/clusters/b76e757d-0b97-4037-a184-9046a7c818c0
Installera klustrets certifikat
Nu ska vi installera PFX i certifikatarkivet CurrentUser\My. PFX-filen finns i katalogen du angav i miljövariabeln certfolder i PowerShell-skriptet ovan.
Ändra till den katalogen och kör sedan följande PowerShell-kommando, där du ersätter namnet på PFX-filen som finns i din katalog och lösenordet som du angav i certfolder certpwd variabeln . I det här exemplet sätts aktuell katalog till den katalog som anges i variabeln certfolder i PowerShell-skriptet. Därifrån körs kommandot Import-PfxCertificate:
PS C:\mycertificates> Import-PfxCertificate -FilePath .\mysfclustergroup20190130193456.pfx -CertStoreLocation Cert:\CurrentUser\My -Password (ConvertTo-SecureString Password#1234 -AsPlainText -Force)
Kommandot returnerar tumavtrycket:
...
PSParentPath: Microsoft.PowerShell.Security\Certificate::CurrentUser\My
Thumbprint Subject
---------- -------
0AC30A2FA770BEF566226CFCF75A6515D73FC686 CN=mysfcluster.SouthCentralUS.cloudapp.azure.com
Kom ihåg tumavtrycksvärdet till nästa steg.
Distribuera programmet till Azure med hjälp av Visual Studio
Nu när programmet är redo kan du distribuera det till ett kluster direkt från Visual Studio.
Högerklicka på MyFirstContainer i Solution Explorer och välj Publicera. Dialogrutan Publicera visas.
Kopiera innehållet efter CN= i PowerShell-fönstret när du körde kommandot Import-PfxCertificate ovan och lägg till port 19000. Till exempel mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Kopiera värdet till fältet Slutpunkt för anslutningen. Kom ihåg det här värdet eftersom du behöver det i ett framtida steg.
Klicka på Avancerade anslutningsparametrar och kontrollera anslutningsinformationen för parametern. Värdena FindValue och ServerCertThumbprint måste matcha tumavtrycket för certifikatet som installerades när du körde Import-PfxCertificate i föregående steg.

Klicka på Publicera.
Varje program i klustret måste ha ett unikt namn. Om det finns en namnkonflikt byter du namn på Visual Studio och distribuerar igen.
Öppna en webbläsare och navigera till adressen du angav i fältet Slutpunkt för anslutningen i föregående steg. Alternativt kan du lägga till schemaidentifierare http:// innan och lägga till porten :80 efter i URL:en. Till exempel http: / /mysfcluster.SouthCentralUS.cloudapp.azure.com:80.
Du bör se IIS-standardwebbsidan: 
Rensa
Du debiteras så länge klustret körs. Överväg att ta bort klustret.
Nästa steg
I den här snabbstarten har du lärt dig att:
- Paketera en Docker-avbildningscontainer
- Konfigurera kommunikation
- Utveckla och distribuera ett Service Fabric-program
- Distribuera containerprogrammet till Azure
Om du vill veta mer om att arbeta med Windows-containrar i Service Fabric, kan du fortsätta till självstudien om Windows-containerappar.