Criar zonas de DNS

Neste documento, mostramos como configurar a resolução de DNS para um novo domínio no Google Distributed Cloud (GDC) com isolamento físico usando zonas de DNS. Use uma zona de DNS para agrupar um conjunto de registros DNS e controlar se esses registros ficam visíveis fora da nuvem privada virtual (VPC) no GDC.

O público-alvo deste documento são administradores de plataforma e operadores de aplicativos responsáveis por gerenciar a resolução de DNS da organização.

É possível criar zonas de DNS públicas ou privadas no ambiente do GDC para atender aos requisitos de visibilidade e acesso dos seus serviços:

  • Para serviços que exigem visibilidade e acesso à rede externa:configure uma zona de DNS pública para permitir que usuários e sistemas fora da sua rede acessem o serviço. Se você tiver um site, uma API pública ou qualquer serviço que precise ser acessível de fora do ambiente do GDC Cloud, precisará de uma zona de DNS pública para mapear seu nome de domínio para os endereços IP apropriados.
  • Para serviços que exigem acesso seguro e restrito a sistemas internos:configure uma zona de DNS particular para ocultar o nome de domínio interno e restringir o acesso aos serviços internos. Se você tiver um aplicativo, banco de dados ou microsserviço interno que precise se comunicar com outros serviços internos usando apenas protocolos seguros e endereços IP particulares, precisará de uma zona de DNS particular para mapear seu nome de domínio para os endereços IP apropriados. Uma zona de DNS particular garante que esses serviços possam se encontrar usando nomes de domínio internos sem expor a existência ou os endereços IP deles à rede externa. Isso aumenta a segurança e simplifica a rede interna.

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

Antes de começar

Para configurar zonas de DNS no GDC e adicionar registros, você precisa ter o seguinte:

  • Um projeto atual. Para saber mais, consulte Criar um projeto.
  • Os papéis de identidade e acesso necessários. Para gerenciar zonas de DNS do seu projeto, peça ao Administrador do IAM do projeto para conceder a você o papel de Administrador do projeto de DNS gerenciado (managed-dns-project-admin).
  • Para usar a CLI gdcloud, verifique se ela está instalada. Para mais informações, consulte Instalar a CLI gdcloud.
  • Se você estiver usando kubectl, um arquivo kubeconfig para o servidor de API global. Se você ainda não gerou esse arquivo, consulte Fazer login. Para mais informações, consulte Servidores de API globais e zonais.

Criar uma zona de DNS pública

Depois de criar uma zona de DNS pública, configure o resolvedor de DNS da rede para encaminhar solicitações aos servidores de nomes apropriados.

Criar a zona

É possível criar uma zona de DNS pública usando a CLI gdcloud ou a API Kubernetes.

gdcloud

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

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

Substitua:

  • DNS_ZONE_NAME: o nome da zona de DNS.
  • DOMAIN_NAME: o nome de domínio da zona de DNS pública, como example.com.
  • DESCRIPTION: uma descrição para a zona de DNS. Por exemplo, Public DNS zone for example.com. Este campo é opcional.
  • PROJECT_NAMESPACE: o namespace do projeto. Essa flag é opcional se você tiver definido um projeto padrão globalmente usando gdcloud config set project.
  • --async: especifique se você quer que o comando retorne imediatamente, em vez de aguardar a conclusão da operação. Use describe para verificar o status da 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 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:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor de API, consulte Fazer login para mais detalhes.
    • DNS_ZONE_NAME: o nome da zona de DNS.
    • PROJECT_NAMESPACE: o namespace do projeto.
    • DOMAIN_NAME: o nome de domínio da zona de DNS pública, como example.com.
    • DESCRIPTION: uma descrição para a zona de DNS. Por exemplo, Public DNS zone for example.com. Este campo é opcional.

    visibility diferencia maiúsculas de minúsculas e precisa ter o valor exato PUBLIC.

Configurar o resolvedor de DNS

Para uma zona de DNS pública, é preciso configurar o resolvedor de DNS na sua rede para encaminhar solicitações de DNS dessa zona para os servidores de nomes no GDC que hospedam essa zona de DNS.

  1. Busque os servidores de nomes para o ManagedDNSZone que você criou. É necessário usar kubectl nesta etapa.

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

    Substitua:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor de API, consulte Fazer login para mais detalhes.
    • DNS_ZONE_NAME: o nome da zona de DNS.
    • PROJECT_NAMESPACE: o namespace do projeto. Essa flag é opcional se você tiver definido um projeto padrão globalmente usando gdcloud config set project.

    Os servidores de nomes serão listados na saída de status:

      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 solicitações de DNS para a nova zona. Neste exemplo, o resolvedor de DNS precisa ser atualizado para encaminhar solicitações de example.com para ns.managed-dns-public.gdc1.staging.gpcdemolabs.com. Essa configuração pressupõe que o resolvedor já tenha a configuração necessária para encaminhar adequadamente as solicitações de DNS para a zona de DNS da infraestrutura gdc1.staging.gpcdemolabs.com do GDC.

Criar uma zona de DNS particular

É possível criar uma zona de DNS particular usando a CLI gdcloud ou a API Kubernetes.

gdcloud

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

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

Substitua:

  • DNS_ZONE_NAME: o nome da zona de DNS.
  • DOMAIN_NAME: o nome de domínio da zona de DNS particular, como example.com.
  • DESCRIPTION: uma descrição para a zona de DNS. Por exemplo, Private DNS zone for example.com. Este campo é opcional.
  • PROJECT_NAMESPACE: o namespace do projeto. Essa flag é opcional se você tiver definido um projeto padrão globalmente usando gdcloud config set project.
  • --async: especifique se você quer que o comando retorne imediatamente, em vez de aguardar a conclusão da operação. Use describe para verificar o status da operação.

API

Use a API do Kubernetes para criar uma zona de DNS particular:

  • Crie e aplique um recurso ManagedDNSZone para criar uma zona de DNS acessível apenas na VPC padrão do cliente:

    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:

    • GLOBAL_API_SERVER: o caminho do kubeconfig do servidor de API global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor de API, consulte Fazer login para mais detalhes.
    • DNS_ZONE_NAME: o nome da zona de DNS.
    • PROJECT_NAMESPACE: o namespace do projeto.
    • DOMAIN_NAME: o nome de domínio da zona de DNS particular, como example.com.
    • DESCRIPTION: uma descrição para a zona de DNS. Por exemplo, Private DNS zone for example.com. Este campo é opcional.

    visibility diferencia maiúsculas de minúsculas e precisa ter o valor exato PRIVATE.

A seguir