【问题标题】:Consuming entries of a ConfigMap created from property files使用从属性文件创建的 ConfigMap 的条目
【发布时间】:2016-11-26 01:48:28
【问题描述】:

文档 (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. 我们如何将单个条目(例如:enemys.cheat)作为 环境变量?
  2. 我们如何消费所有条目(例如:所有 game.properties 条目) 作为一组环境变量,假设我们只使用每个键作为 环境变量名?

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-02-06
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      相关资源
      最近更新 更多