我有一个Deployment
对象,我使用Downward API暴露POD ID。这很好用。但是,我想设置另一个env变量,log path,引用POD ID。但是,将该变量值设置为/var/log/mycompany/${POD_ID}/logs
不起作用,容器中没有创建日志。我可以让入口点脚本或应用程序知道POD ID,并建立日志路径,但我不想这么做
我有一个Deployment
对象,我使用Downward API暴露POD ID。这很好用。但是,我想设置另一个env变量,log path,引用POD ID。但是,将该变量值设置为/var/log/mycompany/${POD_ID}/logs
不起作用,容器中没有创建日志。我可以让入口点脚本或应用程序知道POD ID,并建立日志路径,但我不想这么做
4条答案
按热度按时间v2g6jxz61#
正确的语法是使用
$(FOO)
,如the documentation中所述;您使用的语法是“shell”语法,这不是kubernetes插值变量的方式。所以:字符串
另外请注意,如图所示,要扩展的变量必须在引用它的变量之前定义。
gg58donl2#
我想补充一下这个问题,前几天我们遇到的一个警告。根据the documentation:
变量引用$(VAR_NAME)使用容器中之前定义的环境变量和任何服务环境变量进行扩展。如果变量无法解析,则输入字符串中的引用将保持不变。
强调我的。如果你有
字符串
它会工作,但如果你有
型
如果你使用模板引擎来生成你的规格,要小心了。
mfuanj7w3#
下面是一个读取
metadata.name
的示例字符串
下面是另一个例子,它读取
metadata.namespace
型
另一个示例,演示如何从
metadata.labels
读取型
关键是因变量以后再定义
有关详细信息,请参阅this
yb3bgrhw4#
你也可以先添加一个secret,然后在你无数的部署文件中使用新创建的secret来共享同一个环境变量的值: