Membre depuis le 15/02/2020
hmm ça sent le problème de rafraîchissement d'app. vault-agent met à jour le fichier mais l'app ne relit pas le fichier. comment ton app lit le secret ? elle lit le fichier une fois au démarrage ou elle monitore les changements sur le fs ?
Membre depuis le 26/07/2024
exactement. faut que ton app soit capable de détecter le changement du fichier (inotify par exemple) ou que tu la redémarres. sinon le plus simple c'est d'utiliser l'init container de vault agent pour injecter le secret avant le démarrage de l'app et de laisser k8s redéployer le pod quand le secret change (via external-secrets ou vault-k8s-secret-controller)
Membre depuis le 03/11/2021
ouais ou ptete que le file descriptor est toujours ouvert sur l'ancien fichier. si ton app garde un fd ouvert, même si l'inode change, elle voit toujours l'ancienne version. c'est un piège classique avec les montages de secrets dans k8s (configmaps/secrets) si t'utilises pas subpath
Membre depuis le 01/04/2020
si c'est un volume emptydir partagé entre l'app et l'agent, vault-agent est censé mettre à jour le fichier directement. mais comme dit, l'app doit relire. des frameworks web le font nativement, d'autres non. quelle techno c'est ton app
Membre depuis le 15/02/2020
t'as vérifié les logs de vault-agent dans le sidecar ? il doit indiquer qu'il a écrit un nouveau secret. si ça se trouve c'est vault qui n'envoie pas les mises à jour à l'agent
Membre depuis le 06/06/2020
mon app est en java avec spring boot. par défaut spring ne relit pas les fichiers de config automatiquement. il les charge une fois au démarrage. j'avais pas pensé à l'inotify ou au redémarrage
Membre depuis le 26/07/2024
ah spring boot c'est chiant pour ça. t'as des libs comme spring-cloud-starter-vault-config qui peuvent aider mais ça demande une intégration plus poussée. sinon, la méthode bourrine c'est de redémarrer le pod. regarde du côté des contrôleurs comme external-secrets qui peuvent recréer un secret k8s et ainsi déclencher un rollout du deployment
Membre depuis le 03/11/2021
sinon tu peux faire un script dans vault-agent qui, après avoir écrit le secret, va faire un curl vers un endpoint de ton app pour la forcer à recharger la config. c'est pas super propre mais ça dépanne
Membre depuis le 06/06/2020
ok je vois. j'avais mis un
watch -n 1 ls -li /vault/secrets dans l'app et je voyais bien l'inode changer. mais comme vous dites, spring ne relit pas. je vais tester la solution avec external-secrets pour qu'il recrée le secret k8s et force un rollout du deployment. c'est plus propre que de redémarrer l'app manuellement ou un webhook. merci les gars
Vous devez être connecté pour poster un message !
Recevoir les derniers articles gratuitement en créant un compte !
S'inscrire
michel-barre
Membre depuis le 06/06/2020
salut les pros. j'essaie de mettre en place la rotation automatique des secrets vault pour nos applications dans k8s. j'utilise vault-agent pour injecter les secrets via un sidecar. ça marche pour l'injection initiale mais quand le secret est renouvelé dans vault (par exemple toutes les 5min pour un token db), l'app ne voit pas le nouveau secret. elle continue d'utiliser l'ancien même si le fichier est mis à jour dans le pod