Como implementar uma configuração canário

Nesta página, descrevemos duas opções diferentes para implantar uma nova configuração de Game Servers com uma fase canário. Na fase canário, implante a nova configuração para um pequeno grupo de clientes. Isso ajuda a identificar possíveis problemas sem afetar todos os usuários.

A primeira opção é usar uma região canário. A configuração dessa opção é mais simples, mas uma implantação ruim afeta toda a região. A outra opção é criar uma implantação canário. Essa opção é mais flexível, mas também é um processo mais complexo para você gerenciar.

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 verificar a integridade de uma implementação

Verifique a integridade dos seus servidores em vários pontos durante a implementação. Você pode usar os dados coletados para ajudar a decidir se é seguro continuar com a implementação. Se as verificações de integridade revelarem um problema, é melhor pausar ou cancelar a implementação.

Use as seguintes recomendações para verificar a integridade de uma implementação:

  1. Verifique se o estado das instâncias de servidor de jogos individuais é Ready.

  2. Verifique se o Agones pode alocar e gerenciar o ciclo de vida completo de um GameServer. Garanta que a implantação principal e a implantação canário GameServers tenham os mesmos rótulos que correspondem ao seletor GameServerAllocation required esperado, para que sua combinação não precise de alteração para alocar da implantação canário. Opcionalmente, você pode alocar preferencialmente da frota canário usando o atributo "preferencial" em uma especificação GameServerAllocation.

  3. Monitore e certifique-se de que quaisquer métricas de jogo e métricas do sistema relevantes na sua implantação não indiquem uma degradação no desempenho.

Como fazer uma implementação em uma região canário

Com o Game Servers, é possível modificar uma configuração em um ou mais realms. Verifique se os clusters na sua região canário estão em um realm separado.

Neste exemplo, "austrália" é o realm canário.

Arquitetura que usa um realm separado para o canário

Para definir v2 como a configuração ativa no realm australia:

  1. Copie o seguinte código em um arquivo:

    - realmsSelector:
        realms:
            - projects/games/locations/australia-southeast1/realms/australia
      configVersion: v2
    

  2. Para aplicar as alterações, execute o seguinte comando:

    gcloud game servers deployments update-rollout stk --config-overrides-file configOverrideFile  --no-dry-run
    

    em que configOverrideFile é o caminho para o arquivo com a configuração de modificação.

Arquitetura após a implementação canário

Quando você confirmar que a região canário está íntegra, execute o seguinte comando para implantar a nova versão em qualquer lugar:

gcloud game servers deployments update-rollout stk --default-config "v2" --no-dry-run

Quando a operação for concluída, a configuração v2 será implementada em todos os lugares. Arquitetura após a implementação completa

Limpe a modificação executando o seguinte comando:

gcloud game servers deployments update-rollout stk --no-dry-run --clear-config-overrides

Como fazer uma implementação em uma implantação canário

Use uma implantação separada para testar a configuração. Inicialmente, não há uma implantação canário dedicada.

Separe o estado inicial da implantação canário

  1. Comece criando a implantação canário:

    gcloud game servers deployments create canary
    

    Verifique se o seletor usado no GameServerAllocation pode selecionar GameServers da sua frota principal e da frota canário para que nenhuma alteração seja necessária para suas estratégias de alocação atuais.

  2. Em seguida, execute o seguinte comando para criar uma configuração v1 idêntica à configuração ativa na implantação não canário:

    gcloud game servers configs create v1 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    em que fleetSpecFile é o caminho do arquivo que contém a especificação da frota. scalingConfigFile é o caminho do arquivo que contém todas as configurações de escalonamento.

    Recomendamos definir as configurações de escalonamento para que as frotas canário sejam muito menores que as frotas regulares.

  3. Execute o seguinte comando para atualizar o lançamento canário para que a configuração v1 seja implantada em todos os lugares:

    gcloud game servers deployments update-rollout canary --default-config v1 --no-dry-run
    

    Verifique se as frotas canário estão íntegras.

    Arquitetura após a implantação canário inicial

  4. Execute o seguinte comando para criar a configuração v2 na implantação canário:

    gcloud game servers configs create v2 --deployment canary --fleet-configs-file fleetSpecFile --scaling-configs-file scalingConfigFile
    

    em que fleetSpecFile é o caminho do arquivo que contém a especificação da frota. scalingConfigFile é o caminho do arquivo que contém todas as configurações de escalonamento. Recomendamos configurar as frotas canário em um tamanho pequeno.

  5. Execute o comando a seguir para implementar a configuração v2 na implantação canário:

    gcloud game servers deployments update-rollout canary --default-config v2 --no-dry-run
    

    Verifique se as frotas canário estão íntegras.

    Arquitetura após a nova implantação canário

  6. Execute o seguinte comando para implementar a configuração v2 na implantação principal:

    gcloud game servers deployments update-rollout stk --default-config v2 --no-dry-run
    

    Verifique se as frotas estão íntegras. Nesta etapa, v2 é implementado em todos os lugares.

    Arquitetura após a implantação

  7. Limpe a implantação canário.

    1. Limpe o lançamento da implantação canário executando:

      gcloud game servers deployments update-rollout canary --clear-default-config --no-dry-run
      

    2. Execute o comando a seguir para excluir a configuração "v1":

      gcloud game servers configs delete v1 --deployment=canary
      

    3. Exclua a configuração "v2" executando:

      gcloud game servers configs delete v2 --deployment=canary
      

    4. Remova a implantação canário executando:

      gcloud game servers deployments delete canary
      

    Arquitetura após a limpeza

Para ter um controle mais refinado sobre uma implantação, implemente uma configuração em realms selecionados usando modificações antes de definir a configuração como padrão. Siga o mesmo procedimento para implementar o canário de maneira mais gradual.

É possível ignorar as três primeiras etapas e a última mantendo uma implantação canário dependente. Para implementações frequentes e regulares, recomendamos essa abordagem.