OPS

EKS 도메인 자동 관리 with ExternalDNS + Ingress + Route53

찻잔속청개구리 2025. 4. 24. 00:11
반응형

Ingress가 트래픽 경로를 정의하면, ExternalDNS가 이를 감지해 Route53에 DNS 레코드를 자동 등록한다.
EKS 환경에서 도메인을 효율적으로 관리하고 싶다면 반드시 알아야 할 구성이라고 본다.

 

동작 원리 요약

1. Ingress 리소스 생성 (예: host: app.example.com) 
2. Ingress Controller (예: ALB) 가 실제 로드밸런서 생성
3. ExternalDNSIngress 리소스를 감지
4. Route53 Hosted ZoneDNS 레코드 등록
- A 레코드: app.example.comALB DNS 이름
- TXT 레코드: 소유권 확인용 메타 정보 저장
 
1. Ingress 리소스 생성 (host: app.example.com)
           │
           ▼
2. Ingress Controller(ALB 등)가 실제 로드밸런서 생성
           │
           ▼
3. ExternalDNS가 Ingress 리소스를 감지
           │
           ▼
4. Route53에 도메인 등록
   - A 레코드: app.example.com → ALB DNS 이름
   - TXT 레코드: 소유권 확인용 메타 정보 저장

Ingress Controller 예시

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app
  annotations:
    external-dns.alpha.kubernetes.io/hostname: app.example.com
    # ExternalDNS가 추적할 수 있는 힌트 제공
spec:
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80

💡 주요 포인트: external-dns.alpha.kubernetes.io/hostname 어노테이션은 ExternalDNS가 이 Ingress를 감지할 수 있게 해준다.


ExternalDNS 역할

  • Kubernetes Ingress나 Service 리소스의 도메인 정보를 감지
  • 감지된 정보를 기반으로 AWS Route53에 A 레코드 및 TXT 레코드를 자동 등록
  • 생성되는 레코드:
    • A 레코드: app.example.com → ALB의 DNS 주소
    • TXT 레코드: app.example.com의 소유권 메타 정보
      (예: "heritage=external-dns,external-dns/owner=my-cluster")

Route53과 연동

  • ExternalDNS는 Route53의 API를 이용해 Hosted Zone에 레코드를 등록한다.
  • 따라서 IAM 권한이 필수이다.

 

정리하자면, EKS 환경에서 도메인 자동화의 핵심은 ExternalDNS + Ingress + Route53의 유기적인 연결이다.
ExternalDNS는 수동 설정 없이 도메인 등록을 자동화하여, 운영 효율성과 안정성을 크게 향상시켜 준다.

반응형