Mettre à niveau Agones

Cette page explique comment mettre à niveau Agones en toute sécurité pour les clusters de Game Servers.

Avant de commencer

Avant de commencer, nous vous recommandons de vous familiariser avec les concepts clés de la page Présentation des Game Servers. Assurez-vous également que vous avez également effectué les tâches suivantes :

  • Assurez-vous d'avoir activé l'API des services de jeux.
  • Activer l'API des services de jeux
  • Choisissez une interface système sur laquelle le SDK Cloud est installé, ou utilisez un client API :
  • Cloud Shell

    Pour lancer Cloud Shell, procédez comme suit :

    1. Accédez à Google Cloud Console.

      Google Cloud Console

    2. Dans l'angle supérieur droit de la console, cliquez sur le bouton Activer Cloud Shell :

    Une session Cloud Shell s'ouvre dans un cadre situé en bas de la console. Cette interface système vous permet d'exécuter des commandes gcloud.

    Interface système locale

    Pour installer gcloud, installez le SDK Cloud, qui inclut l'outil de ligne de commande gcloud.

    Vérifiez que vous avez défini le projet par défaut souhaité pour l'outil de ligne de commande gcloud. Sinon, vous devrez spécifier explicitement l'option --project pour chaque commande ultérieurement :

    gcloud config list project
    

    Si non, vous pouvez exécuter la commande suivante pour définir un projet par défaut, en remplaçant project-id par l'ID de projet souhaité :

    gcloud config set project project-id
    

    Exécutez la commande suivante pour vérifier votre version du SDK Google Cloud. Game Servers nécessite la version 306.0.0 ou une version ultérieure du SDK.

    gcloud version
    

    Pour mettre à jour votre installation, exécutez la commande suivante :

    gcloud components update
    

    Bibliothèque cliente

    Google Cloud Game Servers peut être contrôlé par programmation à l'aide d'une bibliothèque cliente. Pour obtenir des instructions sur l'utilisation de la bibliothèque et l'authentification, consultez la page Présentation des bibliothèques clientes.

Planifier une mise à niveau

Nous vous recommandons d'effectuer des mises à niveau Agones en ajoutant de nouveaux clusters Game Servers à un domaine, puis en supprimant les anciens. Cette approche présente les avantages suivants :

  1. Elle respecte les bonnes pratiques recommandées par le projet Agones pour créer un cluster lorsque vous effectuez des mises à niveau sans intervalles de maintenance. Cette approche évite les problèmes potentiels liés à la mise à niveau Agones pendant l'exécution des jeux sur le cluster.
  2. Vous n'avez pas besoin d'essayer de mettre à niveau des nœuds Kubernetes ou Google Kubernetes Engine sur place. Vous pouvez donc éviter les problèmes liés à la suppression d'un nœud du service.
  3. Vous pouvez tester un plus grand nombre de composants dans le cadre du processus de mise à niveau, y compris les nouvelles versions de Kubernetes et Agones en une seule opération, puis les déployer ensemble en production.

Planification des mises à niveau Canary

Veillez à tester la nouvelle version d'Agones dans un environnement hors production avant de l'appliquer à l'environnement de production. Après avoir validé la nouvelle version d'Agones, commencez par mettre à niveau un domaine Canary en production. Une mise à niveau Canary est une mise à niveau qui est initialement appliquée à un seul domaine ou à un nombre limité de domaines. Les mises à niveau Canary vous permettent de tester les nouvelles fonctionnalités sur un petit pourcentage de votre infrastructure au lieu de déployer une mise à niveau potentiellement perturbatrice pour tous vos domaines. Si la mise à niveau ne se déroule pas correctement, vous pouvez limiter les perturbations pour vos utilisateurs et restaurer le domaine concerné. Si un domaine Canary n'est pas désigné, choisissez un domaine avec le minimum de trafic.

Effectuer une mise à niveau

Cette section décrit une procédure de mise à niveau qui fait passer une allocation GameServer d'un cluster avec l'ancienne version d'Agones vers un cluster avec la version mise à niveau d'Agones. La procédure de mise à niveau suppose que vous avez configuré l'allocation multicluster dans le nouveau cluster.

Les étapes suivantes vous permettent également de rétablir facilement l'infrastructure précédente en production avec un minimum d'interruptions dans l'expérience des joueurs :

  1. Créez un cluster de la même taille que le cluster actuel.

  2. Installez la nouvelle version d'Agones sur le nouveau cluster avec une version compatible de Kubernetes. Pour obtenir la liste des versions compatibles, consultez la page Versions et mises à niveau.

  3. Enregistrez le nouveau cluster avec le domaine. Cela crée des ressources de parc et d'autoscaling semblables à celles des clusters existants enregistrés dans le domaine. Une fois les parcs prêts, certaines sessions de jeu correspondantes sont envoyées au nouveau cluster.

  4. Après avoir vérifié la stabilité du nouveau cluster qui exécute la nouvelle version d'Agones, annulez l'enregistrement de l'ancien cluster et supprimez-le. Lorsque vous annulez l'enregistrement d'un cluster de Game Servers et que vous le supprimez, les serveurs, parcs et configurations de l'autoscaling du parc sont laissés tels quels. La seule modification notable sur le cluster Kubernetes est qu'il n'est plus géré par Game Servers et n'est plus connecté à l'allocation multicluster. Game Servers cesse d'envoyer de nouvelles requêtes d'allocation aux clusters qui ne sont pas enregistrés.

  5. Pour éviter les allocations supplémentaires sur l'ancien cluster si son point de terminaison associé est directement accessible, supprimez tous les pods du service d'allocation de l'ancien serveur :

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. Lorsque le cluster ne contient plus de serveurs alloués, arrêtez l'ancien cluster. Pour déterminer le nombre de serveurs alloués, exécutez la commande suivante, où namespace est l'espace de noms que vous avez utilisé lors de l'enregistrement du cluster Kubernetes en tant que cluster de Game Servers :

    kubectl get fleet --namespace namespace
    
    NAME         SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-1      Packed       10        10        0           10      2d23h
    
    

Répétez cette procédure pour chaque cluster à mettre à jour.