[ #k8s ][ #DNS ] CoreDNS 1.0.1を触ってみた。

     
    • 最終更新日時:2017/12/17 20:41:36

    Embed
    GoogleCloudKubernetes.jpg

    Kubernetes(k8s)、触ってます? 私はベアメタル全盛の現場にいるので触ったことすらありません。昔ちょろっとDockerとかやったぐらいで、Container管理とかは全くです。
    しかし、実はqiitaを覗いていたところDNSのコンポーネントであるCoreDNSというのを知って、少し興味が出たので触ってみました。

    CNCF(Cloud Native Computing Foundation)のポートフォリオにLinkerd, gRPC, CoreDNSが加わる

    k8sに含まれた的な記事は上記のリンクから。
    で、qiitaで確認した記事は下記のリンクから。

    CoreDNS入門 - Qiita

    使用方法についてはqiitaの記事でも多く書かれているのですが、自分なりに書いておこうと思います。

    Webサイトはこちら。ダウンロードやら、ドキュメントやら、後述するプラグインのことなんかも書いてあります。

    CoreDNS: DNS and Service Discovery

    まずはインストールから。ソースファイルなどはGitHubから。

    Releases · coredns/coredns /
    https://github.com/coredns/coredns/releases

    ありがたいことに、ソースファイル以外にもバイナリ自体も配布されています。しかも対応アーキテクチャとしてx86だけでなく、Aarch64や、PowerPC、Power、Windowsとかのバイナリも配布されています。個人的にARMは多用しているのでありがたいですね。
    バイナリを使用するときは、そのバイナリに対してPATHを通してあげるだけです。

    $ coredns --version
    CoreDNS-1.0.1
    linux/arm64, go1.9.2, 99e163c3


    お手軽ですね。

    起動仕方は以下の通り。基本的には以下の構文でいけるかなと。

    $ coredns -conf=/etc/coredns/corefile -dns.port 53 -pidfile=/var/run/corefile.pid


    で、設定ファイルの扱いになるCorefileについては以下のような記述方式になると思います。

    $ cat /etc/coredns/corefile 
    .:53 {
    errors
    log . {
    class denial
    }
    health
    cache
    whoami
    root /etc/coredns
    proxy . 9.9.9.10:53 {
    protocol dns
    }
    }


    CoreDNSの前身となるSkyDNSの記述方式であるCaddyとかいう方式らしいです。

    引用:Corefile Explained
    The Corefile is parsed like a Caddyfile. We support everything that is described on that page, for instance the use of environment variables.


    とりあえずざっくりとした解説になります。詳細については公式ドキュメントを参照してください。

    .:53 { :この場合は、ルートゾーンとそれ以下のすべてに対して権限を持つサーバーを定義します。待ち受けるポート番号は53ですね。
    errors :参照中のエラーについて標準出力する
    log . { class denial } :すべての要求に対して共通ログ形式でstdoutにクエリログエントリが書き込まれます。幾つかオプションが存在しますが、denialはNXDOMAINまたはNODATAのいずれかのとき出力するようになります。
    health :CoreDNS自体の死活監視ですね。
    cache :書いて字のごとく。問い合わせ自体をキャッシュできるようになります。キャッシュ期間も制御できるようになるほか、その時のデータをメトリクスとして取得できるようにもなります。
    whoami :CoreDNSが起動時にCorefileを見つけることができない場合、ロードされるデフォルトのプラグインです。
    root  :zoneファイルなんかを置いてあるディレクトリ位置を指定します。
    proxy . 9.9.9.10:53 { protocol dns } :DNSリバースプロキシとロードバランサ機能を提供する。コレの面白いところは、使用できるプロトコルがdns以外にもgRPCやdns.google.comに対してhttpsでアクセスするhttps_googleナンていうのもあります。

    という感じになるでしょうか。

    他にもDNSSECを有効にしたりするプラグインや、dnstapを使用するためのプラグイン、hostsファイルを参照するようにするプラグイン、BIND形式のzoneファイルを読み込むようにも出来たりします。

    そういう意味では、内向けのDNSサーバとしてはサクッと作れて便利なんじゃないでしょうか。

    現在用意されているプラグインはこちらから確認することが出来ます。

    Plugins

    通常のプラグインとしては同梱されていないですが、PowerDNSのSQLを使用してバックエンドを利用するためのプラグインがあったり、デフォルトで用意されているProxyプラグインではなく、forwardするためのプラグインもあったりします。

    Explugins

    UnboundやPowerDNSなんかも便利ですが、必要最低限の機能で良い場合なんかはいいかもしれませんね。
    あとロードバランサー的なことが出来たりするので、dnsdistの代わりでもいいかもしれません(CoreDNSはクエリを細かく制御は今のところ出来ないようですが)。配分ポリシーもラウンドロビン方式しか無いようなので、このあたりも実装次第なのかなぁと。

    あと、IPv6についてもForwardプラグインなどは記事時点では対応しているようですが、本体自体の正式な対応は「K8s v1.9 (GA on 12/23/2017).」なのかなーと。

    plugin/k8s: Support IPv6 · Issue #1236 · coredns/coredns /
    https://github.com/coredns/coredns/issues/1236

    ちなみに自分は、他のDNSツールとパフォーマンスなどは比較してはいません。そのうちdnsperfとかresperfとかで確認ぐらいはしてみようかと思いますが。

    k8sとしてのコンポーネントとして使用するだけでなく、リゾルバーぐらいの機能だけを使用したいなら、十分な選択肢になると思います。
    間違い等ありましたらご指摘ください。
    関連記事


    Pagination

    Trackback

    Trackback URL

    https://kometchtech.blog.fc2.com/tb.php/2085-33d432a3

    Comment

    Post Your Comment

    コメント登録フォーム
    公開設定

    Utility

    Profile

    kometchtech

    Author:kometchtech
    なんちゃってエンジニアです。
    2009年10月から業務都合により大阪勤務になりました。
    2010年1月、HYBRID W-ZERO3を購入しました。
    2010年11月、HTC Desire HDを購入しました。
    2012年2月、都内の会社に転職しました。
    2012年5月、HTC One Xを購入しました。
    2012年8月、事情により休職しました。
    2012年8月、SONY Xperia SXを購入しました。
    2013年1月、一身上の都合により退職しました。
    2014年3月、都内の会社に就職しました。
    2016年8月、HPC系の会社に転職しました。
    2018年6月、Xperia XZ1 compactに機種変。

    Amazonほしい物リスト
    何か問題などありましたら、こちらまで。 Twitter:@kometchtech follow us in feedly

    カレンダー

    11 | 2018/12 | 01
    - - - - - - 1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30 31 - - - - -

    記事リスト

    最新の記事

    全記事(数)表示

    全タイトルを表示

    バロメーター

    カテゴリー

    カテゴリークラウド

    アーカイブ

    検索フォーム

    FCカウンター

    オンライン

    現在の閲覧者数:

    Amazonアソシエイト

    スポンサードリンク

    月間ページランキング

    ブログパーツ

    サイトランキング