Crie zonas DNS

Este documento explica como configurar a resolução de DNS para um novo domínio no Google Distributed Cloud (GDC) air-gapped através da utilização de zonas de DNS. Use uma zona de DNS para agrupar um conjunto de registos de DNS e controlar se esses registos são visíveis fora da sua nuvem privada virtual (VPC) no GDC.

O público-alvo pretendido para este documento são os administradores de plataformas e os operadores de aplicações responsáveis pela gestão da resolução de DNS da respetiva organização.

Pode criar zonas de DNS públicas ou privadas no seu ambiente do GDC para corresponder aos requisitos de visibilidade e acesso dos seus serviços:

  • Para serviços que requerem visibilidade e acesso à rede externa: configure uma zona de DNS pública para permitir que os utilizadores e os sistemas fora da sua rede acedam ao seu serviço. Se tiver um Website, uma API pública ou qualquer serviço que precise de ser acessível a partir de fora do seu ambiente da nuvem do GDC, precisa de uma zona de DNS pública para mapear o nome do domínio para os endereços IP adequados.
  • Para serviços que requerem acesso seguro e restrito a sistemas internos: configure uma zona de DNS privada para ocultar o nome do domínio interno e restringir o acesso aos seus serviços internos. Se tiver uma aplicação, uma base de dados ou um microsserviço interno que precise de comunicar com outros serviços internos através de protocolos seguros e endereços IP privados, precisa de uma zona de DNS privada para mapear o nome do domínio para os endereços IP adequados. Uma zona de DNS privada garante que estes serviços se podem encontrar através de nomes de domínios internos sem expor a respetiva existência ou endereços IP à rede externa. Isto melhora a segurança e simplifica a rede interna.

Para mais informações sobre a diferença entre zonas de DNS públicas e privadas, consulte Tipos de zonas para o Cloud DNS.

Antes de começar

Para configurar zonas de DNS no GDC e adicionar registos, tem de ter o seguinte:

  • Um projeto existente. Para mais informações, consulte o artigo Crie um projeto.
  • As autorizações de identidade e acesso necessárias. Para gerir as zonas de DNS do seu projeto, peça ao administrador de IAM do projeto para lhe atribuir a função Administrador do projeto de DNS gerido (managed-dns-project-admin).
  • Para usar a CLI gdcloud, certifique-se de que a tem instalada. Para mais informações, consulte o artigo Instale a CLI gdcloud.
  • Se estiver a usar o kubectl, um ficheiro kubeconfig para o servidor da API global. Se ainda não gerou este ficheiro, consulte o artigo Inicie sessão. Para mais informações, consulte o artigo Servidores da API globais e zonais.

Crie uma zona de DNS pública

Depois de criar uma zona de DNS pública, tem de configurar o resolvedor de DNS da sua rede para encaminhar os pedidos para os servidores de nomes adequados.

Crie a zona

Pode criar uma zona de DNS pública através da CLI gdcloud ou da API Kubernetes.

gdcloud

Para criar uma zona de DNS pública, use o gdcloud dns managed-zones create comando:

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PUBLIC \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

Substitua o seguinte:

  • DNS_ZONE_NAME: o nome da sua zona de DNS.
  • DOMAIN_NAME: o nome do domínio da sua zona de DNS pública, como example.com.
  • DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo, Public DNS zone for example.com. Este campo é opcional.
  • PROJECT_NAMESPACE: o espaço de nomes do seu projeto. Esta opção é opcional se tiver definido um projeto predefinido globalmente através do comando gdcloud config set project.
  • --async: especifique esta opção se quiser que o comando seja devolvido imediatamente, em vez de aguardar a conclusão da operação. Pode usar describe para verificar o estado de a operação.

API

Use a API Kubernetes no GDC para criar uma zona de DNS pública:

  1. Crie e aplique um recurso ManagedDNSZone para criar uma zona de DNS acessível a partir de fora do GDC:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PUBLIC
    EOF
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Inicie sessão para ver detalhes.
    • DNS_ZONE_NAME: o nome da sua zona de DNS.
    • PROJECT_NAMESPACE: o espaço de nomes do seu projeto.
    • DOMAIN_NAME: o nome do domínio da sua zona de DNS pública, como example.com.
    • DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo, Public DNS zone for example.com. Este campo é opcional.

    Tenha em atenção que visibility não é sensível a maiúsculas e minúsculas e tem de ter o valor exato PUBLIC.

