首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在创建时在bitnami mongodb图表中插入数据?

如何在创建时在bitnami mongodb图表中插入数据?
EN

Stack Overflow用户
提问于 2021-02-18 08:53:42
回答 1查看 1.9K关注 0票数 2

我了解了k8s和Helm,所以我开始创建一个简单的烧瓶应用程序,它使用mongondb,我已经安装了部署、服务和入口,并且运行良好。对于mongo容器,我使用Bitnami的图表,但是我需要在创建时插入一些数据,就像在正常部署时添加:

代码语言:javascript
运行
复制
 volumeMounts:
   - name: mongo-initdb
   mountPath: /docker-entrypoint-initdb.d

在bitnami文档https://artifacthub.io/packages/helm/bitnami/mongodb中,它说可以通过脚本或带有参数initdbScriptsinitdbScriptsConfigMap的configmap输入数据,但我尝试像这样添加它们,但不起作用:

代码语言:javascript
运行
复制
mongodb:
  metrics:
    enabled: true
  global:
    namespaceOverride: flask-app
  initdbScriptsConfigMap: mongo-initdb.yaml

这就是在K8s与.yaml文件一起使用时工作的configmap:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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那里得到的,但是我不知道如何使它从文档中工作,我在任何地方都找不到我想要的例子。

EN

回答 1

Stack Overflow用户

发布于 2021-05-04 19:53:49

你可能已经猜到了,因为你已经很亲密了。我能够使用我的父图表的values.yaml中的以下内容来完成您想要做的事情

代码语言:javascript
运行
复制
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文件,所以不会发生任何事情。尝试更新图表版本。我这么做是用:

代码语言:javascript
运行
复制
- name: mongodb
  version: "10.15.0"
  repository: https://charts.bitnami.com/bitnami
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66256564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档