配置文件初始化思路一二三
2023-02-18 16:39:36 时间
配置文件字段如下
type Config struct {
Server Server `json:"server,omitempty" yaml:"server,omitempty"`
Ingresses netv1.IngressSpec `json:"ingresses,omitempty" yaml:"ingresses,omitempty"`
}
完整配置如下
server:
port: 8080
ingresses:
rules:
- host: www.baidu.com
http:
paths:
- backend:
service:
name: /search
port:
number: 80
pathType: ImplementationSpecific
# pathType: Exact
# pathType: Prefix
Config 文件
读取多个文件后合并最终结果。可以将不同的功能配置放在不同的文件中, 在数据内容多的情况下更有利于操作。
除此之外, 还可以按照环境读取不同的配置文件( config.master.yml
/ config.develop.yml
), 这种方式在 CICD 中就可以体现出优势了。
例如, 之后在读取 k8s 信息渲染路由配置文件时, 可以只更改 config.ing.yml
文件。
func (cfg *Config) ReadConfig() {
for _, f := range []string{"config.default.yml", "config.yml", "config.server.yml", "config.ing.yml"} {
err := cfg.readconfig(f)
if err != nil {
logrus.Warnf("read file %s failed: %v", f, err)
continue
}
}
}
除了读取配置文件之外, 生成 默认的配置文件也是非常重要的。为所设计的 配置字段 创建一个默认值, 在程序启动的时候生成默认配置, 如此任何配置字段的都会在程序启动时体现出来, 而不必再花时间进行文档整理。
func NewConfig() *Config {
return &Config{
Server: Server{
Port: 8080,
},
}
}
func (cfg *Config) Initial() *Config {
b, _ := yaml.Marshal(cfg)
f, _ := os.OpenFile("config.default.yml", os.O_CREATE|os.O_RDWR|os.O_TRUNC, 0644)
defer f.Close()
f.Write(b)
return cfg
}
Config 字段
config 字段在设计的时候直接使用了 k8s 的 Ingress 字段。方便之后直接使用,不再做转换。
type Config struct {
Server Server `json:"server,omitempty" yaml:"server,omitempty"`
Ingresses netv1.IngressSpec `json:"ingresses,omitempty" yaml:"ingresses,omitempty"`
}
相关文章
- 阅读React源码初尝试
- 前端监控实战之 Sentry
- 写给小白的教程之WebComponent(1)
- 数据分享|R语言对论文作者研究机构、知识单元地理空间数据可视化
- 【视频】R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险|数据分享
- R语言用Rshiny探索lme4广义线性混合模型(GLMM)和线性混合模型(LMM)|附代码数据
- 基于边缘智能网关打造智慧体育场
- 如何区分不同用户?Cookie/Session详解,基于Token的用户认证——JWT
- R语言主成分PCA、因子分析、聚类对地区经济研究分析重庆市经济指标|附代码数据
- 基础设施及系统层网络调优思路
- 力扣73.矩阵置零
- 力扣146.LRU 缓存机制
- 力扣.165比较版本号
- 力扣664. 奇怪的打印机
- XXL-JOB核心源码解读及时间轮原理剖析
- 力扣704.二分查找
- 动态规划思路解析
- TCP:“哥哥(giegie)你真的懂TCP吗?”
- Docker容器:“我竟可以是个饭盒?!”
- 剑指 Offer 58.左旋转字符串