Como testar e implantar seu aplicativo

ID da região

O REGION_ID é um código abreviado que o Google atribui com base na região que você selecionou ao criar o aplicativo. O código não corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes aos códigos de país e estado geralmente usados. Para apps criados após fevereiro de 2020, o REGION_ID.r está incluído nos URLs do App Engine. Para apps existentes criados antes dessa data, o ID da região é opcional no URL.

Saiba mais sobre IDs de região.

Saiba como executar o aplicativo localmente, implantá-lo e testá-lo no App Engine.

Como executar localmente

Para testar a funcionalidade do aplicativo antes de implantá-lo, execute-o no ambiente local com as ferramentas de desenvolvimento que você costuma usar.

Implantar o aplicativo

Implante o aplicativo no App Engine usando o comando gcloud app deploy.

A implantação é criada automaticamente em uma imagem de contêiner pelo serviço Cloud Build. Em seguida, essa imagem é implantada no ambiente flexível do App Engine. O contêiner inclui todas as modificações locais realizadas na imagem do ambiente de execução.

Para implantar os aplicativos de maneira programática, use a API Admin.

Antes de começar

Antes de implantar o aplicativo:

Implantar um serviço

Implante o aplicativo no App Engine implantando as versões dos serviços dele e os respectivos arquivos de configuração.

  • Para implantar os outros arquivos de configuração do serviço, segmente e implante cada arquivo separadamente. Por exemplo:

    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Para especificar um ID de versão personalizado, use a sinalização --version.

  • Para impedir que o tráfego seja roteado automaticamente para a nova versão, use a sinalização --no-promote.

  • Para implantar em um projeto específico do Google Cloud, use a sinalização --project.

Por exemplo, para implantar o serviço definido pelo arquivo app.yaml em um projeto específico do Google Cloud, atribua a ele um ID de versão personalizado e impeça que o tráfego seja encaminhado para a nova versão:

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

Para mais informações sobre esse comando, consulte as referências do gcloud app deploy.

Como ignorar arquivos

É possível usar um arquivo .gcloudignore para especificar arquivos e diretórios que não serão enviados ao Google Cloud ao implantar seus serviços. Isso é útil para ignorar artefatos de versão e outros que não precisam ser enviados com a implantação.

Saiba mais sobre a sintaxe do arquivo .gcloudignore na referência do gcloud (em inglês).

Como criar manualmente um contêiner para implantação

Para criar imagens de contêiner fora do Google Cloud, faça upload das imagens para um repositório de imagens de contêiner antes de implantá-las no App Engine com o comando gcloud app deploy.

Por exemplo, ao criar localmente imagens de contêiner com o Docker, envie-as para o Google Container Registry e especifique o URL correspondente na sinalização --image-url do comando:

gcloud app deploy --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE

Como usar canais de implantação contínua automatizada

Use o Cloud Build para automatizar implantações em pipelines de implantação contínua. Para mais informações, consulte Implantar artefatos e Automatizar versões usando gatilhos de build na documentação do Cloud Build.

Imagens de base do Docker

Se quiser criar um aplicativo de ambiente de execução personalizado, consulte Criar um arquivo do Docker.

Ver o aplicativo

Depois de implantar o aplicativo no App Engine, execute o comando a seguir para iniciar o navegador e visualizá-lo em https://PROJECT_ID.REGION_ID.r.appspot.com:

gcloud app browse

Como fazer testes no App Engine

Antes de configurar uma nova versão para receber tráfego, teste-a no App Engine. Por exemplo, para testar uma nova versão do seu serviço default, siga estas etapas:

  1. Implante sua nova versão e inclua a sinalização --no-promote:

    gcloud app deploy --no-promote

  2. Acesse a nova versão no URL a seguir:

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    Agora você pode testar sua nova versão no ambiente de execução do App Engine. Depure o aplicativo visualizando os registros no Visualizador de registros do console do Google Cloud. Para saber mais informações, consulte Como gravar registros de aplicativos.

    As solicitações enviadas para https://PROJECT_ID.REGION_ID.r.appspot.com ainda serão encaminhadas para a versão configurada anteriormente para receber tráfego.

  3. Quando você quiser enviar tráfego para a nova versão, use o console do Google Cloud para migrá-lo:

    Gerenciar versões

    Selecione a versão que você acabou de implantar e clique em Migrar tráfego.

