Lanzar la configuración de una versión canary

En esta página, se describen dos opciones diferentes para lanzar una nueva configuración de Game Servers con una fase de versión canary. En la fase de versión canary, implementas la configuración nueva para un conjunto pequeño de clientes. Esto te ayudará a identificar posibles problemas sin afectar a todos tus usuarios.

La primera es usar una región de versión canary. La configuración de esta opción es más simple, pero un lanzamiento incorrecto afecta a toda la región. La otra opción es crear una implementación de versiones canary. Esta opción es más flexible, pero también es un proceso más complejo para administrar.

Antes de comenzar

Antes de comenzar, te recomendamos que te familiarices con los conceptos clave en la Descripción general de servidores para juegos. Asegúrate de haber realizado las siguientes tareas:

  • Asegúrate de haber habilitado la API de los servicios de juego.
  • Habilitar la API de servicios de juego
  • Elige una shell que tenga gcloud CLI instalada o usa un cliente de API:
  • Cloud Shell

    Para iniciar Cloud Shell, sigue estos pasos:

    1. Ve a la consola de Google Cloud.

      Consola de Google Cloud

    2. Desde la esquina superior derecha de la consola, haz clic en el botón Activar Cloud Shell: .

    Se abrirá una sesión de Cloud Shell dentro de un marco en la parte inferior en la consola. Usa esta shell para ejecutar los comandos de gcloud.

    Shell local

    Instala la CLI de gcloud

    Verifica que hayas configurado el proyecto predeterminado que deseas para Google Cloud CLI (de lo contrario, debes especificar la marca --project de forma explícita para cada comando más adelante):

    gcloud config list project
    

    Si no puedes ejecutar el siguiente comando para configurar un proyecto predeterminado, reemplaza PROJECT_ID por el ID del proyecto deseado:

    gcloud config set project PROJECT_ID
    

    Ejecuta el siguiente comando para verificar tu versión de Google Cloud CLI. Game Servers requiere la versión 306.0.0 o una posterior de gcloud CLI.

    gcloud version
    

    Para actualizar la instalación, ejecuta el siguiente comando:

    gcloud components update
    

    curl / PowerShell

    Para usar la API de REST con curl o Windows PowerShell, haz lo siguiente:

    1. Crea una cuenta de servicio.
    2. Descarga una clave privada como un archivo JSON.
    3. Configura la variable de entorno GOOGLE_APPLICATION_CREDENTIALS en la ruta del archivo JSON que contiene tus credenciales. Esta variable solo se aplica a la sesión actual de Cloud Shell. Por lo tanto, si abres una sesión nueva, deberás volver a configurar la variable.

    Biblioteca cliente

    Google Cloud Game Servers se puede controlar de manera programática mediante una biblioteca cliente. Consulta Descripción general de bibliotecas cliente a fin de obtener instrucciones para usar la biblioteca y la autenticación.

Verifica el estado de un lanzamiento

Asegúrate de verificar el estado de tus servidores en diferentes puntos durante el lanzamiento. Puedes usar los datos recopilados para determinar si es seguro continuar con el lanzamiento. Si las verificaciones de estado revelan un problema, es mejor pausar o cancelar el lanzamiento.

Puedes usar las siguientes recomendaciones para verificar el estado de un lanzamiento:

  1. Asegúrate de que el estado de las instancias del servidor de juegos individual sea Ready.

  2. Verifica que Agones pueda asignar y administrar el ciclo de vida completo de un GameServer. Asegúrate de que la implementación principal y de versiones canaryGameServers tienen las mismas etiquetas que coinciden con el selector previsto required de GameServerAllocation para que tu creador de partidas no requiera un cambio para asignar desde la implementación de versiones canary. De forma opcional, puedes asignar de forma selectiva desde la flota de versiones canary mediante el atributo "preferred" en una especificación GameServerAllocation.

  3. Supervisa y asegúrate de que las métricas del juego y las métricas del sistema relevantes en la implementación no indiquen ninguna degradación en el rendimiento.

Lanzamiento en una región de versiones canary

