Como fazer upgrade do Agones

Nesta página, você verá como fazer upgrade de maneira segura do Agones para os clusters do Game Servers.

Antes de começar

Antes de começar, recomendamos que você se familiarize com os principais conceitos na Visão geral do Game Servers. Verifique se você também realizou as seguintes tarefas:

  • Verifique se você ativou a API Game Services.
  • Ativar a API Game Services
  • Escolha um shell com o SDK do Cloud instalado ou use um cliente de API:
  • Cloud Shell

    Para iniciar o Cloud Shell, execute os seguintes passos:

    1. Acesse o Console do Google Cloud.

      Console do Google Cloud

    2. 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

    Para instalar gcloud, instale o SDK do Cloud, que inclui a ferramenta de linha de comando gcloud.

    Verifique se você definiu o projeto padrão desejado para a ferramenta de linha de comando do gcloud (caso contrário, você precisará 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 sua versão do SDK do Google Cloud. O Game Servers requer a versão 306.0.0 ou superior do SDK.

    gcloud version
    

    Para atualizar a instalação, execute o seguinte comando:

    gcloud components update
    

    Biblioteca de cliente

    O Game Servers do Google Cloud pode ser controlado de maneira programática usando uma biblioteca de cliente. Consulte Visão geral das bibliotecas de cliente para instruções sobre como usar a biblioteca e fazer a autenticação.

Como planejar um upgrade

Para fazer upgrades do Agones, recomendamos adicionar novos clusters do Game Servers a um realm e, em seguida, remover os antigos. Essa abordagem tem os seguintes benefícios:

  1. Ela segue as práticas recomendadas pelo projeto Agones para criar um novo cluster ao fazer upgrades sem janelas de manutenção. Essa abordagem evita possíveis problemas relacionados à tentativa de fazer upgrade do Agones enquanto os jogos estiverem em execução no cluster.
  2. Você não precisa tentar fazer upgrade dos nós do Kubernetes ou do Google Kubernetes Engine no momento. Assim, evita problemas, como aqueles associados à remoção de um nó do serviço.
  3. É possível testar um número maior de componentes como parte do processo de upgrade, incluindo novas versões do Kubernetes e do Agones, como uma única operação e, em seguida, implementá-lo na produção.

Como planejar upgrades canário

Teste a nova versão do Agones em um ambiente de não produção antes de aplicá-lo à produção. Depois de validar a nova versão do Agones, comece fazendo upgrade de um realm canário em produção. Um upgrade canário é um upgrade aplicado inicialmente a um único ou pequeno número de realms. Com os upgrades canário, você pode testar a nova funcionalidade em uma pequena porcentagem da sua infraestrutura, em vez de implementar uma atualização potencialmente disruptiva em todos os seus realms. Se um upgrade não funcionar, você pode minimizar a interrupção para os usuários e reverter o realm afetado. Se não houver um realm canário, escolha um com o menor tráfego.

Como fazer upgrade

Nesta seção, descrevemos um procedimento de upgrade que faz a transição de uma alocação GameServer de um cluster com a versão antiga do Agones para um cluster com a versão atualizada do Agones. O procedimento de upgrade pressupõe que você tenha configurado a alocação de vários clusters no novo cluster.

As etapas a seguir também permitem reverter facilmente para a infraestrutura anterior que você sabe que está em funcionamento na produção, com interrupções mínimas na experiência do jogador:

  1. Crie um novo cluster do mesmo tamanho que o cluster atual.

  2. Instale a nova versão do Agones no novo cluster com uma versão compatível do Kubernetes. Para uma lista de versões compatíveis, consulte versões e upgrades.

  3. Registre o novo cluster no realm. Isso cria recursos de frota e escalonador automático semelhantes aos clusters atuais registrados no realm. Depois que as frotas estiverem prontas, algumas sessões de jogos de jogadores correspondentes serão enviadas para o novo cluster.

  4. Depois de verificar a estabilidade do novo cluster que está executando a nova versão do Agones, cancele o registro e exclua o cluster antigo. Quando você cancela o registro e exclui um cluster do Game Servers, as configurações dos servidores, as frotas e as frotas de escalonador automático são deixadas no estado em que se encontram. A única mudança possível no cluster real do Kubernetes é que ele não é mais gerenciado pelo Game Servers e não está mais conectado à alocação de vários clusters. O Game Servers para de enviar novas solicitações de alocação para clusters que não estão registrados.

  5. Para evitar alocações adicionais para o cluster antigo se o endpoint associado for acessado diretamente, remova todos os pods no serviço de alocador do servidor antigo:

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. Quando não houver mais servidores alocados no cluster, encerre o cluster antigo. Para determinar o número de servidores alocados, execute o seguinte comando, em que namespace é o namespace usado ao registrar o cluster do Kubernetes como um cluster do Game Servers:

    kubectl get fleet --namespace namespace
    
    NAME         SCHEDULING   DESIRED   CURRENT   ALLOCATED   READY   AGE
    fleet-1      Packed       10        10        0           10      2d23h
    
    

Repita as etapas deste procedimento de upgrade para cada cluster que precisar de um upgrade.