Use o mesmo processo para testar novas versões de outros serviços substituindo default no URL pelo nome do serviço:

https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

Para mais informações sobre como segmentar serviços e versões específicos, consulte Como as solicitações são encaminhadas.

Como usar variáveis de ambiente de build

Também é possível definir variáveis de ambiente de build para ambientes de execução compatíveis com buildpacks.

As variáveis de ambiente de build são pares de chave-valor que você pode especificar para configurar o buildpack usado para implantar o app. Por exemplo, é possível especificar opções de compilador.

Antes de começar:

  • As chaves precisam começar com uma letra ASCII maiúscula e podem incluir letras ASCII maiúsculas, dígitos e sublinhados.
  • Evite criar variáveis com um prefixo de chave GOOGLE_*.
  • As seguintes chaves são reservadas para uso do Google:
    • GOOGLE_RUNTIME
    • GOOGLE_RUNTIME_VERSION
    • GOOGLE_ENTRYPOINT
    • GOOGLE_DEVMODE
  • Você pode usar qualquer chave aceita pelos buildpacks.

Para usar variáveis de ambiente com buildpacks, especifique o campo build_env_variables no seu arquivo app.yaml.

Saiba mais sobre buildpacks.

Como usar o Cloud Trace

O Cloud Trace é útil para entender como as solicitações se propagam pelo aplicativo. É possível analisar informações detalhadas sobre a latência de uma única solicitação ou ver a latência agregada do aplicativo como um todo.

É possível visualizar detalhes do trace. No explorador de traces, é possível filtrar por serviço e versão específicos do App Engine.

Solução de problemas

Veja mensagens de erro comuns que você talvez encontre ao implantar aplicativos:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Se o projeto do Google Cloud não incluir o aplicativo necessário do App Engine, o comando gcloud app deploy pode falhar ao tentar executar o comando gcloud app create. Somente contas com o papel Proprietário têm as permissões necessárias para criar aplicativos do App Engine.
502 Bad Gateway
O projeto do Google Cloud poderá falhar ao iniciar se o app.yaml estiver configurado incorretamente. Verifique os registros do aplicativo para ver mensagens de erro mais detalhadas.
[13] An internal error occurred while creating a Cloud Storage bucket.

O App Engine cria um bucket multirregional padrão do Cloud Storage em seu nome na mesma região em que cria o aplicativo. Ele exige que esse bucket armazene o conteúdo do aplicativo. O erro é retornado quando não é possível criar o bucket, como nos cenários a seguir:

[13] An internal error occurred.

Esse erro poderá ocorrer se você implantar o serviço com uma configuração de rede que usa uma configuração de VPC compartilhada. Tente o seguinte:

  1. Verifique se a configuração app.yaml é válida.
  2. Verifique se o ambiente flexível do App Engine atende a todos os requisitos de uma configuração de VPC compartilhada. Consulte Como usar o ambiente flexível do App Engine em uma rede VPC compartilhada.
  3. Verifique se você configurou as contas de serviço no projeto. Caso contrário, você precisará restaurar as contas. A região da sub-rede no projeto host da VPC compartilhada precisa corresponder ao local em que o ambiente do App Engine foi criado.

Se o problema persistir, reimplante o serviço usando o SDK do Google Cloud. Adicione a sinalização --verbosity=debug. Entre em contato com o suporte do Google Cloud e forneça a saída do comando.

IP space of {USER_SUBNETWORK_NAME} is exhausted and needs to be expanded.

Se a implantação falhar com essa mensagem de erro, a rede configurada para o serviço do App Engine não tem endereços para alocar para as novas instâncias do serviço. Para resolver o problema, expanda os intervalos da VPC na sub-rede configurada para o serviço de ambiente flexível do App Engine.