zoukankan      html  css  js  c++  java
  • coredns 编译模式添加插件

    备注:

       coredns 默认已经安装了一些插件,比如大家用的多的kubernetes etcd ... 但是我们可以自己编译插件,构建我们自己的
    coredns 版本,方便集成使用
    1. 项目结构
    ├── Corefile
    ├── coredns.go
    2. 参考代码
    a. main.go
    
    package main
    import (
            _ "github.com/coredns/example"
            "github.com/coredns/coredns/coremain"
            _ "github.com/coredns/coredns/plugin/auto"
    	_ "github.com/coredns/coredns/plugin/autopath"
    	_ "github.com/coredns/coredns/plugin/bind"
    	_ "github.com/coredns/coredns/plugin/cache"
    	_ "github.com/coredns/coredns/plugin/chaos"
    	_ "github.com/coredns/coredns/plugin/debug"
    	_ "github.com/coredns/coredns/plugin/dnssec"
    	_ "github.com/coredns/coredns/plugin/dnstap"
    	_ "github.com/coredns/coredns/plugin/erratic"
    	_ "github.com/coredns/coredns/plugin/errors"
    	_ "github.com/coredns/coredns/plugin/etcd"
    	_ "github.com/coredns/coredns/plugin/federation"
    	_ "github.com/coredns/coredns/plugin/file"
    	_ "github.com/coredns/coredns/plugin/health"
    	_ "github.com/coredns/coredns/plugin/hosts"
    	_ "github.com/coredns/coredns/plugin/kubernetes"
    	_ "github.com/coredns/coredns/plugin/loadbalance"
    	_ "github.com/coredns/coredns/plugin/log"
    	_ "github.com/coredns/coredns/plugin/metrics"
    	_ "github.com/coredns/coredns/plugin/nsid"
    	_ "github.com/coredns/coredns/plugin/pprof"
    	_ "github.com/coredns/coredns/plugin/proxy"
    	_ "github.com/coredns/coredns/plugin/reload"
    	_ "github.com/coredns/coredns/plugin/reverse"
    	_ "github.com/coredns/coredns/plugin/rewrite"
    	_ "github.com/coredns/coredns/plugin/root"
    	_ "github.com/coredns/coredns/plugin/route53"
    	_ "github.com/coredns/coredns/plugin/secondary"
    	_ "github.com/coredns/coredns/plugin/template"
    	_ "github.com/coredns/coredns/plugin/tls"
    	_ "github.com/coredns/coredns/plugin/trace"
    	_ "github.com/coredns/coredns/plugin/whoami"
    	_ "github.com/coredns/example"
    	_ "github.com/coredns/forward"
    	_ "github.com/mholt/caddy/onevent"
            _ "github.com/mholt/caddy/startupshutdown"
            _ "github.com/arvancloud/redis"
            "github.com/coredns/coredns/core/dnsserver"
    )
    var directives = []string{
            "example",
            "tls",
    	"reload",
    	"nsid",
    	"root",
    	"bind",
    	"debug",
    	"trace",
    	"health",
    	"pprof",
    	"prometheus",
    	"errors",
    	"log",
    	"dnstap",
    	"chaos",
    	"loadbalance",
    	"cache",
    	"rewrite",
    	"dnssec",
    	"autopath",
    	"reverse",
    	"template",
    	"hosts",
    	"route53",
    	"federation",
    	"kubernetes",
    	"file",
    	"auto",
            "secondary",
            "etcd",
            "redis",
    	"forward",
    	"proxy",
    	"erratic",
    	"whoami",
    	"on",
    	"startup",
    	"shutdown",
    }
    
    func init() {
            dnsserver.Directives = directives
    }
    
    func main() {
            coremain.Run()
    }
    
        
    b. Corefile
        
    example.com {
      proxy . 8.8.8.8:53
      log
      example
    }
    3. 代码说明
    a. main.go 
    
    为集成全部插件,我使用了 coredns 源码中的plugins 配置代码里面包含了默认的全部,同时我添加了
    官方的example  以及一个redis 插件
    
    b. Corefile
    
    配置文件使用已有的插件  example
    4. 构建
    a. 依赖包安装
    
    简答的方式是使用源码包中的make 脚本,对于没有的使用go get  进行安装
    
    
    b. 构建
    
    go build
    
    c. 查看编译的插件
    
    ./main -plugins
    
    Password:
    Server types:
      dns
    
    Caddyfile loaders:
      flag
      default
    
    Other plugins:
      dns.auto
      dns.autopath
      dns.bind
      dns.cache
      dns.chaos
      dns.debug
      dns.dnssec
      dns.dnstap
      dns.erratic
      dns.errors
      dns.etcd
      dns.example
      dns.federation
      dns.file
      dns.forward
      dns.health
      dns.hosts
      dns.kubernetes
      dns.loadbalance
      dns.log
      dns.nsid
      dns.pprof
      dns.prometheus
      dns.proxy
      dns.redis
      dns.reload
      dns.reverse
      dns.rewrite
      dns.root
      dns.route53
      dns.secondary
      dns.template
      dns.tls
      dns.trace
      dns.whoami
      on
      shutdown
      startup
    5. 运行
    sudo ./main -conf Corefile
    
    参考日志:
    
    example.com.:53
    2018/02/02 22:32:12 [INFO] CoreDNS-1.0.5
    2018/02/02 22:32:12 [INFO] darwin/amd64, go1.9.3, 
    CoreDNS-1.0.5
    darwin/amd64, go1.9.3, 
    2018/02/02 22:32:12 [INFO] "A IN connpm.gj.qq.com." - No such zone at dns://:53 (Remote: 192.168.31.161:59752)
    2018/02/02 22:32:41 [INFO] "A IN www.thoughtworks.com." - No such zone at dns://:53 (Remote: 192.168.31.161:52965)
    2018/02/02 22:32:45 [INFO] "A IN static.thoughtworks.com." - No such zone at dns://:53 (Remote: 192.168.31.161:54903)
    2018/02/02 22:32:45 [INFO] "A IN s7.addthis.com." - No such zone at dns://:53 (Remote: 192.168.31.161:63212)
    2018/02/02 22:32:45 [INFO] "A IN qzonestyle.gtimg.cn." - No such zone at dns://:53 (Remote: 192.168.31.161:54212)
    2018/02/02 22:32:45 [INFO] "A IN app-e.marketo.com." - No such zone at dns://:53 (Remote: 192.168.31.161:62861)
    2018/02/02 22:32:45 [INFO] "A IN dynamic.thoughtworks.com." - No such zone at dns://:53 (Remote: 192.168.31.161:54761)
    2018/02/02 22:3
    。。。。。
    6. 参考资料
    https://github.com/coredns/example
    https://github.com/arvancloud/redis
    https://github.com/coredns/coredns
    https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/
  • 相关阅读:
    redis运维的一些知识点
    nginx 实现Web应用程序的负载均衡
    JQuery中常用方法备忘
    高效程序猿之 VS2010快速生成代码模板
    C# var 隐式类型 var 用法 特点
    HTML之打开/另存为/打印/刷新/查看原文件等按钮的代码
    js函数大全(2)
    js常用函数大全107个
    js键盘键值大全
    js键盘键值大全
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/8407348.html
Copyright © 2011-2022 走看看