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 de 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 Game Services
  • Choisissez une interface système sur laquelle gcloud CLI est installée 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 les commandes gcloud.

    Shell local

    Installer gcloud CLI

    Vérifiez que vous avez défini le projet par défaut souhaité pour Google Cloud CLI (sinon, vous devrez spécifier l'indicateur --project explicitement 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 de Google Cloud CLI. Game Servers nécessite la version 306.0.0 ou ultérieure de gcloud CLI.

    gcloud version
    

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

    gcloud components update
    

    curl/PowerShell

    Pour utiliser l'API REST avec curl ou Windows PowerShell, procédez comme suit :

    1. Créer un compte de service
    2. Téléchargez une clé privée sous la forme d'un fichier JSON.
    3. Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin d'accès du fichier JSON contenant vos identifiants. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

    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 tout problème potentiel lié à la tentative de 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 pour le 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.

Planifier 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 initialement appliquée à un nombre unique ou 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 sur 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 moins 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'autoscaler 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 Game Servers et que vous le supprimez, les serveurs, parcs et configurations d'autoscaler de parc attribués sont laissés tels quels. La seule modification notable sur le cluster Kubernetes est qu'il n'est plus géré par Game Servers. Il 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 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.