我正在运行一个使用volumeClaimTemplates的statefulset。那里一切都很好。
我也有一个configmap,在这里我想用此配置文件所投影到的每个pod的Pod名称来替换一些条目;例如,如果configmap数据是:
ThisHost=<hostname -s>
OtherConfig1=1
OtherConfig1=2
...
然后对于名为
mypod-0
的有状态集pod,配置文件应包含ThisHost=mypod-0
和ThisHost=mypod-1
的mypod-1
。我该怎么办?
最佳答案
主机名默认包含在pod中的环境变量HOSTNAME
中。
如果您先进行以下操作,则可以修改configmap本身:
ThisHost=hostname -s
(这将使用该文本在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的语法可能需要进行一些调整,但是您明白了。
请让我知道是否有帮助。
关于kubernetes - 用一些环境变量替换configmap内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59302937/