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:
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Assicurati di aver attivato l'API Game Services. 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:
Vai alla console Google Cloud.
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:
Nella console Cloud, abilita l'API Kubernetes Engine.
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
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:
Esegui il comando seguente per creare lo spazio dei nomi
agones-system
:kubectl create namespace agones-system
Esegui questo comando per installare Agones:
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
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:
Crea un'area di autenticazione nella stessa località del cluster GKE:
gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
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
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.
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
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
Per aggiornare l'implementazione, esegui questo comando:
gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
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:
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"
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
Per testare la connettività, esegui il comando Netcat. Per installare Netcat su Linux, esegui questo comando:
sudo apt install netcat
Per avviare il test, esegui il comando seguente:
nc -u IP_ADDRESS PORT_NUMBER
Quindi, digita
Hello
e il comando restituisce un output simile al seguente:Hello > ACK: Hello
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.
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
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
Aggiorna l'implementazione con la nuova configurazione:
gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
Recupera l'indirizzo IP e il numero di porta di un singolo server di gioco:
kubectl get gameserver
Avvia il client SuperTuxKart.
Fai clic sul pulsante Online nel menu principale, quindi sul pulsante Inserisci indirizzo del server.
Inserisci l'indirizzo IP e il numero di porta di un singolo server di gioco (da un passaggio precedente).
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
In alternativa, se vuoi conservare il progetto, completa i seguenti passaggi per eliminare manualmente le risorse create in questa guida rapida:
Per eliminare la regola firewall, esegui il comando seguente:
gcloud compute firewall-rules delete gcgs-quickstart-firewall
Per cancellare l'implementazione predefinita, esegui questo comando:
gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
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
Per eliminare il deployment del server di gioco, esegui il comando seguente:
gcloud game servers deployments delete deployment-quickstart
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
Per eliminare l'area di autenticazione, esegui questo comando:
gcloud game servers realms delete realm-quickstart --location=us-central1
Per disattivare l'API Game Services, esegui il comando seguente:
gcloud services disable gameservices.googleapis.com
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.