首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes上env变量的字符串运算

Kubernetes上env变量的字符串运算
EN

Stack Overflow用户
提问于 2016-11-30 13:33:21
回答 2查看 13.7K关注 0票数 26

我有一个关于Kubernetes YAML字符串操作的问题。

我需要根据已部署的容器的主机名设置env变量,并向该变量追加端口号。

代码语言:javascript
复制
 env:
    - name: MY_POD_NAME
      valueFrom:
        fieldRef:
          fieldPath: metadata.name

如何创建另一个使用MY_POD_NAME的env变量,使其看起来像uri://$MY_POD_NAME:9099/

这必须定义为env变量。是否允许在Kubernetes YAML文件中进行字符串操作?

EN

回答 2

Stack Overflow用户

发布于 2017-06-19 07:08:57

你可以做这样的事

代码语言:javascript
复制
- name: MY_POD_NAME
  valueFrom:
    fieldRef:
      fieldPath: metadata.name
- name: MY_POD_URI
  value: "uri://$(MY_POD_NAME):9099/"

从K8s 1.4开始我们就使用它了

$()是由k8s自己处理的,并不是在任何地方都能工作,而是适用于env变量。

如果容器包含bash,还可以利用bash变量展开。

代码语言:javascript
复制
"command": ["/bin/bash"],
"args": [ "-c",
         "MY_POD_URI_BASH=uri://${MY_POD_NAME}:9099/ originalEntryPoint.sh
       ],

${}不受k8s的影响,但稍后在容器中通过bash进行评估。如果有机会,请选择使用$()的第一个选项

备注:订单在声明中起着重要作用。在上面的示例中,如果稍后在env数组中定义了MY_POD_NAME,则扩展将无法工作。

票数 64
EN

Stack Overflow用户

发布于 2016-12-01 21:42:34

你不能直接这么做。

您应该使用可以访问的Pod ENV变量运行启动脚本,以设置所需的任何附加变量,然后在启动脚本中启动服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40889743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档