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, o que significa que não tem 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 opções de recursos que você quer. 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 seus 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.

Veja um exemplo de configuração 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 domínios específicos. Essas configurações de servidor de nomes específicas do domínio substituem a configuração em upstreamNameservers.

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

Veja um exemplo de configuração 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 especifica como tratar os domínios do Google. Os valores googleAccess especificam o seguinte comportamento:

  • default: nenhum tratamento especial para os domínios do Google. Remover o campo googleAccess tem o mesmo efeito.

  • private: resolve domínios do Google apenas para endereços IP de acesso privado.

  • restricted: resolve domínios do Google apenas para endereços IP de acesso restrito.

O exemplo de configuração a seguir resolve apenas domínios do Google para endereços IP de acesso particular:

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 este campo para especificar a política de ordenamento pela qual os servidores upstream são selecionados.

  • O valor padrão é random.
  • Os tipos aceitos 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.

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

spec:
  orderPolicy: sequential