Actualiza Agones

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

Antes de comenzar

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

  • Asegúrate de haber habilitado la API de servicios de juego.
  • Habilitar la API de servicios de juego
  • Elige una shell con el SDK de Cloud instalado o usa un cliente de API:
  • Cloud Shell

    Para iniciar Cloud Shell, sigue estos pasos:

    1. Ve a Google Cloud Console

      Google Cloud Console

    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 este shell para ejecutar los comandos de gcloud.

    Shell local

    Para instalar gcloud, instala el SDK de Cloud, que incluye la herramienta de línea de comandos de gcloud.

    Verifica que hayas configurado el proyecto predeterminado deseado para la herramienta de línea de comandos de gcloud (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 del SDK de Google Cloud. Game Servers requiere la versión 306.0.0 o posterior del SDK.

    gcloud version
    

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

    gcloud components update
    

    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 agregando nuevos clústeres de Game Servers a un dominio y, luego, quites los antiguos. Este enfoque tiene los siguientes beneficios:

  1. Se alinea con las recomendaciones para el 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 juegos en el clúster.
  2. No es necesario que intente actualizar los nodos Kubernetes o Google Kubernetes Engine, de modo que pueda evitar problemas como los que se asocian 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 versiones nuevas de Kubernetes y Agones como una sola operación, y luego lanzarlas a producción.

Planifica actualizaciones 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 canary en producción. Una actualización canary es una actualización que se aplica en un solo número de una serie única de dominios. Las actualizaciones canary le permiten probar nuevas funciones en un pequeño porcentaje de su infraestructura, en lugar de implementar una actualización que podría ser perjudicial para todos sus 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 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 con 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 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 administradas por 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 del 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 al registrar 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.