Schnellstart: Bereitstellen von Windows-Containern in Service FabricQuickstart: Deploy Windows containers to Service Fabric

Azure Service Fabric ist eine Plattform für verteilte Systeme zum Bereitstellen und Verwalten von skalierbaren und zuverlässigen Microservices und Containern.Azure Service Fabric is a distributed systems platform for deploying and managing scalable and reliable microservices and containers.

Zum Ausführen einer vorhandenen Anwendung eines Windows-Containers in einem Service Fabric-Cluster sind keine Änderungen an Ihrer Anwendung erforderlich.Running an existing application in a Windows container on a Service Fabric cluster doesn't require any changes to your application. In dieser Schnellstartanleitung erfahren Sie, wie Sie ein vorgefertigtes Docker-Containerimage in einer Service Fabric-Anwendung bereitstellen.This quickstart shows you how to deploy a pre-built Docker container image in a Service Fabric application. Nach Abschluss des Vorgangs verfügen Sie über einen aktiven Container für Windows Server Core 2016 Server und IIS.When you're finished, you'll have a running Windows Server Core 2016 Server and IIS container. In dieser Schnellstartanleitung wird die Bereitstellung eines Windows-Containers beschrieben.This quickstart describes deploying a Windows container. Lesen Sie diese Schnellstartanleitung, um einen Linux-Container bereitzustellen.Read this quickstart to deploy a Linux container.

IIS-Standardwebseite

In dieser Schnellstartanleitung wird Folgendes vermittelt:In this quickstart you learn how to:

  • Packen eines Docker-ImagecontainersPackage a Docker image container
  • Konfigurieren der KommunikationConfigure communication
  • Erstellen und Packen der Service Fabric-AnwendungBuild and package the Service Fabric application
  • Bereitstellen der Containeranwendung in AzureDeploy the container application to Azure

Hinweis

