我们在开发环境中使用一种命名空间,在暂存环境中使用一种命名空间。在每个名称空间中,我们都有几个configMap和秘密,但是两个环境之间有很多共享变量,因此我们希望为它们创建一个公共文件。
是否有一种方法可以将基本configMap放入默认名称空间,并使用类似以下内容的名称进行引用:
- envFrom:
- configMapRef:
name: default.base-config-map
如果这不可能,除了通过命名空间复制变量之外,别无其他方法吗?
答案 0 :(得分:0)
它们无法共享,因为无法从其名称空间之外的pod进行访问。资源名称必须在名称空间内唯一,但在名称空间之间不唯一。
解决方法是将其复制过来。
在命名空间之间复制机密
$ kubectl get secret <secret-name> — namespace=<source-namespace> — export -o yaml |\ kubectl apply — namespace=<destination-namespace> -f -
在名称空间之间复制配置映射
$ kubectl get configmap <configmap-name> — namespace=<source-namespace> — export -o yaml |\ kubectl apply — namespace=<destination-namespace> -f -
标记export
在1.14 Deprecate --export flag from get command #73787中已弃用
而是可以使用以下命令:
kubectl get secret <secret-name> — namespace=<source-namespace> -o yaml | sed ‘s/namespace: <from-namespace>/namespace: <to-namespace>/’ | kubectlcreate -f
如果仍然有人需要该标志,则export script由@zoidbergwill写的,做得很好。
答案 1 :(得分:-1)
请使用以下命令从一个名称空间复制到另一个名称空间
kubectl get configmap <configmap-name> -n <source-namespace> -o yaml | sed 's/namespace: <source-namespace>/namespace: <dest-namespace>/' | kubectl create -f -
kubectl get secret <secret-name> -n <source-namespace> -o yaml | sed 's/namespace: <source-namespace>/namespace: <dest-namespace>/' | kubectl create -f -