容器中的应用配置管理
1. 运行时加载配置
在容器环境中,从运行时加载配置是一个重要的话题。将机密设置存放在打包的环境文件中可能存在安全风险,因为这些信息可能被试图攻击系统的人利用。将机密设置移到运行时应用的覆盖文件中,打包的环境文件中剩下的敏感信息就会减少。同时,将一些设置放在源代码控制中,而另一些放在配置管理系统中,这种分割方式也不太理想。
容器的优势在于可以根据自身喜好选择配置模式。不同的组织和技术栈可能适用不同的方法,如果需要处理多个技术栈,情况会变得更加复杂。
1.1 Go 语言的 Viper 配置模块
Go 语言有一个流行的配置模块 Viper,它提供了与 .NET Core 库或 node - config 类似的功能。使用步骤如下:
1. 将 Viper 模块添加到包列表中。
2. 在应用代码中指定配置目录的路径,并决定是否引入环境变量来覆盖配置文件。
在一个图像画廊应用中使用 Viper,其配置加载层次如下:
- 首先从 Docker 镜像中填充的 config 目录加载文件。
- 特定环境的文件从 config - override 目录加载,该目录在镜像中为空,可以作为容器文件系统挂载的目标。
- 环境变量会覆盖文件设置。
Viper 支持比其他示例更广泛的配置文件语言,如 JSON、YAML,在 Go 世界中流行的格式是 TOML。TOML 很适合作为配置文件,因为它在代码中很容易映射到字典,并且比 JSON 或 YAML 更易读。以下是图像画廊应用的 TOML 配置示例:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



