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.
É 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.
Ative a API Cloud Run Admin e a API Artifact Registry.
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 Google Cloud console para definir e gerenciar as configurações dos apps. O Cloud Run não requer configuração baseada em arquivo. No entanto, a configuração do YAML tem suporte, e você pode usar a ferramenta
app2run
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).
O Cloud Run não é compatível com os serviços em pacote legados do App Engine.
Este guia pressupõe que seu aplicativo do App Engine seja executado sem erros.
Funções exigidas
É 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. Você ou seu administrador precisa conceder à conta do implantador e à conta de serviço do Cloud Build os seguintes papéis do IAM.
Clique para conferir os papéis necessários para a conta do implantador
Para receber as permissões necessárias para criar e implantar a partir da origem, peça ao administrador para conceder a você os seguintes papéis do IAM:
- Desenvolvedor de origem do Cloud Run (
roles/run.sourceDeveloper
) no seu projeto - Consumidor do Service Usage (
roles/serviceusage.serviceUsageConsumer
) no seu projeto - Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na identidade de serviço do Cloud Run
Clique para conferir os papéis necessários para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a conta de serviço padrão do Compute Engine como a conta de serviço padrão do Cloud Build para criar seu código-fonte e o recurso do Cloud Run, a menos que você substitua esse comportamento. Para que o Cloud Build crie suas origens, peça ao administrador para conceder o papel
Criador do Cloud Run
(roles/run.builder
) à conta de serviço padrão 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 número do projeto do Google Cloude PROJECT_ID
pelo ID do projeto do Google Cloud. Para instruções detalhadas sobre como encontrar o ID e o número do projeto,
consulte Criar
e gerenciar projetos.
A concessão do papel de builder do Cloud Run à conta de serviço padrão do Compute Engine leva alguns minutos para se propagar.
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o serviço do Cloud Run interage com APIsGoogle Cloud , como as bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Para conexões de IP público com o Cloud SQL, é preciso ter uma das seguintes funções:
- Cliente do Cloud SQL (preferencial)
- Administrador do Cloud SQL
- Permissões do Cloud SQL equivalentes
Migrar seu app para o 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:
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 . \ --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 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.