Como testar e implantar um aplicativo

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

Como executar no local

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

Como implantar o aplicativo

Implante o aplicativo no App Engine usando o comando gcloud app deploy. Ele cria automaticamente uma imagem de 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 tempo de execução.

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

Antes de começar

Antes de implantar seu 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, na sigla em inglês) e outras infraestruturas são configuradas. Após a configuração inicial, as verificações de integridade começam a confirmar que a instância é íntegra e está pronta para receber o tráfego. Se o aplicativo não ficar pronto em um determinado período de tempo, a implantação falhará e será revertida.

É provável que o aplicativo demore um pouco mais para ficar pronto. Por exemplo, você pode inicializar o aplicativo ao fazer o download de arquivos grandes ou carregar caches com antecedência. Ao usar as verificações de integridade atualizadas, você aumenta o tempo com a modificação da configuração de app_start_timeout no arquivo app.yaml.

Como implantar um serviço

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

Para implantar uma versão do serviço do seu aplicativo, execute o seguinte comando no diretório em que o arquivo app.yaml do seu serviço está localizado:

gcloud app deploy

Se você não especificar algum arquivo com o comando, somente o arquivo app.yaml será implantado no diretório atual. Por padrão, o comando deploy gera um código exclusivo para a versão que você implantar, além de implantar a versão no projeto do GCP que você configurou para usar a ferramenta gcloud e direcionar todo o tráfego para a nova versão.

É possível alterar o comportamento padrão do comando. Basta segmentar arquivos específicos ou incluir outros parâmetros de comando:

  • Para implantar os outros arquivos de configuração do serviço, é necessário segmentar e implantar cada um deles separadamente. Exemplo:

    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Para especificar um código de versão personalizado, use o sinalizador --version.

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

  • Para implantar em um projeto específico do GCP, use o sinalizador --project.

Por exemplo, para implantar o serviço definido por app.yaml em um projeto específico do GCP, atribua a ele um código de versão personalizado e evite que o tráfego seja roteado para a nova versão:

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

Para ver mais informações sobre esse comando, veja a referência 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, é necessário implantar o arquivo app.yaml de cada serviço separadamente. Exemplo:

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

Você pode especificar 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

  • Inicialmente, você precisa implantar uma versão de seu aplicativo no serviço default antes de criar e implantar serviços subsequentes.

  • O código de cada serviço precisa ser especificado nos arquivos de configuração app.yaml correspondentes. Para fazer isso, inclua a definição de elemento service em cada arquivo de configuração. Por padrão, ao excluir essa definição de elemento do arquivo de configuração, você implanta a versão no serviço default.

Como ignorar arquivos

Você pode usar um arquivo .gcloudignore para especificar arquivos e diretórios que não devem ser carregados no GCP ao implantar seus serviços. Isso é útil para ignorar artefatos de versão e outros arquivos que não precisam ser carregados com sua implantação.

Saiba mais sobre a sintaxe do arquivo .gcloudignore na referência do gcloud.

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

Para criar as imagens de contêiner fora do Google Cloud Platform, você precisa enviá-las primeiro para um repositório de imagens de contêiner. Depois, faça a implantação no App Engine com o comando gcloud app deploy.

Por exemplo, ao criar localmente imagens de contêiner com o Docker, envie essas imagens para o Google Container Registry e especifique o URL correspondente no sinalizador --image-url do comando:

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

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

Você pode usar 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 usando os disparadores de compilaçã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

Como ver o aplicativo

Depois de implantar seu aplicativo no App Engine, você pode executar o seguinte comando para iniciar o navegador e visualizá-lo em http://YOUR_PROJECT_ID.appspot.com:

gcloud app browse

Como testar no App Engine

Antes de configurar uma nova versão para receber tráfego, você pode testá-la no App Engine. Por exemplo, para testar uma nova versão do seu serviço default:

  1. Implante sua nova versão e inclua o sinalizador --no-promote:

    gcloud app deploy --no-promote
  2. Acesse a nova versão no seguinte URL:

    http://VERSION_ID.default.YOUR_PROJECT_ID.appspot.com
    

    Agora você pode testar sua nova versão no ambiente de tempo de execução do App Engine. Além disso, pode depurar o aplicativo visualizando seus registros. Para saber mais, consulte Como gravar registros de aplicativos.

    As solicitações enviadas para http://YOUR_PROJECT_ID.appspot.com ainda serão roteadas 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 GCP:

    Gerenciar versões

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

Você pode usar o mesmo processo para testar novas versões de outros serviços substituindo default no URL pelo nome do seu serviço:

http://VERSION_ID.SERVICE_ID.YOUR_PROJECT_ID.appspot.com

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

Solução de problemas

Esta é uma mensagem de erro comum que você pode encontrar ao implantar apps:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Caso o projeto do GCP não inclua o aplicativo obrigatório do App Engine, o comando gcloud app deploy falhará na tentativa de 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.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentos do ambiente flexível do App Engine para Python