如何从yaml文件访问kubernetes命名空间

时间:2017-10-31 04:02:31

标签: kubernetes

我正在尝试使用kubernetes创建yaml进行部署。我正在为不同的环境使用相同的脚本,它与命名空间分开。现在,我需要访问部署yaml中的命名空间名称,例如

"name":"$(namespace)"
yaml文件中的

。是否可以这样做?

1 个答案:

答案 0 :(得分:0)

编辑抱歉,我可能误解了您的问题:如果您想要访问运行Pod的当前命名空间,可以通过env: valueFrom:构造将其注入其环境中,更详细地描述here

env:
- name: MY_NAMESPACE
  valueFrom:
    fieldRef:
        fieldPath: metadata.namespace

忽略yaml中的namespace:并将其kubectl提升为kubectl --namespace=foo1 create -f my-thing.yaml(当然,假设你正在使用kubectl;背后的想法是答案是一样的,只要使用不同的方法,机制就会改变)

您还可以在上下文中的~/.kube/config中指定默认命名空间,并以这种方式解决:kubectl --context=server-foo1,它允许将不同的凭据与不同的命名空间相关联。它们最终归结为同样的效果,它只是对你的情况最方便的问题。

最极端(?)形式是你也可以有多个配置并通过env KUBECONFIG=$TMPDIR/foo1.yaml kubectl create -f my-thing.yaml

在它们之间切换