安装
安装方式:
- 下载二进制包进行安装
- 源码编译
- 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支持两种操作模式daemon和onetime。
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_cmd和reload_cmd实现配置文件更新后的动作。比如官方文档给出的更新Nginx配置后完成Nginx的重启。