151 votes

Comment puis-je mettre à jour un secret sur Kubernetes quand il est généré à partir d'un fichier?

J'ai créé un secret avec kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt .

Si je souhaite mettre à jour les valeurs, comment puis-je procéder?

353voto

ocsi Points 1

Cela devrait fonctionner:

 kubectl create secret generic production-tls \
    --from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml | 
  kubectl apply -f -
 

95voto

P.J.Meisch Points 4782

Vous pouvez supprimer et recréer immédiatement le secret:

 kubectl delete secret production-tls
kubectl create secret generic production-tls --from-file=./tls.key --from-file=./tls.crt
 

J'ai mis ces commandes dans un script, au premier appel, vous recevez un avertissement concernant le secret (pas encore) existant, mais cela fonctionne.

12voto

Devy Points 588

Alternativement, vous pouvez également utiliser jqs' = ou |= de l'opérateur de mettre à jour les secrets à la volée.

TLS_KEY=$(base64 < "./tls.key" | tr -d '\n')
TLS_CRT=$(base64 < "./tls.crt" | tr -d '\n')
kubectl get secrets production-tls -o json \
        | jq '.data["tls.key"] |= "$TLS_KEY"' \
        | jq '.data["tls.crt"] |= "$TLS_CRT"' \
        | kubectl apply -f -

Bien qu'il pourrait ne pas être élégant, simple ou que l' kubectl create secret generic --dry-run approche, techniquement, cette approche est véritablement mise à jour des valeurs plutôt que de les supprimer/recréer. Vous aurez également besoin d' jq et base64 (ou openssl enc -base64) des commandes disponibles, tr , qui est communément disponible Linux utilitaire pour la coupe de fuite des retours à la ligne.

Voir ici pour plus de détails sur jq mise à jour opérateur |=.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X