CoreDNS · File + Reload
stock CoreDNS 연동
- • zone 마다 authoritative 블록(
file+reload) - • catch-all/도메인별
forward+cache+loop - • per-rule 캐시 도메인은 전용 server 블록으로 분리
- • 코드 링크 없음 → CoreDNS 버전 독립
- • 반영 확인: 서빙 SOA serial 과 렌더 serial 대조
PADION
dnsd · Internal DNS Control Plane
health-aware DNS · stock CoreDNS · 무DB · 다중 노드 복제
zone 마다 헬스체크로 살아있는 백엔드만 A 레코드로 발행하고, 정적 레코드·도메인별 forward·SOA/캐시를 웹 UI/REST 로 관리합니다. 손대지 않은 stock CoreDNS 가 그 결과를 읽어 응답 — CoreDNS 를 코드로 링크하지 않아 버전 독립. DB 없이 설정 파일 하나로 동작합니다.
DNS Control
레이크하우스 같은 내부 스택은 수많은 stateless 서비스(게이트웨이·코디네이터·워커)가 여러 노드에 흩어져 돌아갑니다. 죽은 인스턴스로 가는 트래픽을 막으려면 "살아있는 곳"만 이름으로 가리켜야 하는데, 정적 DNS 나 수동 관리로는 헬스 변화를 따라가지 못합니다. 무거운 LB 를 모든 서비스 앞에 두는 것도 과합니다.
PADION dnsd 는 백엔드를 헬스체크해 살아있는 것만 DNS A 로 발행하고, 정적 레코드·forward·SOA 까지 한 콘솔에서 관리합니다. 실제 응답은 손대지 않은 stock CoreDNS 가 zone 파일을 읽어 처리하므로 CoreDNS 버전업과 무관하고, DB 없이 설정 파일 하나가 진실의 원천입니다.
서비스별 TCP / HTTP / HTTPS 헬스체크(경로·rise/fall·timeout). 살아있는 백엔드만 A 집합으로 발행. 전멸 시 동작(fail-open / fail-closed) 선택 가능. debounce 로 깜빡임 합치기.
dnsd 가 CoreDNS 설정을 생성하고 CoreDNS 가 자동으로 읽습니다. 코드 링크 없음 → CoreDNS 버전 독립. 단일 컨테이너로도 운영 가능.
from 도메인마다 다른 upstream·정책(random/round_robin/sequential)·health_check·max_fails. 특정 도메인 전용 캐시(per-rule). 모든 forward 블록에 loop 감지(resolv.conf 순환 방지).
단일 writer · 다중 reader 구조. leader 장애 시 수동 promote 가능 · split-brain 방지 메커니즘 · 피어 상태 조회 · 동기화 이력.
모든 변경을 추가-전용 감사 로그로 (회전 + 보존 기간 + 기간 조회). 표준 메트릭 노출 · CoreDNS 반영 확인 · SBOM 제공.
웹 UI 로그인(세션 + 기본 비번 강제 변경) + REST/복제용 Bearer 토큰(상수시간 비교). HTTPS(TLS) 옵션. 설정 파일 하나가 진실의 원천(DB 없음) · 변경은 검증 통과 후에만 반영(all-or-nothing) · serial 단조 보장.
서비스를 한 번 정의하면, 헬스 변화가 CoreDNS 설정으로 자동 반영되어 살아있는 백엔드만 응답합니다.
01 · Define
웹 UI/REST 로 zone·서비스·백엔드·forward 등록
02 · Probe
TCP/HTTP/HTTPS 주기 점검 → 살아있는 백엔드 판정
03 · Render
살아있는 것만 CoreDNS 설정에 안전하게 (원자적 갱신)
04 · Serve
reload 후 응답 · 변경은 follower 로 복제
CoreDNS · File + Reload
file + reload)forward + cache + loopREST API + Web UI
내장 웹 UI(로그인 세션)와 REST API로 zone·서비스·레코드·forward·SOA·캐시·복제를 관리. 자동화는 Bearer 토큰. 모든 변경은 인증이 필요합니다.
Deploy · Host / Docker / k8s
아이디/비밀번호 세션 인증(PBKDF2 해시). 초기 비밀번호는 최초 로그인 시 즉시 변경을 강제합니다.
모든 변경은 세션 또는 Bearer 토큰 필요. 토큰은 상수시간 비교(타이밍 공격 방지).
로그인·로그아웃·실패를 사용자 ID + 클라이언트 IP 와 함께 로그 기록.
모든 변경 append-only JSONL · 월별 회전 · 보존 개월수 · 기간 조회.
공인 인증서로 admin/UI 를 HTTPS 제공. 토큰·세션은 응답에 노출 안 됨.
안전한 단일 writer 복제 메커니즘으로 옛 leader 격리.
검증 통과 후에만 디스크 반영(all-or-nothing) · persist-before-broadcast · serial 단조.
forward 에 catch-all 강제 + CoreDNS loop 플러그인으로 무한 순환 사전 차단.
SBOM 제공 — 의존 모듈·라이선스 투명. 외부 의존 최소.
Stateless LB
MinIO 게이트웨이 · Trino 코디네이터 같은 stateless 엔드포인트를 dns-rr 로 묶어, 살아있는 인스턴스만 다중 A 로 발행. 죽은 노드는 자동으로 응답에서 빠집니다.
Internal Resolver
internal.corp. 같은 사내 도메인은 전용 upstream·정책으로, 나머지는 공용 resolver 로 forward. 도메인별 캐시 TTL 까지 분리해 적용.
High Availability
leader 에서 편집한 설정이 follower 로 복제. leader 장애 시에도 follower 의 CoreDNS 가 계속 응답하고, 필요 시 수동 promote로 안전하게 승격.
PADION 통합
PADION lakehouse 의 Trino·MinIO·메타스토어 등 내부 서비스에 일관된 이름과 health-aware 라우팅 제공. 인프라 계층에서 "이름 → 살아있는 곳"을 책임집니다.
| DNS 엔진 | stock CoreDNS (file + reload). 코드 비결합 → 버전 독립. 단일 컨테이너 시 dnsd 가 자식으로 기동·감독. |
|---|---|
| zone 모델 | 멀티 zone(origin). zone = 동적 서비스(health) + 정적 레코드. k8s 커스텀 zone 1:1 매핑 고려. |
| 레코드 타입 | A · AAAA · CNAME · TXT · MX · NS. (name,type,value) 식별로 다중 값 공존. |
| 헬스체크 | tcp / http / https (health 경로 지정) · interval · timeout · rise / fall · debounce. all_dead: fail_open / fail_closed. |
| Forward | 도메인(from)별 upstream(to[]) · 정책(random/round_robin/sequential) · health_check · max_fails · per-rule cache. catch-all '.' 필수, loop 감지. |
| SOA / 캐시 | 글로벌 기본값 + zone 별 override(필드 상속). serial 자동 monotonic. 글로벌/per-rule 캐시(TTL · success · denial). |
| 복제 | 단일 writer · 다중 reader · 안전한 동기화 메커니즘 · 수동 promote · 피어 상태 · 동기화 이력. |
| 인증 | 웹 UI 로그인 세션(PBKDF2, 기본 비번 강제 변경) + REST/복제 Bearer 토큰(상수시간 비교, config 파일/파일 경로). 로그인·로그아웃 IP·ID 로그. |
| TLS | admin/UI HTTPS(인증서+키). cert/key 둘 다 설정 시 활성. |
| 감사 | append-only JSONL · 월별 회전(audit-YYYY-MM.log) · 보존 개월수 · 기간(from/to) 조회. |
| 관측 | 표준 메트릭 노출 · CoreDNS 반영 확인 · SBOM 제공. |
| 아키텍처 | Go 단일 바이너리 · 무DB (설정 파일이 진실의 원천) · 외부 의존 최소 · 원자적 갱신. |
| 배포 | host + docker(단일 컨테이너 dnsd+CoreDNS) 현재 · k8s ConfigMap sink 예정. 운영 경로 config 일원화. |
| PADION 연동 | data lakehouse 내부 서비스 디스커버리 · datakeeper · gatekeeper |
인증·인가·ETL·저장·분석이 동작하려면, 먼저 서비스가 서로를 이름으로 찾고 살아있는 곳으로 연결돼야 합니다. dnsd 가 그 디스커버리 계층을 책임집니다.