使用Kubernetes ConfigMaps的应用程序配置文件

时间:2018-10-12 20:12:03

标签: docker kubernetes vmware

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

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

专家建议将不胜感激。

1 个答案:

答案 0 :(得分:4)

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