Créer et déployer des images de conteneur Linux
Cette section décrit les étapes spécifiques permettant de créer et de déployer des images de conteneur Linux. Comme décrit dans Créer des machines virtuelles (VM), lorsque vous utilisez notre service, vous configurez des machines virtuelles qui sont automatiquement démarrées en tant que serveurs de jeu dans le monde entier, en fonction de votre budget et de la demande. Pour ce faire, vous ne créez pas explicitement de machines virtuelles : vous définissez des paramètres qui déterminent la façon dont elles sont créées pour vous. Ce processus est appelé déploiement ou création d’une build. PlayFab Multiplayer Servers peut déployer des serveurs de jeu Linux et Windows. Les builds de conteneurs Linux sont déployées de façon similaire aux conteneurs Windows, à quelques différences importantes près. Pour en savoir plus, consultez Différences entre les images de conteneur Windows et Linux. Si vous souhaitez utiliser PowerShell/l’API pour gérer les conteneurs Linux, consultez Gérer les images de conteneur Linux à l’aide des API. Lorsque vous utilisez des serveurs de jeu Linux, au lieu d’utiliser une image de conteneur managée, vous devez créer votre image de conteneur et la téléverser dans un registre de conteneurs. Pour faciliter le téléversement des conteneurs, votre compte est fourni avec un registre de conteneurs Azure.Connaissances requises
Configurer votre appareil de développement Windows
Cette étape n’est nécessaire que si vous souhaitez utiliser un appareil de développement Windows pour créer des images de conteneur Linux. Vous pouvez également utiliser des appareils sous système d’exploitation Linux, des machines virtuelles ou des systèmes à double démarrage sur lesquels Docker est installé. Le Sous-système Windows pour Linux (WSL) vous permet d’utiliser votre appareil de développement dans l’environnement Windows qui vous est familier pour créer et gérer des images de conteneur Linux. Avec WSL, vous n’avez pas besoin de la surcharge d’une machine virtuelle Linux traditionnelle ou d’une configuration à double démarrage.- Installez WSL 2. Assurez-vous de redémarrer votre machine et à utiliser WSL 2. Vous devez également installer le package de mise à jour du noyau Linux.
- Installez une distribution Linux qui utilise WSL. Bien que nos machines virtuelles utilisent Ubuntu, vous pouvez sélectionner la distribution de votre choix pour votre image de conteneur. Envisagez d’utiliser Ubuntu 20.04 Long-Term Support (LTS) ou une version ultérieure.
- Installez Docker Desktop pour Windows avec WSL 2. Pour le lien de téléchargement direct, accédez à Docker Desktop pour Windows (externe).
- Ouvrez PowerShell
- Exécutez wsl -l -v pour vérifier que les applications docker-desktop et ubuntu s’exécutent toutes deux sous WSL 2 (version 2)
- Ouvrez un terminal WSL
- Exécutez docker version pour vérifier que Docker est installé et que le système d’exploitation utilisé est Linux
Obtenir les informations d’identification de connexion à votre registre de conteneurs PlayFab
Le compte de registre de conteneurs Azure est associé à votre compte PlayFab. Vous seul avez accès aux conteneurs qui y sont téléversés. Ce registre de conteneurs Azure est gratuit.- Dans Game Manager, sélectionnez votre titre de jeu, puis Multiplayer > Servers. Sélectionnez New build pour ouvrir la page de création de build.
- Sélectionnez Linux comme système d’exploitation de la machine virtuelle.
- Notez les informations d’identification de connexion (nom, mot de passe et customer5555555.azurecr.io), car elles seront nécessaires ultérieurement
Créer des images de conteneur Linux et les envoyer vers Azure Container Registry
Ces étapes vous aident à créer et à envoyer votre image de conteneur Linux personnalisée.Intégrer votre application de serveur de jeu au GSDK
Comme pour les serveurs Windows, vous devez intégrer le code de votre serveur de jeu au SDK PlayFab Multiplayer Server (GSDK). L’intégration du GSDK peut faire partie de votre image de conteneur. Pour obtenir des instructions, consultez Créer une build de serveur de jeu et Intégration de votre titre au SDK du serveur de jeu PlayFab (GSDK).Créer un Dockerfile
Un Dockerfile est un fichier texte sans extension qui contient toutes les commandes nécessaires pour générer une image de conteneur donnée.- Ouvrez le Bloc-notes ou tout autre éditeur approprié
- Ajoutez les commandes spécifiques nécessaires pour exécuter et générer un conteneur. Pour un exemple de ce fichier, consultez le DockerFile fourni dans l’exemple Wrapper. Pour plus d’informations sur la création de ce fichier, consultez Format du Dockerfile (externe) et Pratiques exemplaires de création d’un Dockerfile (externe)
- Enregistrez le fichier en tant que Dockerfile, idéalement dans un dossier/répertoire vide. Vous devez ajouter à ce dossier les autres fichiers nécessaires à la génération de l’image de conteneur.
- Sélectionnez File> Save as… pour ouvrir les options d’enregistrement
- Accédez au dossier dans lequel vous souhaitez enregistrer le fichier
- Sous File name:, saisissez “Dockerfile”, guillemets compris.
- Pour Save as type:, sélectionnez All Files
- Sélectionnez l’encodage UTF-8
- Sélectionnez Save
Générer et téléverser l’image de conteneur Linux
- Ouvrez votre terminal Linux sur lequel Docker est installé.
- Exécutez les commandes Docker suivantes à l’aide des informations d’identification de connexion obtenues à l’étape précédente. Suivez ensuite les instructions à l’écran pour saisir votre nom d’utilisateur et votre mot de passe.
- Générez l’image de conteneur
- Exécutez ensuite cd /mnt/c/path/to/your/Dockerfile pour accéder au chemin de votre Dockerfile. Pour plus d’informations, consultez Accès au lecteur C.
- Téléversez l’image de conteneur
Vérifier que votre conteneur est téléversé
Une fois le conteneur téléversé, revenez à la page New Build de Game Manager et sélectionnez Refresh Images. Vous pourrez voir l’image dans la liste et la sélectionner. Vous pouvez également utiliser l’appel d’API ListContainerImages pour répertorier vos images de conteneur téléversées. Vous êtes maintenant prêt à déployer des serveurs. Pour obtenir des instructions, consultez Portail PlayFab—Game Manager et Utilisation de PowerShell/de l’API.Différences entre les images de conteneur Windows et Linux
Pour de nombreux développeurs, l’utilisation du conteneur Windows managé est le choix simple et par défaut privilégié. Toutefois, les images de conteneur Linux déployées sur des machines virtuelles bénéficient d’un tarif horaire moins élevé.Vous pouvez personnaliser entièrement vos serveurs de jeu, que vous utilisiez des images de conteneur Windows ou Linux. Avec les serveurs Windows, vous personnalisez l’image de conteneur managée en téléversant des actifs.
Gérer les images de conteneur Linux à l’aide des API
Vous pouvez utiliser les API pour gérer les images de conteneur Linux. Pour le reste du cycle de vie des builds (consultation de l’utilisation, mise à jour des régions et des configurations standingBy, suppression), gérez-les à l’aide de Game Manager.- GetContainerRegistryCredentials : récupère l’adresse, le nom d’utilisateur et le mot de passe du registre de conteneurs
- ListContainerImages et ListContainerImageTags : vérifiez que votre nouvelle image et sa balise sont répertoriées (il peut parfois falloir quelques minutes pour que l’image soit entièrement inscrite dans le système)
- CreateBuildWithCustomContainer : crée une build avec un conteneur personnalisé. Spécifiez l’image balisée que vous avez téléversée précédemment. Assurez-vous que les propriétés suivantes sont définies dans la requête :
- ContainerImageReference : le nom et la balise de l’image téléversée précédemment. Ces valeurs sont visibles dans ListContainerImages et ListContainerImageTags.
- ContainerFlavor : “CustomLinux”
- ContainerRunCommand (facultatif) : si votre conteneur n’a pas de commande par défaut, utilisez cette propriété pour fournir la commande à exécuter, avec ses éventuels arguments.
Empaquetage des actifs pour les serveurs Linux basés sur un processus
Lorsque vous utilisez Linux en mode processus (au lieu du mode conteneur), vous téléversez votre serveur de jeu sous forme d’archive d’actifs plutôt que d’image de conteneur. Cette section décrit les exigences d’empaquetage importantes.Formats d’archive pris en charge
Les actifs doivent être téléversés sous forme de fichiers.tar.gz ou .tar, afin que les autorisations de fichier Unix (comme le bit d’exécution) soient conservées lors de l’extraction.
Exigences de structure des archives tar.gz et tar
Lors de l’extraction des archives.tar ou .tar.gz, PlayFab Multiplayer Servers supprime le premier niveau de répertoire de l’archive (équivalent à tar --strip-components=1). Votre archive doit contenir un seul répertoire englobant de premier niveau, à l’intérieur duquel se trouvent tous vos fichiers de jeu.
Structure correcte : fichiers placés dans un répertoire de premier niveau :
Définition de la commande de démarrage
Pour les serveurs basés sur un processus, la commande de démarrage doit être relative au dossier racine des actifs après l’extraction (c’est-à-dire relative à l’emplacement des fichiers une fois le répertoire de premier niveau supprimé). Par exemple, si votre archive contientMyGameServer/MyGame.x86_64, après l’extraction, le fichier se trouve à la racine du dossier des actifs. Définissez votre commande de démarrage sur :
MyGameServer/bin/MyGame.x86_64), définissez la commande de démarrage sur :
Gérer les builds Linux basées sur un processus à l’aide des API
Vous pouvez utiliser les API pour gérer les builds Linux basées sur un processus. Pour le reste du cycle de vie des builds (consultation de l’utilisation, mise à jour des régions et des configurations standingBy, suppression), gérez-les à l’aide de Game Manager.- CreateBuildWithProcessBasedServer : crée une build dont le serveur de jeu s’exécute en tant que processus. Assurez-vous que les propriétés suivantes sont définies dans la requête :
- OsPlatform : “Linux”
- GameAssetReferences : la liste des actifs de jeu (téléversés sous forme de fichiers
.tar.gzou.tar). Chaque actif nécessite un FileName correspondant au nom de l’actif téléversé. - StartMultiplayerServerCommand : la commande à exécuter au démarrage du serveur de jeu. Le chemin doit être relatif au dossier racine des actifs après l’extraction (par exemple,
MyGame.x86_64 -server). - Ports : les ports à mapper pour la build.
- MultiplayerServerCountPerVm : le nombre d’instances de serveur de jeu à héberger sur une même machine virtuelle.
- RegionConfigurations : les régions dans lesquelles effectuer le déploiement, avec le nombre de serveurs en attente et le nombre maximal de serveurs.
