Crea definiciones de grupos de contenedores para una flota de GameLift contenedores de Amazon - Amazon GameLift

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Crea definiciones de grupos de contenedores para una flota de GameLift contenedores de Amazon

Esta documentación corresponde a una función que se encuentra en una versión preliminar pública. Está sujeta a cambios.

La definición de un grupo de contenedores describe cómo implementar sus aplicaciones de servidor de juegos en contenedores en una flota de contenedores. Se trata de un plano que identifica el conjunto de contenedores que se utilizarán en la flota y cómo se gestionarán. Al crear una flota de contenedores, se especifican las definiciones de grupos de contenedores que se van a implementar en la flota. Para obtener más información sobre los grupos de contenedores, consulteComponentes de la flota de contenedores.

Antes de comenzar

Realice los siguientes pasos:

  • Diseñe una arquitectura de contenedores para alojar sus servidores de juegos. Consulte Diseña una flota de GameLift contenedores de Amazon.

  • Planifique las definiciones de contenedores para incluirlas en el grupo de contenedores. Si utilizas la AWS CLI, crea tu definición de contenedor en un archivo JSON.

  • Coloca las imágenes finales del contenedor en un registro de Amazon Elastic Container Registry (Amazon ECR) en el Región de AWS mismo lugar en el que planeas crear el grupo de contenedores. Amazon GameLift almacena una instantánea de cada imagen al crear la definición del grupo de contenedores y utiliza la copia al desplegarla en una flota de contenedores. Consulte Prepara una imagen de contenedor con el software de tu servidor de juegos.

  • Compruebe que el AWS usuario tiene permisos de IAM para acceder al repositorio de Amazon ECR. Consulte Administrar los permisos de usuario para Amazon GameLift. Como mínimo, necesita permisos para las siguientes acciones:

    • ecr:DescribeImages

    • ecr:BatchGetImage

    • ecr:GetDownloadUrlForLayer

Clonar una definición de grupo de contenedores

Puedes usar la GameLift consola de Amazon para clonar una definición de grupo de contenedores existente.

Para clonar un grupo de contenedores
  1. En la GameLift consola de Amazon, ve al panel de navegación izquierdo y selecciona Grupos de contenedores.

  2. En la página de lista de grupos de contenedores, selecciona el grupo de contenedores existente que deseas clonar. Tras seleccionar un grupo de contenedores, el botón Clonar estará activo.

  3. Elija Clonar. Esta acción abre el asistente de creación de grupos de contenedores con los ajustes predefinidos.

  4. Introduzca un nombre nuevo para el grupo de contenedores clonado. El grupo de contenedores de la misma región debe tener nombres únicos.

  5. Recorra las páginas del grupo de contenedores y de definición de contenedores, revise y cree el nuevo grupo de contenedores.

Cree una réplica de la definición de grupo de contenedores

Un grupo de contenedores de réplicas administra el software del servidor de juegos. Un grupo de contenedores de réplicas tiene al menos un contenedor que ejecuta los procesos de Amazon GameLift Agent y del servidor de juegos. Es posible que el grupo tenga contenedores «sidecar» adicionales para ejecutar el software de soporte.

En este tema se describe cómo crear una definición de grupo de contenedores mediante la GameLift consola de Amazon o las herramientas AWS CLI. Para obtener información más detallada sobre cómo configurar los grupos de contenedores, consulteDiseña una flota de GameLift contenedores de Amazon.

Console

En la GameLift consola de Amazon, selecciona la Región de AWS ubicación en la que deseas crear el grupo de contenedores.

Abre la barra de navegación izquierda de la consola y selecciona Grupos de contenedores. En la página Grupos de contenedores, selecciona Crear grupo de contenedores.

