如何使用Kubegres Kubernetes Postgres Operator设置数据库名称?
Kubegres自定义Postgres数据库名称的方法
默认情况下Kubegres会创建名为postgres的数据库,直接添加POSTGRES_DB环境变量无法生效,原因是Kubegres Operator在初始化流程中会忽略该环境变量,按照自身逻辑创建默认数据库。
要自定义目标数据库名称,需通过挂载Postgres初始化脚本的方式实现,具体步骤如下:
- 第一步:创建初始化SQL脚本文件(例如
init-db.sql),写入创建数据库的语句:
CREATE DATABASE keycloak;
- 第二步:将脚本文件打包为Kubernetes ConfigMap:
kubectl create configmap postgres-init-scripts --from-file=init-db.sql
- 第三步:修改Kubegres的CRD配置清单,添加卷挂载配置,将ConfigMap挂载到Postgres容器的
/docker-entrypoint-initdb.d/目录(Postgres镜像会自动执行该目录下的初始化脚本):
apiVersion: kubegres.reactive-tech.io/v1 kind: Kubegres metadata: name: mypostgres namespace: default spec: replicas: 2 image: postgres:14.1 database: size: 200Mi env: - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: mypostgres-secret key: superUserPassword - name: POSTGRES_REPLICATION_PASSWORD valueFrom: secretKeyRef: name: mypostgres-secret key: replicationUserPassword # 新增卷挂载配置 volumeMounts: - name: init-scripts mountPath: /docker-entrypoint-initdb.d/ volumes: - name: init-scripts configMap: name: postgres-init-scripts
- 第四步:应用修改后的配置清单,等待Pod重建完成后,即可通过自定义数据库名称连接:
psql -h 127.0.0.1 -p 5432 -d keycloak -U postgres -W
说明:Kubegres的初始化逻辑优先使用内置规则,因此直接设置POSTGRES_DB环境变量不会生效,而借助Postgres原生的初始化脚本目录机制,可确保自定义数据库被正确创建。
内容的提问来源于stack exchange,提问作者Peter Becich
相关产品推荐
相关产品推荐

