コンパイル時のプラグインの有効化または無効化

CoreDNSをコンパイルするときにプラグインを有効化または無効化します。

CoreDNS' の プラグイン (または 外部プラグイン) は、Corefile にそれを指定 (または指定しない) ことによってオンザフライで有効化または無効化できます。ただし、必要な プラグインのみを使用して CoreDNS をコンパイルし、残りを完全に残すこともできます。

それを実現するには2つの方法があります。CoreDNS コードベースの更新によるコンパイル時設定ファイル経由で行うことができます。また、CoreDNS コードを変更せずに実現することもできます。

コンパイル時設定ファイルを使用して構築する

コンパイル時設定ファイル plugin.cfgを使用して、更新するだけで済みます。次のようになります。

...
whoami:whoami
erratic:erratic
example:github.com/coredns/example
...

プラグインの順序は、このファイルの順序によって指定されます。各行は名前リポジトリで構成されています。このファイルにプラグインを追加または削除するだけです。

外部プラグインのソースコードを取得する必要がある場合は、go get <plugin-repo-path> を行います。それから、go generatego build を使用して CoreDNS をコンパイルするだけです。その後、coredns -plugins を使用して CoreDNS に新しいプラグインがあるかどうかを確認できます。

外部の golang ソースコードを使用してビルドする

代わりに、外部の golang プログラムを通じて、さまざまな場所からプラグインを組み立てることができます。次のようになります。

package main

import (
        _ "github.com/coredns/example"

        "github.com/coredns/coredns/coremain"
        "github.com/coredns/coredns/core/dnsserver"
)

var directives = []string{
        "example",
        ...
        ...
        "whoami",
        "startup",
        "shutdown",
}

func init() {
        dnsserver.Directives = directives
}

func main() {
        coremain.Run()
}

上記のサンプルコードでは、外部プラグイン example が次のコマンドでインポートされています。

        _ "github.com/coredns/example"

ディレクティブも次の方法で更新する必要があります。

        dnsserver.Directives = directives

プラグインの順序は、スライス directives の順序によって指定されます。

その後、go build を使用して CoreDNS をコンパイルするだけで、選択したプラグインを使用して生成されたバイナリを使用できます。

Miek Gieben
公開: タグ付け: Documentation using 284 words.