Como testar e implantar o 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. A inclusão de REGION_ID.r em URLs do App Engine é opcional para aplicativos atuais. Em breve, será necessária para todos os aplicativos novos.

Para garantir uma transição tranquila, estamos atualizando o App Engine gradativamente para usar IDs de região. Se ainda não tivermos atualizado seu projeto do Google Cloud, você não verá um ID da região para o app. Como o ID é opcional para os apps atuais, não é necessário atualizar os URLs ou fazer outras alterações quando o ID da região está disponível para eles.

Saiba mais sobre IDs de região.

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

Como executar localmente

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

Por exemplo, normalmente você pode executar um aplicativo Flask com o servidor de desenvolvimento do Flask usando:

python main.py

Os aplicativos Django podem ser iniciados usando-se:

python manage.py runserver

Para simular um ambiente de produção do App Engine, é possível executar o servidor de interface de gateway do servidor da Web (WSGI, na sigla em inglês) completo localmente. Para isso, use o mesmo comando especificado como entrypoint no app.yaml, por exemplo:

gunicorn -b :$PORT main:app

Implantar o aplicativo

Implantar a aplicação no App Engine usando o comandogcloud app deploy. Ele cria automaticamente uma imagem do contêiner usando o serviço Cloud Build e a implanta no ambiente flexível do App Engine. O contêiner inclui quaisquer 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:

Como garantir uma implantação bem-sucedida

Ao ativar as verificações de integridade atualizadas, as implantações são revertidas se o aplicativo não tiver o status "íntegro".

Quando você implanta seu primeiro aplicativo no ambiente flexível, pode ocorrer um atraso conforme a máquina virtual (VM) e outras infraestruturas são configuradas. Após a configuração inicial, as verificações de integridade garantem que a instância esteja íntegra e pronta para receber tráfego. Se o aplicativo não atingir o status pronto em um período especificado, indicado pelo campo initial_delay_sec na seção liveness_check do arquivo app.yaml, a implantação falhará e será revertida.

Talvez o aplicativo demore um pouco mais para ficar pronto. Por exemplo, você pode inicializar o aplicativo fazendo o download de arquivos grandes ou carregando caches com antecedência. Com o uso de verificações de integridade atualizadas, é possível aumentar o tempo modificando a configuração app_start_timeout_sec na seção readiness_check do arquivo app.yaml.

Se a implantação falhar, verifique se a API Cloud Build está ativada no projeto. O App Engine ativa essa API automaticamente na primeira vez que você implanta um aplicativo, mas se alguém tiver desativado a API, as implantações falharão.

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 o serviço do aplicativo, execute o seguinte comando no diretório em que o arquivo app.yaml do serviço está localizado:

gcloud app deploy

Por padrão, o comando gcloud app deploy implanta somente o arquivo app.yaml no diretório atual. Sempre que você executa esse comando, o App Engine gera um ID exclusivo para a versão implantada, implanta a versão no projeto do Cloud em que você configurou o uso da ferramenta gcloud e roteia todo o tráfego para a nova versão. A nova versão se torna a padrão.

É possível alterar o comportamento padrão do comando gcloud app deploy segmentando arquivos específicos, especificando versões ou incluindo outros parâmetros:

  • É possível implantar os outros arquivos de configuração do serviço segmentando e implantando cada arquivo separadamente. 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 Cloud, use a sinalização --project.

Por exemplo, para implantar o serviço definido pelo arquivo app.yaml em um projeto específico do 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 implantar vários serviços

Use o mesmo comando para implantar ou atualizar os diversos serviços que compõem seu aplicativo.

Para implantar vários serviços, implemente separadamente o arquivo app.yaml de cada serviço. Por exemplo:

gcloud app deploy service1/app.yaml
gcloud app deploy service2/app.yaml

Especifique vários arquivos com um único comando de implantação:

gcloud app deploy service1/app.yaml service2/app.yaml

Requisitos para implantar vários serviços

  • Primeiro é preciso implantar uma versão do seu aplicativo no serviço default para depois criar e implantar os serviços posteriores.

  • É necessário especificar o ID de cada serviço nos arquivos de configuração app.yaml correspondentes. Para isso especificar o ID do serviço, inclua a definição do elemento service em cada arquivo de configuração. Por padrão, a exclusão dessa definição de elemento do arquivo de configuração faz com que a versão seja implantada no serviço defaultdefault.

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 Platform, 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 Como implantar artefatos e Como automatizar versões com acionadores de versão na documentação do Cloud Build.

Imagens de base do Docker para Python

Se você quiser criar do zero um aplicativo Python de ambiente de execução personalizado, use esta imagem de base em um Dockerfile:

Ambiente de execução Comando do Docker runtime equivalente do Google
Python (2.7, 3.6 pode ser especificado no Dockerfile) FROM gcr.io/google-appengine/python runtime: python

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 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:

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

Resolver 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 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 Cloud poderá falhar ao iniciar se o app.yaml estiver configurado incorretamente. Verifique os registros do aplicativo para ver mensagens de erro mais detalhadas.