Mapeamento de domínios personalizados

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:

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:

  1. Adicione o Firebase ao seu Google Cloud projeto.
  2. Instale a Firebase CLI.
  3. 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.

  4. Implemente a configuração do Firebase Hosting:

    firebase deploy --only hosting --project PROJECT_ID
  5. Associe um domínio personalizado ao Firebase Hosting.

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, como subdomain.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

  1. Abra a página de mapeamentos de domínios na Google Cloud consola:
    Página de mapeamentos de domínios

  2. Clique 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.

  3. Na lista pendente, selecione o serviço ao qual está a mapear o domínio personalizado.

  4. Selecione Mapeamentos de domínios do Cloud Run.

  5. No formulário Adicionar mapeamento, selecione Validar um novo domínio.

  6. 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 ou subdomain1.subdomain2.example.com, tem de validar a propriedade de example.com. Para mais informações sobre a validação da propriedade do domínio, consulte a ajuda da Search Console

  7. Clique em Continuar.

  8. Após a conclusão da validação de domínio, clique em Continuar validação e fechar.

  9. 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.

  10. Clique em Concluído.

gcloud

  1. 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 mapear subdomain.example.com, tem de validar a propriedade de example.com.

    Na Search Console, conclua a validação da propriedade do domínio. Para mais informações, consulte a ajuda da Search Console.

  2. 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 ou subdomain.example.com

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:

resource "google_cloud_run_v2_service" "default" {
  name     = "custom-domain" # Replace with your service name
  location = "us-central1"

  deletion_protection = false # set to true to prevent destruction of the resource

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello" # Replace with your container image
    }
  }
}

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 formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.

Mapeie o seu serviço do Cloud Run para o domínio personalizado:

data "google_project" "project" {}

resource "google_cloud_run_domain_mapping" "default" {
  name     = "verified-domain.com"
  location = google_cloud_run_v2_service.default.location
  metadata {
    namespace = data.google_project.project.project_id
  }
  spec {
    route_name = google_cloud_run_v2_service.default.name
  }
}

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.

  1. Recupere as informações dos registos de DNS para os mapeamentos de domínio através do seguinte:

    Consola

    1. Aceda à página de mapeamentos de domínios do Cloud Run:
      Página de mapeamentos de domínios

    2. Clique 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:

    selecione registos de DNS

    gcloud

    gcloud beta run domain-mappings describe --domain [DOMAIN]

    Substitua [DOMAIN] pelo seu domínio personalizado, por exemplo, example.com ou subdomain.example.com.

    Precisa de todos os registos devolvidos no cabeçalho resourceRecords.

  2. 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.

  3. 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.

  4. 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 ou CNAME.
    • Use o nome www para mapear para www.example.com.
    • Use o nome @ para mapear example.com.
  5. 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

  6. 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:

  1. Navegue para o seguinte endereço no seu navegador de Internet:

    https://search.google.com/search-console/welcome

  2. Em Propriedades, clique no domínio ao qual quer adicionar um utilizador ou uma conta de serviço.

  3. 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:

    Aceda à página Contas de serviço

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

  1. Abra a página Mapeamentos de domínios na Google Cloud consola:
    Página Mapeamentos de domínios

  2. Na página Mapeamentos de domínios, selecione o mapeamento de domínios que quer eliminar e clique em Eliminar.

gcloud

  1. 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 ou subdomain.example.com.

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.