編譯時啟用或停用外掛程式

在編譯 CoreDNS 時啟用或停用外掛程式。

CoreDNS 的外掛程式(或外部外掛程式)可以透過在Corefile中指定(或不指定)來動態啟用或停用。但您也可以編譯 CoreDNS 時只包含您需要的外掛程式,並完全排除其餘的外掛程式。

有兩種方法可以實現這一點。一種是透過具有 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
發佈時間: 並標記為文件,共計 284 字。