2016-06-21 9 views
7

Currenly beim Aktualisieren einer kubernetes Secrets-Datei, um die Änderungen anwenden, muss ich kubectl apply -f my-secrets.yaml ausführen. Wenn es einen laufenden Container gäbe, würde er immer noch die alten Geheimnisse verwenden. Um die neuen Geheimnisse auf den laufenden Container anzuwenden, führe ich den Befehl kubectl replace -f my-pod.yaml aus. Ich frage mich, ob dies der beste Weg ist, ein laufendes Containergeheimnis zu aktualisieren, oder fehlt mir etwas.Update kubernetes Geheimnisse aktualisiert nicht laufenden Container env vars

Danke.

Antwort

6

The secret docs for users sagen dies:

Mounted Secrets automatisch aktualisiert werden, wenn ein geheimes Wesen bereits in einem Volumen verbraucht wird aktualisiert, projiziert Tasten und schließlich aktualisiert werden. Die Aktualisierungszeit hängt von der Kubelet-Synchronisierungsperiode ab.

Mounted Secrets werden aktualisiert. Die Frage ist wann. Wenn der Inhalt eines Geheimnisses aktualisiert wird, heißt das nicht, dass Ihre Anwendung es automatisch konsumiert. Es ist die Aufgabe Ihrer Anwendung, Dateiänderungen in diesem Szenario zu beobachten, um entsprechend zu agieren. Vor diesem Hintergrund müssen Sie derzeit etwas mehr arbeiten. Eine Möglichkeit, die ich im Moment im Sinn habe, wäre, eine scheduled job in Kubernetes auszuführen, die mit der Kubernetes API kommuniziert, um eine neue Einführung Ihrer deployment zu initiieren. Auf diese Weise könnten Sie theoretisch erreichen, was Sie Ihre Geheimnisse erneuern möchten. Es ist irgendwie nicht elegant, aber das ist der einzige Weg, den ich mir im Moment vorstelle. Ich muss noch mehr nach den Kubernetes-Konzepten suchen. Also bitte bitte mit mir.

+0

Eine andere Möglichkeit, das Geheimnis zu überwachen, wäre 'inotify' zu verwenden und das Verzeichnis zu beobachten, in dem es installiert ist. –

7

Durch Design wird Kubernetes keine Secret-Updates zum Ausführen von Pods durchführen. Wenn Sie den Secret-Wert für einen Pod aktualisieren möchten, müssen Sie den Pod zerstören und neu erstellen. Sie können mehr darüber lesen here.

+4

Auf http://kubernetes.io/docs/user-guide/secrets/, bei "Mounted Secrets werden automatisch aktualisiert" heißt es anders - zumindest verstehe ich es so. Oder ist das ein anderer Fall? –

3

Angenommen, wir pod mypod laufen haben [montiert geheim wie mysecret in pod spec]

Wir können das bestehende Geheimnis löschen

kubectl delete secret mysecret 

das gleiche Geheimnis neu mit aktualisierten Datei

kubectl create secret mysecret <updated file/s> 

dann tun

kubectl apply -f ./mypod.yaml 

überprüfen Sie die Geheimnisse in Mypod, wird es aktualisiert werden.