Guida rapida: deployment di un server per un gioco open source

Eseguire il deployment di un server per un gioco open source

In questa guida rapida, imparerai a utilizzare le aree di autenticazione, i cluster, i deployment, le configurazioni e le implementazioni di server di gioco in Game Servers utilizzando Google Cloud CLI.


Per seguire le indicazioni dettagliate per questa attività direttamente nella console Google Cloud, fai clic su Procedura guidata:

Procedura guidata


Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  6. Assicurati di aver attivato l'API Game Services.
  7. Abilita l'API Game Services

Scegliere una shell

Per completare questa guida rapida, puoi utilizzare Cloud Shell o la tua shell locale.

Cloud Shell è un ambiente shell per la gestione delle risorse ospitate su Google Cloud. Cloud Shell è preinstallato con lo strumento a riga di comando gcloud. L'interfaccia a riga di comando gcloud fornisce l'interfaccia a riga di comando principale per Game Servers.

Cloud Shell

Per avviare Cloud Shell, esegui questi passaggi:

  1. Vai alla console Google Cloud.

    Console Google Cloud

  2. Nell'angolo in alto a destra della console, fai clic sul pulsante Attiva Cloud Shell:

Una sessione di Cloud Shell si apre all'interno di un frame più in basso nella console. Utilizza questa shell per eseguire i comandi gcloud.

Shell locale

Installare l'interfaccia a riga di comando gcloud.

Verifica di aver impostato il progetto predefinito desiderato per Google Cloud CLI (in caso contrario dovrai specificare il flag --project in modo esplicito per ogni comando in un secondo momento):

gcloud config list project

In caso contrario, puoi eseguire il seguente comando per impostare un progetto predefinito, sostituendo PROJECT_ID con l'ID progetto desiderato :

gcloud config set project PROJECT_ID

Esegui il comando seguente per verificare la tua versione di Google Cloud CLI. Game Servers richiede la versione 306.0.0 o successiva dellgcloud CLI.

gcloud version

Per aggiornare l'installazione, esegui il comando seguente:

gcloud components update

Se selezioni la shell locale, potresti dover installare lo strumento a riga di comando Kubernetes kubectl:

gcloud components install kubectl

Creazione di un cluster Google Kubernetes Engine

Per creare un cluster Google Kubernetes Engine:

  1. Nella console Cloud, abilita l'API Kubernetes Engine.

    Abilitare l'API

  2. Esegui questo comando per creare un cluster con ottimizzazione dei costi con un nodo nella zona 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. Esegui questo comando per recuperare le credenziali per il cluster GKE creato nel passaggio precedente:

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

    kubectl utilizza queste credenziali per eseguire comandi nei cluster Kubernetes. Per ulteriori informazioni, consulta Configurazione dell'accesso ai cluster per kubectl.

Installazione di Agones su GKE

In questa sezione installerai la piattaforma di infrastruttura di gioco open source Agones. Per installare Agones:

  1. Esegui il comando seguente per creare lo spazio dei nomi agones-system:

    kubectl create namespace agones-system
    
  2. Esegui questo comando per installare Agones:

    kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
    
  3. Puoi verificare che il sistema Agones sia in esecuzione controllando lo stato dei pod Kubernetes:

    kubectl get --namespace agones-system pods
    

    Tutti i pod dovrebbero essere in uno stato 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
    

Creazione di risorse Game Servers

Per creare le risorse Game Servers:

  1. Crea un'area di autenticazione nella stessa località del cluster GKE:

    gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
    
  2. Registra il tuo cluster Agones GKE con Game Servers e collegalo al realm creato nel passaggio precedente:

    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. Crea un deployment del server di gioco, che utilizzi per archiviare tutte le configurazioni del server di gioco, quindi eseguine l'implementazione nei cluster del server di gioco:

    gcloud game servers deployments create deployment-quickstart
    

    Ora che hai un deployment del server di gioco, puoi aggiungere una configurazione del server di gioco utilizzando gcloud CLI.

  4. Copia il seguente manifest delle specifiche del parco risorse Agones in un nuovo file denominato fleet_configs.yaml nella directory corrente:

    - 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. Per creare la configurazione del server di gioco, esegui il comando seguente:

    gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
    
  6. Per aggiornare l'implementazione, esegui questo comando:

    gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
    
  7. Per convalidare l'implementazione di un parco risorse nello spazio dei nomi predefinito, esegui questo comando:

    kubectl get fleet
    

    Di seguito è illustrato l'output previsto:

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

    L'output conferma che hai eseguito il deployment di un parco risorse con due repliche di server UDP semplici nel tuo cluster, pronte per accettare connessioni.

