Configurar DNS para um cluster

Neste documento, mostramos como configurar as opções de provedor do Sistema de Nomes de Domínio (DNS) no GKE em Bare Metal. A configuração de DNS de um cluster é mantida em um recurso personalizado de ClusterDNS chamado default. Este 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 como quiser. 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.0.1
    - name: my-own-personal-domain.com
      - serverIP: 203.0.113.1
      - serverIP: 203.0.113.2
        serverPort: 54
  googleAccess: default

Salve o manifesto em um arquivo chamado my-dns.yaml e aplique o recurso ao cluster:

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:

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

Especifique os servidores de nomes upstream padrão com uma matriz de objetos, cada um com um endereço IP e, opcionalmente, uma porta do servidor. O valor padrão da porta do servidor é 53. Solicitações para domínios que não são de cluster são encaminhadas para essa matriz de endereços de servidor por padrão.

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/resolve.conf no nó para encontrar a lista de servidores de nomes upstream.

spec.domains

Configuração para domínios específicos. Use esta seção 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 a geração de registros de consultas para qualquer domínio especificado ou o domínio do cluster, cluster.local.

Exemplo:

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

spec.googleAccess

Enumeração (private, restricted ou default). 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

Se você quiser mais informações, consulte Como configurar o Acesso privado do Google para hosts locais.