Pode configurar um domínio personalizado em vez do endereço predefinido que o Cloud Run fornece para um serviço implementado.
Existem algumas formas de configurar um domínio personalizado para um serviço do Cloud Run:
- Use um Application Load Balancer externo global (recomendado)
- Use o Firebase Hosting
- Use o mapeamento de domínios do Cloud Run (disponibilidade limitada e pré-visualização)
Pode mapear vários domínios personalizados para o mesmo serviço do Cloud Run.
Antes de começar
Compre um novo domínio, a menos que já tenha um que queira usar. Pode usar qualquer registador de nomes de domínios.
Mapeie um domínio personalizado através de um Application Load Balancer externo global
Com esta opção, adiciona um Application Load Balancer externo global à frente do seu serviço do Cloud Run e configura um domínio personalizado ao nível do balanceador de carga.
Uma vantagem de usar um Application Load Balancer externo global é que lhe dá muito controlo sobre a configuração do seu domínio personalizado. Por exemplo, permite-lhe usar o seu próprio certificado TLS ou encaminhar caminhos de URL específicos para o serviço Cloud Run. Também lhe permite configurar o Cloud CDN para o armazenamento em cache e o Google Cloud Armor para segurança adicional.
Também pode mapear vários serviços para um nome de anfitrião dinâmico ou um caminho no padrão de URL do seu domínio personalizado para um único equilibrador de carga, por exemplo, <service>.example.com
, usando máscaras de URL.
Consulte a documentação sobre como configurar um Application Load Balancer externo global com o Cloud Run.
Mapeie um domínio personalizado com o Firebase Hosting
Com esta opção, configura o Firebase Hosting à frente do seu serviço do Cloud Run e associa um domínio ao Firebase Hosting.
A utilização do Firebase Hosting tem um preço baixo e, opcionalmente, permite-lhe alojar e publicar conteúdo estático juntamente com o conteúdo dinâmico publicado pelo seu serviço do Cloud Run.
Para mapear um domínio personalizado através do Firebase Hosting:
- Adicione o Firebase ao seu Google Cloud projeto.
- Instale a Firebase CLI.
Numa pasta diferente do código-fonte do seu serviço, crie um ficheiro
firebase.json
com o seguinte conteúdo:{ "hosting": { "rewrites": [{ "source": "**", "run": { "serviceId": "SERVICE_NAME", "region": "REGION" } }] } }
Substitua SERVICE_NAME e REGION pelo nome e pela região do seu serviço do Cloud Run.
Implemente a configuração do Firebase Hosting:
firebase deploy --only hosting --project PROJECT_ID
Leia mais sobre o Firebase Hosting e o Cloud Run.
Mapeie um domínio personalizado através do mapeamento de domínios do Cloud Run (disponibilidade limitada e pré-visualização)
Limitações do mapeamento de domínios do Cloud Run
As seguintes considerações aplicam-se aos mapeamentos de domínios do Cloud Run:
- Os mapeamentos de domínios do Cloud Run estão na fase de lançamento de pré-visualização. Devido a problemas de latência, não estão prontas para produção e não são suportadas na disponibilidade geral. De momento, esta opção não é recomendada para serviços de produção.
- É emitido e renovado automaticamente um certificado gerido pela Google para ligações HTTPS quando mapeia um serviço para um domínio personalizado.
- Normalmente, o aprovisionamento do certificado SSL demora cerca de 15 minutos, mas pode demorar até 24 horas.
- Não pode desativar o TLS 1.0 e 1.1. Se isto for um problema, pode usar o Firebase Hosting ou o Cloud Load Balancing para ativar o tráfego apenas TLS 1.2.
- Não pode carregar nem usar os seus próprios certificados (autogeridos).
- Os mapeamentos de domínios do Cloud Run estão limitados a 64 carateres.
- O mapeamento de domínios está disponível nas seguintes regiões:
asia-east1
asia-northeast1
asia-southeast1
europe-north1
europe-west1
europe-west4
us-central1
us-east1
us-east4
us-west1
- Para mapear domínios personalizados noutras regiões, tem de usar uma das outras opções de mapeamento.
- Quando usa mapeamentos de domínios do Cloud Run, mapeia um domínio personalizado para o seu serviço e, em seguida, atualiza os registos de DNS.
- Pode mapear um domínio, como
example.com
, ou um subdomínio, comosubdomain.example.com
. - Só pode mapear um domínio para
/
e não para um caminho de URL específico, como/users
. - Não pode usar certificados com carateres universais com esta funcionalidade.
Mapeie um domínio personalizado para um serviço
Pode usar a Google Cloud consola, a CLI gcloud ou o Terraform para mapear um domínio personalizado para um serviço.
Consola
Abra a página de mapeamentos de domínios na Google Cloud consola:
Página de mapeamentos de domíniosClique em Adicionar mapeamento.
Se a janela de visualização for demasiado pequena, o botão Adicionar mapeamento não é apresentado e tem de clicar no ícone de elipse vertical de três pontos no canto da página.
Na lista pendente, selecione o serviço ao qual está a mapear o domínio personalizado.
Selecione Mapeamentos de domínios do Cloud Run.
No formulário Adicionar mapeamento, selecione Validar um novo domínio.
No campo Domínio base a validar, tem de validar a propriedade de um domínio antes de o poder usar, a menos que o tenha comprado à Google.
Se quiser mapear
subdomain.example.com
ousubdomain1.subdomain2.example.com
, tem de validar a propriedade deexample.com
. Para mais informações sobre a validação da propriedade do domínio, consulte a ajuda da Search ConsoleClique em Continuar.
Após a conclusão da validação de domínio, clique em Continuar validação e fechar.
Atualize os seus registos de DNS no Website do registador de domínios com os registos de DNS apresentados no último passo. Pode apresentar os registos em qualquer altura clicando em Registos DNS no menu de ações "…" para um mapeamento de domínio.
Clique em Concluído.
gcloud
Tem de validar a propriedade do domínio na primeira vez que usar esse domínio no projeto do Google Cloud , a menos que tenha comprado o seu domínio personalizado à Google. Pode determinar se o domínio personalizado que quer usar foi validado executando o seguinte comando:
gcloud domains list-user-verified
Se a propriedade do domínio tiver de ser validada, abra a página de validação da Search Console:
gcloud domains verify BASE-DOMAIN
onde
BASE-DOMAIN
é o domínio base que quer validar. Por exemplo, se quiser mapearsubdomain.example.com
, tem de validar a propriedade deexample.com
.Na Search Console, conclua a validação da propriedade do domínio. Para mais informações, consulte a ajuda da Search Console.
Mapeie o seu serviço para o domínio personalizado:
gcloud beta run domain-mappings create --service SERVICE --domain DOMAIN
- Substitua
SERVICE
pelo nome do seu serviço. - Substitua
DOMAIN
pelo seu domínio personalizado, por exemplo,example.com
ousubdomain.example.com
- Substitua
Terraform
Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.
Para criar um serviço do Cloud Run, adicione o seguinte ao seu ficheiro main.tf
existente:
Substituir:
custom-domain
com o nome do serviço do Cloud Run.us-docker.pkg.dev/cloudrun/container/hello
com uma referência à sua imagem de contentor. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL tem o formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
Mapeie o seu serviço do Cloud Run para o domínio personalizado:
Substitua verified-domain.com
pelo seu domínio personalizado validado, por exemplo, example.com
ou subdomain.example.com
.
Adicione os seus registos de DNS no registo de domínios
Depois de mapear o seu serviço para um domínio personalizado no Cloud Run, tem de atualizar os registos de DNS na entidade de registo do domínio. Para sua conveniência, o Cloud Run gera e apresenta os registos DNS que tem de introduzir. Tem de adicionar estes registos que apontam para o serviço Cloud Run no registador de domínios para que o mapeamento entre em vigor.
Se estiver a usar o Cloud DNS como fornecedor de DNS, consulte o artigo Adicionar um registo A.
Recupere as informações dos registos de DNS para os mapeamentos de domínio através do seguinte:
Consola
Aceda à página de mapeamentos de domínios do Cloud Run:
Página de mapeamentos de domíniosClique no ícone de elipse vertical de três pontos à direita do seu serviço e, de seguida, clique em REGISTOS DE DNS para apresentar todos os registos de DNS:
gcloud
gcloud beta run domain-mappings describe --domain [DOMAIN]
Substitua
[DOMAIN]
pelo seu domínio personalizado, por exemplo,example.com
ousubdomain.example.com
.Precisa de todos os registos devolvidos no cabeçalho
resourceRecords
.Inicie sessão na sua conta na entidade de registo de domínio e, de seguida, abra a página de configuração de DNS.
Localize a secção de registos de anfitriões da página de configuração do seu domínio e, em seguida, adicione cada um dos registos de recursos que recebeu quando mapeou o seu domínio para o seu serviço do Cloud Run.
Quando adiciona cada um dos registos de DNS anteriores à conta no fornecedor de DNS:
- Selecione o tipo devolvido no registo DNS no passo anterior:
A
,AAAA
ouCNAME
. - Use o nome
www
para mapear parawww.example.com
. - Use o nome
@
para mapearexample.com
.
- Selecione o tipo devolvido no registo DNS no passo anterior:
Guarde as alterações na página de configuração de DNS da conta do seu domínio. Na maioria dos casos, estas alterações demoram apenas alguns minutos a entrar em vigor, mas, em alguns casos, podem demorar até várias horas, consoante o registador e o tempo de vida (TTL) de quaisquer registos DNS anteriores do seu domínio. Pode usar uma ferramenta
dig
, como a versão online, para confirmar que os registos de DNS foram atualizados com êxito.dig
Teste se o processo foi bem-sucedido navegando para o seu serviço no novo URL, por exemplo,
https://www.example.com
. A emissão do certificado SSL gerido pode demorar alguns minutos.
Adicione proprietários de domínios validados a outros utilizadores ou contas de serviço
Quando um utilizador valida um domínio, esse domínio só é validado para a conta desse utilizador. Isto significa que apenas esse utilizador pode adicionar mais mapeamentos de domínios que usem esse domínio. Assim, para permitir que outros utilizadores adicionem mapeamentos que usem esse domínio, tem de os adicionar como proprietários validados.
Se precisar de adicionar proprietários validados do seu domínio a outros utilizadores ou contas de serviço, pode adicionar autorizações através da página Search Console:
Navegue para o seguinte endereço no seu navegador de Internet:
https://search.google.com/search-console/welcome
Em Propriedades, clique no domínio ao qual quer adicionar um utilizador ou uma conta de serviço.
Aceda à lista Proprietários validados, clique em Adicionar proprietário e, de seguida, introduza um endereço de email da Conta Google ou um ID da conta de serviço.
Para ver uma lista das suas contas de serviço, abra a página Contas de serviço na Google Cloud consola:
Elimine um mapeamento de domínios do Cloud Run
Pode usar a Google Cloud consola ou a CLI gcloud para eliminar um mapeamento de domínio.
Consola
Abra a página Mapeamentos de domínios na Google Cloud consola:
Página Mapeamentos de domíniosNa página Mapeamentos de domínios, selecione o mapeamento de domínios que quer eliminar e clique em Eliminar.
gcloud
Elimine o mapeamento de domínio:
gcloud beta run domain-mappings delete --domain DOMAIN
- Substitua
DOMAIN
pelo seu domínio personalizado, por exemplo,example.com
ousubdomain.example.com
.
- Substitua
Usar domínios personalizados com serviços autenticados
Os serviços autenticados estão protegidos pela IAM. Estes serviços do Cloud Run requerem autenticação do cliente que declara o destinatário pretendido de um pedido no momento da geração de credenciais (o público-alvo).
O público-alvo é normalmente o URL completo do serviço de destino, que, por predefinição, para os serviços do Cloud Run, é um URL gerado que termina em run.app
. No entanto, se usar um domínio personalizado,
pode configurar um público-alvo personalizado
para que o seu serviço aceite o domínio personalizado como um público-alvo válido.
O que se segue?
- Para configurar um domínio personalizado para o Cloud Run através de um Application Load Balancer externo global com o Terraform, explore o código de exemplo.