已成功将Vault与Kubernetes集成,并使运行在K8s上的应用程序从Hashicorp Vault获取它们的环境变量。一切进展顺利!但是,想要更进一步,希望在Vault中更改密钥时能自动重启Pod,目前每次更改Vault密钥时都必须手动重启Pod以重新设置环境变量。如何实现这一点?听说过confd,但不确定如何实现!
已成功将Vault与Kubernetes集成,并使运行在K8s上的应用程序从Hashicorp Vault获取它们的环境变量。一切进展顺利!但是,想要更进一步,希望在Vault中更改密钥时能自动重启Pod,目前每次更改Vault密钥时都必须手动重启Pod以重新设置环境变量。如何实现这一点?听说过confd,但不确定如何实现!
可以使用重新加载器https://github.com/stakater/Reloader。我们在集群中发现它非常有用。由于它执行滚动更新,因此您也可以在零停机时间下更改配置。如果您在configmap中犯了一些错误,也可以轻松进行回滚。
定期重启Pod。一种可行的方法是使用存活探针,例如this answer。缺点是如果没有额外的脚本,就无法将存活探针用作真正的健康检查。
创建一个操作员,轮询Vault以获取更改,并指示Kubernetes在检测到更改时重新启动Pod。不确定Vault是否具有可用于此目的的事件API。
最后,出于好奇心,想到了一个构建操作员的想法,以监视Vault中特定秘密引擎的任何更改,并重新启动在自定义资源中定义的相应部署的Pod。这是关于它的中介博客和代码库 - https://medium.com/@ashitacharya1/the-auto-rollout-of-kubernetes-pods-upon-change-of-hashicorp-vault-secrets-kopf-operator-670aa670def0 对一些人可能有所帮助。
https://www.vaultproject.io/docs/agent/template#renewals-and-updating-secrets
如果一个秘密或令牌不可更新或租赁,Vault代理将每5分钟获取一次秘密。这是不可配置的。不可更新的秘密包括(但不限于)KV版本2。