【问题标题】:Application Config file using Kubernetes ConfigMaps使用 Kubernetes ConfigMaps 的应用程序配置文件
【发布时间】:2018-10-12 20:12:03
【问题描述】:

我想问一下,在以下情况下,为我的应用传递配置文件的首选方式或最佳方式是什么。

我的应用程序是在 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 镜像被推送到我的私有存储库。

非常感谢专家的建议。

【问题讨论】:

  • 听起来你已经知道 ConfigMaps;你遇到了什么问题?
  • 最好的做法是将我的配置文件推送到容器的指定目录中,然后在主机上不留下任何痕迹。我在 ConfigMap 中看到的问题是凭据将驻留在 Kubernetes 中,任何对 configMap 具有读取权限的人都可以看到。但是我想要一个更喜欢在构建集群和 PHEWWWW 时提供配置文件的解决方案。
  • 如果问题是将原始数据传递给有权访问 configmap 描述的每个人,您应该对密码和敏感信息使用 secret

标签: docker kubernetes vmware


【解决方案1】:

您可以创建 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

【讨论】:

    猜你喜欢
    • 2020-08-22
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多