Implantar um app do App Engine no ambiente flexível 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 atuais no ambiente flexível para o Cloud Run.

As etapas descritas neste guia não afetam a funcionalidade ou o fluxo de tráfego do seu app do App Engine. O serviço do Cloud Run recém-criado é uma réplica do serviço do App Engine que pode ser testada de forma independente.

O ambiente flexível do App Engine e o Cloud Run são plataformas de aplicativos totalmente gerenciadas e nativas de contêiner, mas são estruturalmente diferentes. Para entender 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 de comparação.

Para implantar no Cloud Run, use a configuração local do arquivo app.yaml. Isso cria uma imagem de contêiner com base no código-fonte local. Assim, todas as alterações recentes no código ou na configuração são incluídas na nova implantação.

Antes de começar

  1. Verifique se o aplicativo do App Engine é executado sem erros. Você precisará de acesso ao código-fonte do App Engine se optar por implantar usando sua configuração local.

  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: o ID do projeto Google Cloud .
    • REGION: a região em que você quer implantar o serviço do Cloud Run.
  4. Verifique se há recursos incompatíveis no aplicativo e remova-os antes de migrar para o Cloud Run. Para verificar se há incompatibilidade no aplicativo sem realizar uma migração ou implantação, execute o seguinte comando:

    gcloud beta app migrate-to-run --dry-run
    

    Revise os resultados da verificação de compatibilidade e faça as mudanças recomendadas, se necessário.

  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 alterações 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 para definir e gerenciar as configurações do app. O Cloud Run não requer configuração baseada em arquivo. No entanto, Configuração do YAML tem suporte.

    • 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 ambiente flexível. Você ou seu administrador precisa conceder à conta de 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 de 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 o 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 de Criador do Cloud Run (roles/run.builder) à conta de serviço padrão do Compute Engine no 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 Cloude PROJECT_ID pelo ID do projeto do Google Cloud. Para instruções detalhadas sobre como encontrar o ID do projeto e o número do projeto, consulte Criar e gerenciar projetos.

A concessão do papel de criador 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 as APIs doGoogle 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 a configuração local de um arquivo app.yaml

Para implantar o serviço do Cloud Run usando o arquivo app.yaml local de uma configuração do App Engine, siga estas etapas:

  1. No terminal, mude para o diretório de origem em que o arquivo app.yaml está.

  2. Execute o comando a seguir para implantar o serviço no Cloud Run:

    gcloud beta app migrate-to-run
    

    Esse comando gera a configuração do arquivo service.yaml para o Cloud Run e a salva localmente no mesmo diretório do arquivo app.yaml. Para mais informações, consulte gcloud beta app migrate-to-run.

    • Quando solicitado Proceed with the deployment?, digite Y para criar uma imagem do contêiner com base no código-fonte e implantar o serviço no Cloud Run.
  3. Acesse o serviço do Cloud Run implantado abrindo o URL dele em um navegador da Web.

    Opcional:

    • Se o arquivo app.yaml estiver em um diretório diferente, especifique o caminho dele usando a flag --appyaml:

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

      Substitua PATH pelo caminho do seu arquivo app.yaml.

    • Para gerar e exportar a configuração service.yaml do Cloud Run sem implantar o serviço, execute o seguinte comando:

      gcloud beta app migrate-to-run --export-only=EXPORT_PATH
      

      Substitua EXPORT_PATH pelo diretório ou caminho em que você quer salvar o arquivo service.yaml.

Recursos incompatíveis

O comando de migração vai falhar se o arquivo app.yaml tiver a seguinte configuração incompatível:
  • Serviços de entrada:

    inbound_services:
    - warmup
    

    Solução: exclua a seção inbound_services do arquivo app.yaml. O Cloud Run aquece as instâncias usando o ponto de entrada do contêiner, portanto, não é necessário configurar solicitações de aquecimento. Se você precisar executar o código de inicialização antes de exibir o tráfego, configure o serviço para executá-lo na inicialização, antes de detectar solicitações, ou use sondagens de inicialização. Também é possível configurar instâncias mínimas para manter as instâncias ativas.

A seguir