為什么要支持confd,老的應用配置管理模式是啟動時讀取配置文件,然后重新讀取配置文件需要應用重啟。
一般的配置管理系統都是代碼侵入性的,應用接入配置管理系統都需要使用對應的SDK來查詢和監聽數據的變更。對于一些已經成熟的系統來說,接入SDK來實現動態配置管理是很難實現的,Nacos通過引入配置管理工具confd可以實現系統的配置變更做到無代碼侵入性。
confd是一個輕量級的配置管理工具,可以通過查詢后端存儲系統來實現第三方系統的動態配置管理,如Nginx、Tomcat、Haproxy、Docker配置等。
confd目前支持的后端有etcd、ZooKeeper等,Nacos 1.1版本通過對confd定制支持Nacos作為后端存儲。
confd能夠查詢和監聽后端系統的數據變更,結合配置模版引擎動態更新本地配置文件,保持和后端系統的數據一致,并且能夠執行命令或者腳本實現系統的reload或者重啟。
安裝confd插件
confd的安裝可以通過源碼安裝方式,confd基于Go語言編寫,其編譯安裝依賴Go,首先需要確保本地安裝了Go,版本不低于v1.10。
創建confd目錄,下載confd源碼,編譯生成可執行文件
mkdir -p $GOPATH/src/github.com/kelseyhightowerwget https://github.com/nacos-group/confd/archive/v0.18.0.tar.gztar -xvf v0.18.0.tar.gzmv confd-0.18.0 confdcd confdmake
復制confd文件到bin目錄下,啟動confd
sudo cp bin/confd /usr/local/binconfd
confd結合Nacos實現Nginx配置管理示例
本文介紹使用Nacos結合confd實現Nginx配置管理,為簡單起見以Nginx的黑名單功能為演示示例,Nacos使用官網部署的服務,域名為console.nacos.io。Nginx的安裝可以參考網上文章。

1.創建confd所需目錄
confd配置文件默認在/etc/confd中,可以通過參數-confdir指定。目錄中包含兩個子目錄,分別是:conf.d templates
mkdir -p /etc/confd/{conf.d,templates}
2.創建confd配置文件
confd會先讀取conf.d目錄中的配置文件(toml格式),然后根據文件指定的模板路徑去渲染模板。
vim /etc/confd/conf.d/nginx.toml
內容為如下,其中nginx.conf.tmpl文件為confd的模版文件,keys為模版渲染成配置文件所需的配置內容,/usr/local/nginx/conf/nginx.conf為生成的配置文件
[template]src = " nginx.conf.tmpl"dest ="/usr/local/nginx/conf/nginx.conf"keys = ["/nginx/conf