Configurar DNS para um cluster

Neste documento, mostramos como configurar as opções de provedor do Sistema de Nomes de Domínio (DNS) para o Google Distributed Cloud. A configuração de DNS de um cluster é mantida em um recurso personalizado de ClusterDNS chamado default. Esse recurso está disponível em todo o cluster, ou seja, sem namespace. O recurso personalizado do ClusterDNS se aplica a todos os tipos de cluster.

Criar o recurso ClusterDNS

Crie um manifesto para um recurso ClusterDNS chamado default. Preencha o spec para configurar as definições de recursos desejadas. Exemplo:

apiVersion: networking.gke.io/v1alpha1
kind: ClusterDNS
metadata:
  name: default
spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 8.8.4.4
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 54
  googleAccess: default

Para salvar o manifesto em um arquivo chamado my-dns.yaml e aplicar o recurso ao cluster, execute o seguinte comando:

kubectl --kubeconfig KUBECONFIG apply -f my-dns.yaml

Substitua KUBECONFIG pelo caminho para o arquivo Kubeconfig do cluster de usuário.

Ver o recurso ClusterDNS

Para ver o recurso ClusterDNS, execute o seguinte comando:

kubectl --kubeconfig KUBECONFIG get clusterdns default --output yaml

Substitua KUBECONFIG pelo caminho para o arquivo Kubeconfig do cluster de usuário.

Especificação do ClusterDNS

As seções a seguir descrevem as partes da definição de recurso personalizado do ClusterDNS usada para configurar o DNS nos clusters. Atualize o recurso ClusterDNS de um cluster a qualquer momento.

spec.upstreamNameservers

Use o campo spec.upstreamNameservers para especificar os servidores de nomes upstream padrão com uma matriz de objetos. Cada objeto tem um endereço IP de servidor e, opcionalmente, uma porta de servidor. O valor padrão da porta do servidor é 53. Por padrão, as solicitações de domínios que não são de cluster são encaminhadas para esse conjunto de servidores.

Confira um exemplo de configuração de upstreamNameservers:

spec:
  upstreamNameservers:
  - serverIP: 8.8.8.8
  - serverIP: 1.2.3.4
    serverPort: 54

Se você não especificar nenhum valor para upstreamNameservers, o provedor de DNS usará o arquivo /etc/resolv.conf no nó para encontrar a lista de servidores de nomes upstream.

spec.domains

Use o campo spec.domains para configurar diferentes servidores de nomes upstream para determinados domínios. Essas configurações de servidor de nomes específicas do domínio modificam a configuração em upstreamNameservers.

Também é possível ativar o registro de consultas de um domínio. É possível ativar o registro de consultas para qualquer domínio especificado ou o domínio do cluster, cluster.local.

Confira um exemplo de configuração de spec.domains:

spec:
  domains:
  - name: altostrat.com
    nameservers:
    - serverIP: 198.51.100.1
  - name: my-own-personal-domain.com
    nameservers:
    - serverIP: 203.0.113.1
    - serverIP: 203.0.113.2
      serverPort: 50000
  - name: cluster.local
    queryLogging: true

spec.googleAccess

O campo spec.googleAccess é uma string que configura a resolução de DNS para domínios usados pelas APIs e serviços globais do Google. Esse campo aceita os seguintes valores:

  • default: por padrão, a resolução de DNS mapeia domínios globais da API Google para os endereços IP padrão. O cluster não personaliza a resolução de DNS para domínios globais da API Google. Para mais informações, consulte Endereços IP para domínios padrão. Se você não especificar um valor no campo googleAccess, o sistema usará default.

  • private: mapeia a resolução de DNS para domínios globais da API Google para os endereços IP usados por private.googleapis.com.

  • restricted: mapeia a resolução de DNS para domínios globais da API Google para os endereços IP usados por restricted.googleapis.com.

O exemplo a seguir mostra como definir a resolução de DNS para usar private.googleapis.com:

spec:
  googleAccess: private

Para mais informações, consulte Configurar o Acesso privado do Google para hosts locais.

spec.orderPolicy

O campo spec.orderPolicy é uma string. Use esse campo para especificar a política de ordenamento pela qual os servidores upstream são selecionados.

  • O valor padrão é random.
  • Os tipos compatíveis são random, round_robin e sequential.
  • Essa política de pedidos também se aplica a domínios definidos.

Para mais informações sobre policy e o que cada configuração faz, consulte a documentação do coredns.

Confira um exemplo de configuração de spec.orderPolicy:

spec:
  orderPolicy: sequential