我正在尝试使用https://github.com/helm/charts/tree/master/stable/mariadb#initialize-a-fresh-instance上的官方头盔图初始化Mariadb的新实例(将我的.sql文件放在/docker-entrypoint-initdb.d中)。
但我发现说明不太清楚。 “为了执行脚本,它们必须位于图表文件夹文件/ 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
这是日志:
Aaditi:
我创建了一个名为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表。
该图表有点尴尬,但让我解释一下,他们将创建this configmap,它读取该文件夹的信息(相对于values.yaml
路径)。
为了您的运气,您还有两个选择:
我的问题比看起来更复杂: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