Guide de démarrage rapide: déployer un serveur pour un jeu Open Source

Déployer un serveur pour un jeu Open Source

Dans ce guide de démarrage rapide, vous allez apprendre à utiliser les domaines, les clusters, les déploiements, les configurations et les déploiements de Game Servers à l'aide de Google Cloud CLI.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  6. Assurez-vous d'avoir activé l'API des services de jeux.
  7. Activer l'API Game Services

Choisir une interface système

Pour effectuer ce démarrage rapide, vous pouvez utiliser Cloud Shell ou votre interface système locale.

Cloud Shell est un environnement shell permettant de gérer les ressources hébergées sur Google Cloud. Cloud Shell est préinstallé avec l'outil de ligne de commande gcloud. La gcloud CLI fournit l'interface de ligne de commande principale pour Game Servers.

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

Si vous sélectionnez l'interface système locale, vous devrez peut-être installer l'outil de ligne de commande Kubernetes kubectl :

gcloud components install kubectl

Créer un cluster Google Kubernetes Engine

Pour créer un cluster Google Kubernetes Engine, procédez comme suit :

  1. Dans Cloud Console, activez l'API Kubernetes Engine.

    Activer l'API

  2. Exécutez la commande suivante pour créer un cluster économique avec un nœud dans la zone us-central1-a :

    gcloud container clusters create gcgs-quickstart \
    --cluster-version=1.23 \
    --tags=game-server \
    --scopes=gke-default \
    --num-nodes=1 \
    --no-enable-autoupgrade \
    --machine-type=e2-standard-2 \
    --zone=us-central1-a
    
  3. Exécutez la commande suivante pour récupérer les identifiants du cluster GKE que vous avez créé à l'étape précédente :

    gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
    

    kubectl utilise ces identifiants pour exécuter des commandes sur vos clusters Kubernetes. Pour en savoir plus, consultez la page Configurer l'accès au cluster pour kubectl.

Installer Agones sur GKE

Dans cette section, vous installez la plate-forme d'infrastructure de jeu Open Source Agones. Pour installer Agones, procédez comme suit :

  1. Exécutez la commande suivante pour créer l'espace de noms agones-system :

    kubectl create namespace agones-system
    
  2. Exécutez la commande suivante pour installer Agones :

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
    
  3. Vous pouvez vérifier que le système Agones est en cours d'exécution en vérifiant l'état des pods Kubernetes :

    kubectl get --namespace agones-system pods
    

    Tous les pods doivent être à l'état Running :

    NAME                                 READY   STATUS    RESTARTS   AGE
    agones-allocator-6694dcc89-7r75d     1/1     Running   0          28s
    agones-allocator-6694dcc89-m7ghq     1/1     Running   0          28s
    agones-allocator-6694dcc89-qp6cm     1/1     Running   0          28s
    agones-controller-56c98db844-llzzc   1/1     Running   0          22s
    agones-ping-d9d74c5c6-8kmt6          1/1     Running   0          24s
    agones-ping-d9d74c5c6-xwn4h          1/1     Running   0          24s
    

Créer des ressources Game Servers

Pour créer des ressources Game Servers, procédez comme suit :

  1. Créez un domaine au même emplacement que le cluster GKE :

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. Enregistrez votre cluster GKE Agones avec Game Servers et associez-le au domaine créé à l'étape précédente :

    gcloud game servers clusters create cluster-quickstart \
    --realm=realm-quickstart \
    --gke-cluster locations/us-central1-a/clusters/gcgs-quickstart \
    --namespace=default \
    --location us-central1 \
    --no-dry-run
    
  3. Créez un déploiement de serveur de jeu que vous utiliserez pour stocker toutes vos configurations de serveur de jeu, puis déployez-le sur les clusters de votre serveur de jeu :

    gcloud game servers deployments create deployment-quickstart
    

    Maintenant que vous disposez d'un déploiement de serveur de jeu, vous pouvez y ajouter une configuration de serveur de jeu à l'aide de gcloud CLI.

  4. Copiez l'exemple de fichier manifeste de spécification de parc Agones suivant dans un nouveau fichier nommé fleet_configs.yaml dans le répertoire actuel :

    - name: fleet-spec-1
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              foo: bar
          spec:
            ports:
            - name: default
              portPolicy: Dynamic
              containerPort: 7654
            template:
              spec:
                containers:
                - name: simple-game-server
                  image: gcr.io/agones-images/simple-game-server:0.3
    
  5. Pour créer la configuration du serveur de jeu, exécutez la commande suivante :

    gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    
  6. Pour mettre à jour le déploiement, exécutez la commande suivante :

    gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
    
  7. Pour valider le déploiement d'un parc sous un espace de noms par défaut, exécutez la commande suivante :

    kubectl get fleet
    

    Vous trouverez ci-dessous le résultat attendu :

    NAME                                     SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-deployment-quickstart-config-1   Packed       2         2         0           2       4s
    

    Le résultat confirme que vous avez déployé un parc avec deux instances dupliquées de serveurs UDP simples dans votre cluster et qu'elles sont prêtes à accepter des connexions.

