External DNS는 Kubernetes 클러스터에 배포된 서비스의 IP 주소를 자동으로 DNS 서비스에 등록해 주는 Kubernetes 애드온입니다. 이 도구를 사용하면 클러스터 내부에서 생성된 서비스나 인그레스 리소스의 변경 사항을 감지하여, 해당 서비스의 DNS 레코드를 외부 DNS 관리 서비스(예: AWS Route 53, Google Cloud DNS, Cloudflare 등)에 자동으로 생성하고 업데이트합니다.

주요 기능

  1. 자동 DNS 레코드 생성
  2. 자동 DNS 레코드 업데이트 및 삭제
  3. 멀티-클라우드 지원
  4. RBAC 설정 지원

Helm 배포 방법

# Helm Repo 추가
helm repo add external-dns <https://kubernetes-sigs.github.io/external-dns/>

# 배포
helm upgrade --install external-dns external-dns/external-dns

IAM 필수 권한

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "route53:ChangeResourceRecordSets"
      ],
      "Resource": [
        "arn:aws:route53:::hostedzone/"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "route53:ListHostedZones",
        "route53:ListResourceRecordSets",
        "route53:ListTagsForResource"
      ],
      "Resource": [
        "*"
      ]
    }
  ]
}

참조

https://kubernetes-sigs.github.io/external-dns/v0.15.0/