Creación e implementación de imágenes de contenedor Linux
Esta sección describe los pasos específicos para ayudarle a crear e implementar imágenes de contenedor Linux. Como se describe en Creación de máquinas virtuales (VM), al usar nuestro servicio, usted configura las máquinas virtuales para que se pongan en marcha automáticamente como servidores de juegos a nivel mundial según su presupuesto y demanda. Para ello, no crea explícitamente las máquinas virtuales, sino que define parámetros que determinan cómo se crean en su nombre. Este proceso se denomina implementar o crear una compilación. PlayFab Multiplayer Servers puede implementar servidores de juegos basados tanto en Linux como en Windows. La forma en que se implementan las compilaciones para contenedores Linux es similar a la de los contenedores Windows, con algunas diferencias importantes. Para obtener más información, consulte Diferencias entre las imágenes de contenedor de Windows y Linux. Si quiere usar PowerShell/API para administrar contenedores Linux, consulte Administración de imágenes de contenedor Linux mediante las API. Al usar servidores de juegos basados en Linux, en lugar de usar una imagen de contenedor administrada, tiene que crear y cargar su imagen de contenedor en un registro de contenedores. Para facilitarle la carga de contenedores, su cuenta incluye un registro de contenedores de Azure.Conocimientos necesarios
Configuración del dispositivo de desarrollo Windows
Este paso solo es necesario si quiere usar un dispositivo de desarrollo Windows para crear imágenes de contenedor Linux. Como alternativa, puede usar dispositivos con Linux OS, máquinas virtuales o sistemas de doble sistema operativo con Docker instalado. El Subsistema de Windows para Linux (WSL) le permite usar su dispositivo de desarrollo en el entorno familiar de Windows para crear y administrar imágenes de contenedor Linux. Usar WSL significa que no necesitaría la sobrecarga de una máquina virtual Linux tradicional ni de una configuración de arranque dual.- Instale WSL 2. Asegúrese de reiniciar la máquina y de estar usando WSL 2. También debe instalar el paquete de actualización del kernel de Linux.
- Instale una distribución de Linux que use WSL. Aunque nuestras máquinas virtuales usan Ubuntu, puede seleccionar la distribución que quiera para su imagen de contenedor. Considere usar Ubuntu 20.04 Long-Term Support (LTS) o versiones posteriores.
- Instale Docker Desktop para Windows con WSL 2. Para el vínculo de descarga directa, vaya a Docker Desktop para Windows (externo).
- Abra PowerShell
- Ejecute wsl -l -v para comprobar que tanto la aplicación docker-desktop como ubuntu están ejecutando WSL 2 (versión 2)
- Abra el terminal de WSL
- Ejecute docker version para confirmar que Docker está instalado y que el sistema operativo usado es Linux
Obtención de las credenciales de inicio de sesión del registro de contenedores de PlayFab
La cuenta del registro de contenedores de Azure está asociada a su cuenta de PlayFab. Solo usted tiene acceso a los contenedores cargados allí. Este registro de contenedores de Azure es gratuito.- En Game Manager, seleccione su título de juego y, después, Multiplayer > Servers. Seleccione New build para abrir la página de creación de compilaciones.
- Seleccione Linux como sistema operativo de la máquina virtual.
- Anote las credenciales de inicio de sesión (nombre, contraseña y customer5555555.azurecr.io), ya que esta información se necesitará más adelante
Creación e inserción de imágenes de contenedor Linux en Azure Container Registry
Estos pasos le ayudarán a crear e insertar su imagen de contenedor Linux personalizada.Integración de la aplicación de servidor de juegos con el GSDK
Al igual que con los servidores Windows, tiene que integrar el código de su servidor de juegos con el SDK de PlayFab Multiplayer Server (GSDK). La integración del GSDK puede formar parte de su imagen de contenedor. Para obtener instrucciones, consulte Creación de una compilación de servidor de juegos e Integración del título con el SDK de servidor de juegos de PlayFab (GSDK).Creación de un Dockerfile
Un Dockerfile es un archivo de texto sin extensión que contiene todos los comandos necesarios para compilar una imagen de contenedor determinada.- Abra el Bloc de notas o cualquier editor adecuado
- Agregue los comandos específicos necesarios para ejecutar y compilar un contenedor. Para ver un ejemplo de este archivo, consulte el DockerFile proporcionado en el ejemplo Wrapper. Para más información sobre cómo crear este archivo, consulte Formato de Dockerfile (externo) y Procedimientos recomendados al crear un Dockerfile (externo)
- Guarde el archivo como Dockerfile, idealmente en una carpeta o directorio vacío. Debe agregar a esta carpeta los demás archivos que se necesiten para compilar la imagen de contenedor.
- Seleccione File > Save as… para abrir las opciones de guardado
- Vaya a la carpeta en la que quiera guardar el archivo
- En File name:, use “Dockerfile”, incluidas las comillas.
- Para Save as type:, seleccione All Files
- Seleccione la codificación UTF-8
- Seleccione Save
Compilación y carga de la imagen de contenedor Linux
- Abra su terminal de Linux con Docker instalado.
- Ejecute los siguientes comandos de Docker con las credenciales de inicio de sesión obtenidas en el paso anterior. Después, siga las instrucciones en pantalla para introducir su nombre de usuario y contraseña.
- Compile la imagen de contenedor
- Después, ejecute cd /mnt/c/path/to/your/Dockerfile para cambiar a la ruta donde se encuentra su Dockerfile. Para más información, consulte Acceso a la unidad C.
- Cargue la imagen de contenedor
Comprobación de que el contenedor se ha cargado
Una vez cargado el contenedor, vuelva a la página New Build de Game Manager y seleccione Refresh Images. Podrá ver la imagen en la lista y seleccionarla. Como alternativa, puede usar la llamada a la API ListContainerImages para enumerar las imágenes de contenedor cargadas. Ahora está listo para implementar servidores. Para obtener instrucciones, consulte Portal de PlayFab: Game Manager y Uso de PowerShell/API.Diferencias entre las imágenes de contenedor de Windows y Linux
Para muchos desarrolladores, usar el contenedor administrado de Windows es la opción sencilla y predeterminada preferida. Sin embargo, las imágenes de contenedor Linux implementadas en máquinas virtuales disfrutan de una tarifa por hora más económica.Puede personalizar completamente sus servidores de juegos tanto si usa imágenes de contenedor de Windows como de Linux. Al usar servidores Windows, se personaliza la imagen de contenedor administrada cargando recursos.
Administración de imágenes de contenedor Linux mediante las API
Puede usar las API para administrar imágenes de contenedor Linux. Para el resto del ciclo de vida de la compilación (ver el uso, actualizar las regiones y las configuraciones de standingBy, eliminación), adminístrelas mediante Game Manager.- GetContainerRegistryCredentials: recupere la dirección del registro de contenedores, el nombre de usuario y la contraseña
- ListContainerImages y ListContainerImageTags: asegúrese de que su nueva imagen y etiqueta aparecen en la lista (a veces puede tardar un par de minutos en registrarse completamente la imagen en el sistema)
- CreateBuildWithCustomContainer: cree una compilación con un contenedor personalizado. Especifique la imagen etiquetada que cargó anteriormente. Asegúrese de que las siguientes propiedades estén establecidas en la solicitud:
- ContainerImageReference: el nombre de imagen y la etiqueta que se cargaron anteriormente. Estos valores son visibles en ListContainerImages y ListContainerImageTags.
- ContainerFlavor: “CustomLinux”
- ContainerRunCommand (opcional): si su contenedor no tiene un comando predeterminado, use esta propiedad para proporcionar el comando que se va a ejecutar, junto con los argumentos.
Empaquetado de recursos para servidores Linux basados en procesos
Al usar Linux en modo de proceso (en lugar de modo de contenedor), se carga el servidor de juegos como un archivo de recursos en lugar de una imagen de contenedor. Esta sección cubre requisitos importantes de empaquetado.Formatos de archivo compatibles
Los recursos deben cargarse como archivos.tar.gz o .tar, para que los permisos de archivos de Unix (como el bit de ejecución) puedan conservarse durante la extracción.
Requisitos de estructura de archivos tar.gz y tar
Al extraer archivos.tar o .tar.gz, PlayFab Multiplayer Servers quita el primer nivel de directorio del archivo (equivalente a tar --strip-components=1). El archivo debe contener un único directorio contenedor de nivel superior con todos los archivos del juego dentro.
Estructura correcta: los archivos dentro de un directorio de nivel superior:
Establecimiento del comando de inicio
Para los servidores basados en procesos, el comando de inicio debe ser relativo a la carpeta raíz de recursos después de la extracción (es decir, relativo a donde terminan los archivos después de quitarse el directorio de nivel superior). Por ejemplo, si el archivo contieneMyGameServer/MyGame.x86_64, después de la extracción el archivo está en la raíz de la carpeta de recursos. Establezca el comando de inicio en:
MyGameServer/bin/MyGame.x86_64), establezca el comando de inicio en:
Administración de compilaciones Linux basadas en procesos mediante las API
Puede usar las API para administrar compilaciones Linux basadas en procesos. Para el resto del ciclo de vida de la compilación (ver el uso, actualizar las regiones y las configuraciones de standingBy, eliminación), adminístrelas mediante Game Manager.- CreateBuildWithProcessBasedServer: cree una compilación con el servidor de juegos ejecutándose como proceso. Asegúrese de que las siguientes propiedades estén establecidas en la solicitud:
- OsPlatform: “Linux”
- GameAssetReferences: la lista de recursos del juego (cargados como archivos
.tar.gzo.tar). Cada recurso requiere un FileName que coincida con el nombre del recurso cargado. - StartMultiplayerServerCommand: el comando que se ejecuta cuando se inicia el servidor de juegos. La ruta debe ser relativa a la carpeta raíz de recursos después de la extracción (por ejemplo,
MyGame.x86_64 -server). - Ports: los puertos que se asignarán para la compilación.
- MultiplayerServerCountPerVm: el número de instancias de servidor de juegos que se hospedarán en una única máquina virtual.
- RegionConfigurations: las regiones en las que se va a implementar, con los recuentos de servidores en espera y máximos.
