Docker Compose-Bereitstellungsunterstützung in Azure Service Fabric (Vorschau)

Docker verwendet die Datei „docker-compose.yml“ zum Definieren von Anwendungen mit mehreren Containern. Damit Kunden, die mit Docker vertraut sind, vorhandene Containeranwendungen einfacher in Azure Service Fabric orchestrieren können, haben wir eine Unterstützung für die Vorschauversion der Docker Compose-Bereitstellung nativ in die Plattform integriert. Service Fabric akzeptiert docker-compose.yml-Dateien ab Version 3 (und höher).

Da diese Unterstützung als Vorschauversion verfügbar ist, wird nur ein Teil der Compose-Direktiven unterstützt.

Wenn Sie diese Vorschauversion verwenden möchten, erstellen Sie Ihren Cluster mindestens mit der Version 5.7 der Service Fabric-Laufzeit über das Azure-Portal (zusammen mit dem entsprechenden SDK).

Hinweis

Das Feature befindet sich derzeit in der Vorschauphase und wird in Produktionsumgebungen nicht unterstützt. Die folgenden Beispiele basieren auf der Runtimeversion 6.0 und der SDK-Version 2.8.

Bereitstellen einer Docker Compose-Datei in Service Fabric

Die folgenden Befehle erstellen eine Service Fabric-Anwendung (die den Namen fabric:/TestContainerApp hat), die wie jede andere Service Fabric-Anwendung überwacht und verwaltet werden kann. Sie können den jeweiligen Anwendungsnamen für Integritätsabfragen verwenden. Service Fabric erkennt „DeploymentName“ als Bezeichner der Compose-Bereitstellung.

Verwenden von PowerShell

Erstellen Sie eine Service Fabric-Docker Compose-Bereitstellung aus einer „docker-compose.yml“-Datei, indem Sie den folgenden Befehl in PowerShell ausführen:

New-ServiceFabricComposeDeployment -DeploymentName TestContainerApp -Compose docker-compose.yml [-RegistryUserName <>] [-RegistryPassword <>] [-PasswordEncrypted]

RegistryUserName und RegistryPassword verweisen auf den Benutzernamen und das Kennwort der Containerregistrierung. Nachdem Sie die Bereitstellung fertiggestellt haben, können Sie deren Status mit folgendem Befehl überprüfen:

Get-ServiceFabricComposeDeploymentStatus -DeploymentName TestContainerApp

Um die Compose-Bereitstellung über PowerShell zu löschen, verwenden Sie den folgenden Befehl:

Remove-ServiceFabricComposeDeployment  -DeploymentName TestContainerApp

Verwenden Sie den folgenden Befehl, um ein Compose-Bereitstellungsupgrade über PowerShell zu starten:

Start-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp -Compose docker-compose-v2.yml -Monitored -FailureAction Rollback

Verwenden Sie den folgenden Befehl, um ein Compose-Bereitstellungsupgrade über PowerShell zurückzusetzen:

Start-ServiceFabricComposeDeploymentRollback -DeploymentName TestContainerApp

Nachdem das Upgrade akzeptiert wurde, kann der Upgradestatus mit dem folgenden Befehl nachverfolgt werden:

Get-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp

Verwenden der Azure Service Fabric CLI (sfctl)

Verwenden Sie alternativ den folgenden Service Fabric CLI-Befehl:

sfctl compose create --deployment-name TestContainerApp --file-path docker-compose.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [ --timeout ]

Nachdem Sie die Bereitstellung erstellt haben, können Sie deren Status mit folgendem Befehl überprüfen:

sfctl compose status --deployment-name TestContainerApp [ --timeout ]

Verwenden Sie den folgenden Befehl, um die Compose-Bereitstellung zu löschen:

sfctl compose remove  --deployment-name TestContainerApp [ --timeout ]

Verwenden Sie den folgenden Befehl, um ein Compose-Bereitstellungsupgrade zu starten:

sfctl compose upgrade --deployment-name TestContainerApp --file-path docker-compose-v2.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [--upgrade-mode Monitored] [--failure-action Rollback] [ --timeout ]

Verwenden Sie den folgenden Befehl, um ein Compose-Bereitstellungsupgrade zurückzusetzen:

sfctl compose upgrade-rollback --deployment-name TestContainerApp [ --timeout ]

Nachdem das Upgrade akzeptiert wurde, kann der Upgradestatus mit dem folgenden Befehl nachverfolgt werden:

sfctl compose upgrade-status --deployment-name TestContainerApp

Unterstützte Compose-Direktiven