Game Servers te permite anular una configuración en uno o más dominios. Asegúrate de que los clústeres de tu región de versiones canary se encuentren en un dominio independiente.

En este ejemplo, el dominio "australia" es el dominio de versión canary.

Arquitectura que usa un dominio independiente para versiones canary

Para configurar v2 como la configuración activa en el dominio australia, sigue estos pasos:

  1. Copia el siguiente código en un archivo:

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

  2. Para aplicar los cambios, ejecuta el siguiente comando:

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

    en el que configOverrideFile es la ruta al archivo con una configuración de anulación.

Arquitectura después del lanzamiento de versiones canary

Una vez que hayas confirmado que la región de la versión canary está en buen estado, ejecuta el siguiente comando para implementar la versión nueva en todas partes:

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

Cuando se completa la operación, la configuración v2 se implementa en todas partes.Arquitectura después del lanzamiento completo

Ahora ejecuta el siguiente comando para limpiar la anulación:

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

Lanza una implementación de versiones canary

Puedes usar una implementación independiente para probar la configuración. Inicialmente, no hay una implementación de versiones canary dedicada.

Separa el estado inicial de la implementación de versiones canary

  1. Comienza por crear la implementación de versiones canary:

    gcloud game servers deployments create canary
    

    Asegúrate de que el selector usado en GameServerAllocation pueda seleccionar GameServers tanto en la flota principal como en la flota de versiones canary, de modo que no se requieran cambios en tus estrategias de asignación actuales.

  2. A continuación, ejecuta el siguiente comando a fin de crear una configuración v1 que sea idéntica a la configuración activa en la implementación de versiones no canary:

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

    en la que fleetSpecFile es la ruta de acceso del archivo que contiene la especificación de la flota. scalingConfigFile es la ruta de acceso del archivo que contiene todas las configuraciones de escalamiento.

    Recomendamos configurar las configuraciones de escalamiento para que las flotas de versiones canary sean mucho más pequeñas que las flotas normales.

  3. Ejecuta el siguiente comando para actualizar el lanzamiento de versión canary a fin de que la configuración v1 se implemente en todas partes:

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

    Verifica que las flotas de versiones canary estén en buen estado.

    Arquitectura después de la implementación de versiones canary inicial

  4. Ejecuta el siguiente comando para crear la configuración v2 en la implementación de versiones canary:

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

    en la que fleetSpecFile es la ruta de acceso del archivo que contiene la especificación de la flota. scalingConfigFile es la ruta de acceso del archivo que contiene todas las configuraciones de escalamiento. Te recomendamos configurar las flotas de versiones canary en un tamaño pequeño.

  5. Ejecuta el siguiente comando para implementar la configuración v2 en la implementación de versiones canary:

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

    Verifica que las flotas de versiones canary estén en buen estado.

    Arquitectura después de una nueva implementación de versiones canary

  6. Ejecuta el siguiente comando para implementar la configuración v2 en la implementación principal:

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

    Verifica que las flotas están en buen estado. En esta etapa, v2 se lanza en todas partes.

    Arquitectura después de la implementación

  7. Limpia la implementación de versiones canary.

    1. Ejecuta el siguiente comando para borrar el lanzamiento de la implementación de versiones canary:

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

    2. Ejecuta el siguiente comando para borrar la configuración “v1”:

      gcloud game servers configs delete v1 --deployment=canary
      

    3. Borra la configuración “v2” con el siguiente comando:

      gcloud game servers configs delete v2 --deployment=canary
      

    4. Para quitar la implementación de versiones canary, ejecuta el siguiente comando:

      gcloud game servers deployments delete canary
      

    Arquitectura después de la limpieza

Para obtener un control más preciso sobre una implementación, puedes aplicar una configuración en dominios seleccionados mediante anulaciones antes de establecer la configuración como predeterminada. Sigue el mismo procedimiento para lanzar la versión canary de forma más gradual.

Puedes omitir los primeros tres pasos y el último paso manteniendo una implementación de versiones canary permanente. Para lanzamientos frecuentes y habituales, recomendamos este enfoque.