CoreDNSのメモ
はじめに
CoreDNSとは、軽量で柔軟なDNSで、ブラグインベースで機能を追加できることが特徴です。
基本的にはCorefileという設定ファイルを使って動作を制御します。
インストール
下記のコマンドで公式から配布されているバイナリを取得して実行できるようにします。
wget https://github.com/coredns/coredns/releases/download/v1.11.1/coredns_1.11.1_linux_amd64.tgz
tar xvfz *.tgz
sudo mv coredns /usr/local/bin/
基本構成
CoreDNSの設定はCorefileで実施します。
シンプルな設定だと以下のようになります。
.:53 {
log
errors
health
ready
forward . 8.8.8.8:53
}
上記の設定で利用しているプラグインは下記のとおりです。
- log:DNSへの問い合わせログを出力します
- errors:DNS処理中のエラーだけを出力します
- health:
/healthの死活監視用エンドポイントを提供します - ready:
/readyの起動完了チェック用のエンドポイントを提供します - forward:解決できなかった際の利用する上位のDNSを指定します
起動
CoreDNSは下記のコマンドで実行します。
sudo coredns -conf ./Corefile
起動確認
今回はhealthとreadyを利用しているため、実際にエンドポイントを利用して確認します。
OKが返却されれば問題なく起動しています。
$ curl http://localhost:8080/health
OK
$ curl http://localhost:8181/ready
OK
Aレコードの追加
hostsプラグインを利用することで簡単に設定ができます。
ゾーンファイルを作成してfileプラグインを用いて読み込むことも可能です。
home {
hosts {
192.168.0.10 web
192.168.0.11 db
}
}
動作確認
$ nslookup web.home
192.168.0.10
動的管理
CoreDNSはetcdを利用することで、動的にレコードを管理することができます。
Corefileやゾーンファイルの場合は、リロードが必要になりますが、DB管理をすることでリロードせずに更新することができます。