Configure o resolvedor de DNS

Para uma zona de DNS pública, tem de configurar o resolvedor de DNS na sua rede para encaminhar os pedidos de DNS dessa zona de DNS para os servidores de nomes no GDC que alojam essa zona de DNS.

  1. Obtenha os servidores de nomes da ManagedDNSZone que criou. Tem de usar o kubectl para este passo.

    kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyaml
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Inicie sessão para ver detalhes.
    • DNS_ZONE_NAME: o nome da sua zona de DNS.
    • PROJECT_NAMESPACE: o espaço de nomes do seu projeto. Esta opção é opcional se tiver definido um projeto predefinido globalmente através do comando gdcloud config set project.

    Os servidores de nomes são apresentados no resultado do estado:

      apiVersion: networking.global.gdc.goog/v1
      kind: ManagedDNSZone
      metadata:
        name: DNS_ZONE_NAME
        namespace: PROJECT_NAMESPACE
      spec:
        dnsName: example.com
        description: "Public DNS zone for example.com"
        visibility: PUBLIC
      status:
      …
      nameServers:
        - ns.managed-dns-public.gdc1.staging.gpcdemolabs.com
    
  2. Atualize o resolvedor de DNS na sua rede para encaminhar os pedidos de DNS da nova zona. Para este exemplo, o resolvedor de DNS tem de ser atualizado para encaminhar os pedidos de example.com para ns.managed-dns-public.gdc1.staging.gpcdemolabs.com. Esta configuração pressupõe que o resolvedor já tem a configuração necessária para encaminhar adequadamente os pedidos de DNS da zona de DNS da infraestrutura do GDC gdc1.staging.gpcdemolabs.com.

Crie uma zona de DNS privada

Pode criar uma zona de DNS privada através da CLI gdcloud ou da API Kubernetes.

gdcloud

Para criar uma zona de DNS privada, use o gdcloud dns managed-zones create comando:

gdcloud dns managed-zones create DNS_ZONE_NAME \
    --dns-name=DOMAIN_NAME \
    --visibility=PRIVATE \
    --description="DESCRIPTION" \
    [--project=PROJECT_NAMESPACE] \
    [--async]

Substitua o seguinte:

  • DNS_ZONE_NAME: o nome da sua zona de DNS.
  • DOMAIN_NAME: o nome do domínio da sua zona de DNS privada, como example.com.
  • DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo, Private DNS zone for example.com. Este campo é opcional.
  • PROJECT_NAMESPACE: o espaço de nomes do seu projeto. Esta opção é opcional se tiver definido um projeto predefinido globalmente através do comando gdcloud config set project.
  • --async: especifique esta opção se quiser que o comando seja devolvido imediatamente, em vez de aguardar a conclusão da operação. Pode usar describe para verificar o estado de a operação.

API

Use a API Kubernetes para criar uma zona de DNS privada:

  • Crie e aplique um recurso ManagedDNSZone para criar uma zona de DNS acessível apenas a partir da VPC do cliente predefinida:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ManagedDNSZone
    metadata:
      name: DNS_ZONE_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      dnsName: DOMAIN_NAME
      description: DESCRIPTION
      visibility: PRIVATE
    EOF
    

    Substitua o seguinte:

    • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API global. Para mais informações, consulte o artigo Servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte o artigo Inicie sessão para ver detalhes.
    • DNS_ZONE_NAME: o nome da sua zona de DNS.
    • PROJECT_NAMESPACE: o espaço de nomes do seu projeto.
    • DOMAIN_NAME: o nome do domínio da sua zona de DNS privada, como example.com.
    • DESCRIPTION: uma descrição da sua zona de DNS. Por exemplo, Private DNS zone for example.com. Este campo é opcional.

    Tenha em atenção que visibility não é sensível a maiúsculas e minúsculas e tem de ter o valor exato PRIVATE.

O que se segue