Migrar um app de ambiente padrão do App Engine 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 migrar um aplicativo do App Engine que se conecta a uma instância do Cloud SQL com um IP público.

Em geral, as etapas deste guia demonstram como implantar o mesmo código-fonte do aplicativo no Cloud Run e, em seguida, configurá-lo para usar o mesmo usuário do banco de dados do Cloud SQL para conectar a instância e o banco de dados existentes.

As etapas deste guia não incluem como usar uma conexão de IP particular interna, porque isso exige que você primeiro modifique o código do aplicativo. No entanto, depois de implantar o app no Cloud Run, é possível usar as etapas em Conectar-se ao Cloud SQL pelo Cloud Run para saber os requisitos e como usar os IPs Privados.

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.

Antes de começar

  1. Verifique se o Cloud Run atende aos requisitos do seu aplicativo. Analise a comparação do App Engine e do Cloud Run para determinar se os recursos do Cloud Run, como CPU e memória, atendem às suas necessidades.
  2. Este guia pressupõe que seu app seja executado sem erros.

  3. É preciso ter acesso à instância do Cloud SQL, incluindo o nome de usuário e a senha do banco de dados para conectar o app. O Cloud Run usa criptografia e se conecta por meio do proxy do Cloud SQL Auth usando: Soquetes Unix ou conectores do Cloud SQL.

  4. 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 Google Cloud CLI ou o console do Google Cloud para definir e gerenciar as configurações dos apps. O Cloud Run não requer configuração baseada em arquivo. No entanto, Configuração do YAML tem suporte, e você pode usar aapp2run ferramenta para converter o arquivo existente do App Engine no Cloud Run.

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

Migrar seu app para o Cloud Run

Em um nível alto, o processo de migração do aplicativo do App Engine para o Cloud Run consiste nas seguintes etapas:

  1. Ative as APIs necessárias
  2. Configurar a conta de serviço do Cloud Run
  3. Implantar seu app no Cloud Run

Ative as APIs necessárias

Antes de implantar o app no Cloud Run, é necessário ativar as APIs Cloud Run e Artifact Registry.

Use o console do Google Cloud para ativar as APIs:

Acessar APIs e Serviços

Configurar a conta de serviço do Cloud Run

É possível criar uma nova conta de serviço ou continuar usando a mesma conta de serviço gerenciada pelo usuário no Cloud Run que você está usando para o App Engine. Na conta de serviço, verifique se os seguintes papéis do Identity and Access Management (IAM) ou as permissões equivalentes estão configurados:

Para implantar no Cloud Run, você precisa ter um dos seguintes requisitos:

Para conexões de IP público com o Cloud SQL, é preciso ter um dos seguintes:

Implantar o app no Cloud Run

Não é necessário fazer alterações no código para implantar o aplicativo do App Engine no Cloud Run.

Nas etapas a seguir, você implantará seu aplicativo em um novo serviço no Cloud Run e configurará simultaneamente esse serviço para se conectar ao Cloud SQL.

Assim como o ambiente padrão do App Engine, o Cloud Run é compatível com implantações baseadas na origem. Você precisa acessar seu repositório de código-fonte.

O Cloud Run usa internamente os buildpacks e o Cloud Build para criar automaticamente imagens de contêiner do seu código-fonte, sem a necessidade de criar manualmente um contêiner ou especificar um Dockerfile. No entanto, se um Dockerfile estiver presente, ele será usado.

A implantação de um serviço do Cloud Run a partir da origem usa o Artifact Registry. Portanto, esse recurso só está disponível em regiões compatíveis com o Artifact Registry.

Para implantar o mesmo código-fonte implantado anteriormente no App Engine, faça o seguinte:

  1. Mude para o diretório de origem do código-fonte do seu aplicativo.

      cd YOUR_APPENGINE_CODE_DIR
    
  2. Implantar no Cloud Run

    Para criar o código-fonte e implantar o aplicativo, execute o comando de implantação com a sinalização --source. Defina as sinalizações de configuração para incluir as mesmas variáveis de ambiente de conexão SQL definidas no arquivo app.yaml do aplicativo 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"
    

    Substitua:

    • SOURCE pelo caminho para o diretório de origem do App Engine.
    • INSTANCE_CONNECTION_NAME pelo nome da conexão da instância do Cloud SQL ou uma lista de nomes de conexões separados por vírgulas. Para encontrar o INSTANCE_CONNECTION_NAME, execute:
        gcloud instances describe INSTANCE_NAME
    
    • DB_NAME pelo nome do banco de dados.
    • DB_USER pelo nome de usuário do banco de dados.
    • DB_PASS pela senha do usuário do banco de dados.
  3. Quando solicitado, insira um nome para o SERVICE.

  4. Responda a todas as solicitações para instalar as APIs necessárias respondendo ao y quando solicitado. Você só precisa fazer isso uma vez para um projeto. Aguarde a conclusão da criação e da implantação. Quando terminar, uma mensagem semelhante a esta será exibida:

    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 mais sobre como implantar código-fonte no Cloud Run, consulte Como implantar a partir do código-fonte.

Próximas etapas