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

Minikube环境下PostgreSQL作为Helm依赖部署后无法连接排查

正常可运行配置

我可以正常执行以下操作,无任何报错:

  • 安装PostgreSQL:helm install postgresql bitnami/postgresql
  • 获取对应密码:export POSTGRES_PASSWORD=$(kubectl get secret --namespace default postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
  • 使用测试命令连接:kubectl run postgresql-client --rm --tty -i --restart='Never' --namespace default --image docker.io/bitnami/postgresql:11.13.0-debian-10-r25 --env="PGPASSWORD=$POSTGRES_PASSWORD" --command -- psql --host postgresql -U postgres -d postgres -p 5432
  • 在提示符下使用\l列出所有库表
  • 退出并删除部署:helm delete postgresql
异常场景说明

我新建了自定义Helm Chart,Chart.yaml文件内容如下,values.yaml初始为空:

apiVersion: v2
name: test
description: testing
type: application
version: 0.0.1
appVersion: 0.0.1

dependencies:
- name: postgresql
  version: 10.9.5
  repository: https://charts.bitnami.com/bitnami

使用helm install test .部署正常,随后可通过类似方式获取密码:

export POSTGRES_PASSWORD=$(kubectl get secret test-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode)
echo ${POSTGRES_PASSWORD}

运行客户端连接命令时报错:

kubectl run test-postgresql-client --rm --tty -i --restart='Never' \
      --image docker.io/bitnami/postgresql:11.13.0-debian-10-r25 \
      --env="PGPASSWORD=$POSTGRES_PASSWORD" \
      --command \
      -- psql --host test-postgresql -U postgres -d postgres -p 5432

报错信息如下:

sql: FATAL: password authentication failed for user "postgres"
pod "test-postgresql-client" deleted
pod default/test-postgresql-client terminated (Error)

后续我在values.yaml中添加了如下配置:

global:
  # Dependency: PostgreSQL
  postgresql:
    postgresqlDatabase: my-test
    postgresqlUsername: my-test
    postgresqlPassword: my-test

进入启动的Pod检查Secret,确认配置已正确生效,但使用对应凭证连接仍出现同类报错。请问我在Chart配置中遗漏了什么项,才能将PostgreSQL作为依赖部署并正常连接?


问题解答

你碰到的问题有三个核心原因:

  1. 你在配置中指定的用户名是my-test、数据库名是my-test,但连接命令里仍然用-U postgres指定默认超级用户、用-d postgres指定默认库,账号和库名不匹配自然报错。
  2. 你使用的10.x版本Bitnami PostgreSQL Chart默认不会创建postgres超级用户,除非你显式开启对应配置。
  3. 如果你是先部署过一次空values的Chart,后续再修改配置升级,旧的PVC会保留第一次初始化的账号信息,不会随配置更新自动修改。

解决方法

方案1:直接用自定义配置的账号连接

调整连接命令的用户名和库名即可:

kubectl run test-postgresql-client --rm --tty -i --restart='Never' \
      --image docker.io/bitnami/postgresql:11.13.0-debian-10-r25 \
      --env="PGPASSWORD=my-test" \
      --command \
      -- psql --host test-postgresql -U my-test -d my-test -p 5432

方案2:需要保留postgres超级用户的场景

修改values.yaml添加超级用户开启配置:

global:
  postgresql:
    postgresqlDatabase: my-test
    postgresqlUsername: my-test
    postgresqlPassword: my-test
    auth:
      # 开启postgres超级用户创建
      enablePostgresUser: true
      # 配置postgres用户的密码
      postgresPassword: 自定义postgres用户密码

修改配置后需要先删除部署和对应的PostgreSQL PVC,再重新部署,否则旧数据卷里的初始化账号信息不会更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:39:01