Diese Vorschauversion unterstützt nur einen Teil der verfügbaren Konfigurationsoptionen im Compose V3-Format, einschließlich der folgenden Grundtypen:

  • Services > Deploy > Replicas (Dienste > Bereitstellen > Replikate)
  • Services > Deploy > Placement > Constraints (Dienste > Bereitstellen > Platzierung > Einschränkungen)
  • Services > Deploy > Resources > Limits (Dienste > Bereitstellen > Ressourcen > Limits)
    • -cpu-shares
    • -memory
    • -memory-swap
  • Services > Commands (Dienste > Befehle)
  • Services > Environment (Dienste > Umgebung)
  • Services > Ports (Dienste > Ports)
  • Services > Image (Dienste > Image)
  • Services > Isolation (Dienste > Isolation) (nur für Windows)
  • Services > Logging > Driver (Dienste > Protokollierung > Treiber)
  • Services > Logging > Driver > Options (Dienste > Protokollierung > Treiber > Optionen)
  • Volume und Bereitstellen > Volumen

Der Cluster muss für das Erzwingen von Ressourcengrenzwerten wie in Service Fabric-Ressourcengovernance beschrieben eingerichtet werden. Alle anderen Docker Compose-Direktiven werden in dieser Vorschauversion nicht unterstützt.

Abschnitt „Ports“

Geben Sie entweder das HTTP- oder HTTPS-Protokoll im Abschnitt „Ports“ an, das vom Listener für den Service Fabric-Dienst verwendet wird. Dadurch wird sichergestellt, dass das Endpunktprotokoll ordnungsgemäß mit dem Naming Service veröffentlicht wird, damit der Reverseproxy die Anforderungen weiterleiten kann:

  • Geben Sie /http an, um zu unsicheren Service Fabric Compose-Diensten weiterzuleiten. Beispiel: - "80:80/http" .
  • Geben Sie /https an, um zu sicheren Service Fabric Compose-Diensten weiterzuleiten. Beispiel: - "443:443/https" .

Hinweis

Die Syntax der Portabschnitte für /http und /https ist spezifisch für Service Fabric, um die ordnungsgemäße URL für den Service Fabric Listener zu registrieren. Wenn die Docker Compose-Dateisyntax programmgesteuert überprüft wird, kann dies zu einem Validierungsfehler führen.

ServiceDnsName-Berechnung

Wenn der in der Compose-Datei angegebene Dienstname ein vollqualifizierter Domänenname ist (d.h., er enthält einen Punkt [.]), lautet der in Service Fabric registrierte DNS-Name <ServiceName> einschließlich des Punkts. Andernfalls wird jedes Pfadsegment im Anwendungsnamen eine Domänenbezeichnung im DNS-Namen des Diensts. Dabei wird das erste Pfadsegment die Bezeichnung für die Domäne der obersten Ebene.

Wenn also der angegebene Anwendungsname z.B. fabric:/SampleApp/MyComposeApp lautet, wird <ServiceName>.MyComposeApp.SampleApp als DNS-Name registriert.

Compose-Bereitstellung (Instanzdefinition) im Vergleich zum Service Fabric-App-Modell (Typdefinition)

Eine „docker-compose.yml“-Datei beschreibt einen bereitstellbaren Satz von Containern, einschließlich ihrer Eigenschaften und Konfigurationen. Die Datei kann z.B. Umgebungsvariablen und Ports enthalten. Bereitstellungsparameter wie Platzierungsbeschränkungen, Ressourcengrenzwerte und DNS-Namen können ebenfalls in der Datei „docker-compose.yml“ angegeben werden.

Das Service Fabric-Anwendungsmodell verwendet Dienst- und Anwendungstypen. Dabei können Sie über viele Anwendungsinstanzen desselben Typs verfügen. Sie können beispielsweise eine Anwendungsinstanz pro Kunde haben. Dieses typbasierte Modell unterstützt die Registrierung mehrerer Versionen desselben Anwendungstyps in der Runtime.

Für Kunde A kann z.B. eine Anwendung mit Typ 1.0 von AppTypeA instanziiert werden, während für Kunde B eine andere Anwendung mit demselben Typ und derselben Version instanziiert wird. Die Applikationstypen werden im Applikationsmanifest festgelegt. Bei der Erstellung der Anwendung werden auch der Applikationsname und die Bereitstellungsparameter angegeben.

Obwohl dieses Modell Flexibilität bietet, planen wir auch die Unterstützung eines einfacheren, instanzbasierten Bereitstellungsmodells, bei dem sich die Typen implizit aus der Manifestdatei ergeben. In diesem Modell erhält jede Anwendung ein eigenes unabhängiges Manifest. Eine Vorschau dieser Vorgehensweise bieten wir durch die Unterstützung von „docker-compose.yml“-Dateien, einem instanzenbasierten Bereitstellungsformat.

Nächste Schritte