Implantar um servidor para um jogo de código aberto
Neste guia de início rápido, você aprenderá a trabalhar com domínios, clusters, implantações, configurações e implementações de servidor de jogos de jogos no Game Servers usando a Google Cloud CLI.
Para seguir as instruções detalhadas desta tarefa diretamente no console do Google Cloud, clique em Orientação:
Antes de começar
- 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.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
- Verifique se você ativou a API Game Services. Ativar a API Game Services
Como escolher um shell
Para concluir este guia de início rápido, use o Cloud Shell ou o shell local.
O Cloud Shell é um ambiente de shell para gerenciar recursos hospedados
no Google Cloud. O Cloud Shell vem pré-instalado com a
ferramenta de linha de comando gcloud
. A CLI gcloud fornece a interface de linha de comando principal para o Game Servers.
Cloud Shell
Para iniciar o Cloud Shell, execute os seguintes passos:
Acesse o Console do Google Cloud.
No canto superior direito do console, clique no botão Ativar Cloud Shell:
Uma sessão do Cloud Shell é aberta dentro de um quadro inferior no console.
Use esse shell para executar comandos gcloud
.
Shell local
Instale a CLI gcloud.
Verifique se você definiu o projeto padrão desejado para a Google Cloud CLI. Caso contrário, será necessário especificar a sinalização --project
explicitamente para cada comando mais tarde:
gcloud config list project
Caso contrário, execute o seguinte comando para definir um projeto padrão, substituindo PROJECT_ID
pelo ID do projeto que você quer:
gcloud config set project PROJECT_ID
Execute o seguinte comando para verificar a versão da Google Cloud CLI.
O Game Servers requer a versão 306.0.0
ou mais recente da CLI gcloud.
gcloud version
Para atualizar a instalação, execute o seguinte comando:
gcloud components update
Se você selecionar o shell local, talvez seja necessário instalar a ferramenta de linha de comando do Kubernetes kubectl
:
gcloud components install kubectl
Como criar um cluster do Google Kubernetes Engine
Para criar um cluster do Google Kubernetes Engine:
No Console do Cloud, ative a API Kubernetes Engine.
Execute o seguinte comando para criar um cluster com custo otimizado com um nó na 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
Execute o seguinte comando para recuperar as credenciais do cluster do GKE criado na etapa anterior:
gcloud container clusters get-credentials gcgs-quickstart --zone=us-central1-a
kubectl
usa essas credenciais para executar comandos nos clusters do Kubernetes. Consulte Como configurar o acesso a clusters para o kubectl para mais informações.
Como instalar o Agones no GKE
Nesta seção, você instalará a plataforma de infraestrutura de jogos Agones de código aberto. Para instalar o Agones:
Execute o seguinte comando para criar o namespace
agones-system
:kubectl create namespace agones-system
Execute o seguinte comando para instalar o Agones:
kubectl apply -f https://raw.githubusercontent.com/googleforgames/agones/release-1.26.0/install/yaml/install.yaml
Confirme se o sistema Agones está em execução verificando o status dos pods do Kubernetes:
kubectl get --namespace agones-system pods
Todos os pods estão em um estado
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
Como criar recursos do Game Servers
Para criar recursos do Game Servers:
Crie um realm no mesmo local do cluster do GKE:
gcloud game servers realms create realm-quickstart --time-zone EST --location us-central1
Registre seu cluster do GKE do Agones no Game Servers e anexe-o ao realm criado na etapa anterior:
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
Crie uma implantação de Game Server usada para armazenar as mesmas configurações do servidor e, em seguida, implemente-as aos clusters do servidor de jogos:
gcloud game servers deployments create deployment-quickstart
Agora que você tem uma implantação de servidor de jogos, é possível adicionar uma configuração de servidor usando a CLI gcloud.
Copie o seguinte manifesto de especificação da frota do Agones para um novo arquivo chamado
fleet_configs.yaml
no diretório atual:- 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
Para criar a configuração do servidor de jogos, execute o seguinte comando:
gcloud game servers configs create config-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
Para atualizar a implementação, execute o seguinte comando:
gcloud game servers deployments update-rollout deployment-quickstart --default-config config-1 --no-dry-run
Para validar a implementação de uma frota no namespace padrão, execute o seguinte comando:
kubectl get fleet
Veja a seguir o resultado esperado:
NAME SCHEDULING DESIRED CURRENT ALLOCATED READY AGE fleet-deployment-quickstart-config-1 Packed 2 2 0 2 4s
O resultado confirma que você implantou uma frota com duas réplicas de servidores UDP simples no cluster que estão prontas para aceitar conexões.
Como testar a conectividade com o servidor de jogos
Para testar a conectividade com o servidor de jogos:
Crie uma regra de firewall para abrir as portas UDP necessárias para se conectar ao 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"
Em seguida, consiga o endereço IP e o número da porta de um servidor de jogos individual:
kubectl get gameserver
O comando retorna uma saída semelhante a esta:
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
Para testar a conectividade, execute o comando Netcat. Para instalar o Netcat no Linux, execute o seguinte comando:
sudo apt install netcat
Para iniciar o teste, execute o seguinte comando:
nc -u IP_ADDRESS PORT_NUMBER
Em seguida, digite
Hello
e o comando retornará um resultado semelhante a este:Hello > ACK: Hello
Use Ctrl+C para interromper o teste.
(Opcional) Implantar um servidor para um jogo de código aberto
Você pode atualizar o lançamento para implantar uma frota com duas réplicas de servidor de jogos de código aberto no cluster. Esses servidores de jogos são compatíveis com a versão multiplayer do jogo de corrida SuperTuxKart.
Substitua o arquivo
fleet_configs.yaml
atual pela seguinte especificação de frota do 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
Não é possível atualizar uma configuração de servidor de jogos existente, porque eles são imutáveis. Crie uma nova configuração que faça referência ao manifesto de especificação atualizado da frota:
gcloud game servers configs create stk-1 --deployment deployment-quickstart --fleet-configs-file fleet_configs.yaml
Atualize o lançamento com a nova configuração:
gcloud game servers deployments update-rollout deployment-quickstart --default-config stk-1 --no-dry-run
Pegue o endereço IP e o número da porta de um servidor de jogos individual:
kubectl get gameserver
Inicie o cliente do SuperTuxKart.
Clique no botão On-line no menu principal e, em seguida, no botão Inserir endereço do servidor.
Insira o endereço IP e o número da porta de um servidor de jogos individual (de uma etapa anterior).
Clique em Iniciar corrida para começar o jogo.
Você pode fazer o download do cliente SuperTuxKart em outras plataformas para se conectar ao mesmo servidor e participar da corrida.
Limpeza
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Se você não quiser manter nenhum dos recursos criados neste guia de início rápido, exclua o projeto:
- 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.
Como alternativa, se você quiser manter o projeto, siga estas etapas para excluir manualmente os recursos criados neste guia de início rápido:
Para excluir a regra de firewall, execute o seguinte comando:
gcloud compute firewall-rules delete gcgs-quickstart-firewall
Para limpar a implementação padrão, execute o seguinte comando:
gcloud game servers deployments update-rollout deployment-quickstart --clear-default-config --no-dry-run
Para excluir a configuração do servidor de jogos, execute o seguinte comando:
gcloud game servers configs delete config-1 --deployment deployment-quickstart
Se você tiver concluído a seção opcional, exclua a configuração adicional do servidor de jogos:
gcloud game servers configs delete stk-1 --deployment deployment-quickstart
Para excluir a implantação do servidor de jogos, execute o seguinte comando:
gcloud game servers deployments delete deployment-quickstart
Para excluir o cluster do servidor de jogos, execute o seguinte comando:
gcloud game servers clusters delete cluster-quickstart --realm=realm-quickstart --location=us-central1 --no-dry-run
Para excluir o realm, execute o seguinte comando:
gcloud game servers realms delete realm-quickstart --location=us-central1
Para desativar a API Game Services, execute o seguinte comando:
gcloud services disable gameservices.googleapis.com
Para excluir o cluster do GKE, execute o seguinte comando:
gcloud container clusters delete gcgs-quickstart --zone=us-central1-a
A seguir
Para uma introdução técnica aos conceitos do Game Servers, consulte a Visão geral do Game Servers.
Saiba mais sobre tarefas específicas do Game Servers no guia de instruções.
Analise o projeto de amostra de implantação do Terraform (em inglês).