Paso 1: Defina los detalles del grupo.
  1. Introduzca un nombre de definición de grupo de contenedores. Este nombre debe ser exclusivo de la región Cuenta de AWS and. En la consola, las definiciones de los grupos se muestran por nombre, por lo que puede resultar útil asignar etiquetas significativas.

  2. Seleccione la estrategia de programación de réplicas.

  3. En Límite total de memoria, introduzca la memoria máxima disponible para el grupo de contenedores. Si necesita ayuda para calcular este valor, consulteEstablece límites de recursos.

  4. En Límite total de CPU, introduzca la potencia de cálculo máxima disponible para el grupo de contenedores. Si necesita ayuda para calcular este valor, consulteEstablece límites de recursos.

Paso 2: Añadir definiciones de contenedores.

Defina el contenedor con su aplicación de servidor de juegos y el Amazon GameLift Agent. Este es tu contenedor de réplicas esencial.

  1. Proporcione un nombre para la definición del contenedor. Cada contenedor definido para el grupo debe tener un valor de nombre único.

  2. Identifique el URI de la imagen ECR de Amazon de la imagen del contenedor. Introduzca cualquiera de los siguientes formatos:

    • Solo URI de imagen: [Cuenta de AWS].dkr.ecr.[Región de AWS].amazonaws.com/[repository ID]

    • URI de imagen + resumen: [Cuenta de AWS].dkr.ecr.[Región de AWS].amazonaws.com/[repository ID]@[digest]

    • URI de imagen + etiqueta: [Cuenta de AWS].dkr.ecr.[Región de AWS].amazonaws.com/[repository ID]:[tag]

  3. En el caso del contenedor esencial, se selecciona automáticamente para la primera definición del contenedor. Si añade otra definición de contenedor, puede activar o desactivar esta configuración para cada definición. Para obtener más información, consulte Designe los contenedores esenciales.

  4. Establezca uno o más rangos de puertos de contenedores internos. Este contenedor aloja tus servidores de juegos, así que define un rango con suficientes puertos para que cada proceso del servidor se ejecute en el grupo de contenedores. Para obtener más información, consulte Configure las conexiones de red.

  5. Los ajustes opcionales, las anulaciones y las variables de entorno te permiten especificar los valores que se transferirán al contenedor en el momento del lanzamiento. Los valores que establezca aquí anulan cualquier configuración que ya esté en la imagen del contenedor.

  6. Establezca límites de contenedor opcionales para administrar la asignación de recursos para este contenedor. Para obtener más información, consulte Establece límites de recursos.

  7. Defina contenedores no esenciales adicionales según sea necesario:

    • Proporcione un nombre de definición de contenedor y un URI de imagen ECR. Los contenedores no esenciales no deben funcionar con Amazon GameLift Agent.

    • Establezca un rango de puertos de contenedores interno solo si los contenedores tienen procesos que necesiten acceso a la red.

    • Si lo desea, configure un Health Check para el contenedor. Cuando un contenedor no esencial no pasa una comprobación de estado, solo se solicita que se reinicie el contenedor defectuoso.

    • Si lo desea, defina las anulaciones, las variables de entorno y los límites de asignación de recursos según sea necesario.

Paso 3: Configurar las dependencias.

Si tiene más de un contenedor en su definición de grupo de contenedores, puede definir las dependencias entre ellos. Utilice las dependencias para configurar las secuencias de inicio y cierre en función del estado del contenedor. Para obtener más información, consulte Establezca las dependencias de los contenedores.

  1. Identifica el nombre del contenedor para el que quieres añadir una dependencia. Este contenedor no se inicia hasta que se cumpla la condición de dependencia.

  2. Identifique el nombre y la condición del contenedor de la dependencia. Este contenedor debe cumplir la condición antes de que el contenedor dependiente pueda comenzar.

  3. Establezca dependencias adicionales según sea necesario. Puede crear varias dependencias para cualquier contenedor. Evita crear dependencias circulares.

