mongodb - 如何在创建时在bitnami mongodb图表中插入数据?
问题描述
我学习了 k8s 和 Helm,所以我开始创建一个使用 mongondb 的简单烧瓶应用程序,我使用 helm 安装了部署、服务和入口,并且工作正常。对于 mongo 容器,我使用的是来自 Bitnami 的图表,但我需要在创建时插入一些数据,就像我在正常部署中所做的那样,添加:
volumeMounts:
- name: mongo-initdb
mountPath: /docker-entrypoint-initdb.d
在 bitnami 文档https://artifacthub.io/packages/helm/bitnami/mongodb中,它说可以通过脚本或带有参数的配置图输入数据,initdbScripts
或者initdbScriptsConfigMap
但我尝试像这样添加它们但不起作用:
mongodb:
metrics:
enabled: true
global:
namespaceOverride: flask-app
initdbScriptsConfigMap: mongo-initdb.yaml
这是在将 K8s 与 .yaml 文件一起使用时有效的配置图:
apiVersion: v1
data:
init-db.js: |-
db = db.getSiblingDB("cars_db");
db.car_tb.drop();
db.car_tb.insertMany([
{
"id": 1,
"brand": "Ford",
"model": "Mustang"
},
{
"id": 2,
"brand": "Lamborghini",
"model": "Veneno"
},
{
"id": 3,
"brand": "Ferrari",
"model": "Enzo"
},
{
"id": 4,
"brand": "Mercedes",
"model": "Cls63-AMG"
},
]);
kind: ConfigMap
metadata:
name: mongo-initdb
namespace: flask-app
作为模板文件夹中的 mongo-configmap.yaml。
由于它不起作用,我尝试添加一个名为的配置映射并将docker-entrypoint-initdb.d
其设置在一个名为 files 的文件夹中,如此处所述https://docs.bitnami.com/kubernetes/infrastructure/mongodb/administration/initialize-instance/但它们都不起作用并且文档中没有任何示例。
编辑我尝试将其添加到values.yaml
:
mongodb:
metrics:
enabled: true
global:
namespaceOverride: flask-app
auth:
username: root
password: pass
database: cars_db
rootPassword: pass
initdbScripts:
init-db.js: |
db = db.getSiblingDB("cars_db");
db.car_tb.drop();
db.car_tb.insertMany([
{
"id": 1,
"brand": "Ford",
"model": "Mustang"
},
{
"id": 2,
"brand": "Lamborghini",
"model": "Veneno"
},
{
"id": 3,
"brand": "Ferrari",
"model": "Enzo"
},
{
"id": 4,
"brand": "Mercedes",
"model": "Cls63-AMG"
},
]);
但这也不起作用,我从官方 github https://github.com/bitnami/charts/blob/master/bitnami/mongodb/values.yaml得到了这个,但我不知道如何从文档和我在任何我寻找的地方都找不到任何例子
解决方案
你现在可能已经想通了,因为你已经很接近了。我能够在我的父图表中使用以下内容来做你想做的事情values.yaml
:
mongodb:
initdbScripts:
my_init_script.js: |
db = db.getSiblingDB("cars_db");
db.car_tb.drop();
db.car_tb.insertMany([
{
"id": 1,
"brand": "Ford",
"model": "Mustang"
},
{
"id": 2,
"brand": "Lamborghini",
"model": "Veneno"
},
{
"id": 3,
"brand": "Ferrari",
"model": "Enzo"
},
{
"id": 4,
"brand": "Mercedes",
"model": "Cls63-AMG"
},
]);
重要的部分是这在我父图表的values.yaml
. 如果您正在直接修改 mongodb 图表(您可能不应该,但无论如何),省略mongodb
部分并突出其余部分。这只需要覆盖子图表的值。
还值得注意的是,我没有尝试过使用您正在使用的 un/db/password 覆盖,所以也许尝试删除这些?
另一件事可能是 Bitnami mongo 图表的错误版本,他们在启动时直接忘记执行.js/ .sh 文件,因此什么也没有发生。尝试更新您的图表版本。我这样做是使用:
- name: mongodb
version: "10.15.0"
repository: https://charts.bitnami.com/bitnami
推荐阅读
- regex - Javacc - 通过使用左分解而不是前瞻来消除选择冲突
- c++ - 在 C++ 中不使用 char 类型定义 '999e999' 值
- python - 我的 for 循环没有根据条件删除数组中的项目?Python
- c# - 模拟 Azure MobileServiceClient
- python - pandas:根据具有重复值的另一列填充 nan 值
- html - CSS 是否关心过 DOM 的“亲密”关系?
- arrays - 如何找到变化数组的最大值移动的方向?
- node.js - 尝试将 kafka-node 与 angular6 一起使用会出现 zlib_bindings not found 问题
- java - Java JSSE RMI SSL 文件被拒绝访问
- shell - 从命令行脚本中提取文本