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 descritos no artigo 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. Este guia pressupõe que a sua app é executada sem erros.

  3. 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.

  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).

Migre a sua app para o Cloud Run

A um nível elevado, o processo de migração da sua app do App Engine para o Cloud Run consiste nos seguintes passos:

  1. Ative as APIs necessárias
  2. Configure a conta de serviço do Cloud Run
  3. Implemente a sua app no Cloud Run

Ative as APIs necessárias

Antes de poder implementar a sua app no Cloud Run, tem de ativar as APIs Cloud Run e Artifact Registry.

Use a Google Cloud consola para ativar as APIs:

Aceda a APIs e serviços

Configure a conta de serviço do Cloud Run

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. Na conta de serviço, tem de garantir que as seguintes funções de gestão de identidade e de acesso (IAM) ou as autorizações equivalentes estão configuradas:

Para a implementação no Cloud Run, tem de ter um dos seguintes elementos:

  • Proprietário
  • Editor
  • As funções Administrador do Cloud Run e Utilizador da conta de serviço
  • Autorizações do Cloud Run equivalentes

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

Implemente a sua app no 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 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"
    

    Substituição:

    • SOURCE com o caminho para o diretório de origem do App Engine
    • INSTANCE_CONNECTION_NAME com o nome de ligação da instância da sua instância do Cloud SQL ou 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