常驻 pod 通过 watch1 监听 secrets 变化。
- watch 是通过 http 实现,无法长久保持连接2
- 重启监听后,为了防止重复处理已处理过的 secrets,需管理
resourceVersion
1, 也就需要持久化resourceVersion
,可使用emptyDir
(pod重启不会清理)。 - 常驻意味着长期占用 CPU/RAM,
watch
是否吃 k8s 资源也未知。
定期执行更新
- 无法通过
resourceVersion
防重复处理,因为历史记录默认只有5分钟1。 - 如需持久化,无法使用
emptyDir
,任务间无法共享数据。 - 不存在
modifiedTimestamp
这样的信息来防重复处理。 - 可以保存 json 数据进 annotation,通过
lastAppliedDigest
的机制来防重复提交到 cdn。
cronjob: 每天跑一次遍历所有证书并更新
k8s 提供针对资源更新后自动执行的 Job