我了解了k8s和Helm,所以我开始创建一个简单的烧瓶应用程序,它使用mongondb,我已经安装了部署、服务和入口,并且运行良好。对于mongo容器,我使用Bitnami的图表,但是我需要在创建时插入一些数据,就像在正常部署时添加:
volumeMounts:
- name: mongo-initdb
mountPath: /docker-entrypoint-initdb.d
在bitnami文档https://artifacthub.io/packages/helm/bitnami/mongodb中,它说可以通过脚本或带有参数initdbScripts
或initdbScriptsConfigMap
的configmap输入数据,但我尝试像这样添加它们,但不起作用:
mongodb:
metrics:
enabled: true
global:
namespaceOverride: flask-app
initdbScriptsConfigMap: mongo-initdb.yaml
这就是在K8s与.yaml文件一起使用时工作的configmap:
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
的configmap,并将其设置在一个名为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那里得到的,但是我不知道如何使它从文档中工作,我在任何地方都找不到我想要的例子。
发布于 2021-05-04 19:53:49
你可能已经猜到了,因为你已经很亲密了。我能够使用我的父图表的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
https://stackoverflow.com/questions/66256564
复制相似问题