docker - 使用 Kubernetes ConfigMaps 的应用程序配置文件
问题描述
我想问一下,在以下情况下,为我的应用程序传递配置文件的首选方式或最佳方式是什么。
我的应用程序是在 NodeJS 上开发的,我有一个名为“config.json”的 JSON 文件,其中包含我的应用程序的所有配置参数,即 AD、SMTP、DB 等。文件的一瞥就像。
{
"slackIncomingHook": [
{"HookUrl": "<<HookUrl>>"}
],
"wikiPage": {
"url": "<<url>>",
"timeFrame" : "week"
},
"database": {
"dbName": "DBNAME",
"dbHostName": "mongodb://username:password@<<IP Address>>:27017/"
}
}
现在我想使用 Kubernetes 部署这个项目,并且我想在运行时将此信息传递给或者在使用 configMaps 构建集群时以某种方式合并。
我的这个项目的 DockerFile 包括复制两个独立/依赖的项目,设置 ENV、NPM 安装和公开 PORTS。
PS - Docker 映像被推送到我的私有存储库。
专家建议将不胜感激。
解决方案
您可以创建 ConfigMap 或 Secret,例如
apiVersion: v1
kind: ConfigMap
metadata:
name: test-config
namespace: default
data:
AppConfig.json: |-
{
"slackIncomingHook": [
{"HookUrl": "<<HookUrl>>"}
],
"wikiPage": {
"url": "<<url>>",
"timeFrame" : "week"
},
"database": {
"dbName": "DBNAME",
"dbHostName": "mongodb://username:password@<<IP Address>>:27017/"
}
}
您也可以创建秘密,因为它们是 base64 编码的
apiVersion: v1
kind: Secret
metadata:
name: test-secret
namespace: default
type: Opaque
data:
AppConfig.json: |-
BASE_64_ENCODED_JSON
在部署中,将secret/config 添加到volumes 节点并将volume mounts 和mountPath 设置为config.json 的路径。
volumeMounts:
- name: test-secretm
mountPath: PATH_OF_YOUR_CONFIG_JSON
volumes:
- name: test-secretm
secret:
secretName: test-secret
推荐阅读
- powerapps - 使用按钮显示文本标签
- javascript - 如何格式化我发送到 API 的数据
- scala - 在火花列中断言数组值
- reactjs - 元素 CardDescription 显示在其他元素之上
- r - 如何在 forecast::accuracy() 函数中提取 ME
- java - gradle 无法解决由 maven 解决的依赖关系
- java - 需要替换多个独立的if语句
- java - JPA remove() 一个 deteched 实体:find() 与 merge() - 哪个更好?
- loops - PowerBi - 计算的列计数连续相同的值
- python - 如何在 FastAPI 中对模型的所有字段启用过滤