Compartilhar via


Personalizar o CoreDNS com o AKS (Serviço de Kubernetes do Azure)

O AKS (Serviço de Kubernetes do Azure) usa o CoreDNS para gerenciamento e resolução de DNS de cluster com todos os clusters 1.12.x e superiores. O AKS é um serviço gerenciado, portanto, você não pode modificar a configuração principal do CoreDNS (um CoreFile). Em vez disso, você usa um ConfigMap do Kubernetes para substituir as configurações padrão. Para ver os ConfigMaps padrão de CoreDNS do AKS, use o comando kubectl get configmaps --namespace=kube-system coredns --output yaml.

Este artigo mostra como usar o ConfigMaps para opções básicas de personalização do CoreDNS no AKS (Serviço de Kubernetes do Azure).

Observação

Anteriormente, o AKS usava kube-dns para gerenciamento e resolução de DNS de cluster, mas agora foi descontinuado. Em kube-dns, são oferecidas diferentes Opções de personalização por meio de um mapa de configurações do Kubernetes. O CoreDNS não é retrocompatível com kube-dns. Você deve atualizar as personalizações anteriores para trabalhar com o CoreDNS.

Pré-requisitos

  • Este artigo considera que já existe um cluster do AKS. Se você precisar de um cluster do AKS, crie um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.
  • Verifique a versão do CoreDNS que você está executando. Os valores de configuração podem ser alterados entre as versões.

Suporte ao plug-in

Todos os plug-ins CoreDNS internos são compatíveis. Nenhum complemento/plug-in de terceiros é compatível.

Importante

Quando você cria configurações como as deste artigo, os nomes especificados na data seção devem terminar em .server ou .override. Essa convenção de nomenclatura é definida no ConfigMap do CoreDNS do AKS padrão, que você pode visualizar usando o comando kubectl get configmaps --namespace=kube-system coredns --output yaml.

Configurar reescritas de nome DNS

  1. Crie um arquivo nomeado corednsms.yaml e cole na configuração de exemplo a seguir. Certifique-se de substituir <domain to be rewritten> por seu próprio nome de domínio totalmente qualificado (FQDN).

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: |
        <domain to be rewritten>.com:53 {
        log
        errors
        rewrite stop {
          name regex (.*)\.<domain to be rewritten>\.com {1}.default.svc.cluster.local
          answer name (.*)\.default\.svc\.cluster\.local {1}.<domain to be rewritten>.com
        }
        forward . /etc/resolv.conf # You can redirect this to a specific DNS server such as 10.0.0.10, but that server must be able to resolve the rewritten domain name
        }
    

    Importante

    Se você redirecionar para um servidor DNS, como o IP do serviço CoreDNS, esse servidor DNS precisará ser capaz de resolver o nome de domínio reescrito.

  2. Crie o ConfigMap usando o comando kubectl apply configmap e especifique o nome do seu manifesto YAML.

    kubectl apply -f corednsms.yaml
    
  3. Verifique se as personalizações foram aplicadas usando o kubectl get configmaps comando.

    kubectl get configmaps --namespace=kube-system coredns-custom -o yaml
    
  4. Execute uma reinicialização sem interrupção para recarregar o ConfigMap e habilitar o Agendador do Kubernetes para reiniciar o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Especificar um servidor de encaminhamento para o tráfego de rede

  1. Crie um arquivo nomeado corednsms.yaml e cole na configuração de exemplo a seguir. Certifique-se de substituir o nome forward e <domain to be rewritten> pelos seus próprios valores.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        <domain to be rewritten>.com:53 {
            forward foo.com 1.1.1.1
        }
    
  2. Crie o ConfigMap usando o kubectl apply configmap comando.

    kubectl apply -f corednsms.yaml
    
  3. Execute uma reinicialização sem interrupção para recarregar o ConfigMap e habilitar o Agendador do Kubernetes para reiniciar o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Usar domínios personalizados

Talvez você queira configurar domínios personalizados que só podem ser resolvidos internamente. Por exemplo, talvez você queira resolver o domínio personalizado puglife.local, que não é um domínio de nível superior válido. Sem um ConfigMap de domínio personalizado, o cluster do AKS não pode resolver o endereço.

  1. Crie um novo arquivo nomeado corednsms.yaml e cole na configuração de exemplo a seguir. Atualize o domínio personalizado e o endereço IP com seus próprios valores.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      puglife.server: | # You can select any name here, but it must end with the .server file extension
        puglife.local:53 {
            errors
            cache 30
            forward . 192.11.0.1  # This is my test/dev DNS server
        }
    
  2. Crie o ConfigMap usando o kubectl apply configmap comando.

    kubectl apply -f corednsms.yaml
    
  3. Execute uma reinicialização sem interrupção para recarregar o ConfigMap e habilitar o Agendador do Kubernetes para reiniciar o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns 
    

Configurar domínios de stub

  1. Crie um arquivo chamado corednsms.yaml e cole a seguinte configuração de exemplo. Atualize os domínios personalizados e os endereços IP com seus próprios valores.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      test.server: | # You can select any name here, but it must end with the .server file extension
        abc.com:53 {
         errors
         cache 30
         forward . 1.2.3.4
        }
        my.cluster.local:53 {
            errors
            cache 30
            forward . 2.3.4.5
        }
    
    
  2. Crie o ConfigMap usando o kubectl apply configmap comando e especifique.

    kubectl apply -f corednsms.yaml
    
  3. Execute uma reinicialização sem interrupção para recarregar o ConfigMap e habilitar o Agendador do Kubernetes para reiniciar o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Adicionar mapeamentos personalizados de host-to-IP

  1. Crie um arquivo chamado corednsms.yaml e cole a seguinte configuração de exemplo. Atualize os endereços IP e os nomes de host com seus próprios valores.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom # This is the name of the ConfigMap you can overwrite with your changes
      namespace: kube-system
    data:
        test.override: | # You can select any name here, but it must end with the .override file extension
              hosts { 
                  10.0.0.1 example1.org
                  10.0.0.2 example2.org
                  10.0.0.3 example3.org
                  fallthrough
              }
    
  2. Crie o ConfigMap usando o kubectl apply configmap comando.

    kubectl apply -f corednsms.yaml
    
  3. Execute uma reinicialização sem interrupção para recarregar o ConfigMap e habilitar o Agendador do Kubernetes para reiniciar o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Próximas etapas