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

Percona-PostgreSQL Operator v2.6.0如何为用户设置默认密码

问题

在本地kind环境的Kubernetes集群中,使用Percona-PostgreSQL Operator部署PostgreSQL时,尝试为用户设置默认密码但未成功。自定义创建的postgres-user-secret Secret会被Operator覆盖,想确认是否可以设置默认密码,还是只能使用Operator生成的密码。

用户的配置YAML:

apiVersion: pgv2.percona.com/v2
kind: PerconaPGCluster
metadata:
  name: postgres-cluster
  #namespace: postgres
spec:
  image: perconalab/percona-postgresql-operator:main-ppg17-postgres
  postgresVersion: 17
  users:
    - name: postgres
      databases:
        - quotesdb
      options: "SUPERUSER"
      password:
        type: ASCII
      secretName: postgres-user-secret

  proxy:
    pgBouncer:
      replicas: 1
      image: percona/percona-postgresql-operator:2.6.0-ppg16.8-pgbouncer1.24.0
      exposeSuperusers: true
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 1
              podAffinityTerm:
                labelSelector:
                  matchLabels:
                    postgres-operator.crunchydata.com/role: pgbouncer
                topologyKey: kubernetes.io/hostname
  instances:
    - name: instance1
      replicas: 1
      dataVolumeClaimSpec:
        accessModes: 
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 1
              podAffinityTerm:
                labelSelector:
                  matchLabels:
                    postgres-operator.crunchydata.com/data: postgres
                topologyKey: kubernetes.io/hostname
  backups:
    pgbackrest:
      image: perconalab/percona-postgresql-operator:main-pgbackrest17
      repoHost:
        affinity:
          podAntiAffinity:
            preferredDuringSchedulingIgnoredDuringExecution:
              - weight: 1
                podAffinityTerm:
                  labelSelector:
                    matchLabels:
                      postgres-operator.crunchydata.com/data: pgbackrest
                  topologyKey: kubernetes.io/hostname
      manual:
        repoName: repo1
        options:
          - --type=full
      repos:
        - name: repo1
          volume:
            volumeClaimSpec:
              accessModes:
              - ReadWriteOnce
              resources:
                requests:
                  storage: 1Gi

解决方案

Percona-PostgreSQL Operator 支持自定义用户密码,你的问题出在配置方式错误导致Secret被覆盖,以下是正确操作方式:

1. 补全密码配置字段

在users块中,你需要在password下添加value字段指定自定义密码,而不是只设置type: ASCII。修改后的用户配置示例:

users:
  - name: postgres
    databases:
      - quotesdb
    options: "SUPERUSER"
    password:
      type: ASCII
      value: "YourSecurePassword123!"
    secretName: postgres-user-secret

2. 不要提前手动创建Secret

如果你提前创建了postgres-user-secret,Operator会判定这是未经过它管理的旧配置,在集群初始化或同步时直接覆盖。正确流程是:

  • 先写好包含password.value的PerconaPGCluster CR
  • 应用CR后,Operator会自动创建包含你指定密码的postgres-user-secret

3. 验证密码配置结果

应用修改后的CR后,可通过以下命令检查Secret中的密码是否匹配:

kubectl get secret postgres-user-secret -o jsonpath='{.data.password}' | base64 -d

输出内容和你设置的密码一致,说明配置生效。

注意事项

  • 密码需符合PostgreSQL的密码规则,避免使用可能导致解析错误的特殊字符
  • 生产环境不建议在CR中明文写密码,可结合Kubernetes Secret的引用逻辑,但需确保Operator能正确读取;不过Percona Operator更推荐通过CR的password.value字段设置,再由Operator统一管理Secret

内容的提问来源于stack exchange,提问作者Pratheesh Russell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:03:27