web-dev-qa-db-ja.com

Kubernetes-名前空間間で秘密を共有する

Kubernetesの名前空間間で秘密を共有する方法はありますか?

私の使用例は、すべてのネームスペースに同じプライベートレジストリがあり、それぞれに同じシークレットが作成されないようにすることです。

ご協力いただきありがとうございます。

39
matth3o

シークレットAPIオブジェクトは名前空間に存在します。それらは、同じ名前空間のポッドによってのみ参照できます。基本的に、すべての名前空間の秘密を作成する必要があります。

https://kubernetes.io/docs/concepts/configuration/secret/#details

33
Innocent Anigbo

それらは、同じ名前空間のポッドによってのみ参照できます。ただし、1つの名前空間から別の名前空間に秘密をコピーするだけです。 localdockerregシークレットをdefault名前空間からdevにコピーする例を次に示します。

 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 -

Innocent Anigboが答えたように、同じ名前空間に秘密を保持する必要があります。それを動的にサポートする必要がある場合、または秘密の作成を忘れないようにする必要がある場合は、名前空間オブジェクトの初期化子を作成することが可能かもしれません https://kubernetes.io/docs/admin/extensible-admission-controllers/ (自分でそれをやったことがないので、確実に言うことはできません

kubectl get secret gitlab-registry --namespace = revsys-com --export -o yaml |\kubectl apply --namespace = devspectrum-dev -f-

0
user128364