Test della connettività al server di gioco

Per testare la connettività al server di gioco:

  1. Crea una regola firewall per aprire le porte UDP necessarie per connetterti al 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. Quindi, recupera l'indirizzo IP e il numero di porta di un singolo server di gioco:

    kubectl get gameserver
    

    Il comando restituisce un output simile al seguente:

    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. Per testare la connettività, esegui il comando Netcat. Per installare Netcat su Linux, esegui questo comando:

    sudo apt install netcat
    
  4. Per avviare il test, esegui il comando seguente:

    nc -u IP_ADDRESS PORT_NUMBER
    
  5. Quindi, digita Hello e il comando restituisce un output simile al seguente:

    Hello
    > ACK: Hello
    
  6. Utilizza Ctrl+C per interrompere il test.

(Facoltativo) Eseguire il deployment di un server per un titolo di gioco open source

Puoi aggiornare l'implementazione per eseguire il deployment di un parco risorse con due repliche di server di gioco open source nel cluster. Questi server di gioco supportano la versione multiplayer del gioco di corse SuperTuxKart.

  1. Sovrascrivi il file fleet_configs.yaml esistente con le seguenti specifiche del parco risorse Agones:

    - 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. Non puoi aggiornare una configurazione esistente del server di gioco perché è immutabile. Crea una nuova configurazione che faccia riferimento al manifest aggiornato delle specifiche del parco risorse:

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

  3. Aggiorna l'implementazione con la nuova configurazione:

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

  4. Recupera l'indirizzo IP e il numero di porta di un singolo server di gioco:

    kubectl get gameserver
    

  5. Scarica un client SuperTuxKart.

  6. Avvia il client SuperTuxKart.

  7. Fai clic sul pulsante Online nel menu principale, quindi sul pulsante Inserisci indirizzo del server.

  8. Inserisci l'indirizzo IP e il numero di porta di un singolo server di gioco (da un passaggio precedente).

  9. Fai clic su Inizia gara per iniziare il gioco.

Puoi scaricare il client SuperTuxKart su altre piattaforme per connetterti allo stesso server e partecipare alla gara.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, segui questi passaggi:

Se non vuoi conservare le risorse create in questa guida rapida, puoi eliminare il progetto:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

In alternativa, se vuoi conservare il progetto, completa i seguenti passaggi per eliminare manualmente le risorse create in questa guida rapida:

  1. Per eliminare la regola firewall, esegui il comando seguente:

    gcloud compute firewall-rules delete gcgs-quickstart-firewall
    
  2. Per cancellare l'implementazione predefinita, esegui questo comando:

    gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
    
  3. Per eliminare la configurazione del server di gioco, esegui il comando seguente:

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

    Se hai completato la sezione facoltativa, elimina la configurazione del server di gioco aggiuntivo:

    gcloud game servers configs delete stk-1 --deployment deployment-quickstart
    
  4. Per eliminare il deployment del server di gioco, esegui il comando seguente:

    gcloud game servers deployments delete deployment-quickstart
    
  5. Per eliminare il cluster di server di gioco, esegui il comando seguente:

    gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
    
  6. Per eliminare l'area di autenticazione, esegui questo comando:

    gcloud game servers realms delete realm-quickstart --location=us-central1
    
  7. Per disattivare l'API Game Services, esegui il comando seguente:

    gcloud services disable gameservices.googleapis.com
    
  8. Per eliminare il cluster GKE, esegui il comando seguente:

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

Passaggi successivi

Per un'introduzione tecnica ai concetti Game Servers, consulta la panoramica sui server di gioco.

Scopri le attività specifiche di Game Servers nelle guide illustrative.

Esamina il progetto di esempio del deployment di Terraform.