Partilhar via


Personalizar CoreDNS para o Serviço Kubernetes do Azure (AKS)

O Serviço Kubernetes do Azure (AKS) usa 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 Kubernetes ConfigMap para substituir as configurações padrão. Para ver o AKS CoreDNS ConfigMaps padrão, use o kubectl get configmaps --namespace=kube-system coredns --output yaml comando.

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

Observação

Anteriormente, o AKS usava kube-dns para o gerenciamento e resolução de DNS de cluster, mas agora está obsoleto. kube-dns oferecia diferentes opções de personalização através de um mapa de configuração do Kubernetes. CoreDNS não é retrocompatível com kube-dns. Você deve atualizar todas as personalizações anteriores para trabalhar com CoreDNS.

Pré-requisitos

  • Este artigo pressupõe que você tenha um cluster AKS existente. Se precisar de um cluster AKS, você pode criar 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 mudar entre versões.

Suporte a plug-ins

Todos os plugins CoreDNS integrados são suportados. Nenhum complemento/plug-in de terceiros é suportado.

Importante

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

Configurar regravações de nomes 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 deverá ser capaz de resolver o nome de domínio reescrito.

  2. Crie o ConfigMap usando o kubectl apply configmap comando 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 contínua para recarregar o ConfigMap e permitir que o Agendador do Kubernetes reinicie o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Especifique 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 forward nome e <domain to be rewritten> 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
        <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 contínua para recarregar o ConfigMap e permitir que o Agendador do Kubernetes reinicie 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 domínio personalizado ConfigMap, o cluster AKS não pode resolver o endereço.

  1. Crie um novo arquivo chamado corednsms.yaml e cole na configuração de exemplo a seguir. Certifique-se de atualizar 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 contínua para recarregar o ConfigMap e permitir que o Agendador do Kubernetes reinicie 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 o exemplo de configuração a seguir. Certifique-se de atualizar os domínios personalizados e 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 contínua para recarregar o ConfigMap e permitir que o Agendador do Kubernetes reinicie o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Adicionar mapeamentos de host-para-IP personalizados

  1. Crie um arquivo chamado corednsms.yaml e cole o exemplo de configuração a seguir. Certifique-se de atualizar os endereços IP e 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 contínua para recarregar o ConfigMap e permitir que o Agendador do Kubernetes reinicie o CoreDNS sem tempo de inatividade usando o kubectl rollout restart comando.

    kubectl --namespace kube-system rollout restart deployment coredns
    

Próximos passos