2016-06-21 28 views
7

Quando si aggiorna un file dei segreti di kubernetes, per applicare le modifiche, è necessario eseguire kubectl apply -f my-secrets.yaml. Se esistesse un container funzionante, userebbe ancora i vecchi segreti. Per applicare i nuovi segreti sul contenitore in esecuzione, eseguo attualmente il comando kubectl replace -f my-pod.yaml. Mi chiedevo se questo è il modo migliore per aggiornare un contenitore in esecuzione segreto, o mi manca qualcosa.L'aggiornamento dei segreti di kubernetes non aggiorna i vani del contenitore in esecuzione

Grazie.

risposta

6

The secret docs for users dire questo:

segreti montati vengono aggiornate automaticamente Quando un essere segreto già consumato in un volume viene aggiornato, le chiavi proiettate sono infine aggiornati pure. Il tempo di aggiornamento dipende dal periodo di sincronizzazione di Kubelet.

I segreti montati vengono aggiornati. La domanda è quando. Nel caso in cui un contenuto di un segreto venga aggiornato non significa che l'applicazione lo consuma automaticamente. È compito della tua applicazione osservare le modifiche ai file in questo scenario per agire di conseguenza. Tenendo presente questo, al momento è necessario fare un po 'più di lavoro. Un modo che ho in mente in questo momento sarebbe quello di eseguire un scheduled job in Kubernetes che comunica con l'API di Kubernetes per avviare una nuova implementazione del tuo deployment. In questo modo potresti teoricamente ottenere ciò che vuoi rinnovare i tuoi segreti. In qualche modo non è elegante, ma questo è l'unico modo che ho in mente al momento. Devo ancora controllare di più sui concetti di Kubernetes. Quindi, per favore abbiate pazienza con me.

+0

Un altro modo per monitorare il segreto sarebbe usare 'inotify' e guardare la directory in cui è montato. –

7

In base alla progettazione, Kubernetes non invia aggiornamenti segreti ai pod in esecuzione. Se si desidera aggiornare il valore segreto per un pod, è necessario distruggere e ricreare il pod. Potete leggere di più su di esso here.

+4

Su http://kubernetes.io/docs/user-guide/secrets/, in "I segreti montati vengono aggiornati automaticamente", dice altrimenti, almeno lo capisco in questo modo. O è questo un altro caso? –

3

Supponendo che abbiamo in esecuzione pod myPOD [segreto montato come mYsEcret in baccello spec]

possiamo cancellare l'esistente segreto

kubectl delete secret mysecret 

ricreare lo stesso segreto con file aggiornato

kubectl create secret mysecret <updated file/s> 

quindi fare

kubectl apply -f ./mypod.yaml 

controlla i segreti all'interno di mypod, sarà aggiornato.

Problemi correlati