Implantar um app do App Engine no ambiente padrão para o Cloud Run

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.

Neste guia, descrevemos como implantar seus apps no ambiente padrão no Cloud Run usando a Google Cloud CLI. As instruções são válidas para ambientes de execução de segunda geração que não usam os serviços incluídos legados do App Engine.

O Cloud Run usa grande parte da mesma infraestrutura do ambiente padrão do App Engine, o que resulta em muitas semelhanças entre as plataformas. Para saber mais sobre as semelhanças e diferenças entre o App Engine e o Cloud Run, incluindo os benefícios da migração para o Cloud Run, consulte o resumo da comparação.

Para implantar no Cloud Run usando o comando gcloud beta app migrate, escolha uma das seguintes estratégias:

Antes de começar

  1. Verifique se você tem acesso ao código-fonte do App Engine e se o aplicativo do App Engine é executado sem erros.

  2. Ative a API Cloud Run Admin e a API Artifact Registry:

    Ativar APIs

  3. Configure o projeto e a região usando o seguinte comando:

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud config set run/region REGION
    gcloud components update
    

    Substitua:

    • PROJECT_ID com o ID do seu projeto Google Cloud .
    • REGION pela região.
  4. Revise os recursos incompatíveis no aplicativo e remova-os antes de migrar para o Cloud Run. Se houver recursos incompatíveis no aplicativo atual, o processo de migração será interrompido e listará as incompatibilidades.

  5. Analise as seguintes diferenças do Cloud Run:

    • O Cloud Run usa o termo Revision em vez de Version para representar cada vez que você implanta mudanças em um serviço específico. Implantar o app em um serviço no Cloud Run pela primeira vez cria a primeira revisão. Cada implantação subsequente de um serviço cria outra revisão. Saiba mais sobre como implantar no Cloud Run.

    • É possível implantar o código-fonte no Cloud Run usando a CLI gcloud ou o console Google Cloud para configurar e gerenciar as configurações do app. O Cloud Run não requer configuração baseada em arquivo. No entanto, a configuração YAML é compatível.

    • Cada serviço implantado no Cloud Run usa o domínio run.app no URL para acessar o serviço publicamente.

    • Ao contrário dos serviços do App Engine que são públicos por padrão, os serviços do Cloud Run são particulares por padrão e exigem que você os configure para acesso público (não autenticado).

Funções exigidas

É possível criar uma nova conta de serviço ou usar a mesma conta de serviço gerenciado pelo usuário no Cloud Run que você está usando para o App Engine. Você ou seu administrador precisa conceder à conta do implantador e à conta de serviço do Cloud Build os seguintes papéis do IAM.

Clique para conferir os papéis necessários para a conta do implantador

Para receber as permissões necessárias para criar e implantar a partir da origem, peça ao administrador para conceder a você os seguintes papéis do IAM:

Clique para conferir os papéis necessários para a conta de serviço do Cloud Build

O Cloud Build usa automaticamente a conta de serviço padrão do Compute Engine como a conta de serviço padrão do Cloud Build para criar seu código-fonte e o recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o papel Criador do Cloud Run (roles/run.builder) à conta de serviço padrão do Compute Engine no seu projeto:

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Substitua PROJECT_NUMBER pelo número do projeto do Google Cloud e PROJECT_ID pelo ID do projeto do Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte Criar e gerenciar projetos.

A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.

Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.

Usar o arquivo app.yaml

Traduza o arquivo app.yaml do App Engine para um serviço do Cloud Run executando o seguinte comando:

gcloud beta app migrate-to-run --appyaml=PATH --entrypoint=ENTRYPOINT

Substitua:

  • PATH com o caminho para o arquivo app.yaml.
  • ENTRYPOINT com o comando de ponto de entrada do seu aplicativo.

Se você estiver no diretório do projeto, os argumentos PATH e ENTRYPOINT serão opcionais.

Para mais informações sobre os argumentos que podem ser usados com o comando gcloud beta app migrate-to-run, consulte gcloud beta app migrate-to-run.

Implantar um aplicativo do App Engine

Implante um app do App Engine diretamente no Cloud Run executando o comando a seguir:

gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --entrypoint=ENTRYPOINT

Esse comando pede que você especifique o caminho relativo para o diretório do código-fonte.

Substitua:

  • SERVICE com o nome do seu serviço do App Engine.
  • VERSION com o ID da versão do seu serviço.
  • ENTRYPOINT com o comando de ponto de entrada do seu aplicativo. Se você estiver no diretório do projeto, esse argumento será opcional.

Para mais informações sobre os argumentos que podem ser usados com o comando gcloud beta app migrate, consulte gcloud beta app migrate-to-run.

Recursos incompatíveis

O comando de migração falha se o arquivo app.yaml tiver alguma das seguintes configurações não compatíveis:

  • Serviços de entrada:

    inbound_services:
    - warmup
    
  • Páginas de erro personalizadas:

    error_handlers:
    - file: default_error.html
    - error_code: over_quota
      file: over_quota.html
    
  • Serviços agrupados para ambientes de execução de segunda geração:

    app_engine_apis: true
    
  • Variáveis de ambiente de build:

    build_env_variables:
      Foo: Bar
    
  • Ambientes de execução de primeira geração:

    runtime: python27
    

A seguir