Kong Helm Chart 基于 Postgres 启动失败问题排查:密码不同步与残留 PersistentVolume 的根治方案
发布时间:2026/10/8 22:50:11 锦皓数字建站

【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本指南聚焦于在 Kubernetes 集群中使用 Helm 部署 Kong 且数据后端选择 Postgres 时最常见的两类启动失败故障helm upgrade后 Kong 无法启动、以及全新安装时 Kong 无法连接数据库。文章将结合本仓库stable/kongchart 的迁移 Job、initContainer 与密码注入实现migrations.yaml、deployment.yaml、_helpers.tpl讲清故障根因并给出可立即执行的排查命令与规避方案。背景Postgres 模式下 Kong 的启动与密码链路Kong 的 Helm chart 支持无数据库DB-less、Postgres、Cassandra 三种数据后端其中 Postgres 是 Kubernetes 部署的推荐选择可通过postgresql.enabled: true随 chart 一并拉起一个 Postgres 实例依赖定义见 requirements.yaml。在这一模式下Kong 的启动涉及三条关键链路初始化迁移 Job当runMigrations: true且env.database非off时chart 会渲染一个*-init-migrationsJob执行kong migrations bootstrap见 migrations.yaml用于在首次部署时初始化数据库 schema。升级迁移 Jobhelm upgrade时会通过 Helm hook 触发pre-upgrade与post-upgrade两个迁移 Job分别执行kong migrations up与kong migrations finish见 migrations-pre-upgrade.yaml 与 migrations-post-upgrade.yaml。数据库就绪等待与密码注入Deployment 的proxy容器之前会挂载wait-for-dbinitContainer循环执行kong start直到数据库可用而数据库密码则是通过secretKeyRef从 Postgres 子 chart 生成的 Secret 中动态读取见 _helpers.tpl 中kong.final_env定义的KONG_PG_PASSWORD以及kong.wait-for-db定义。正是这第三条链路——密码从 Secret 动态注入——构成了 FAQ 中第一个故障的核心诱因。FAQ 一helm upgrade之后 Kong 启动失败如何处理故障现象与根因在 FAQs.md 中记录了这样一个高频问题使用 Postgres 时执行helm upgrade后 Kong 无法启动。该问题被追踪为 helm/charts 仓库的 issue #12575其上游根因是 helm/helm 的 issue #3053。故障链路如下Helm 在每次发布release时如果子 chart 的密码参数未显式指定会重新生成一个随机的 Postgres 密码并写入新的 Secret而 Postgres 的数据是持久化的——数据库中保存的是上一代 release 的旧密码chart 通过secretKeyRef将新 Secret 中的密码注入为KONG_PG_PASSWORD见 _helpers.tpl 中kong.final_env的KONG_PG_PASSWORD定义于是 Kong 拿新密码去连保存旧密码的数据库基于密码的认证必然失败Kong 进程随之反复启动失败。从源码可以印证kong.final_env中KONG_PG_PASSWORD引用的是{{ template kong.postgresql.fullname . }}这个 Secret 中的postgresql-password键migrations.yaml、deployment.yaml 中的迁移 Job 与proxy容器都使用同一套环境变量也就是说迁移 Job 与 Kong 主容器共用同一个密码来源——密码一旦错位从迁移到启动会全线失败。解决方案为 postgresql 子 chart 指定固定密码根治办法是为postgresql子 chart 显式设置一个固定密码确保每次升级时使用的都是同一个用户提供的密码而不是 Helm 随机生成的新密码。对应的 values.yaml 配置如下postgresql: enabled: true postgresqlPassword: 你的固定密码 # 关键固定密码防止升级时随机重建 postgresqlUsername: kong postgresqlDatabase: kong service: port: 5432这样无论执行多少次helm upgradeSecret 中的密码都保持不变与数据库中持久化的密码始终一致密码认证不再失配。补充建议若密码已经错位升级前应先核对当前 Secret 中的密码与数据库实际密码是否一致必要时先在数据库侧重置密码在 values.yaml 中postgresql段的默认值为enabled: false其下postgresqlUsername: kong、postgresqlDatabase: kong、service.port: 5432均已注释给出示例按需取消注释并填写即可。FAQ 二全新安装 Postgres 时 Kong 启动失败如何处理故障现象与根因第二个高频问题是全新安装fresh install时 Kong 启动失败。FAQ 给出的结论是请先确认集群中是否存在上一次 release 残留的 PersistentVolumePV。若存在残留 PV会导致数据或密码与当前 release 不同步进而引发连接问题。这与第一个问题其实是同一条根因链的另一个入口PV 是持久化载体只要数据卷还在里面的旧密码/旧数据就不会因为 release 删除而消失而新 release 的新 Secret 携带新密码两者再次错位。排查步骤使用以下命令检查当前命名空间下是否存在残留 PVkubectl get pv -n your-namespace重点观察输出的AGE列若存在创建时间远早于当前 release 的旧卷即为残留 PV残留 PV 是故障来源需要清理。处理流程确认存在残留 PV 后按顺序执行删除 releasehelm delete release-name旧版本 Helm 使用helm delete --purge release-name删除残留的 PersistentVolume执行一次全新的安装。需要特别提醒PV 的生命周期与命名空间解耦——即使删除了 PV 所在的命名空间这些 PersistentVolume 仍然会残留在集群中。因此清理时必须显式针对 PV 资源操作而不能指望删除 namespace 顺带清理。总结Postgres Kong 部署的三个预防要点密码显式固定只要使用postgresql子 chart就务必在 values 中固定postgresqlPassword这是规避helm upgrade密码失配的唯一直截了当的手段升级前检查 PV 残留在做任何重建、回滚或跨版本升级前用kubectl get pv -n namespace检查AGE及时清理旧卷避免假全新安装理解密码注入路径从源码可见迁移 Job、wait-for-dbinitContainer 与proxy容器共用同一份kong.final_env环境变量见 _helpers.tpl 与 deployment.yaml密码来源单一任何一处的 Secret 错位都会表现为 Kong 反复启动失败——排查时优先核对 Secret 与数据库两侧密码的一致性。若希望进一步了解该 chart 的其他部署形态DB-less、Ingress Controller 模式与全部可配置参数可阅读同目录下的 README.md 与默认配置 values.yaml。需要注意的是本仓库中的该 chart 已标记为 DEPRECATED官方推荐迁移至 Kong 维护的独立 chart 仓库但本文所述故障机理与排查思路对迁移后的部署依然适用。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐解决Nextcloud AIO Helm Chart中Collabora启动失败的终极方案解决Nextcloud AIO Helm Chart中Collabora启动失败的终极方案 Nextcloud AIOAll in One是官方推荐的Nex云原生运维后端容器编排ExplorerPatcher完全清理手册系统残留问题的根治方案ExplorerPatcher完全清理手册系统残留问题的根治方案 你是否在卸载ExplorerPatcher后遭遇系统异常任务栏设置丢失、桌面显示错乱、系统桌面应用系统编程深度解析Azure AKS私有DNS区域残留问题的技术根源与根治方案深度解析Azure AKS私有DNS区域残留问题的技术根源与根治方案 问题背景被遗忘的DNS孤岛 当你在Azure Kubernetes ServiceA创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。