Login
Login

ExternalDNS

Atualizado em 12 de February de 2026

O ExternalDNS é uma ferramenta para gerenciar automaticamente registros DNS com base em recursos do Kubernetes. Ele atualiza os registros DNS de acordo com as anotações especificadas nos manifests de Services e Ingress.

O ExternalDNS simplifica o gerenciamento de domínios para serviços em um cluster Kubernetes, eliminando a necessidade de alterar registros manualmente no painel de controle de DNS.

Instalar o ExternalDNS

Para instalar o ExternalDNS:

  1. Vá para a seção Kubernetes e clique no cluster.
  2. Abra a aba Complementos.
  3. Clique nos três pontos ao lado de ExternalDNS e selecione Instalar.

Após a instalação, aguarde a atualização do cluster e verifique se os recursos do ExternalDNS estão no estado Running:

kubectl get pods -n external-dns

Usar o ExternalDNS

Antes de usar o ExternalDNS, você deve criar manualmente os domínios no painel de controle para que o ExternalDNS possa gerenciar os registros deles.

Usar anotações no Ingress

O ExternalDNS gerencia registros DNS com base em anotações nos manifests. Por exemplo, para associar um domínio a um recurso Ingress, você pode usar o seguinte manifesto:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: ingress-example
  annotations:
    external-dns.alpha.kubernetes.io/hostname: "app.example.com"
    external-dns.alpha.kubernetes.io/ttl: "1200"
spec:
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app
            port:
              number: 80

Descrição das anotações:

  • external-dns.alpha.kubernetes.io/hostname: especifica o nome de domínio que será associado a este recurso.
  • external-dns.alpha.kubernetes.io/ttl: define o TTL do registro DNS em segundos.

Esse método é adequado quando o controlador de Ingress está implantado em todos os nós. No entanto, ele apresenta algumas desvantagens:

  • Se o controlador de Ingress não estiver rodando em todos os nós, parte do tráfego pode ser enviada para endereços IP indisponíveis.
  • O Kubernetes pode mover pods para outros nós, alterando os IPs e causando indisponibilidade do serviço.
  • O balanceamento de carga via DNS não considera a disponibilidade dos nós, o que pode resultar em perda de tráfego.

Usar LoadBalancer (recomendado)

Uma das formas mais eficientes de usar o ExternalDNS é em conjunto com um load balancer. Nesse caso, o serviço recebe um IP externo fixo e distribui o tráfego entre os pods. O ExternalDNS cria automaticamente um registro DNS apontando para esse IP.

Exemplo de manifesto:

apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
  annotations:
    external-dns.alpha.kubernetes.io/hostname: "app.example.com"
    external-dns.alpha.kubernetes.io/ttl: "1200"
spec:
  selector:
    app.kubernetes.io/name: ingress-nginx
  ports:
    - name: http
      port: 80
      targetPort: 80
    - name: https
      port: 443
      targetPort: 443
  type: LoadBalancer

Neste exemplo, o load balancer direciona o tráfego para pods com o rótulo app.kubernetes.io/name: ingress-nginx, onde o controlador de Ingress está em execução.

Usar o ExternalDNS com um load balancer simplifica o gerenciamento de DNS. Em vez de acompanhar mudanças de IP em diferentes nós, você só precisa associar o domínio a um único IP fixo. Isso reduz o risco de indisponibilidade causada por mudanças de nós, e o balanceamento entre pods garante maior estabilidade do serviço.

Se a configuração do cluster mudar, o ExternalDNS atualizará automaticamente o registro DNS, eliminando a necessidade de intervenção manual.

Esta página foi útil?
Atualizado em 12 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support