Go项目多测试环境的配置管理
一个项目能够快速迭代上线,肯定少不了测试环境。而开发如果要在本地切换使用测试环境的配置,一般是手动修改,还可能提交到生产环境,会非常繁琐。 因此一个“伟大”的工具诞生了:easyconf。
一个项目能够快速迭代上线,肯定少不了测试环境。而开发如果要在本地切换使用测试环境的配置,一般是手动修改,还可能提交到生产环境,会非常繁琐。
因此一个“伟大”的工具诞生了:easyconf
。
我们需要准备两个物料:一个是模板文件,一个是配置文件。
- configmap_tpl.yaml
---
apiVersion: v1
kind: ConfigMap
metadata:
name: demp
namespace: dev
data:
config.yaml: |
server:
http:
name: demo
addr: ":8080"
server_config:
read_timeout: 10
write_timeout: 15
read_header_timeout: 12
idle_timeout: 8
mysql:
default:
dsn: "{{ .mysql__default__dsn }}"
is_debug: "{{ .mysql__default__is_debug }}"
- config-dev.yaml
local:
mysql__default__dsn: "username@tcp(127.0.0.1:3306)/dev?charset=utf8"
mysql__default__is_debug: true
k8s:
mysql__default__dsn: "username@tcp(demo.com:3306)/prod?charset=utf8"
mysql__default__is_debug: false
执行一下命令即可生成本地配置文件和 测试文件的 yaml文件。
easyconf -r local -t ./configmap_tpl.yaml -f ./config-dev.yaml -o ./configs/
easyconf -r k8s -t ./configmap_tpl.yaml -f ./config-dev.yaml -o ./configs/configmap.yaml
输出文件:
configs/config.yaml
server:
http:
name: demo
addr: ":8080"
server_config:
read_timeout: 10
write_timeout: 15
read_header_timeout: 12
idle_timeout: 8
mysql:
default:
dsn: "username@tcp(127.0.0.1:3306)/dev?charset=utf8"
is_debug: "true"
configs/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: demp
namespace: dev
data:
config.yaml: |
server:
http:
name: demo
addr: ":8080"
server_config:
read_timeout: 10
write_timeout: 15
read_header_timeout: 12
idle_timeout: 8
mysql:
default:
dsn: "username@tcp(demo.com:3306)/prod?charset=utf8"
is_debug: "false"