Tester la connectivité au serveur de jeu

Pour tester la connectivité au serveur de jeu:

  1. Créez une règle de pare-feu pour ouvrir les ports UDP requis pour se connecter au cluster :

    gcloud compute firewall-rules create gcgs-quickstart-firewall \
    --allow udp:7000-8000 \
    --target-tags game-server \
    --description "Firewall to allow game server udp traffic"
    
  2. Obtenez ensuite l'adresse IP et le numéro de port d'un serveur de jeu individuel :

    kubectl get gameserver
    

    La commande renvoie un résultat semblable à celui-ci :

    NAME                                                 STATE   ADDRESS          PORT   NODE                                             AGE
    fleet-deployment-quickstart-config-1-nndvr-5gvch   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    fleet-deployment-quickstart-config-1-nndvr-vqwpl   Ready   IP_ADDRESS   PORT_NUMBER   gke-gcgs-quickstart-default-pool-db3d2ee8-dlg7   11s
    
  3. Pour tester la connectivité, vous exécutez la commande Netcat. Pour installer Netcat sous Linux, exécutez la commande suivante :

    sudo apt install netcat
    
  4. Pour lancer le test, exécutez la commande suivante :

    nc -u IP_ADDRESS PORT_NUMBER
    
  5. Ensuite, saisissez Hello et la commande renvoie une sortie semblable à ce qui suit :

    Hello
    > ACK: Hello
    
  6. Utilisez les touches Ctrl+C pour arrêter le test.

(Facultatif) Déployer un serveur pour un titre de jeu Open Source

Vous pouvez mettre à jour le déploiement pour déployer un parc avec deux instances dupliquées de serveurs de jeu Open Source dans votre cluster. Ces serveurs de jeux sont compatibles avec la version multijoueur du jeu de course SuperTuxKart.

  1. Remplacez le fichier fleet_configs.yaml existant par la spécification de parc Agones suivante :

    - name: supertuxkart
      fleetSpec:
        replicas: 2
        template:
          metadata:
            labels:
              version: "1.0"
          spec:
            ports:
            - name: default
              containerPort: 8080
            health:
              initialDelaySeconds: 30
              periodSeconds: 60
            template:
              spec:
                containers:
                - name: supertuxkart
                  image: gcr.io/agones-images/supertuxkart-example:0.3
    
  2. Vous ne pouvez pas mettre à jour une configuration de serveurs de jeu existante, car elles sont immuables. Créez une configuration qui référence le fichier manifeste de la spécification de parc mise à jour :

    gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    

  3. Mettez à jour le déploiement avec la nouvelle configuration :

    gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
    

  4. Récupérez l'adresse IP et le numéro de port d'un serveur de jeu individuel :

    kubectl get gameserver
    

  5. Téléchargez un client SuperTuxKart.

  6. Démarrez le client SuperTuxKart.

  7. Cliquez sur le bouton En ligne dans le menu principal, puis sur le bouton Saisir l'adresse du serveur.

  8. Saisissez l'adresse IP et le numéro de port d'un serveur de jeu individuel (défini à une étape précédente).

  9. Cliquez sur Démarrer la course pour lancer le jeu.

Vous pouvez télécharger le client SuperTuxKart sur d'autres plates-formes pour vous connecter au même serveur et participer à la course.

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud, procédez comme suit :

Si vous ne souhaitez conserver aucune des ressources créées dans ce guide de démarrage rapide, vous pouvez supprimer le projet :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Si vous souhaitez conserver le projet, procédez comme suit pour supprimer manuellement les ressources que vous avez créées dans ce guide de démarrage rapide :

  1. Pour supprimer la règle de pare-feu, exécutez la commande suivante :

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. Pour effacer le déploiement par défaut, exécutez la commande suivante :

    gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
    
  3. Pour supprimer la configuration du serveur de jeu, exécutez la commande suivante :

    gcloud game servers configs delete config-1 --deployment deployment-quickstart
    

    Si vous avez terminé la section facultative, supprimez la configuration de serveur de jeu supplémentaire :

    gcloud game servers configs delete stk-1 --deployment deployment-quickstart
    
  4. Pour supprimer le déploiement du serveur de jeu, exécutez la commande suivante :

    gcloud game servers deployments delete deployment-quickstart
    
  5. Pour supprimer le cluster du serveur de jeu, exécutez la commande suivante :

    gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
    
  6. Pour supprimer le domaine, exécutez la commande suivante :

    gcloud game servers realms delete realm-quickstart --location=us-central1
    
  7. Pour désactiver l'API des services de jeux, exécutez la commande suivante :

    gcloud services disable gameservices.googleapis.com
    
  8. Pour supprimer le cluster GKE, exécutez la commande suivante :

    gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
    

Étapes suivantes

Pour une introduction technique aux concepts de Game Servers, consultez la page Présentation de Game Servers.

Pour en savoir plus sur les tâches spécifiques de Game Servers, consultez les guides pratiques.

Consulter les exemples de projet de déploiement Terraform