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, comoexample.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 usandogdcloud config set project.--async: especifique se você quer que o comando retorne imediatamente, em vez de aguardar a conclusão da operação. Usedescribepara verificar o status da operação.
API
Use a API Kubernetes no GDC para criar uma zona de DNS pública:
Crie e aplique um recurso
ManagedDNSZonepara 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 EOFSubstitua:
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, comoexample.com.DESCRIPTION: uma descrição para a zona de DNS. Por exemplo,Public DNS zone for example.com. Este campo é opcional.
visibilitydiferencia maiúsculas de minúsculas e precisa ter o valor exatoPUBLIC.
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.
Busque os servidores de nomes para o
ManagedDNSZoneque você criou. É necessário usarkubectlnesta etapa.kubectl --kubeconfig GLOBAL_API_SERVER get manageddnszones DNS_ZONE_NAME -n PROJECT_NAMESPACE -oyamlSubstitua:
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 usandogdcloud 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.comAtualize 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.comparans.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 infraestruturagdc1.staging.gpcdemolabs.comdo 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, comoexample.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 usandogdcloud config set project.--async: especifique se você quer que o comando retorne imediatamente, em vez de aguardar a conclusão da operação. Usedescribepara verificar o status da operação.
API
Use a API do Kubernetes para criar uma zona de DNS particular:
Crie e aplique um recurso
ManagedDNSZonepara 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 EOFSubstitua:
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, comoexample.com.DESCRIPTION: uma descrição para a zona de DNS. Por exemplo,Private DNS zone for example.com. Este campo é opcional.
visibilitydiferencia maiúsculas de minúsculas e precisa ter o valor exatoPRIVATE.