Migre uma app do ambiente padrão do App Engine para o Cloud Run

ID da região

O REGION_ID é um código abreviado que a Google atribui com base na região que seleciona quando cria a sua app. O código não corresponde a um país ou uma província, embora alguns IDs de regiões possam parecer semelhantes aos códigos de países e províncias usados frequentemente. Para apps criadas após fevereiro de 2020, REGION_ID.r está incluído nos URLs do App Engine. Para apps existentes criadas antes desta data, o ID da região é opcional no URL.

Saiba mais acerca dos IDs de regiões.

Este guia descreve como migrar uma app do App Engine existente que se liga a uma instância do Cloud SQL com um IP público.

Em geral, os passos neste guia demonstram como pode implementar o mesmo código fonte da aplicação no Cloud Run e, em seguida, configurá-lo para usar o mesmo utilizador da base de dados do Cloud SQL para ligar a sua instância e base de dados existentes.

Os passos neste guia não incluem como usar uma ligação de IP privado interno, porque isso requer que modifique primeiro o código da sua aplicação. No entanto, depois de implementar a sua app no Cloud Run, pode usar os passos em Estabeleça ligação ao Cloud SQL a partir do Cloud Run para saber os requisitos e como usar IPs privados.

Para compreender melhor as semelhanças e as diferenças entre o App Engine e o Cloud Run, incluindo as vantagens da migração para o Cloud Run, consulte o resumo da comparação.

Antes de começar

  1. Certifique-se de que o Cloud Run cumpre os requisitos da sua aplicação. Reveja a comparação entre o App Engine e o Cloud Run para determinar se os recursos do Cloud Run, como a CPU e a memória, satisfazem as suas necessidades.

  2. Precisa de acesso à sua instância do Cloud SQL, incluindo o nome de utilizador e a palavra-passe da base de dados para ligar a sua app. O Cloud Run usa encriptação e liga-se através do proxy Auth do Cloud SQL usando sockets Unix ou conetores do Cloud SQL.

  3. Ative a API Cloud Run Admin e a API Artifact Registry.

    Ative as APIs

  4. Reveja as seguintes diferenças do Cloud Run:

    • O Cloud Run usa o termo Revision, em vez de Version, para representar cada vez que implementa alterações num serviço específico. A implementação da sua app num serviço no Cloud Run pela primeira vez cria a sua primeira revisão. Cada implementação subsequente de um serviço cria outra revisão. Saiba mais sobre a implementação no Cloud Run.

    • Pode implementar o seu código fonte no Cloud Run através da CLI Google Cloud ou da Google Cloud consola para configurar e gerir as definições das suas apps. O Cloud Run não requer configuração baseada em ficheiros. No entanto, a configuração YAML é suportada e pode usar a ferramenta app2run para traduzir o seu ficheiro do App Engine existente para o Cloud Run.

    • Todos os serviços que implementar no Cloud Run usam o domínio run.app no URL para aceder ao serviço publicamente.

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

    • O Cloud Run não suporta os serviços agrupados antigos do App Engine.

Este guia pressupõe que a sua aplicação do App Engine é executada sem erros.

Funções necessárias

Pode optar por criar uma nova conta de serviço ou continuar a usar a mesma conta de serviço gerida pelo utilizador no Cloud Run que está a usar para o App Engine. O utilizador ou o administrador tem de conceder à conta de implementação e à conta de serviço do Cloud Build as seguintes funções do IAM.

Clique para ver as funções necessárias para a conta do implementador

Para receber as autorizações necessárias para criar e implementar a partir da origem, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

Clique para ver as funções necessárias para a conta de serviço do Cloud Build

O Cloud Build usa automaticamente a conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função Cloud Run Builder (roles/run.builder) à conta de serviço predefinida 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 seu Google Cloud número do projeto e PROJECT_ID pelo seu Google Cloud ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto, consulte o artigo Criar e gerir projetos.

A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.

Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

Para ligações de IP público ao Cloud SQL, tem de ter uma das seguintes funções:

Migre a sua app para o Cloud Run

Não é necessário fazer alterações ao código para implementar a sua app do App Engine no Cloud Run.

Nos passos seguintes, implementa a sua app num novo serviço no Cloud Run e configura simultaneamente esse serviço para se ligar ao Cloud SQL.

Tal como o ambiente padrão do App Engine, o Cloud Run suporta implementações baseadas na origem. Precisa de acesso ao repositório de código-fonte.

O Cloud Run usa internamente buildpacks e o Cloud Build para criar automaticamente imagens de contentores a partir do seu código-fonte e não requer que crie manualmente um contentor nem especifique um Dockerfile. No entanto, se existir um Dockerfile, este é usado. A implementação de um serviço do Cloud Run a partir da origem usa o Artifact Registry, pelo que esta funcionalidade só está disponível nas regiões suportadas pelo Artifact Registry.

Para implementar o mesmo código fonte que implementou anteriormente no App Engine:

  1. Altere para o diretório de origem onde reside o código-fonte da sua aplicação.

      cd YOUR_APPENGINE_CODE_DIR
    
  2. Implemente no Cloud Run.

    Para compilar o código-fonte e implementar a aplicação, execute o comando deploy com a flag --source. Tem de definir as flags de configuração para incluir as mesmas variáveis de ambiente de ligação SQL definidas no ficheiro app.yaml da sua app do App Engine:

      gcloud run deploy run-sql --source . \
        --allow-unauthenticated \
        --add-cloudsql-instances INSTANCE_CONNECTION_NAME\
        --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \
        --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \
        --set-env-vars DB_NAME="DB_NAME" \
        --set-env-vars DB_USER="DB_USER" \
        --set-env-vars DB_PASS="DB_PASS"
    

    Substitua INSTANCE_CONNECTION_NAME pelo nome de ligação da instância do Cloud SQL ou por uma lista de nomes de ligação separados por vírgulas. Pode encontrar o INSTANCE_CONNECTION_NAME executando o seguinte comando:

        gcloud instances describe INSTANCE_NAME
    
    • DB_NAME com o nome da sua base de dados.
    • DB_USER com o nome de utilizador da sua base de dados.
    • DB_PASS com a palavra-passe do utilizador da base de dados.
  3. Introduza um nome do SERVIÇO quando lhe for pedido.

  4. Responda a todas as instruções para instalar as APIs necessárias respondendo y quando lhe for pedido. Só tem de fazer isto uma vez por projeto. Aguarde pela conclusão da compilação e da implementação. Quando terminar, é apresentada uma mensagem semelhante a esta:

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://sample.run.app
    

    Para saber como implementar código fonte no Cloud Run, consulte o artigo Implementação a partir do código fonte.

Passos seguintes