Dela via


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 Windows Server Core 2016 Server- och IIS-container som körs. I den här snabbstarten beskrivs hur du distribuerar en Windows-container. Läs den här snabbstarten för att distribuera en Linux-container.

IIS-standardwebbsidan

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

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i 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

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>Nytt>Projekt.

Välj Service Fabric-program, ge det 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.

Dialogrutan Ny tjänst

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, certpwd, certfolder, adminuser, och adminpwdså 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 dina värden 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. Till exempel:

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

Installera klustrets certifikat

Nu ska vi installera PFX i CurrentUser\My certificate store. PFX-filen finns i katalogen du angav i miljövariabeln certfolder i PowerShell-skriptet ovan.

Ändra till katalogen och kör sedan följande PowerShell-kommando och ersätt namnet på PFX-filen som finns i katalogen certfolder och lösenordet som du angav i variabeln certpwd . 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. 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.

Dialogrutan Publicera

Klicka på Publicera.

Varje program i klustret måste ha ett unikt namn. Om det finns en namnkonflikt byter du namn på Visual Studio-projektet 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: 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 hur du arbetar med Windows-containrar i Service Fabric fortsätter du till självstudien för Windows-containerprogram.