使用 mamori 在 Go 中实现 Kubernetes ... 笔记

使用 mamori 在 Go 中实现 Kubernetes Secrets 和 ConfigMaps 的热重载(无需重启 Pod)

如果您在 Kubernetes 上运行 Go 服务,您一定熟悉这一流程。更新一个 Secret 或 ConfigMap 后,您通常会采取以下三种做法之一:执行 kubectl rollout restart deployment/my-app 并承担由此引发的中断。 安装 Reloader,以便在 Secret 变更时自动重启您的 Pod。 将 Secret 挂载为卷,并祈祷您的应用能够重新读取该文件(剧透:大多数应用仅在启动时读取一次)。这三种做法存在相同的缺陷:您“获取”配置变更的方式是丢弃当前进程并启动一个新进程。对于轮转数据库密码而言,这意味着所有正在进行的请求将被中断、连接池变冷以及延迟激增——仅仅为了更改一个字符串。