前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >配置文件初始化思路一二三

配置文件初始化思路一二三

作者头像
老麦
发布2022-12-24 10:27:48
2270
发布2022-12-24 10:27:48
举报
文章被收录于专栏:Go与云原生Go与云原生

配置文件字段如下

代码语言:javascript
复制
type Config struct {
 Server    Server            `json:"server,omitempty" yaml:"server,omitempty"`
 Ingresses netv1.IngressSpec `json:"ingresses,omitempty" yaml:"ingresses,omitempty"`
}

完整配置如下

代码语言:javascript
复制
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 文件。

代码语言:javascript
复制
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
  }
 }
}

除了读取配置文件之外, 生成 默认的配置文件也是非常重要的。为所设计的 配置字段 创建一个默认值, 在程序启动的时候生成默认配置, 如此任何配置字段的都会在程序启动时体现出来, 而不必再花时间进行文档整理。

代码语言:javascript
复制

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 字段。方便之后直接使用,不再做转换。

代码语言:javascript
复制
type Config struct {
 Server    Server            `json:"server,omitempty" yaml:"server,omitempty"`
 Ingresses netv1.IngressSpec `json:"ingresses,omitempty" yaml:"ingresses,omitempty"`
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Config 文件
  • Config 字段
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档