Kubernetes 从舵图访问/docker入口点initdb.d

Kubernetes 从舵图访问/docker入口点initdb.d,kubernetes,mariadb,kubernetes-helm,Kubernetes,Mariadb,Kubernetes Helm,我正在尝试使用官方的helm图表初始化MariaDB的一个新实例(将我的.sql文件放在/docker entrypoint initdb.d中) 但我发现说明很不清楚: 为了执行脚本,它们必须位于图表文件夹files/docker entrypoint initdb.d中,以便作为配置映射使用 由于我设置Mariadb集群所做的唯一一件事就是使用它们的helm安装——将我的发行版命名为stable/Mariadb-f values production.yaml,我感到非常困惑 这个文件夹在哪

我正在尝试使用官方的helm图表初始化MariaDB的一个新实例(将我的.sql文件放在/docker entrypoint initdb.d中)

但我发现说明很不清楚:

为了执行脚本,它们必须位于图表文件夹
files/docker entrypoint initdb.d
中,以便作为配置映射使用

由于我设置Mariadb集群所做的唯一一件事就是使用它们的
helm安装——将我的发行版命名为stable/Mariadb-f values production.yaml
,我感到非常困惑

这个文件夹在哪里


编辑 我下载并放置(整个文件夹)并将我的SQL文件放在
文件/docker entrypoint initdb.d

然后我使用了
helm包。/mariadb
然后是
helm安装。/mariadb-f./mariadb/values-production.yaml
。但是主吊舱的状态是“CrashLoopBackOff”

这是主日志

==> ** Starting MariaDB setup **
==> Validating settings in MYSQL_*/MARIADB_* env vars..
==> Initializing mariadb database...
==> Persisted data detected. Restoring...
==> Loading user's custom files from /docker-entrypoint-initdb.d ...
==> Stopping mariadb...
我也尝试过这种方法,但数据库一直崩溃

kubectl create configmap db-scheme --from-file=db.sql
helm install --name db-test stable/mariadb -f .values-production.yml --set rootUser.password=ROOT_PASSWORD --set replication.password=REPLICATION_PASSWORD --set initdbScriptsConfigMap=db-scheme
以下是日志:


编辑2 我创建了一个名为
files/docker entrypoint initdb.d

我的当前目录:

.
├── values-production.yml
│
├── files
│   └── docker-entrypoint-initdb.d
│       └── db.sql
helm install --name test stable/mariadb -f .\values-production.yml --set rootUser.password=ROOT_PASSWORD --set replication.password=REPLICATION_PASSWORD
并从当前目录运行此命令:

.
├── values-production.yml
│
├── files
│   └── docker-entrypoint-initdb.d
│       └── db.sql
helm install --name test stable/mariadb -f .\values-production.yml --set rootUser.password=ROOT_PASSWORD --set replication.password=REPLICATION_PASSWORD

MariaDB启动,但没有我的SQL表。

该图表有点笨拙,但让我解释一下,它们将创建一个读取该文件夹信息的表(相对于
values.yaml
路径)

幸运的是,您还有两个选择:

  • 传递希望在values.yaml()上内联的脚本
  • 使用脚本创建configmap,并在values.yaml()上引用名称

    • 我的问题比看起来更复杂:

      除此之外,创建configmap确实有效:

      kubectl create configmap db-scheme --from-file=db.sql
      
      helm install --name db-test stable/mariadb -f .values-production.yml --set rootUser.password=ROOT_PASSWORD --set replication.password=REPLICATION_PASSWORD --set initdbScriptsConfigMap=db-scheme
      

      我不明白。我是否应该克隆图表,将.sql文件放在files/docker entrypoint initdb.d文件夹中,运行helm包并安装helm?因为这给了我一个快速的回退如果你想使用默认选项,在你的命令
      helm install--name my release stable/mariadb-f values production.yaml
      ,确保你在当前目录下有一个名为
      files
      的文件夹和脚本。请参阅我的edit2。我创建了一个名为
      files
      Mariadb boots-up的文件夹,但没有我的sql表。您好@shellwhale(大名btw),请不要粘贴代码/日志的截图。你可以在这里找到一些理由:这似乎是一条阻力最小的道路。该图表一直从bitnami链接到galera docker映像,在bitnami中,您需要装载一个卷,或者实际将sql文件复制到/docker entrypoint initdb.d文件夹中,然后使用该自定义映像,但您可能需要维护自己的图表。