Top

CoreDNS 시작하기 [클라우드 네이티브 환경을 위한 DNS]

  • 원서명Learning CoreDNS: Configuring DNS for Cloud Native Environments (ISBN 9781492047964)
  • 지은이존 벨라마릭(John Belamaric), 크리켓 리우(Cricket Liu)
  • 옮긴이나정호
  • ISBN : 9791161755472
  • 25,000원
  • 2021년 08월 31일 펴냄
  • 페이퍼백 | 260쪽 | 188*235mm
  • 시리즈 : 네트워크 프로그래밍

책 소개

요약

기본적인 DNS 이론과 가상서버, 컨테이너 환경에서 실습 중심으로 CoreDNS 구성 요소와 특징을 설명한다. 또한 CoreDNS의 다양한 영역 데이터 관리 방법과 DNS 질의응답 방법에 관해 설명하며, 쿠버네티스 환경에서 서비스 검색 기능을 살펴볼 수 있다. 그 외에도 CoreDNS 기본 플러그인에서 사용자 정의 플러그인까지 다양한 방식의 플러그인 활용법과 체인 적용, CoreDNS 모니터링 및 문제 발생시 해결 방법을 소개한다.

추천의 글

"3년 전 CoreDNS가 보잘것없는 초창기일 때, 누가 이렇게 환상적인 책을 만들 것이라고 생각했겠는가? 자신만의 특수 DNS 서버를 사용하거나 구축하는 데 이 책은 반드시 필요한 동반자다."

- 미에크 기벤(Miek Gieben), CoreDNS 창시자

이 책에서 다루는 내용

■ 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장에서는 이러한 옵션을 모두 다룬다.

저자/역자 소개

지은이의 말

이 책을 보자마자 가장 먼저 떠오르는 질문은 "DNS 서버는 특별한 것이 있는가?" 다. 현재 선택할 수 있는 DNS 서버는 정말 많다. 먼저 DNS 서버의 시초인 BIND(Berkeley Internet Name Domain)가 있다. BIND는 1980년대부터 조금씩 쓰이기 시작했고, 작성된 모든 DNS 표준을 지원한다. Microsoft DNS 서버는 Active Directory 환경에서 널리 사용되는 DNS 서버다. NLnet Labs 및 Knot의 NSD는 신뢰할 수 있는 DNS 서버이며, NLnet Labs의 Unbound는 빠르고 간결한 재귀(Recursion) DNS 서버다. 그렇다면 CoreDNS는 이러한 DNS 서버가 제공하지 않는 무엇을 제공하는가? CoreDNS는 Go로 작성됐는데, Go는 메모리-세이프(Memory-safe) 프로그래밍 언어다. 그게 왜 중요할까? BIND 기반 DNS 인프라를 운영하고 버퍼 오버런(Overrun) 때문에 100대의 DNS 서버를 최대한 빨리 업그레이드해야 한다면 이 부분이 중요한 역할을 할 것이다. C 및 C++언어로 작성된 스트라이프(Stripe)방식의 DNS 서버의 취약점은 버퍼 오버플로우(Overflow) 또는 오버런, 댕글링(Dangling) 포인터 때문에 발생한다. 메모리-세이프된 Go로 작성된 CoreDNS에서는 이러한 부분이 발생하지 않는다.
Go로 작성된 프로그램은 동시성 또는 병렬 실행을 지원할 수도 있는데, 멀티프로세싱(Multiprocessing) 또는 멀티태스킹(Multitasking) 시스템에서 더 많은 성능을 끌어내는 데 유용할 수 있다. BIND 성능은 멀티프로세서(Multiprocessor) 시스템에서 확장되기 어려운데, CoreDNS의 성능은 프로세서 수에 따라 확장돼 더 많은 일을 할 수 있게 된다.
Go는 C 또는 C++보다 약간 느리게 실행되는 경향이 있기 때문에 성능을 향상하는 것이 중요하다. 대부분은 문제가 되지 않는다. 중요한 것은 Go는 CoreDNS에 제공하는 워크로드(Workload)를 잘 처리할 수 있다는 것이다.
아마도 CoreDNS가 제공하는 가장 중요한 기능은 컨테이너(Container) 인프라와 etcd, 쿠버네티스와 같은 오케스트레이션(Orchestration) 시스템과 통신할 수 있는 부분이다.

지은이 소개

존 벨라마릭(John Belamaric)

