【问题标题】:replace configmap contents with some environment variables用一些环境变量替换 configmap 内容
【发布时间】:2019-12-12 10:51:42
【问题描述】:

我正在运行一个使用volumeClaimTemplates 的statefulset。那里一切都很好。

我还有一个 configmap,我想用这个配置文件投影到的每个 pod 的 pod 名称来替换一些条目;例如,如果 configmap 数据是:

ThisHost=<hostname -s>
OtherConfig1=1
OtherConfig1=2
...

那么对于名为 mypod-0 的 statefulset pod,配置文件应该包含 ThisHost=mypod-0ThisHost=mypod-1 for mypod-1

我该怎么做?

【问题讨论】:

    标签: kubernetes configmap kubernetes-statefulset


    【解决方案1】:

    主机名包含在 Pod 内的环境变量中,默认情况下称为 HOSTNAME。 如果你先修改配置映射本身是可能的:

    • 挂载 configmap 并将其设置为 ThisHost=hostname -s(这将在 pod 的文件系统中创建一个包含该文本的文件)
    • 在启动时将替换命令传递给 pod(类似于$ sed 's/hostname/$HOSTNAME/g' -i /path/to/configmapfile

    基本上,您挂载 configmap,然后将其替换为 pod 中可用的环境变量信息。这只是一个替换操作。

    看下面的例子:

    apiVersion: v1
    kind: Pod
    metadata:
    name: command-demo
    labels:
    purpose: demonstrate-command
    spec:
    containers:
    - name: command-demo-container
    image: debian
    command: ["sed"]
    args: ["'s/hostname/$HOSTNAME'", "-i", "/path/to/config/map/mount/point"]
    restartPolicy: OnFailure
    

    args 的语法可能需要一些调整,但你明白了。

    如果有帮助,请告诉我。

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-09
      • 2016-06-05
      • 1970-01-01
      • 2014-06-17
      • 2019-09-06
      相关资源
      最近更新 更多