Dieser Artikel wurde aktualisiert und beinhaltet jetzt das neue Az-Modul von Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Sie können das AzureRM-Modul weiterhin verwenden, das bis mindestens Dezember 2020 weiterhin Fehlerbehebungen erhält.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Weitere Informationen zum neuen Az-Modul und zur Kompatibilität mit AzureRM finden Sie unter Introducing the new Azure PowerShell Az module (Einführung in das neue Az-Modul von Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Anweisungen zur Installation des Az-Moduls finden Sie unter Install Azure PowerShell (Installieren von Azure PowerShell).For Az module installation instructions, see Install Azure PowerShell.

VoraussetzungenPrerequisites

Packen eines Docker-Imagecontainers mit Visual StudioPackage a Docker image container with Visual Studio

Das Service Fabric-SDK und die Tools stellen eine Dienstvorlage bereit, um Sie beim Bereitstellen eines Containers für einen Service Fabric-Cluster zu unterstützen.The Service Fabric SDK and tools provide a service template to help you deploy a container to a Service Fabric cluster.

Starten Sie Visual Studio als Administrator.Start Visual Studio as "Administrator". Klicken Sie auf Datei > Neu > Projekt.Select File > New > Project.

Wählen Sie Service Fabric-Anwendung aus, nennen Sie die Anwendung „MyFirstContainer“, und klicken Sie auf Erstellen.Select Service Fabric application, name it "MyFirstContainer", and click Create.

Wählen Sie unter Gehostete Container und Anwendungen die Vorlage Container.Select Container from the Hosted Containers and Applications templates.

Geben Sie unter Imagename die Zeichenfolge „mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016“ (Basisimage für Windows Server Core und IIS) ein.In Image Name, enter "mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016", the Windows Server Core Server and IIS base image.

Konfigurieren Sie die Zuordnung von Containerport zu Hostport, sodass an Port 80 eingehende Anforderungen für den Dienst dem Port 80 des Containers zugeordnet werden.Configure the container port-to-host port mapping so that incoming requests to the service on port 80 are mapped to port 80 on the container. Legen Sie Containerport auf „80“ und hostPort auf „80“ fest.Set Container Port to "80" and set Host Port to "80".

Nennen Sie den Dienst „MyContainerService“, und klicken Sie auf OK.Name your service "MyContainerService", and click OK.

Dialogfeld „Neuer Dienst“

Angeben des Betriebssystembuilds für Ihr ContainerimageSpecify the OS build for your container image

Mit einer bestimmten Windows Server-Version erstellte Container können unter Umständen nicht auf einem Host mit einer anderen Version von Windows Server ausgeführt werden.Containers built with a specific version of Windows Server may not run on a host running a different version of Windows Server. Beispielsweise können Container, die mit Windows Server 1709 erstellt wurden, nicht auf Hosts mit Windows Server 2016 ausgeführt werden.For example, containers built using Windows Server version 1709 don't run on hosts running Windows Server 2016. Weitere Informationen finden Sie unter Erstellen Ihrer ersten Service Fabric-Containeranwendung unter Windows.To learn more, see Windows Server container OS and host OS compatibility.

Bei Version 6.1 oder höheren Version der Service Fabric-Runtime können Sie mehrere Betriebssystemimages pro Container angeben und jedes Image mit der Buildversion des Betriebssystems markieren, unter dem es bereitgestellt werden soll.With version 6.1 of the Service Fabric runtime and newer, you can specify multiple OS images per container and tag each with the build version of the OS that it should be deployed to. Dadurch wird sichergestellt, dass Ihre Anwendung auf Hosts mit verschiedenen Versionen des Windows-Betriebssystems ausgeführt wird.This helps to make sure that your application will run across hosts running different versions of Windows OS. Weitere Informationen finden Sie unter Angeben spezifischer Containerimages für den Build des Betriebssystems.To learn more, see Specify OS build specific container images.

Microsoft veröffentlicht verschiedene Images für IIS-Versionen, die auf unterschiedlichen Versionen von Windows Server basieren.Microsoft publishes different images for versions of IIS built on different versions of Windows Server. Fügen Sie der Datei ApplicationManifest.xml die folgenden Zeilen hinzu, um sicherzustellen, dass Service Fabric einen mit der Version von Windows Server kompatiblen Container bereitstellt, die auf den Clusterknoten ausgeführt wird, auf denen Ihre Anwendung bereitgestellt wird.To make sure that Service Fabric deploys a container compatible with the version of Windows Server running on the cluster nodes where it deploys your application, add the following lines to the ApplicationManifest.xml file. Die Buildversion für Windows Server 2016 lautet 14393, und die Buildversion für Windows Server-Version 1709 lautet 16299.The build version for Windows Server 2016 is 14393 and the build version for Windows Server version 1709 is 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> 

Das Dienstmanifest gibt weiterhin nur ein Image für den Nanoserver mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016 an.The service manifest continues to specify only one image for the nanoserver, mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2016.

Ändern Sie außerdem in der Datei ApplicationManifest.xml den Wert von PasswordEncrypted in false.Also in the ApplicationManifest.xml file, change PasswordEncrypted to false. Konto und Kennwort sind für das öffentliche Containerimage im Docker-Hub leer. Da die Verschlüsselung eines leeren Kennworts einen Buildfehler zur Folge hätte, deaktivieren wir die Verschlüsselung.The account and password are blank for the public container image that is on Docker Hub, so we turn off encryption because encrypting a blank password will generate a build error.

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

Erstellen eines ClustersCreate a cluster

Das folgende Beispielskript erstellt einen Service Fabric-Cluster mit fünf Knoten, der mit einem X.509-Zertifikat geschützt wird.The following sample script creates a five-node Service Fabric cluster secured with an X.509 certificate. Der Befehl erstellt ein selbstsigniertes Zertifikat und lädt es in einen neuen Key Vault hoch.The command creates a self-signed certificate and uploads it to a new key vault. Das Zertifikat wird außerdem in ein lokales Verzeichnis kopiert.The certificate is also copied to a local directory. Weitere Informationen zum Erstellen eines Clusters mithilfe dieses Skripts finden Sie unter Erstellen von Service Fabric-Clustern.You can learn more about creating a cluster using this script in Create a Service Fabric cluster.

Installieren Sie bei Bedarf Azure PowerShell anhand der Anweisungen im Azure PowerShell-Handbuch.If needed, install the Azure PowerShell using the instructions found in the Azure PowerShell guide.

Führen Sie vor der Ausführung des folgenden Skripts zunächst Connect-AzAccount in PowerShell aus, um eine Verbindung mit Azure zu erstellen.Before you run the following script, in PowerShell run Connect-AzAccount to create a connection with Azure.

Kopieren Sie das folgende Skript in die Zwischenablage, und öffnen Sie Windows PowerShell ISE.Copy the following script to the clipboard and open Windows PowerShell ISE. Fügen Sie den Inhalt in das leere Fenster „Untitled1.ps1“ ein.Paste the contents into the empty Untitled1.ps1 window. Geben Sie anschließend Werte für die Variablen im Skript an: subscriptionId, certpwd, certfolder, adminuser, adminpwd usw.Then provide values for the variables in the script: subscriptionId, certpwd, certfolder, adminuser, adminpwd, and so on. Das Verzeichnis, das Sie für certfolder angeben, muss vorhanden sein, wenn Sie das Skript ausführen.The directory you specify for certfolder must exist before you run the script.

#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

Nachdem Sie Ihre Werte für die Variablen angegeben haben, drücken Sie F5, um das Skript auszuführen.Once you've provided your values for the variables, press F5 to run the script.

Warten Sie, bis das Skript ausgeführt und der Cluster erstellt wurde, und suchen Sie dann in der Ausgabe nach ClusterEndpoint.After the script runs and the cluster is created, find the ClusterEndpoint in the output. Beispiel:For example:

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

Installieren des Zertifikats für den ClusterInstall the certificate for the cluster

Als Nächstes installieren wir das PFX-Zertifikat im Zertifikatspeicher CurrentUser\My.Now we'll install the PFX in CurrentUser\My certificate store. Die PFX-Datei befindet sich in dem Verzeichnis, das Sie mithilfe der Umgebungsvariablen certfolder im obigen PowerShell-Skript angegeben haben.The PFX file will be in the directory you specified using the certfolder environment variable in the PowerShell script above.

Navigieren Sie zu diesem Verzeichnis, und führen Sie den folgenden PowerShell-Befehl aus. Fügen Sie dabei den Namen der PFX-Datei aus dem Verzeichnis certfolder sowie das Kennwort ein, das Sie in der Variablen certpwd angegeben haben.Change to that directory, and then run the following PowerShell command, replacing the name of the PFX file that is in your certfolder directory, and the password that you specified in the certpwd variable. In diesem Beispiel ist das aktuelle Verzeichnis auf das Verzeichnis festgelegt, das durch die Variable certfolder im PowerShell-Skript angegeben ist.In this example, the current directory is set to the directory specified by the certfolder variable in the PowerShell script. Von dort aus wird der Befehl Import-PfxCertificate ausgeführt:From there the Import-PfxCertificate command is run:

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

Der Befehl gibt den Fingerabdruck zurück:The command returns the Thumbprint:

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

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

Speichern Sie den Fingerabdruckwert für den nächsten Schritt.Remember the thumbprint value for the following step.

Bereitstellen der Anwendung für Azure mithilfe von Visual StudioDeploy the application to Azure using Visual Studio

Nachdem die Anwendung nun bereit ist, können Sie sie direkt aus Visual Studio in einem Cluster bereitstellen.Now that the application is ready, you can deploy it to a cluster directly from Visual Studio.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf MyFirstContainer, und wählen Sie Veröffentlichen aus.Right-click MyFirstContainer in the Solution Explorer and choose Publish. Das Dialogfeld „Veröffentlichen“ wird angezeigt.The Publish dialog appears.

Kopieren Sie den Inhalt, der nach Ausführung des Befehls Import-PfxCertificate im PowerShell-Fenster nach CN= angegeben war, und fügen Sie ihm den Port 19000 hinzu.Copy the content following CN= in the PowerShell window when you ran the Import-PfxCertificate command above, and add port 19000 to it. Beispiel: mysfcluster.SouthCentralUS.cloudapp.azure.com:19000.For example, mysfcluster.SouthCentralUS.cloudapp.azure.com:19000. Kopieren Sie ihn in das Feld Verbindungsendpunkt.Copy it into the Connection Endpoint field. Speichern Sie diesen Wert. Er wird in einem späteren Schritt benötigt.Remember this value because you'll need it in a future step.

Klicken Sie auf Erweiterte Verbindungsparameter, und überprüfen Sie die Informationen zu den Verbindungsparametern.Click Advanced Connection Parameters and verify the connection parameter information. Die Werte FindValue und ServerCertThumbprint müssen dem Fingerabdruck des Zertifikats entsprechen, das Sie im vorherigen Schritt durch Ausführen von Import-PfxCertificate installiert haben.FindValue and ServerCertThumbprint values must match the thumbprint of the certificate installed when you ran Import-PfxCertificate in the previous step.

Dialogfeld „Veröffentlichen“

Klicken Sie auf Veröffentlichen.Click Publish.

Jede Anwendung im Cluster muss einen eindeutigen Namen besitzen.Each application in the cluster must have a unique name. Kommt es zu einem Namenskonflikt, benennen Sie das Visual Studio-Projekt um, und stellen Sie es erneut bereit.If there's a name conflict, rename the Visual Studio project and deploy again.

Navigieren Sie in einem Browser zu der Adresse, die Sie im vorherigen Schritt im Feld Verbindungsendpunkt angegeben haben.Open a browser and navigate to the address that you put into the Connection Endpoint field in the previous step. Sie können der URL optional den Schemabezeichner (http://) voranstellen und den Port (:80) an die URL anfügen.You can optionally prepend the scheme identifier, http://, and append the port, :80, to the URL. Beispiel: http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.For example, http://mysfcluster.SouthCentralUS.cloudapp.azure.com:80.

Die IIS-Standardwebseite sollte angezeigt werden: IIS-StandardwebseiteYou should see the IIS default web page: IIS default web page

BereinigungClean up

Während der Ausführung des Clusters fallen weiterhin Gebühren an.You continue to incur charges while the cluster is running. Daher empfiehlt es sich ggf,. den Cluster zu löschen.Consider deleting your cluster.

Nächste SchritteNext steps

In diesem Schnellstart haben Sie Folgendes gelernt:In this quickstart, you learned how to:

  • Packen eines Docker-ImagecontainersPackage a Docker image container
  • Konfigurieren der KommunikationConfigure communication
  • Erstellen und Packen der Service Fabric-AnwendungBuild and package the Service Fabric application
  • Bereitstellen der Containeranwendung in AzureDeploy the container application to Azure

Weitere Informationen zur Verwendung von Windows-Containern in Service Fabric finden Sie im Tutorial für Windows-Container-Apps.To learn more about working with Windows containers in Service Fabric, continue to the tutorial for Windows container apps.