Installer Agones sur OVHcloud Managed Kubernetes
Découvrez comment installer Agones sur OVHcloud Managed Kubernetes
Ce tutoriel vous guide dans l'installation d'Agones sur votre OVHcloud Managed Kubernetes Service. Agones est une solution open source d'hébergement de serveurs de jeu multijoueur dédiés, construite sur Kubernetes.
Pour tester votre installation, vous allez installer un serveur de jeu Xonotic et disputer quelques deathmatchs à l'ancienne...
Avant de commencer
Ce tutoriel suppose que vous disposez déjà d'un cluster OVHcloud Managed Kubernetes fonctionnel, ainsi que de connaissances de base sur son fonctionnement. Pour en savoir plus sur ces sujets, consultez la documentation Déployer une application Hello World.
Vous devez également avoir Helm installé sur votre poste de travail et sur votre cluster ; reportez-vous au tutoriel Comment installer Helm sur OVHcloud Managed Kubernetes Service.
Qu'est-ce qu'Agones ?
L'un des principaux avantages de Kubernetes est son écosystème redoutable. De Rancher à Istio, de Rook à Fission, de gVisor à KubeDB, l'écosystème Kubernetes est riche, dynamique et en constante croissance. Nous arrivons désormais à un point où, pour la plupart des besoins de déploiement, on peut dire qu'il existe un projet open source basé sur K8s pour cela.
L'une des dernières additions à cet écosystème est le projet Agones, une solution open source d'hébergement de serveurs de jeu multijoueur dédiés, construite sur Kubernetes et développée par Google en collaboration avec Ubisoft. Le projet a été annoncé en mars et a déjà fait beaucoup de bruit...
Pourquoi Agones ?
Agones (dérivé du mot grec agōn, qui désignait des concours organisés lors de fêtes publiques, ou plus généralement une « compétition » ou un « concours de jeux ») vise à remplacer les solutions propriétaires habituellement utilisées pour déployer, mettre à l'échelle et gérer des serveurs de jeu.
Agones enrichit Kubernetes avec un contrôleur personnalisé et une définition de ressource personnalisée (CRD). Grâce à eux, vous pouvez standardiser les outils et API Kubernetes pour créer, mettre à l'échelle et gérer des clusters de serveurs de jeu.
Quels types de serveurs de jeu ?
Agones se concentre principalement sur les jeux multijoueur en ligne comme les FPS et les MOBA, des jeux rapides nécessitant des serveurs de jeu dédiés à faible latence qui synchronisent l'état du jeu entre les joueurs et servent de source de vérité pour les situations de jeu.
Ces types de jeux nécessitent des serveurs de jeu dédiés relativement éphémères, chaque match s'exécutant sur une instance de serveur distincte. Les serveurs doivent être stateful (ils doivent conserver l'état du jeu), cet état étant généralement conservé en mémoire pendant toute la durée du match.
La latence est un enjeu majeur, car les aspects compétitifs en temps réel de ces jeux exigent des réponses rapides du serveur. Cela signifie que la connexion entre l'appareil du joueur et le serveur de jeu doit être la plus directe possible, en évitant idéalement tout serveur intermédiaire tel qu'un load balancer.
Connecter les joueurs au bon serveur
Chaque éditeur de jeux disposait auparavant de ses propres solutions propriétaires, mais la plupart suivent un flux similaire, avec un service de matchmaking qui regroupe les joueurs en un match, sollicite un gestionnaire de cluster pour provisionner une instance dédiée de serveur de jeu, puis transmet aux joueurs son adresse IP et son port afin qu'ils puissent se connecter directement au serveur et jouer.
Agones, avec son contrôleur personnalisé et sa définition de ressource personnalisée, remplace l'infrastructure complexe de gestion de cluster par des outils et API standardisés basés sur Kubernetes. Les services de matchmaking interagissent avec ces API pour créer de nouveaux pods de serveur de jeu et transmettre leur adresse IP et leur port aux joueurs concernés.
La cerise sur le gâteau
L'utilisation de Kubernetes pour ces tâches apporte également des avantages supplémentaires appréciables, comme la possibilité de déployer l'ensemble de l'infrastructure de jeu dans un environnement de développement minikube, ou de la cloner facilement pour la déployer dans un nouveau datacenter ou une nouvelle région cloud, tout en offrant une plateforme complète pour héberger tous les services complémentaires nécessaires à la création d'un jeu : gestion des comptes, classements, inventaire...
Sans oublier la simplicité d'exploitation des plateformes basées sur Kubernetes, en particulier lorsqu'elles sont dynamiques, hétérogènes et distribuées, comme le sont la plupart des plateformes de jeu en ligne.
Déployer Agones sur OVHcloud Managed Kubernetes
Il existe plusieurs façons d'installer Agones dans un cluster Kubernetes. Pour notre test, nous avons choisi la plus simple : l'installation via Helm.
Autoriser la création de ressources RBAC
La première étape pour installer Agones consiste à configurer un compte de service disposant des permissions suffisantes pour créer certains types de ressources RBAC spécifiques.
Nous disposons désormais du Cluster Role Binding nécessaire à l'installation :
Installer le chart Agones
Ajoutez maintenant le dépôt Agones à la liste des dépôts Helm.
Installez ensuite le chart stable d'Agones :
Après quelques instants, Agones devrait être installé :
L'installation que nous venons de réaliser ne convient pas à un usage en production, car les instructions d'installation officielles recommandent d'exécuter Agones et les serveurs de jeu dans des pools de nœuds séparés et dédiés. Mais pour les besoins de notre test, cette configuration de base est suffisante.
Confirmer le bon démarrage d'Agones
Pour vérifier qu'Agones s'exécute sur notre cluster Kubernetes, nous pouvons examiner les pods du namespace agones-system :
Si tout va bien, vous devriez voir un pod agones-controller avec le statut Running :
Vous pouvez également obtenir plus de détails avec :
En examinant la description d'agones-controller, vous devriez voir quelque chose comme :
Toutes les Conditions doivent avoir le statut True.
Déployer un serveur de jeu
L'exemple Hello world d'Agones est plutôt sobre : un simple serveur de jeu Xonotic.
Xonotic est un FPS multijoueur open source, et plutôt réussi, avec de nombreux modes de jeu, cartes, armes et options de personnalisation intéressants.
Déployer un serveur de jeu Xonotic sur Agones est plutôt simple :
Cette commande installe Xonotic :
Le déploiement du serveur de jeu peut prendre quelques instants ; il faut donc attendre que son statut passe à Ready ou Unhealthy avant de l'utiliser. Vous pouvez récupérer le statut avec :
Attendez que le statut renvoyé soit Ready ou Unhealthy pour votre serveur de jeu :
Une fois le serveur de jeu prêt, vous obtenez également l'adresse et le port à utiliser pour vous connecter à votre partie de deathmatch (dans notre exemple, 51.83.xxx.yyy:7410).
À vous de jouer
Maintenant que vous disposez d'un serveur, testez-le !
Téléchargez le client Xonotic (il fonctionne sous Windows, Linux et macOS, aucune excuse n'est valable), puis lancez-le :
Accédez ensuite au menu Multiplayer et saisissez l'adresse et le port de votre serveur de jeu :
Vous êtes maintenant prêt à jouer !
Et côté serveur ?
Côté serveur, vous pouvez observer le déroulement de votre partie via kubectl logs. Commencez par identifier le pod qui exécute le jeu :
Vous constaterez que votre serveur de jeu s'exécute dans un pod appelé xonotic :
Vous pouvez ensuite utiliser kubectl logs sur ce pod. Celui-ci contient deux conteneurs, le conteneur principal xonotic et un sidecar Agones ; vous devez donc préciser que vous souhaitez les logs du conteneur xonotic :
Invitez des amis
La prochaine étape est particulièrement agréable : invitez des amis à se connecter au serveur pour un véritable deathmatch, comme à l'époque de Quake 2.
Suppression (nettoyage)
Désinstallez le serveur de jeu Xonotic :
Pour désinstaller Agones, puisque vous l'avez installé via Helm, vous pouvez utiliser la commande helm uninstall afin de supprimer le chart Helm installé d'Agones :
Supprimez le ClusterRoleBinding installé :
Aller plus loin
-
Si vous avez besoin d'une formation ou d'une assistance technique pour la mise en oeuvre de nos solutions, contactez votre commercial ou cliquez sur ce lien pour obtenir un devis et demander une analyse personnalisée de votre projet à nos experts de l’équipe Professional Services.
-
Échangez avec notre communauté d'utilisateurs.