Configure o DNS para um cluster

Este documento mostra como configurar as opções do fornecedor do Sistema de Nomes de Domínio (DNS) para o Google Distributed Cloud. A configuração de DNS de um cluster é mantida num recurso personalizado ClusterDNS denominado default. Este recurso é ao nível do cluster, ou seja, não tem espaço de nomes. O recurso personalizado ClusterDNS aplica-se a todos os tipos de clusters.

Crie o recurso ClusterDNS

Crie um manifesto para um recurso ClusterDNS denominado default. Preencha o spec conforme pretendido. Por 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
      - serverIP: 203.0.113.1
      - serverIP: 203.0.113.2
        serverPort: 54
  googleAccess: default

Guarde o manifesto num ficheiro denominado my-dns.yaml e aplique o recurso ao cluster:

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

Substitua KUBECONFIG pelo caminho para o ficheiro kubeconfig do cluster.

Veja o recurso ClusterDNS

Para ver o recurso ClusterDNS:

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

Substitua KUBECONFIG pelo caminho para o ficheiro kubeconfig do cluster.

A especificação ClusterDNS

As secções seguintes descrevem as partes da definição de recurso personalizado ClusterDNS que usa para configurar o DNS para os seus clusters. Pode atualizar o recurso ClusterDNS para um cluster em qualquer altura.

spec.upstreamNameservers

Especifique os seus servidores de nomes upstream predefinidos com uma matriz de objetos, cada um dos quais tem um endereço IP do servidor e, opcionalmente, uma porta do servidor. O valor predefinido da porta do servidor é 53. Os pedidos de domínios não pertencentes a clusters são encaminhados para esta matriz de endereços de servidores por predefinição.

Segue-se um exemplo de upstreamNameservers configuração:

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

Se não especificar valores para upstreamNameservers, o fornecedor de DNS usa o ficheiro /etc/resolv.conf no nó para encontrar a lista de servidores de nomes a montante.

spec.domains

Configuração para domínios específicos. Use esta secção para configurar diferentes servidores de nomes a montante para domínios específicos. Estas definições de servidor de nomes específicas do domínio substituem a configuração em upstreamNameservers.

Também pode ativar o registo de consultas para um domínio. Pode ativar o registo de consultas para qualquer domínio especificado ou para o domínio do cluster, cluster.local.

Por exemplo:

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

Enumeração (private, restricted ou default). Especifica como tratar os domínios Google. Os valores googleAccess especificam o seguinte comportamento:

  • default: nenhum tratamento especial para domínios Google. A remoção do campo googleAccess tem o mesmo efeito.

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

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

O exemplo de definição seguinte resolve os domínios Google apenas para endereços IP de acesso privado:

spec:
  googleAccess: private

Para mais informações, consulte o artigo Configurar o acesso privado à Google para anfitriões no local.

spec.orderPolicy

String. Se quiser especificar a política de ordenação pela qual os servidores a montante são selecionados. A predefinição é "random". Os tipos suportados são "random","round_robin" e "sequential". Tenha em atenção que esta política de ordenação também se aplica aos domínios definidos. Consulte a documentação do coredns para obter mais informações sobre o policy e o que cada configuração faz.

Por exemplo:

spec:
  orderPolicy: sequential