Criar e implantar imagens de contêiner Linux
Esta seção descreve etapas específicas para ajudar você a criar e implantar imagens de contêiner Linux. Conforme descrito em Criar máquinas virtuais (VMs), ao usar nosso serviço, você configura as VMs para serem iniciadas automaticamente como servidores de jogo em todo o mundo, de acordo com seu orçamento e sua demanda. Para isso, você não cria VMs explicitamente, mas define parâmetros que determinam como elas são criadas em seu nome. Esse processo é chamado de implantação ou criação de um build. O PlayFab Multiplayer Servers pode implantar servidores de jogo baseados em Linux e em Windows. A forma como os builds são implantados para contêineres Linux é semelhante à dos contêineres Windows, com algumas diferenças importantes. Para saber mais, consulte Diferenças entre imagens de contêiner Windows e Linux. Se quiser usar PowerShell/API para gerenciar contêineres Linux, consulte Gerenciar imagens de contêiner Linux usando APIs. Ao usar servidores de jogo baseados em Linux, em vez de usar uma imagem de contêiner gerenciada, você precisa criar e carregar sua imagem de contêiner em um registro de contêiner. Para facilitar o carregamento de contêineres, sua conta inclui um registro de contêiner do Azure.Conhecimento necessário
Configurar seu dispositivo de desenvolvimento Windows
Esta etapa só é necessária se você quiser usar um dispositivo de desenvolvimento Windows para criar imagens de contêiner Linux. Como alternativa, você pode usar dispositivos com sistema operacional Linux, VMs ou sistemas com dois sistemas operacionais que tenham o Docker instalado. O Subsistema do Windows para Linux (WSL) permite que você use seu dispositivo de desenvolvimento no ambiente familiar do Windows para criar e gerenciar imagens de contêiner Linux. Usar o WSL significa que você não precisaria da sobrecarga de uma máquina virtual Linux tradicional ou de uma configuração de inicialização dupla.- Instale o WSL 2. Reinicie o computador e verifique se você está usando o WSL 2. Você também precisa instalar o pacote de atualização do kernel do Linux.
- Instale uma distribuição Linux que use o WSL. Embora nossas VMs usem o Ubuntu, você pode selecionar qualquer distribuição para sua imagem de contêiner. Considere usar o Ubuntu 20.04 Long-Term Support (LTS) ou versões posteriores.
- Instale o Docker Desktop para Windows com o WSL 2. Para o link de download direto, acesse Docker Desktop para Windows (externo).
- Abra o PowerShell
- Execute wsl -l -v para verificar se os aplicativos docker-desktop e ubuntu estão executando o WSL 2 (versão 2)
- Abra o terminal do WSL
- Execute docker version para confirmar que o Docker está instalado e que o sistema operacional usado é o Linux
Obter as credenciais de entrada do registro de contêiner do PlayFab
A conta do registro de contêiner do Azure está associada à sua conta do PlayFab. Somente você tem acesso aos contêineres carregados nela. Esse registro de contêiner do Azure é gratuito.- No Game Manager, selecione o título do seu jogo e, em seguida, Multiplayer > Servers. Selecione New build para abrir a página de criação de build.
- Selecione Linux como o sistema operacional da máquina virtual.
- Anote as credenciais de entrada (nome, senha e customer5555555.azurecr.io), pois essas informações serão necessárias mais tarde
Criar imagens de contêiner Linux e enviá-las por push ao Registro de Contêiner do Azure
Estas etapas ajudam você a criar e enviar por push sua imagem de contêiner Linux personalizada.Integrar seu aplicativo de servidor de jogo ao GSDK
Assim como ao usar servidores Windows, você precisa integrar o código do seu servidor de jogo ao PlayFab Multiplayer Server SDK (GSDK). A integração do GSDK pode fazer parte da sua imagem de contêiner. Para obter instruções, consulte Criar um build de servidor de jogo e Integrando seu título ao PlayFab Game Server SDK (GSDK).Criar um Dockerfile
Um Dockerfile é um arquivo de texto sem extensão que contém todos os comandos necessários para criar uma determinada imagem de contêiner.- Abra o Bloco de Notas ou qualquer editor adequado
- Adicione os comandos específicos necessários para executar e criar um contêiner. Para ver um exemplo desse arquivo, consulte o DockerFile fornecido no exemplo Wrapper. Para obter mais informações sobre como criar esse arquivo, consulte Formato do Dockerfile (externo) e Práticas recomendadas ao criar um Dockerfile (externo)
- Salve o arquivo como Dockerfile, de preferência em uma pasta/diretório vazio. Você deve adicionar a essa pasta os outros arquivos necessários para criar a imagem de contêiner.
- Selecione Arquivo> Salvar como… para abrir as opções de salvamento
- Vá para a pasta em que deseja salvar o arquivo
- Em Nome do arquivo:, use “Dockerfile”, incluindo as aspas.
- Em Tipo:, selecione Todos os Arquivos
- Selecione a codificação UTF-8
- Select Save
Criar e carregar a imagem de contêiner Linux
- Abra o terminal do Linux com o Docker instalado.
- Execute os seguintes comandos do Docker usando as credenciais de entrada obtidas na etapa anterior. Em seguida, siga as instruções na tela para inserir seu nome de usuário e sua senha.
- Crie a imagem de contêiner
- Em seguida, execute cd /mnt/c/path/to/your/Dockerfile para alternar para o caminho em que está seu Dockerfile. Para obter mais informações, consulte Acessando a unidade C.
- Carregue a imagem de contêiner
Verificar se o contêiner foi carregado
Depois que o contêiner for carregado, volte à página New Build no Game Manager e selecione Refresh Images. Você poderá ver a imagem na lista e selecioná-la. Como alternativa, você pode usar a chamada de API ListContainerImages para listar as imagens de contêiner carregadas. Agora você está pronto para implantar servidores. Para obter instruções, consulte Portal do PlayFab: Game Manager e Usando PowerShell/API.Diferenças entre imagens de contêiner Windows e Linux
Para muitos desenvolvedores, usar o contêiner Windows gerenciado é a escolha padrão e simples preferida. No entanto, as imagens de contêiner Linux implantadas em máquinas virtuais têm uma tarifa por hora mais barata.Você pode personalizar totalmente seus servidores de jogo, quer use imagens de contêiner Windows ou Linux. Ao usar servidores Windows, você personaliza a imagem de contêiner gerenciada carregando ativos.
Gerenciar imagens de contêiner Linux usando APIs
Você pode usar APIs para gerenciar imagens de contêiner Linux. Para o restante do ciclo de vida do build (exibição do uso, atualização de regiões e de configurações de standingBy, exclusão), gerencie-as usando o Game Manager.- GetContainerRegistryCredentials: recupera o endereço, o nome de usuário e a senha do registro de contêiner
- ListContainerImages e ListContainerImageTags: verifique se sua nova imagem e sua marca estão listadas (às vezes, pode levar alguns minutos para que a imagem seja totalmente registrada no sistema)
- CreateBuildWithCustomContainer: cria um build com um contêiner personalizado. Especifique a imagem marcada que você carregou anteriormente. Verifique se as seguintes propriedades estão definidas na solicitação:
- ContainerImageReference: o nome e a marca da imagem carregada anteriormente. Esses valores ficam visíveis em ListContainerImages e ListContainerImageTags.
- ContainerFlavor - “CustomLinux”
- ContainerRunCommand (opcional): se o seu contêiner não tiver um comando padrão, use esta propriedade para fornecer o comando a ser executado, junto com os argumentos.
Empacotando ativos para servidores Linux baseados em processo
Ao usar o Linux no modo de processo (em vez do modo de contêiner), você carrega seu servidor de jogo como um arquivo compactado de ativos, e não como uma imagem de contêiner. Esta seção aborda requisitos importantes de empacotamento.Formatos de arquivo compactado com suporte
Os ativos devem ser carregados como arquivos.tar.gz ou .tar, para que as permissões de arquivo do Unix (como o bit de execução) possam ser preservadas durante a extração.
Requisitos de estrutura de arquivos compactados tar.gz e tar
Ao extrair arquivos.tar ou .tar.gz, o PlayFab Multiplayer Servers remove o primeiro nível de diretório do arquivo compactado (equivalente a tar --strip-components=1). Seu arquivo compactado deve conter um único diretório wrapper de nível superior com todos os arquivos do jogo dentro dele.
Estrutura correta: arquivos dentro de um diretório de nível superior:
Definindo o comando de início
Para servidores baseados em processo, o comando de início deve ser relativo à pasta raiz de ativos após a extração (ou seja, relativo ao local em que os arquivos ficam depois que o diretório de nível superior é removido). Por exemplo, se o seu arquivo compactado contiverMyGameServer/MyGame.x86_64, após a extração o arquivo ficará na raiz da pasta de ativos. Defina o comando de início como:
MyGameServer/bin/MyGame.x86_64), defina o comando de início como:
Gerenciar builds Linux baseados em processo usando APIs
Você pode usar APIs para gerenciar builds Linux baseados em processo. Para o restante do ciclo de vida do build (exibição do uso, atualização de regiões e de configurações de standingBy, exclusão), gerencie-os usando o Game Manager.- CreateBuildWithProcessBasedServer: cria um build com o servidor de jogo sendo executado como um processo. Verifique se as seguintes propriedades estão definidas na solicitação:
- OsPlatform - “Linux”
- GameAssetReferences: a lista de ativos do jogo (carregados como arquivos
.tar.gzou.tar). Cada ativo exige um FileName que corresponda ao nome do ativo carregado. - StartMultiplayerServerCommand: o comando a ser executado quando o servidor de jogo for iniciado. O caminho deve ser relativo à pasta raiz de ativos após a extração (por exemplo,
MyGame.x86_64 -server). - Ports: as portas a serem mapeadas para o build.
- MultiplayerServerCountPerVm: o número de instâncias de servidor de jogo a serem hospedadas em uma única VM.
- RegionConfigurations: as regiões nas quais implantar, com as contagens de servidores em espera e de máximo de servidores.
