J'ai créé un secret en utilisant 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?
Cela devrait fonctionner:
kubectl create secret generic production-tls \
--from-file=./tls.key --from-file=./tls.crt --dry-run -o yaml |
kubectl apply -f -
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.
Vous pouvez également utiliser l'opérateur =
ou |=
de jq
pour 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 -
Même si elle n’est peut-être pas aussi élégante ni aussi simple que l’approche kubectl create secret generic --dry-run
, techniquement, cette approche met réellement à jour les valeurs plutôt que de les supprimer/les recréer. Vous aurez également besoin des commandes jq
et base64
(ou openssl enc -base64
) disponibles. tr
est un utilitaire Linux communément disponible pour le rognage des nouvelles lignes.
Voir ici pour plus de détails sur jq
l'opérateur de mise à jour |=
.