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 a CLI gcloud instalada 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

    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
    

    curl / PowerShell

    Para usar a API REST com curl ou o Windows PowerShell, faça o seguinte:

    1. Crie uma conta de serviço.
    2. Faça o download de uma chave privada como um arquivo JSON.
    3. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o caminho do arquivo JSON que contém suas credenciais. Essa variável só se aplica à sessão de shell atual. Assim, se você abrir uma nova sessão, precisará definir a variável novamente.

    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

Recomendamos que você faça upgrades do Agones adicionando novos clusters do Game Servers a um domínio e, em seguida, removendo 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 ver 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.