Ondersteuning voor Docker Compose-implementatie in Azure Service Fabric
Docker maakt gebruik van het docker-compose.yml-bestand voor het definiëren van toepassingen met meerdere containers. Om klanten die bekend zijn met Docker vertrouwd te maken met het organiseren van bestaande containertoepassingen in Azure Service Fabric, hebben we preview-ondersteuning voor docker Compose-implementatie in het platform opgenomen. Service Fabric kan versie 3 en hoger van docker-compose.yml
bestanden accepteren.
Omdat deze ondersteuning in preview is, wordt alleen een subset van compose-instructies ondersteund.
Als u deze preview wilt gebruiken, maakt u uw cluster met versie 5.7 of hoger van de Service Fabric-runtime via Azure Portal, samen met de bijbehorende SDK.
Notitie
Deze functie is in preview en wordt niet ondersteund in productie. De onderstaande voorbeelden zijn gebaseerd op runtimeversie 6.0 en SDK-versie 2.8.
Een Docker Compose-bestand implementeren in Service Fabric
Met de volgende opdrachten maakt u een Service Fabric-toepassing (benoemd), fabric:/TestContainerApp
die u kunt bewaken en beheren zoals elke andere Service Fabric-toepassing. U kunt de opgegeven toepassingsnaam gebruiken voor statusquery's.
Service Fabric herkent 'DeploymentName' als de id van de compose-implementatie.
PowerShell gebruiken
Maak een Service Fabric Compose-implementatie op basis van een docker-compose.yml-bestand door de volgende opdracht uit te voeren in PowerShell:
New-ServiceFabricComposeDeployment -DeploymentName TestContainerApp -Compose docker-compose.yml [-RegistryUserName <>] [-RegistryPassword <>] [-PasswordEncrypted]
RegistryUserName
en RegistryPassword
raadpleeg de gebruikersnaam en het wachtwoord van het containerregister. Nadat u de implementatie hebt voltooid, kunt u de status ervan controleren met behulp van de volgende opdracht:
Get-ServiceFabricComposeDeploymentStatus -DeploymentName TestContainerApp
Gebruik de volgende opdracht om de implementatie Opstellen via PowerShell te verwijderen:
Remove-ServiceFabricComposeDeployment -DeploymentName TestContainerApp
Gebruik de volgende opdracht om een upgrade voor een compose-implementatie te starten via PowerShell:
Start-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp -Compose docker-compose-v2.yml -Monitored -FailureAction Rollback
Gebruik de volgende opdracht om de upgrade van de compose-implementatie terug te draaien via PowerShell:
Start-ServiceFabricComposeDeploymentRollback -DeploymentName TestContainerApp
Nadat de upgrade is geaccepteerd, kan de voortgang van de upgrade worden bijgehouden met behulp van de volgende opdracht:
Get-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp
Azure Service Fabric CLI (sfctl) gebruiken
U kunt ook de volgende Service Fabric CLI-opdracht gebruiken:
sfctl compose create --deployment-name TestContainerApp --file-path docker-compose.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [ --timeout ]
Nadat u de implementatie hebt gemaakt, kunt u de status ervan controleren met behulp van de volgende opdracht:
sfctl compose status --deployment-name TestContainerApp [ --timeout ]
Gebruik de volgende opdracht om de compose-implementatie te verwijderen:
sfctl compose remove --deployment-name TestContainerApp [ --timeout ]
Gebruik de volgende opdracht om een implementatie-upgrade opstellen te 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 ]
Gebruik de volgende opdracht om de implementatie-upgrade opstellen terug te draaien:
sfctl compose upgrade-rollback --deployment-name TestContainerApp [ --timeout ]
Nadat de upgrade is geaccepteerd, kan de voortgang van de upgrade worden bijgehouden met behulp van de volgende opdracht:
sfctl compose upgrade-status --deployment-name TestContainerApp
Ondersteunde compose-instructies
Deze preview ondersteunt een subset van de configuratieopties van de indeling Compose versie 3, waaronder de volgende primitieven:
- Services > Replica's implementeren >
- Services > implementeren > plaatsingsbeperkingen >
- Services > implementeren > resourceslimieten >
- -cpu-shares
- -geheugen
- -memory-swap
- Services-opdrachten >
- Services-omgeving >
- Servicespoorten >
- Installatiekopieën van services >
- Isolatie van services > (alleen voor Windows)
- Stuurprogramma voor logboekregistratie > van services >
- Opties voor stuurprogramma's > voor logboekregistratie > van services >
- Volume en volume implementeren >
Stel het cluster in voor het afdwingen van resourcelimieten, zoals beschreven in Service Fabric-resourcebeheer. Alle andere Docker Compose-instructies worden niet ondersteund voor deze preview.
Sectie Poorten
Geef het http- of https-protocol op in de sectie Poorten die wordt gebruikt door de Service Fabric-servicelistener. Dit zorgt ervoor dat het eindpuntprotocol correct wordt gepubliceerd met de naamgevingsservice, zodat omgekeerde proxy de aanvragen kan doorsturen:
- Als u wilt routeren naar onbeveiligde Service Fabric Compose-services, geeft u /http op. Bijvoorbeeld: '80:80/http'.
- Als u wilt routeren naar beveiligde Service Fabric Compose-services, geeft u /https op. Bijvoorbeeld: '443:443/https'.
Notitie
De syntaxis van de sectie /http- en/https-poorten is specifiek voor Service Fabric om de juiste Service Fabric-listener-URL te registreren. Als de syntaxis van het Docker Compose-bestand programmatisch wordt gevalideerd, kan dit een validatiefout veroorzaken.
Berekening van ServiceDnsName
Als de servicenaam die u in een Compose-bestand opgeeft, een volledig gekwalificeerde domeinnaam is (dat wil gezegd, deze een punt [.]) bevat, is <ServiceName>
de DNS-naam die is geregistreerd door Service Fabric (inclusief de punt). Zo niet, wordt elk padsegment in de toepassingsnaam een domeinlabel in de DNS-naam van de service, waarbij het eerste padsegment het domeinlabel op het hoogste niveau wordt.
Als de opgegeven toepassingsnaam bijvoorbeeld is fabric:/SampleApp/MyComposeApp
, <ServiceName>.MyComposeApp.SampleApp
is dit de geregistreerde DNS-naam.
Implementatie opstellen (exemplaardefinitie) versus Service Fabric-app-model (typedefinitie)
Een docker-compose.yml-bestand beschrijft een implementeerbare set containers, inclusief hun eigenschappen en configuraties. Het bestand kan bijvoorbeeld omgevingsvariabelen en poorten bevatten. U kunt ook implementatieparameters opgeven, zoals plaatsingsbeperkingen, resourcelimieten en DNS-namen, in het docker-compose.yml-bestand.
Het Service Fabric-toepassingsmodel maakt gebruik van servicetypen en toepassingstypen, waar u veel toepassingsexemplaren van hetzelfde type kunt hebben. U kunt bijvoorbeeld één toepassingsexemplaren per klant hebben. Dit op type gebaseerde model ondersteunt meerdere versies van hetzelfde toepassingstype dat is geregistreerd bij de runtime.
Klant A kan bijvoorbeeld een toepassing hebben geïnstantieerd met type 1.0 van AppTypeA en klant B kan een andere toepassing laten instantiëeren met hetzelfde type en dezelfde versie. U definieert de toepassingstypen in de toepassingsmanifesten en u geeft de toepassingsnaam en implementatieparameters op wanneer u de toepassing maakt.
Hoewel dit model flexibiliteit biedt, zijn we ook van plan om een eenvoudiger implementatiemodel op basis van exemplaren te ondersteunen waarbij typen impliciet zijn uit het manifestbestand. In dit model krijgt elke toepassing een eigen onafhankelijk manifest. We bekijken deze inspanning door ondersteuning toe te voegen voor docker-compose.yml. Dit is een implementatie-indeling op basis van een exemplaar.