1 External Plugins概述
coredns官方对于插件的分类基本可以分为三种:Plugins、External Plugins和其他。其中Plugins一般都会被默认编译到coredns的预编译版本中,而External Plugins则不会。官方的文档对外部插件的定义有着明确的解释,主要要求大概是有用、高效、符合标准、文档齐全、通过测试等。
2 编译插件
官方给出了一个详细的文档说明,编译插件基本可以分为修改源码和修改编译的配置文件这两种方式,这里我们采用简单高效的修改配置文件的方式进行测试。
在我们前面下载的官方源码中,有一个plugin
的目录,里面是各种插件的安装包,同时还有一个plugin.cfg
的文件,里面列出了会编译到coredns中的插件,
[/home/coredns]# tail plugin.cfg
secondary:secondary
etcd:etcd
loop:loop
forward:forward
grpc:grpc
erratic:erratic
whoami:whoami
on:github.com/coredns/caddy/onevent
sign:sign
dump:github.com/miekg/dump
例如这里我们需要额外多添加一个dump插件到coredns中,只需要在plugin.cfg中加入插件的名称和地址
dump:github.com/miekg/dump
对于在plugin目录下已经存在的插件,则可以直接写成plugin中的目录名:
sign:sign
然后我们开始编译
[/home/coredns]# go get github.com/miekg/dump
go: downloading github.com/miekg/dump v0.0.0-20201002053733-d877fdb82251
go get: added github.com/miekg/dump v0.0.0-20201002053733-d877fdb82251
[/home/coredns]# go generate
[/home/coredns]# go build
[/home/coredns]# make
3 验证插件
接下来只要检验生成的coredns二进制文件中是否包含dump
插件即可确认是否顺利编译完成:
扫描二维码关注公众号,回复:
17131136 查看本文章
最后我们在配置文件中启动dump
模块并进行测试,可以看到一条查询会出现两条日志,分别对应的是dump
插件生成的日志和log
插件生成的日志(带INFO)