用一些环境变量替换configmap内容

时间:2019-12-12 10:51:42

标签: kubernetes configmap kubernetes-statefulset

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

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

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

然后对于名为mypod-0的有状态集pod,配置文件应包含ThisHost=mypod-0的{​​{1}}和ThisHost=mypod-1

我该怎么做?

1 个答案:

答案 0 :(得分:0)

默认情况下,主机名包含在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的语法可能需要进行一些调整,但是您明白了。

请让我知道是否有帮助。