Kubernetes-在命名空间之间共享秘密

有没有一种方法可以在Kubernetes中的命名空间之间共享秘密?

我的用例是:我的所有名称空间都具有相同的私有注册表,并且我想避免为每个名称空间创建相同的秘密。

谢谢你的帮助。

matth3o asked 2020-06-25T19:07:18Z
5个解决方案
41 votes

秘密API对象位于名称空间中。 它们只能由同一名称空间中的pod引用。 基本上,您将必须为每个名称空间创建秘密。

[HTTPS://苦逼儿呢特殊.IO/docs/concepts/configuration/secret/#details]

Innocent Anigbo answered 2020-06-25T19:07:36Z
34 votes

它们只能由同一名称空间中的pod引用。 但是您可以将秘密从一个名称空间复制到另一个名称空间。 这是将2389938269276570625命名空间中的--export机密复制到2938938269276570570的示例:

 kubectl get secret localdockerreg --namespace=default --export -o yaml | kubectl apply --namespace=dev -f -

更新

在Kubernetes v1.14中不推荐使用--export标志。 因此,以下带有-oymal标志的命令将在即将发布的版本中运行而不会发出警告。

kubectl get secret localdockerreg --namespace=default -oyaml | kubectl apply --namespace=dev -f -
Hansika Madushan Weerasena answered 2020-06-25T19:08:05Z
2 votes

正如Innocent Anigbo回答的那样,您需要在同一名称空间中拥有秘密。 如果您需要动态地支持它或避免忘记秘密创建,则可能可以为名称空间对象[https://kubernetes.io/docs/admin/extensible-admission-controllers/]创建初始化程序( 我自己的,所以无法确定)

Radek 'Goblin' Pieczonka answered 2020-06-25T19:08:26Z
0 votes

kubectl获取秘密gitlab-registry --namespace = revsys-com --export -o yaml | \ kubectl apply --namespace = devspectrum-dev -f-

user128364 answered 2020-06-25T19:08:46Z
0 votes

可接受的答案是正确的,如果您要在名称空间之间复制机密,则这里有个提示。

kubectl get secret <secret-name> -n <source-namespace> -o yaml \
| sed s/"namespace: <source-namespace>"/"namespace: <destination-namespace>"/\
| kubectl apply -n <destination-namespace> -f -
NicoKowe answered 2020-06-25T19:09:06Z
translate from https://stackoverflow.com:/questions/46297949/kubernetes-sharing-secret-across-namespaces