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
- 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.
Este guia pressupõe que a sua app é executada sem erros.
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.
Reveja as seguintes diferenças do Cloud Run:
O Cloud Run usa o termo
Revision
, em vez deVersion
, 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:
- Ative as APIs necessárias
- Configure a conta de serviço do Cloud Run
- 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:
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:
- Cliente do Cloud SQL (preferencial)
- Administrador do Cloud SQL
- Autorizações do Cloud SQL equivalentes
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 flexível do App Engine, o Cloud Run suporta implementações baseadas em contentores e em origens. Precisa de acesso à imagem do contentor ou ao repositório de código-fonte, consoante o método de implementação que seguir.
Implemente imagens de contentores
Se os seus serviços do App Engine forem implementados através de um contentor criado manualmente, pode usar a mesma imagem de contentor para implementar o seu serviço no Cloud Run. Para implementar a imagem de contentor do App Engine no Cloud Run:
Tome nota do URL do registo onde se encontra a imagem do contentor. Este é o mesmo URL que indica na flag
--image-url
quando implementa no App Engine.Implemente a imagem de contentor:
consola
Na Google Cloud consola, aceda à página Cloud Run.
Clique em Criar serviço.
Clique no botão Selecionar no campo URL da imagem do contentor e escolha a imagem do contentor que implementou para o App Engine.
Introduza um nome para o seu serviço. Escolha um nome exclusivo que represente a app que está a implementar.
Na secção Autenticação, selecione Permitir invocações não autenticadas.
Tem de criar as mesmas variáveis de ambiente para o Cloud Run que definiu no ficheiro
app.yaml
da sua app do App Engine. Expanda a secção Container, Networking, Security e crie as seguintes variáveis de ambiente clicando em Add Variable em Environment variables:Para sockets Unix, adicione:
INSTANCE_UNIX_SOCKET: /cloudsql/INSTANCE_CONNECTION_NAME
Para conetores do Cloud SQL, adicione:
INSTANCE_CONNECTION_NAME:INSTANCE_CONNECTION_NAME
Substitua INSTANCE_CONNECTION_NAME pelo ID do projeto, pela região e pela instância, seguindo o formato de
project:region:instance-id
. Pode encontrá-lo na página Vista geral da sua instância na Google Cloud consola.Estas ligações são automaticamente encriptadas sem qualquer configuração adicional.
DB_NAME
: nome da base de dados.DB_USER
: nome de utilizador do utilizador da base de dados.DB_PASS
: palavra-passe especificada durante a criação da base de dados.
Na secção Ligações do Cloud SQL, clique no botão Adicionar ligação e selecione a instância que criou anteriormente para o App Engine.
Clique em Implementar. Assim que o serviço do Cloud Run for implementado, a página Detalhes do serviço apresenta um URL na parte superior da página. Clique no link URL para ver a app implementada no Cloud Run associada ao Cloud SQL.
gcloud
Execute o seguinte comando para criar um novo serviço no Cloud Run.Tem de definir 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 --image IMAGE \ --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:
- IMAGE com a imagem que está a implementar
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.
Implemente o 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:
Altere para o diretório de origem onde reside o código-fonte da sua aplicação.
cd YOUR_APPENGINE_CODE_DIR
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 ficheiroapp.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.
Introduza um nome do SERVIÇO quando lhe for pedido.
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
- Reveja as práticas recomendadas do Cloud SQL para ligar a sua instância do Cloud SQL a partir do Cloud Run.
- Saiba como armazenar dependências para o seu serviço que requer chaves de API, palavras-passe ou outras informações confidenciais através de um gestor de segredos.
- Compreenda como gerir os seus serviços do Cloud Run.
- Consulte o contrato de tempo de execução de contentores do Cloud Run para compreender os requisitos e os comportamentos dos contentores no Cloud Run.