20년 이상의 소프트웨어 설계와 개발 경력을 쌓은 경험이 풍부한 소프트웨어 엔지니어 겸 아키텍트다. 쿠버네티스와 GKE에 초점을 맞춘 구글 클라우드 팀에서 일하고 있다. 또한 쿠버네티스와 기타 컨테이너, 클라우드 스택에서 동적 DNS 기반 서비스 검색을 제공하는 CNCF 프로젝트인 CoreDNS의 핵심 관리자다. 그는 구글의 수석 소프트웨어 엔지니어로 3가지 특허를 보유하고 있으며, 『OpenStack Cloud Application Development』(O'Reilly, 2015)의 공동 저자다.

크리켓 리우(Cricket Liu)

미국 캘리포니아 버클리 대학교를 졸업했다. 이 대학에는 언론의 자유를 지키는 훌륭한 보루, 무제한의 유닉스 그리고 값싼 피자가 있었다. 대학 졸업 후 휴렛 팩커드(Hewlett-Packard)에 입사해 9년 간 HP에서 근무했다.
로마 프리에타 지진 때문에(스프링클러가 부서져 전산 실험실을 침수시킴) HP Labs에서 HP 기업 사무실로 강제적으로 옮겨진 후 hp.com 도메인을 관리하기 시작했다. 3년 이상 hostmaster@hp.com로 근무했고, HP의 전문 서비스 조직에 가입해 HP의 인터넷 컨설팅 프로그램을 공동 설립했다.
1997년에 HP를 떠나 친구 맷 라슨(Matt Larson)과 DNS 컨설팅 및 교육 회사인 Acme Byte & Wire를 설립했다. 네트워크 솔루션즈(Network Solutions)사는 2000년 6월에 Acme를 인수했고, 같은 날 베리사인(VeriSign)과 합병됐다. 그는 베리사인 글로벌 레지스트리 서비스의 DNS 제품 관리 책임자로 1년 간 근무했다.
2003년 3월 DNS, DHCP 및 IP 주소 관리 솔루션을 개발하는 회사인 인포블록스(Infoblox)에 입사했고, 현재 수석 DNS 아키텍트 겸 선배 동료다.

옮긴이의 말

CoreDNS는 클라우드 네이티브 환경에 알맞은 DNS 서버로 클라우드 네이티브 컴퓨팅 재단(CNCF, Cloud Native Computing Foundation)에서 졸업한 프로젝트다. 기본적인 DNS 명세를 준수해 범용성과 유연성 때문에 쿠버네티스 등 다양한 클러스터 환경에서 사용할 수 있고 아파치 라이센스를 명시한 완전한 오픈소스로 무료로 사용할 수 있다.
CoreDNS의 장점은 Go 언어로 작성돼 설정이 빠르고 간단하다는 것이다. 또한 플러그인을 모듈 형태로 작성하고 컨피그맵에 반영해 DNS 서비스 검색에 대한 설정을 손쉽게 변경할 수 있으며, 플러그인을 연이어 적용 가능한 체인 구조로 다양하게 구성할 수 있다. 물론 이러한 플러그인을 통해 메트릭 모니터링 역시 손쉽게 연동할 수 있다.
CoreDNS는 쿠버네티스와 프로메테우스, Etcd 등 유명한 오픈소스와의 플러그인을 비롯해 메이저 클라우드사인 AWS, MS Azure, GCP에서 제공 중인 DNS 서비스와의 플러그인 연동을 통해 뛰어난 호환성을 가지고 다양한 환경에서 사용이 가능하다.
특히 쿠버네티스 클러스터의 기본 DNS로 내장돼 있기 때문에 클러스터 내부 도메인 기반으로 바인딩된 서비스의 ClusterIP나 자주 변경되는 POD의 IP를 대신해 조회가 가능한 용도로 많이 사용된다. 그래서 쿠버네티스상에서의 서비스 검색 기능을 기본적으로 구현할 수 있어 마이크로서비스 아키텍처에 걸맞게 구성하고 관리할 수 있다.
역자는 쿠버네티스를 기반으로 컨테이너 플랫폼을 구축, 운영한 경험을 토대로 CoreDNS를 처음 접하고 시작하는 분들께 도움되고자 번역을 진행했다. 번역 과정에서 CoreDNS에는 많은 버전 변화가 있었고, CNCF 생태계와 함께 다양한 유관 프로젝트와 툴이 지금 이 시간에도 계속 개발되고 있기에 이 부분을 최대한 반영하려고 노력했다.
이 책은 DNS의 이론과 함께 실습 중심으로 CoreDNS의 구성 요소와 특징을 설명하며, 가상서버와 쿠버네티스 환경에서 CoreDNS 관련 기능을 명령어 기반으로 직접 수행할 수 있기에 CoreDNS를 사용해보고자 하는 다양한 사용자에게 도움이 될 것이다.

옮긴이 소개

나정호

현재 데브옵스 엔지니어로 재직 중이며, 개발과 운영을 통합해 전담하는 조직 내 데브옵스 문화와 기술을 선도하기 위해 항상 많은 노력을 하고 있다. 과거 대형 SI사 재직 때는 시스템 엔지니어로서 제조 및 통신 그룹사 대상으로 멀티 클라우드와 컨테이너 플랫폼을 구축과 운영을 담당했다. 이후에는 대형은행과 메신저 기반 핀테크사에서 데브옵스 엔지니어로서 모바일 금융 서비스에 대한 데브옵스 업무를 수행했다. 현재는 대형 보험사에서 차세대 보험 서비스를 위한 하이브리드 클라우드 내 컨테이너 플랫폼을 설계, 구축을 진행하며 데브옵스 업무를 수행하고 있다.

목차

목차
  • 1장. 소개
    • CoreDNS란 무엇인가?
      • CoreDNS, 컨테이너, 마이크로서비스
      • CoreDNS 제약 사항
      • CoreDNS, 쿠버네티스, CNCF

  • 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 수정
      • 메인 함수로 대체하는 방법
    • 사용자 정의 플러그인 작성
      • 유일한 플러그인
      • 메트릭, 추적, 메타데이터와 통합

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안