1

我正在使用赞助人舵图。没有自动创建模式的工具。所以我提供了一个 ConfigMap 如下:

kind: ConfigMap
apiVersion: v1
metadata:
  name: {{ template "patroni.fullname" . }}
  labels:
    app: {{ template "patroni.fullname" . }}
    release: {{ .Release.Name }}
data:
  init.sql: |-
    **DB SCHEMA TO BE CREATED**

在 Kind Statefulset 中,在 volumeMounts 部分中,我提供了 mountPath 如下所示以将 init.sql 文件挂载到容器中。所以 init.sql 文件被挂载到 /docker-entrypoint-initdb.d/init.sql

volumeMounts:        
        - mountPath: /docker-entrypoint-initdb.d/     
          name: test  

在卷部分,我添加了以下几行

volumes:
      - name: test
        configMap:
          name: {{ template "patroni.fullname" . }}

因此,当我部署图表时,它的部署没有错误。当我执行到 pod 中时,我可以看到我在 ConfigMap 中提供的 init.sql 文件。但是该脚本没有执行,当我尝试通过命令手动运行它时

psql -f init.sql

我收到 psql 错误:致命:角色“root”不存在

我执行的命令是:

oc exec -it postgres-ha-test-patroni-0 bash

此容器由 supervisord 管理,停止/启动服务时使用 supervisorctl

例子:

supervisorctl stop cron supervisorctl restart 守护神

当前状态:(supervisorctl status)

cron RUNNING pid 31,正常运行时间 0:45:42

root@postgres-ha-test-patroni-0:/docker-entrypoint-initdb.d# psql -f docker-entrypoint-initdb.d/init.sql

psql:致命:角色“root”不存在

在这里,root 角色不存在。如果我通过 postgres 用户登录并执行 .sql 文件,它运行正常。但是我想自动运行它,一旦我部署了patoni helm chart,也应该创建数据库模式。

请帮帮我。我正在尝试很长时间。

4

0 回答 0