Partager via


Prise en charge du déploiement Docker Compose dans Azure Service Fabric

Docker utilise le fichier docker-compose.yml pour la définition d’applications à conteneurs multiples. Pour permettre aux clients familiarisés avec Docker d’orchestrer facilement des applications de conteneur existantes sur Azure Service Fabric, nous avons inclus la prise en charge en préversion du déploiement Docker Compose en mode natif dans la plateforme. Service Fabric peut accepter des fichiers docker-compose.yml version 3 ou ultérieure.

Étant donné que cette prise en charge est disponible en préversion, seul un sous-ensemble des directives de Compose est reconnu.

Pour utiliser cette préversion, créez votre cluster en utilisant la version 5.7 ou plus du runtime Service Fabric via le portail Azure, ainsi que le Kit de développement logiciel (SDK) correspondant.

Notes

Cette fonctionnalité est disponible en préversion et n’est pas prise en charge dans les environnements de production. Les exemples ci-dessous sont basés sur le runtime version 6.0 et le SDK version 2.8.

Déployer un fichier Docker Compose sur Service Fabric

Les commandes ci-après créent une application Service Fabric (nommée fabric:/TestContainerApp), que vous pouvez surveiller et gérer comme n’importe quelle autre application Service Fabric. Vous pouvez utiliser le nom de l’application spécifiée pour des requêtes d’intégrité. Service Fabric reconnaît « DeploymentName » en tant qu’identificateur du déploiement Compose.

Utiliser PowerShell

Créez un déploiement Compose Service Fabric à partir d’un fichier docker-compose.yml en exécutant la commande suivante dans PowerShell :

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

RegistryUserName et RegistryPassword font référence au nom d’utilisateur et au mot de passe du registre de conteneurs. Une fois que vous avez créé le déploiement, vous pouvez en vérifier l’état à l’aide de la commande suivante :

Get-ServiceFabricComposeDeploymentStatus -DeploymentName TestContainerApp

Pour supprimer le déploiement Compose, utilisez la commande suivante dans PowerShell :

Remove-ServiceFabricComposeDeployment  -DeploymentName TestContainerApp

Pour démarrer une mise à niveau du déploiement Compose, utilisez la commande suivante dans PowerShell :

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

Pour restaurer la mise à niveau du déploiement Compose, utilisez la commande suivante dans PowerShell :

Start-ServiceFabricComposeDeploymentRollback -DeploymentName TestContainerApp

Une fois la mise à niveau acceptée, vous pouvez suivre sa progression à l’aide de la commande suivante :

Get-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp

Utiliser l’interface CLI Azure Service Fabric (sfctl)

Vous pouvez également utiliser la commande CLI Service Fabric ci-après :

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

Une fois que vous avez créé le déploiement, vous pouvez en vérifier l’état à l’aide de la commande suivante :

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

Pour supprimer le déploiement Compose, utilisez la commande ci-après :

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

Pour démarrer une mise à niveau du déploiement Compose, utilisez la commande ci-après :

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 ]

Pour restaurer la mise à niveau du déploiement Compose, utilisez la commande suivante :

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

Une fois la mise à niveau acceptée, vous pouvez suivre sa progression à l’aide de la commande suivante :

sfctl compose upgrade-status --deployment-name TestContainerApp

Directives Compose prises en charge

Cette préversion prend en charge un sous-ensemble des options de configuration du format Compose version 3, incluant les primitives suivantes :

  • Services > Déploiement > Réplicas
  • Services > Déploiement > Placement > Contraintes
  • Services > Déploiement > Ressources > Limites
    • -cpu-shares
    • -memory
    • -memory-swap
  • Services > Commandes
  • Services > Environnement
  • Services > Ports
  • Services > Image
  • Services > Isolation (uniquement pour Windows)
  • Services > Journalisation > Pilote
  • Services > Journalisation > Pilote > Options
  • Volume et déploiement > Volume

Configurez le cluster pour qu’il applique des limites de ressources, comme décrit dans l’article Gouvernance des ressources Azure Service Fabric. Aucune des autres directives Docker Compose n’est prise en charge pour cette préversion.

Section Ports

Spécifiez le protocole HTTP ou HTTPS dans la section Ports qui sera utilisée par l’écouteur du service Service Fabric. Ceci garantit que le protocole du point de terminaison est publié correctement avec le service de nommage pour autoriser le proxy inverse à transférer les requêtes :

  • Pour router vers des services Compose de Service Fabric non sécurisés, spécifiez /http. Par exemple, "80:80/http".
  • Pour router vers des services Compose de Service Fabric sécurisés, spécifiez /https. Par exemple, "443:443/https".

Notes

La syntaxe de la section Ports /http et /https est spécifique à Service Fabric pour inscrire l’URL correcte de l’écouteur Service Fabric. Si la syntaxe du fichier Docker Compose est validée par programmation, elle peut provoquer une erreur de validation.

Calcul de ServiceDnsName

Si le nom de service que vous spécifiez dans un fichier Compose est un nom de domaine complet (autrement dit, s’il contient un point [.]), le nom DNS inscrit par Service Fabric est <ServiceName> (y compris le point). Dans le cas contraire, chaque segment de chemin d’accès dans le nom de l’application devient une étiquette de domaine dans le nom DNS du service, le premier segment de chemin devenant l’étiquette du domaine de premier niveau.

Par exemple, si le nom de l’application spécifié est fabric:/SampleApp/MyComposeApp, <ServiceName>.MyComposeApp.SampleApp est le nom DNS inscrit.

Déploiement Compose (définition de l’instance) et modèle d’application Service Fabric (définition de type)

Un fichier docker-compose.yml décrit un ensemble déployable de conteneurs, y compris leurs propriétés et leurs configurations. Par exemple, le fichier peut contenir des variables d’environnement et des ports. Dans le fichier docker-compose.yml, vous pouvez également spécifier des paramètres de déploiement, comme les contraintes de positionnement, les limites de ressources et les noms DNS.

Le modèle d’application Service Fabric utilise des types de service et des types d’application. Il peut y avoir de nombreuses instances d’application du même type. Par exemple, vous pouvez avoir une seule instance d’application par client. Ce modèle basé sur le type prend en charge plusieurs versions du même type d’application inscrit auprès du runtime.

Par exemple, le client A peut utiliser une application instanciée avec le type 1.0 d’AppTypeA, tandis que le client B peut disposer d’une autre application instanciée avec le même type et la même version. Vous définissez les types d’applications dans les manifestes d’application, et vous spécifiez le nom de l’application et les paramètres de déploiement au moment où vous créez l’application.

Bien que ce modèle offre une certaine flexibilité, nous prévoyons également de prendre en charge un modèle de déploiement plus simple, basé sur les instances, dans lequel les types sont implicites à partir du fichier manifeste. Dans ce modèle, chaque application obtient son propre manifeste indépendant. Nous proposons cela en version préliminaire, en ajoutant la prise en charge du format docker-compose.yml, qui est un format de déploiement basé sur les instances.

Étapes suivantes