我正在尝试使用kubernetes创建yaml进行部署。我正在为不同的环境使用相同的脚本,它与命名空间分开。现在,我需要访问部署yaml中的命名空间名称,例如
"name":"$(namespace)"
yaml文件中的。是否可以这样做?
答案 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