gpt4 book ai didi

Helm 中的 PostgreSQL : initdbScripts Parameter

转载 作者:行者123 更新时间:2023-11-29 12:40:00 25 4
gpt4 key购买 nike

PostgreSQL 的默认 Helm Chart(即 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

最佳答案

根据 stable/postgresql helm chart,initdbScripts 是 init 脚本名称的字典,它是多行变量:

## initdb scripts
## Specify dictionary 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;

当我们要将多行文本注入(inject)值时,我们需要处理 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 helm TO helm;" \
--set service.type=LoadBalancer

上面的例子有一些解释:

  1. 如果脚本的名字有.,它应该被转义,比如"init\.sql"
  2. 脚本的内容用双引号括起来,因为它是多行字符串变量。

关于Helm 中的 PostgreSQL : initdbScripts Parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55499984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com