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

Osc*_*sso 6 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
Run Code Online (Sandbox Code Playgroud)

但是,当我们从属性文件创建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
  [...]
Run Code Online (Sandbox Code Playgroud)

在这种情况下:

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

Pix*_*ant 4

您无法使用单个条目,因为它只是一大块文本。我看到你有两个选择:

  1. 不要从文件创建配置映射。而是手动创建 ConfigMap 中的每个条目。不过,您必须单独使用每个密钥,至少在这个问题得到解决之前是这样。

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

看来第二个选项很适合你。它可以让您继续从文件生成 ConfigMap,还可以让您使用所有声明的键/值,而无需不断更改 Kubernetes 清单。

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