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/
  • 相关阅读:
    (6)STM32使用HAL库实现modbus的简单通讯
    (4)STM32使用HAL库实现串口通讯——理论讲解
    (3)STM32使用HAL库操作外部中断——实战操作
    (2)STM32使用HAL库操作外部中断——理论讲解
    对图片进行压缩、水印、伸缩变换、透明处理、格式转换操作1
    文件压缩、解压工具类。文件压缩格式为zip
    Bean与Map的转换 和 Map与Bean的转换
    正则 身份证的验证
    金钱处理工具类 人民币转换为大写
    正则表达式工具类,验证数据是否符合规范
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/8407348.html
Copyright © 2011-2022 走看看