Paso 4: Revisa y crea.
  1. Revise todos los ajustes de definición de sus grupos de contenedores. No puede cambiar la configuración de una definición de grupo de contenedores una vez creada. Usa Editar para realizar cambios en cualquier sección, incluida cada una de las definiciones de contenedor del grupo.

  2. Cuando termines de revisarla, selecciona Crear.

    Si la solicitud se ha realizado correctamente, la consola mostrará la página de detalles del nuevo recurso de definición de grupos de contenedores. InicialmenteCOPYING, el estado es el siguiente: Amazon GameLift comienza a tomar instantáneas de todas las imágenes de contenedores del grupo. Cuando se complete esta fase, el estado de la definición del grupo de contenedores cambiará aREADY. La definición de un grupo de contenedores debe estar en READY estado para poder crear una flota de contenedores con ella.

AWS CLI

Cuando utilice la AWS CLI para crear una definición de grupo de contenedores, mantenga las configuraciones de definición de contenedores en un JSON archivo independiente. Puede hacer referencia al archivo en el comando CLI. Consulte Crea un JSON archivo de definición de contenedor para ver ejemplos de esquemas.

Cree una definición de grupo de contenedores

Para crear una nueva definición de grupo de contenedores, utilice el comando create-container-group-definition CLI. Para obtener más información sobre este comando, consulte la Referencia create-container-group-definitionde comandos de la AWS CLI.

ejemplo : Grupo de contenedores de réplicas

Este ejemplo ilustra una solicitud de definición de grupo de contenedores de réplicas. La estructura de comandos para crear las definiciones de réplicas y grupos de demonios es básicamente idéntica. Los detalles específicos de cada tipo de grupo se describen en las definiciones de los contenedores individuales.

En este ejemplo, se supone que has creado un archivo JSON con las definiciones de contenedor de este grupo.

aws gamelift create-container-group-definition \ --name MyAdventureGameContainerGroup \ --operating-system AMAZON_LINUX_2023 \ --scheduling-strategy REPLICA \ --total-memory-limit 4096 \ --total-cpu-limit 1024 \ --container-definitions file://SimpleServer.json

Crea un JSON archivo de definición de contenedor

Al crear una definición de grupo de contenedores, también define los contenedores del grupo. Una definición de contenedor especifica el repositorio de Amazon ECR en el que se almacena la imagen del contenedor y las configuraciones opcionales para los puertos de red, los límites de uso de CPU y memoria y otros ajustes. Recomendamos crear un único JSON archivo con las configuraciones de todos los contenedores de un grupo de contenedores. Mantener un archivo es útil para almacenar, compartir y realizar un seguimiento de las versiones de estas configuraciones críticas. Si usa la AWS CLI para crear sus definiciones de grupos de contenedores, puede hacer referencia al archivo en el comando.

Para crear una definición de contenedor
  1. Cree y abra un .JSON archivo nuevo. Por ejemplo:

    [~/work/glc]$ vim SimpleServer.json
  2. Cree una definición de contenedor independiente para cada uno de los contenedores del grupo. Copie el siguiente contenido de ejemplo y modifíquelo según sea necesario para sus contenedores. Para obtener más información sobre la sintaxis de una definición de contenedor, consulta ContainerDefinitionInputla referencia de la GameLift API de Amazon.

  3. Guarde el archivo localmente para poder consultarlo en un comando AWS CLI.

En este ejemplo se describe el contenedor esencial para su grupo de contenedores de réplicas. El contenedor de réplicas esencial incluye tu aplicación de servidor de juegos, el Amazon GameLift Agent, y puede incluir otro software de apoyo para el alojamiento de tu juego. La definición debe incluir un nombre, un URI de imagen y una configuración de puertos. Este ejemplo también establece algunos límites de recursos específicos del contenedor.

[ { "ContainerName": "SimpleServer", "ImageUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/gl-containers:complex-server", "Essential": true, "Cpu": 256, "MemoryLimits": { "HardLimit": 128 }, "PortConfiguration": { "ContainerPortRanges": [ { "FromPort": 2000, "Protocol": "TCP", "ToPort": 2100 } ] } } ]