책 소개
요약
기본적인 DNS 이론과 가상서버, 컨테이너 환경에서 실습 중심으로 CoreDNS 구성 요소와 특징을 설명한다. 또한 CoreDNS의 다양한 영역 데이터 관리 방법과 DNS 질의응답 방법에 관해 설명하며, 쿠버네티스 환경에서 서비스 검색 기능을 살펴볼 수 있다. 그 외에도 CoreDNS 기본 플러그인에서 사용자 정의 플러그인까지 다양한 방식의 플러그인 활용법과 체인 적용, CoreDNS 모니터링 및 문제 발생시 해결 방법을 소개한다.
추천의 글
"3년 전 CoreDNS가 보잘것없는 초창기일 때, 누가 이렇게 환상적인 책을 만들 것이라고 생각했겠는가? 자신만의 특수 DNS 서버를 사용하거나 구축하는 데 이 책은 반드시 필요한 동반자다."
이 책에서 다루는 내용
■ DNS 이론: DNS 네임스페이스, 도메인 이름, 도메인 및 영역
■ CoreDNS 서버 구성 방법
■ CoreDNS를 사용해 기본에서 고급 영역 데이터 관리 및 제공
■ etcd와 쿠버네티스를 사용한 CoreDNS 서비스 검색 구성
■ 쿠버네티스와의 통합
■ 플러그인 체인을 통과하는 질의와 응답 조작
■ DNS 서비스의 가용성과 성능 모니터링, 문제 해결
■ CoreDNS 사용자 정의 버전 빌드와 플러그인 작성
이 책의 대상 독자
■ 쿠버네티스와 같은 환경을 관리하는 DNS 기반 서비스 검색이 필요한 컨테이너 환경의 관리자
■ 컨테이너에서 실행할 수 있는 작고 유연한 DNS 서버를 찾는 DNS 관리자
■ 다음과 같은 DNS 서버를 찾는 DNS 관리자
- AWS Route 53과 통합
- 질의 및 응답에 따라 유연한 재작성 지원
- DNS over 전송 계층 보안과 범용 원격 프로시저 지원
■ CoreDNS 플러그인을 작성해 사용자 지정 DNS 기능을 구현하려는 개발자
이 책의 구성
1장, ‘소개’에서는 CoreDNS의 사용 이유와 한계를 포함해 다른 DNS 서버와 어떻게 다른지를 설명한다. 또한 클라우드 네이티브 Computing Foundation과 관계가 깊은 CoreDNS의 역사를 다룬다.
2장, ‘DNS 소개’에서는 기본 DNS 이론과 DNS 서버 및 해석기의 역할, DNS 네임스페이스의 구조, 다양한 리소스 레코드의 구문 및 의미를 포함해 도메인 이름 서버가 작동하는 방식을 살펴본다.
3장, ‘CoreDNS 설정’에서는 CoreDNS 서버 설정(Configure)에 흥미를 불러 일으킬 수 있는 내용을 준비했다.
CoreDNS는 영역 데이터를 관리하는 다양한 방법을 지원한다. 영역 데이터 파일과 같이 DNS 관리자에게 친숙한 방법과 Git 사용 같은 현대적인 방법, 호스트 테이블 같은 복고적인 방법도 있다. 4장, ‘영역 데이터 관리’에서는 앞서 언급한 내용을 모두 다룬다.
5장, ‘서비스 검색’에서는 서비스 검색의 기본 사항과 CoreDNS 및 etcd를 사용해 동적 환경에서 서비스 검색을 수행하는 방법을 설명한다.
6장, ‘쿠버네티스’에서는 먼저 쿠버네티스의 기본 사항을 설명하고 CoreDNS의 가장 일반적인 사용 사례 중 하나인 쿠버네티스와의 통합을 다룬다.
7장, ‘질의 및 응답 조작’에서는 요청 및 응답을 조작하는 데 가장 일반적으로 사용되는 플러그인을 설명한다.
8장, ‘모니터링 및 문제 해결’에서는 CoreDNS를 모니터링하고 질의 및 응답을 로깅하고 문제를 진단하는 데 도움이 되는 플러그인(Plugin)을 다룬다.
9장, ‘사용자 정의 서버 구축’ CoreDNS 코드는 라이브러리로 쉽게 사용할 수 있도록 구조화돼 있다. 즉, 자신만의 main 루틴을 만들고 전체 CoreDNS 코드를 라이브러리로 처리할 수 있다. 9장에서는 이러한 옵션을 모두 다룬다.
목차
목차
- 1장. 소개
- CoreDNS란 무엇인가?
- CoreDNS, 컨테이너, 마이크로서비스
- CoreDNS 제약 사항
- CoreDNS, 쿠버네티스, CNCF
- CoreDNS란 무엇인가?
- 2장. DNS 소개
- 도메인 이름 시스템이란?
- 도메인 이름과 네임스페이스
- 도메인, 위임 및 영역
- 리소스 레코드
- DNS 서버 및 권한
- 해석기
- 해석과 재귀
- 캐싱
- 리소스 레코드
- NAME
- TTL
- CLASS
- 리소스 레코드 유형
- A 레코드
- AAAA 레코드
- CNAME 레코드
- MX 레코드
- NS 레코드
- SRV 레코드
- PTR 레코드
- SOA 레코드
- 주석 영역 데이터 파일
- 3장. CoreDNS 설정
- CoreDNS 설치
- CoreDNS 명령어 옵션
- 코어파일 구문
- 환경 변수
- 재사용 가능 코드 조각
- 임포트
- 서버 블록
- 질의 처리
- 플러그인
- 루트 플러그인
- 파일 플러그인
- 보조 플러그인
- 전달 플러그인
- 캐시 플러그인
- 오류 플러그인
- 로그 플러그인
- 공통 설정 옵션
- 대체
- tls
- 전송
- 샘플 DNS 서버 설정
- 캐싱 전용 DNS 서버
- 주 DNS 서버
- 보조 DNS 서버
- 4장. 영역 데이터 관리
- 파일 플러그인
- 자동 플러그인
- Git 연동 자동 플러그인
- 호스트 플러그인
- route53 플러그인
- 5장. 서비스 검색
- 서비스 검색 소개
- 서비스 검색 문제 해결
- CoreDNS 및 etcd를 통한 서비스 검색
- etcd 플러그인
- 타 서비스 검색 옵션
- 서비스 검색 및 컨테이너 오케스트레이션
- 6장. 쿠버네티스
- 기본 개념
- 쿠버네티스 네트워킹
- 클러스터 IP 서비스
- 헤드리스 서비스
- 쿠버네티스 DNS 사양
- CoreDNS 통합
- 기본 구성
- 스텁 도메인 및 페더레이션
- 클러스터 DNS 배포 리소스
- 역할 기반 액세스 제어
- 서비스
- 배포
- 오토스케일링
- 향상된 구성
- 쿠버네티스 플러그인
- CoreDNS 확장 프로그램
- 포드 옵션
- 와일드카드 질의
- 자동 경로 및 Dreaded ndots:5
- 영역 전송 지원
- 외부 서비스 노출
- 사용 가능한 레코드 수정
- 7장. 질의 및 응답 조작
- 템플릿 플러그인
- 재작성 플러그인
- EDNS0 옵션에 대한 재작성 플러그인 사용
- 다중 재작성 규칙
- 메타데이터 플러그인
- DNS 보안 확장을 사용한 응답 서명
- DNSSEC 서명 주 영역 관리
- dnssec 플러그인을 사용한 즉각적인 DNSSEC 서명
- 사례 연구: 인포블록스의 BloxOne 위협 방어
- 사용자 식별
- 정책 적용
- 8장. 모니터링 및 문제 해결
- prometheus 플러그인
- 로그 플러그인
- dnstap 플러그인
- 오류 플러그인
- 추적 플러그인
- 디버그 플러그인
- 9장. 사용자 정의 서버 구축
- 외부 플러그인을 사용한 CoreDNS 컴파일
- 도커를 사용한 빌드
- 워크스테이션에서의 빌드 방법
- plugin, cfg 수정
- 메인 함수로 대체하는 방법
- 사용자 정의 플러그인 작성
- 유일한 플러그인
- 메트릭, 추적, 메타데이터와 통합
- 외부 플러그인을 사용한 CoreDNS 컴파일