我正在 Kubernetes 中部署 Quarkus 应用程序,它无法连接到 PostgreSQL 数据库,并出现以下错误:
FATAL: password authentication failed for user "<username>"
这是我的设置的一些背景:
数据库配置:
数据库凭据是通过 Helm 使用 GitHub Action 中的 --set 标志注入的:
--set env.DB_URL="${{ secrets.DB_URL_PROD }}" \
--set env.DB_USERNAME="${{ secrets.DB_USERNAME_PROD }}" \
--set env.DB_PASSWORD="${{ secrets.DB_PASSWORD_PROD }}"
应用程序配置为将这些值读取为环境变量: 属性
quarkus.datasource.jdbc.url=${DB_URL}
quarkus.datasource.username=${DB_USERNAME}
quarkus.datasource.password=${DB_PASSWORD}
Dockerfile 配置:
环境变量在 Dockerfile 中设置,但留空以便在运行时覆盖: dockerfile
ENV DB_URL=""
ENV DB_USERNAME=""
ENV DB_PASSWORD=""
GitHub 操作工作流程:
在 CI/CD 管道中,我使用本地 PostgreSQL 数据库进行测试。 我最近更新了密码,现在应该正确匹配。用户名也显示正确。我连接到天蓝色并将变量记录到控制台,这也是正确的。 本地发展:
我能够使用相同的凭据从本地计算机连接到此开发数据库,没有任何问题。
问题: 鉴于本地开发中使用相同的凭据,什么可能导致此身份验证失败? 问题是否在于 Kubernetes 或 Quarkus 中如何解释 DB_URL? Kubernetes、Helm 或 Quarkus 是否有任何特定的因素可能会导致此类环境变量或数据库连接问题?
任何见解或调试技巧将不胜感激。预先感谢!
原来密码已被缓存。我必须删除并重新上传所有服务并更改数据库的密码。