Actualiza Agones

En esta página, se explica cómo actualizar Agones de forma para los clústeres de Game Servers.

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.

Planifica una actualización

Te recomendamos que realices una actualización de Agones. Para ello, agrega nuevos clústeres de Game Servers a un dominio y, luego, quita los antiguos. Este enfoque tiene los siguientes beneficios:

  1. Se alinea con las prácticas recomendadas del proyecto Agones para crear un clúster nuevo cuando se realizan actualizaciones sin períodos de mantenimiento. Este enfoque evita posibles problemas relacionados con el intento de actualizar Agones mientras se ejecutan los videojuegos en el clúster.
  2. No es necesario que intentes actualizar los nodos Kubernetes o Google Kubernetes Engine, así que puedes evitar problemas como los asociados con la eliminación de un nodo del servicio.
  3. Puedes probar una mayor cantidad de componentes como parte del proceso de actualización, incluidas las versiones nuevas de Kubernetes y Agones como una sola operación, y, luego, lanzarlas a producción.

Planifica actualizaciones de versiones canary

Asegúrate de probar la nueva versión de Agones en un entorno que no sea de producción antes de aplicarlo a la producción. Después de validar la nueva versión de Agones, comienza por actualizar un dominio de versión canary en producción. Una actualización de versión canary es una actualización que se aplica a un dominio o a una pequeña cantidad de dominios. Las actualizaciones de versión canary te permiten probar nuevas funciones en un pequeño porcentaje de su infraestructura, en lugar de lanzar una actualización que podría ser perjudicial para todos tus dominios. Si una actualización no funciona bien, puedes minimizar los problemas para los usuarios y revertir el dominio afectado. Si no existe un dominio de versión canary designado, elige un dominio con menos tráfico.

Realiza una actualización

En esta sección, se describe un procedimiento de actualización que pasa una asignación GameServer de un clúster con la versión anterior de Agones a un clúster con la versión actualizada de Agones. El procedimiento de actualización supone que configuraste la asignación de varios clústeres en el clúster nuevo.

Los siguientes pasos también te permiten revertir fácilmente a la infraestructura anterior que sabes que funciona en producción, con interrupciones mínimas de la experiencia del jugador:

  1. Crea un clúster nuevo del mismo tamaño que el clúster actual.

  2. Instala la versión nueva de Agones en el clúster nuevo con una versión compatible de Kubernetes. Para obtener una lista de las versiones compatibles, consulta versiones y actualizaciones.

  3. Registra el clúster nuevo en el dominio. Esto crea recursos de flota y de escalador automático similares a los clústeres existentes registrados en el dominio. Una vez que las flotas están listas, se envían algunas sesiones del juego coincidentes al clúster nuevo.

  4. Después de verificar la estabilidad del clúster nuevo que ejecuta la versión nueva de Agones, anula el registro y borra el clúster anterior. Cuando anulas el registro de un clúster de Game Servers y lo borras, las configuraciones asignadas de servidores, flotas y escalador automático de flotas se dejan tal como están. El único cambio notable en el clúster de Kubernetes real es que ya no lo administra Game Servers y ya no está conectado a la asignación de varios clústeres. Game Servers deja de enviar solicitudes de asignación nuevas a los clústeres que no están registrados.

  5. Para evitar asignaciones adicionales al clúster anterior si se accede directamente a su extremo asociado, quita todos los pods del servicio de asignador del servidor anterior:

    kubectl scale --replicas=0 -n agones-system deployment/agones-allocator
    
  6. Cuando ya no hay servidores asignados en el clúster, cierra el clúster anterior. Para determinar la cantidad de servidores asignados, ejecuta el siguiente comando, en el que namespace es el espacio de nombres que usaste cuando registraste el clúster de Kubernetes como un clúster de Game Servers:

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

Repite los pasos de este procedimiento de actualización para cada clúster que deba actualizarse.