使用从属性文件创建的ConfigMap条目

时间:2016-11-25 17:01:16

标签: docker kubernetes

消费值的文档(http://kubernetes.io/docs/user-guide/configmap/)上的示例基于ConfigMap,其中每个数据条目都是一对/值。例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: special-config
  namespace: default
data:
  special.how: very
  special.type: charm

但是,当我们从属性文件创建ConfigMap时,每个数据条目值本身都是键/对值的列​​表。例如:

$ kubectl get configmaps game-config -o yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: game-config
  [...]
data:
  game.properties: |-
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30
  [...]

在这种情况下:

  1. 我们如何使用单个条目(例如:enemies.cheat)作为 环境变量?
  2. 我们如何使用所有条目(例如:所有game.properties条目) 作为一组环境变量,假设我们只使用每个键作为 环境变量名称?

1 个答案:

答案 0 :(得分:4)

您不能使用单个条目,因为它只是一大块文本。我看到了两个选项:

  1. 不要从文件创建配置图。而是手动在ConfigMap中创建每个条目。您必须单独使用每个密钥,至少在解决this issue之前。

  2. 不要将ConfigMap用作环境变量。而是将该密钥作为卷安装,并让您的应用程序读取密钥/值。

  3. 看起来第二种选择对你来说很有效。它允许您继续从文件生成ConfigMap,并且还允许您使用所有声明的键/值,而无需不断更改Kubernetes清单。

    将ConfigMap作为卷安装的另一个好处是,它允许您对配置执行就地更新(假设您的应用程序可以容忍)。如果将ConfigMap键作为环境变量挂载,则更新它们的唯一方法是重新启动应用程序。

相关问题