Confd安装

869 阅读1分钟

安装

安装方式:

  • 下载二进制包进行安装
  • 源码编译
  • Docker Builder

选择一个后端

支持的后端:

  • etcd
  • consul
  • vault
  • environment variables
  • file
  • redis
  • zookeeper
  • dynamodb
  • rancher
  • ssm (AWS Simple Systems Manager Parameter Store)

添加Value

curl -X PUT -d 'db.example.com' http://localhost:8500/v1/kv/myapp/database/url
curl -X PUT -d 'rob' http://localhost:8500/v1/kv/myapp/database/user

添加k/v到consul。如图所示:

Create a template resource config

/etc/confd/conf.d/myconfig.toml

[template]
src = "myconfig.conf.tmpl"
dest = "/tmp/myconfig.conf"
keys = [
    "/myapp/database/url",
    "/myapp/database/user",
]

交代了template文件的位置、模板文件被填充后的目标文件、以及用于填充的key的k/v源。

Create the source template

/etc/confd/templates/myconfig.conf.tmpl

[myconfig]
database_url = {{getv "/myapp/database/url"}}
database_user = {{getv "/myapp/database/user"}}

myconfig.conf.tmpl应用配置模板,{{}}表示需要用对应的key的值来填充。

从配置中心的使用姿势来理解这个配置文件特别容易。市面的配置中心大多将配置的内容以k/v存储到像consul、zk、etcd等分布式存储中,然后在项目中定义一个应用配置的模板文件,如:Application.yml.tmpl。模板中将配置的value空出来。最后将模板文件交给配置中心,配置中心从k/v存储中用具体的值替换模板中空缺的配置。

Process the template

confd supports two modes of operation daemon and onetime. In daemon mode confd polls a backend for changes and updates destination configuration files if necessary.

confd支持两种操作模式daemononetime

  • daemon:confd拉取后端的变更后更新目标的配置文件,如果必须的话。
  • onetime:confd是通过命令触发更新、替换。
confd -onetime -backend consul -node 127.0.0.1:8500

Output

cat /tmp/myconfig.conf

[myconfig]
database_url = db.example.com
database_user = rob

Advanced

check_cmd = "/usr/sbin/nginx -t -c {{.src}}"
reload_cmd = "/usr/sbin/service nginx reload"

通过check_cmdreload_cmd实现配置文件更新后的动作。比如官方文档给出的更新Nginx配置后完成Nginx的重启。