【发布时间】:2017-10-31 14:05:00
【问题描述】:
我正在尝试创建 yaml 以使用 kubernetes 进行部署。我对不同的环境使用相同的脚本,它用命名空间分隔。现在,我需要访问部署 yaml 中的命名空间名称,例如
"name":"$(namespace)"
在 yaml 文件中。有可能吗?
【问题讨论】:
标签: kubernetes
我正在尝试创建 yaml 以使用 kubernetes 进行部署。我对不同的环境使用相同的脚本,它用命名空间分隔。现在,我需要访问部署 yaml 中的命名空间名称,例如
"name":"$(namespace)"
在 yaml 文件中。有可能吗?
【问题讨论】:
标签: kubernetes
edit 抱歉,我可能误解了你的问题:如果你想访问 Pod 正在运行的当前命名空间,你可以通过 env: valueFrom: 构造将其注入到它的环境中,描述更详细here:
env:
- name: MY_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
从 yaml 中省略 namespace: 并将其作为 kubectl --namespace=foo1 create -f my-thing.yaml 提供给 kubectl(当然,假设您使用的是 kubectl;答案背后的想法是相同的,只是机制会改变如果使用不同的方法)
您还可以在上下文中指定~/.kube/config 中的默认命名空间,并以这种方式对其进行寻址:kubectl --context=server-foo1 这也允许将不同的凭据与不同的命名空间相关联。它们最终都归结为相同的效果,只是哪种情况最适合您的情况。
最极端的(?)形式是你也可以有多个配置并通过env KUBECONFIG=$TMPDIR/foo1.yaml kubectl create -f my-thing.yaml在它们之间切换
【讨论】: