Helm中的PostgreSQL:initdbScripts参数

问题描述 投票:1回答:1

PostgreSQL的默认Helm图表(即stable/postgresql)定义了一个initdbScripts参数,允许运行初始化脚本。但是,我似乎无法通过命令行获取格式正确的格式。

有人可以提供一个如何填充此命令行参数的示例吗?

这是我发布的内容,减去了initdbScripts参数的工作版本。

helm install stable/postgresql -n testpg \
    --set global.postgresql.postgresqlDatabase=testpg \
    --set global.postgresql.postgresqlUsername=testpg \
    --set global.postgresql.postgresqlPassword=testpg \
    --set global.postgresql.servicePort=5432 \
    --set initdbScripts=(WHAT GOES HERE TO RUN "sql/init.sql"??) \
    --set service.type=LoadBalancer
postgresql kubernetes kubernetes-helm
1个回答
2
投票

根据stable/postgresql头盔图,initdbScripts是一个init脚本名称的字典,它是多行变量:

## initdb scripts
## Specify dictionnary of scripts to be run at first boot
## Alternatively, you can put your scripts under the files/docker-entrypoint-initdb.d directory
##
# initdbScripts:
#   my_init_script.sh:|
#      #!/bin/sh
#      echo "Do something."

我们假设我们有以下init.sql脚本:

CREATE USER helm;
CREATE DATABASE helm;
GRANT ALL PRIVILEGES ON DATABASE helm TO helm;

当我们要将多行文本注入值时,我们需要处理YAML中的缩进。

对于上述特定情况,它是:

helm install stable/postgresql -n testpg \
--set global.postgresql.postgresqlDatabase=testpg \
--set global.postgresql.postgresqlUsername=testpg \
--set global.postgresql.postgresqlPassword=testpg \
--set global.postgresql.servicePort=5432 \
--set initdbScripts."init\.sql"="CREATE USER helm;
CREATE DATABASE helm;
GRANT ALL PRIVILEGES ON DATABASE docker TO helm;" \
--set service.type=LoadBalancer

上面的例子有一些解释:

  1. 如果脚本的名称有.,它应该被转义,如"init\.sql"
  2. 脚本的内容是双引号,因为它是多行字符串变量。
© www.soinside.com 2019 - 2024. All rights reserved.