Skip to content

CoreDNS 설정하기

CoreDNS란 무엇인가?

CoreDNS는 고도로 플러그인화 가능한 DNS 서버로, 다양한 DNS 쿼리를 처리할 수 있습니다. Kubernetes, 클라우드 서비스 및 각종 IT 인프라에서 네임 리졸루션을 관리하는 데 사용됩니다. CoreDNS는 간단하면서도 강력한 설정 옵션을 제공하여, 사용자가 필요에 따라 DNS 서비스를 맞춤 설정할 수 있게 해줍니다.

CoreDNS의 주요 특징

  • 플러그인 기반 아키텍처: 다양한 기능을 추가할 수 있는 플러그인 시스템을 제공합니다.
  • 고성능: 작고, 효율적이며, 동시에 여러 DNS 요청을 빠르게 처리할 수 있습니다.
  • 유연성: 단순한 도메인 네임 리졸루션에서부터 복잡한 네트워킹 규칙에 이르기까지 다양한 시나리오에 대응할 수 있습니다.

CoreDNS 설치하기

CoreDNS는 다양한 방법으로 설치할 수 있습니다. 여기서는 전통적인 방법인 바이너리 다운로드를 통해 설치하는 과정을 안내합니다.

다운로드 및 설치

  1. CoreDNS의 최신 버전을 다운로드합니다. 다운로드는 GitHub 릴리스 페이지에서 할 수 있습니다.

    bash
    wget https://github.com/coredns/coredns/releases/download/v1.8.3/coredns_1.8.3_linux_amd64.tgz
  2. 다운로드 받은 파일을 압축 해제합니다.

    bash
    tar -xvzf coredns_1.8.3_linux_amd64.tgz
  3. 압축 해제된 디렉토리에서 CoreDNS 실행 파일을 찾을 수 있습니다.

CoreDNS 실행

CoreDNS를 실행하려면 다음 명령어를 사용합니다.

bash
./coredns

이 명령은 CoreDNS를 시작하고, 기본적으로 53번 포트에서 DNS 요청을 수신하도록 설정합니다.

CoreDNS 구성하기

CoreDNS는 Corefile을 통해 구성됩니다. 이 파일에서 DNS 쿼리 처리 방법을 정의할 수 있습니다.

bash
cat > /etc/hosts
192.168.1.10    web
192.168.1.11    db
192.168.1.15    web-1
192.168.1.16    db-1
192.168.1.21    web-2
192.168.1.22    db-2

Corefile 예시

cat > Corefile
. {
	hosts   /etc/hosts
}
.:53 {
    hosts {
        192.168.1.10 hostA
        192.168.1.11 hostB
        fallthrough
    }
    cache
    forward . 8.8.8.8
}

이 구성은 로컬 호스트 파일을 사용하여 특정 IP에 대한 요청을 처리하고, 캐시를 활성화하며, 알려지지 않은 모든 요청을 Google의 DNS 서버(8.8.8.8)로 전달합니다.

결론

CoreDNS를 사용하면 네트워크 환경에서 DNS 서버를 효과적으로 관리하고, 다양한 네트워크 요구 사항에 맞춰 DNS 서비스를 제공할 수 있습니다. 다음 강의에서는 CoreDNS를 사용한 고급 DNS 서비스 구성 방법을 배울 예정

referrence

https://github.com/kubernetes/dns/blob/master/docs/specification.md
https://coredns.io/plugins/kubernetes/