You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure CSI Key Vault Provider运行中Pod动态更新密钥问题咨询

核心结论

Azure Key Vault CSI驱动的自动轮换能力原生不支持直接刷新运行中Pod内已挂载的密钥内容,你测试等60分钟没看到更新是默认机制下的正常现象,不是配置错误。

原生自动轮换的实际逻辑

官方文档提到的autorotation能力,本质是CSI驱动按固定间隔轮询Azure Key Vault拉取最新的密钥值,更新节点本地的驱动缓存:

  • 如果你没有额外配置同步规则,这些更新后的缓存内容只会在Pod重启、重新调度、或者新建Pod的时候被注入容器
  • 驱动默认的轮询间隔是2小时,你只等60分钟本身也没到默认轮询周期,自然看不到变化
  • 轮询间隔可以通过SecretProviderClass的参数自定义,但是改这个参数只会调整驱动拉取Key Vault的频率,不会解决运行中Pod不更新的问题

无需重启Pod的落地方案

以下几个方案都是生产环境实测可用的,不需要重启业务Pod就能实现密钥自动更新:

  • 方案1:使用CSI驱动的K8s原生Secret同步模式
    在SecretProviderClass资源中增加secretObjects配置段,让CSI驱动把Key Vault里的密钥自动同步成集群内的原生Kubernetes Secret,业务容器改为挂载这个自动同步的原生Secret,而不是直接挂载CSI临时卷。
    这个模式下的更新链路是:CSI驱动按配置的间隔拉取Key Vault最新值 → 更新对应的K8s Secret → kubelet按默认1分钟的同步周期,把新的Secret内容自动同步到所有挂载该Secret的运行中Pod的挂载路径里,全程不需要重启容器,业务无感知。
    AKS 1.24及以上版本默认预装的CSI驱动版本都支持这个能力,不需要额外升级组件。
  • 方案2:轻量触发卷重挂载(不生成K8s原生Secret)
    如果你出于安全考虑不想把密钥同步成集群内的K8s Secret,可以在开启CSI自动轮换(配置enableSecretRotation: "true"+自定义rotationPollInterval)的基础上,给业务Pod加一个极低资源占用的sidecar容器,定时比对节点上CSI驱动缓存的密钥hash和容器内当前挂载的密钥hash,当检测到内容不一致时,触发对应CSI卷的重挂载操作即可。
    重挂载操作只会刷新对应卷的文件内容,不会重启业务容器,也不会中断业务进程。
  • 方案3:业务侧适配热加载逻辑
    如果你的业务本身支持配置热加载,可以配合方案1的原生Secret同步能力,在业务代码里加inotify监听逻辑,当检测到挂载路径下的密钥文件发生变更时,自动触发业务侧的密钥重载逻辑,不需要重启进程,密钥生效延迟可以控制在1分钟以内。

常见配置避坑

  • 不要把密钥通过环境变量注入容器,环境变量的值在容器启动后就无法修改,必须重启容器才能更新,完全不支持热轮换
  • 如果用AKS官方扩展安装的Key Vault CSI驱动,不要手动修改节点上驱动的静态配置,所有轮换相关的参数都通过SecretProviderClass配置,避免集群升级时配置被重置
  • 如果测试的时候发现同步延迟高,可以把rotationPollInterval调到3-5分钟,不建议设得太短,避免触发Key Vault的API限流

内容的提问来源于stack exchange,提问作者thepip3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:06:20