【问题标题】:Accessing /docker-entrypoint-initdb.d from helm chart从 helm 图表访问 /docker-entrypoint-initdb.d
【发布时间】:2019-04-17 16:18:32
【问题描述】:

我正在尝试使用https://github.com/helm/charts/tree/master/stable/mariadb#initialize-a-fresh-instance 的官方 helm 图表初始化一个新的 MariaDB 实例(将我的 .sql 文件放在 /docker-entrypoint-initdb.d 中)。

但我发现说明很不清楚:

为了执行脚本,它们必须位于图表文件夹 files/docker-entrypoint-initdb.d 中,以便它们可以作为 ConfigMap 使用。

因为我设置 Mariadb 集群的唯一方法是使用他们的helm install --name my-release stable/mariadb -f values-production.yaml,所以我很困惑。

这个文件夹在哪里?


编辑

我下载了https://github.com/helm/charts/tree/master/stable/mariadb 并放置(整个文件夹)并将我的SQL 文件放在files/docker-entrypoint-initdb.d 中。

然后我使用helm package ./mariadb,然后是helm install ./mariadb -f ./mariadb/values-production.yaml。但主 pod 的状态为“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

MariaDB 启动但没有我的 SQL 表。

【问题讨论】:

标签: kubernetes mariadb kubernetes-helm


【解决方案1】:

我的问题比看起来更复杂: https://github.com/bitnami/bitnami-docker-mariadb/issues/182

不同的是,创建 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

【讨论】:

  • 这似乎是阻力最小的路径。该图表一直链接到来自 bitnami 的 galera docker 映像,您需要在其中挂载一个卷或实际将您的 sql 文件复制到 /docker-entrypoint-initdb.d 文件夹中,然后使用该自定义映像,但是您可能必须维护你自己的图表。
【解决方案2】:

该图表有点尴尬,但让我解释一下,他们将创建 this configmap 读取该文件夹的信息(相对于 values.yaml 路径)。

为了你的运气,还有两个选择:

  • 在 values.yaml (Line 122) 中传递您想要内联的脚本
  • 使用您的脚本创建一个配置映射,并在您的 values.yaml (Line 129) 上引用名称

【讨论】:

  • 我不明白。我应该克隆图表,将我的 .sql 文件放在 files/docker-entrypoint-initdb.d 文件夹中,运行 helm package 和 helm install 吗?因为那给了我一个 CrashLoopBackOff
  • 如果您想使用默认选项,请在您的命令 helm install --name my-release stable/mariadb -f values-production.yaml 上,确保您在当前目录中有一个名为 files 的文件夹,其中包含脚本。
  • 请看我的编辑2。我创建了一个名为 files Mariadb 的文件夹,但没有我的 sql 表。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多