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 Connected. 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 ele 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 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 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.