Мы используем одно пространство имен для среды разработки и одно для промежуточной среды. Внутри каждого из этих пространств имен у нас есть несколько configMaps и секретов, но между двумя средами есть много общих переменных, поэтому нам хотелось бы иметь для них общий файл.
Есть ли способ иметь базовую configMap в пространстве имен по умолчанию и ссылаться на нее, используя что-то вроде:
- envFrom:
- configMapRef:
name: default.base-config-map
Если это невозможно, есть ли другой способ, кроме дублирования переменных через пространства имен?

Их нельзя использовать совместно, потому что к ним нельзя получить доступ из модуля за пределами его пространства имен. Имена ресурсов должны быть уникальными в пространстве имен, но не между пространствами имен.
Обходной путь - скопировать его.
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.
Вместо этого можно использовать следующую команду:
kubectl get secret <secret-name> --namespace=<source-namespace> -o yaml \
| sed 's/namespace: <from-namespace>/namespace: <to-namespace>/' \
| kubectl create -f -
Если кто-то все еще видит необходимость в флаге, есть скрипт экспорта, написанный @zoidbergwill.
Для тех, кто использует powershell, эта команда будет выглядеть так: kubectl get secret <secret-name> --namespace=<source-namespace> -o yaml | % {$_.replace("пространство имен: <исходное-пространство-имен>","пространство-имен: <назначение-пространство-имен>")} | кубектл создать -f -
Пожалуйста, используйте следующую команду для копирования из одного пространства имен в другое
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 -
Думаю, было бы неплохо, если бы k8s его поддерживал. однако это не так далеко. поэтому единственный способ - создать дубликаты на разных NS.