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
- 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.
Este guia pressupõe que seu app seja executado sem erros.
É 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.
Analise as seguintes diferenças do Cloud Run:
O Cloud Run usa o termo
Revision
em vez deVersion
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 a
app2run
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:
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:
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:
- Proprietário
- Editor
- Os papéis Administrador do Cloud Run e Usuário da conta de serviço.
- Permissões equivalentes do Cloud Run
Para conexões de IP público com o Cloud SQL, é preciso ter um dos seguintes:
- Cliente do Cloud SQL (preferencial)
- Administrador do Cloud SQL
- Permissões do Cloud SQL equivalentes
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 flexível do App Engine, o Cloud Run é compatível com implantações baseadas em contêiner e origem. Você precisará acessar a imagem do contêiner ou o repositório de código-fonte, dependendo do método de implantação que seguir.
Implantar imagens de contêiner
Se os serviços do App Engine forem implantados com um contêiner criado manualmente, será possível usar a mesma imagem de contêiner para implantar o serviço no Cloud Run. Para implantar a imagem do contêiner do App Engine no Cloud Run:
Anote o URL do registro em que a imagem do contêiner está localizada. Esse é o mesmo URL fornecido na sinalização
--image-url
ao implantar no App Engine.Implante a imagem do contêiner:
Console
No console do Google Cloud, acesse a página do Cloud Run.
Clique em Criar serviço.
Clique no botão Selecionar no campo URL da imagem do contêiner e escolha a imagem do contêiner que você implantou no App Engine.
Digite um nome para o serviço. Escolha um nome exclusivo que represente o aplicativo que você está implantando.
Na seção Autenticação, selecione Permitir invocações não autenticadas.
É preciso criar as mesmas variáveis de ambiente para o Cloud Run que você definiu no
app.yaml
do aplicativo do App Engine. Amplie as seções Contêiner, rede, segurança e crie as seguintes variáveis de ambiente clicando em Adicionar variável em Variáveis de ambiente:Para soquetes Unix, adicione:
INSTANCE_UNIX_SOCKET: /cloudsql/INSTANCE_CONNECTION_NAME
Para conectores do Cloud SQL, adicione:
INSTANCE_CONNECTION_NAME:INSTANCE_CONNECTION_NAME
Substitua INSTANCE_CONNECTION_NAME pelo ID do projeto, região e instância seguindo o formato de
project:region:instance-id
. É possível encontrá-lo na página Visão geral da instância no console do Google Cloud.Essas conexões são criptografadas automaticamente sem qualquer configuração extra.
DB_NAME
: nome do banco de dados.DB_USER
: nome de usuário do seu usuário do banco de dados.DB_PASS
: senha especificada ao criar o banco de dados.
Na seção Conexões do Cloud SQL, clique no botão Adicionar conexão e selecione a instância criada anteriormente para o App Engine.
Clique em Implantar. Depois que o serviço do Cloud Run for implantado, a página Detalhes do serviço exibirá um URL na parte superior da página. Clique no link URL para ver o app de amostra implantado no Cloud Run conectado ao Cloud SQL.
gcloud
Execute o comando a seguir para criar um novo serviço no Cloud Run.É necessário definir 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 --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"
Substitua:
- IMAGE pela imagem que você está implantando;
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.
Implantar 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:
Mude para o diretório de origem do código-fonte do seu aplicativo.
cd YOUR_APPENGINE_CODE_DIR
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 arquivoapp.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.
Quando solicitado, insira um nome para o SERVICE.
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
- Consulte as práticas recomendadas do Cloud SQL para conectar sua instância do Cloud SQL ao Cloud Run.
- Saiba como armazenar dependências para seu serviço que exige chaves de API, senhas ou outras informações confidenciais usando um gerenciador de secrets.
- Saiba como gerenciar os serviços do Cloud Run.
- Consulte o contrato de ambiente de execução de contêineres do Cloud Run para entender os requisitos e comportamentos dos contêineres no Cloud Run.