如何创建引用包含MongoDB命令的.js文件的ConfigMap
直接引用本地.js文件创建ConfigMap的实现方法
你不需要将数百行的JS脚本手动内嵌到ConfigMap YAML中,也不需要单独转写文件格式,直接使用kubectl原生的文件引用参数即可完成创建,全程不需要手动复制粘贴脚本内容。
基础创建命令
假设你的MongoDB初始化JS文件本地路径为./mongo-setup.js,需要创建的ConfigMap名称为mongo-init-script,执行以下命令即可直接读取本地文件生成ConfigMap:
kubectl create configmap mongo-init-script --from-file=./mongo-setup.js -n <你的业务命名空间>
- 命令中
--from-file参数会自动读取指定路径的本地文件,默认将文件名作为ConfigMap的存储键,文件完整内容作为对应键的值,支持任意行数的文本文件 - 如果需要自定义ConfigMap内的键名(比如适配MongoDB初始化脚本的文件名要求),可以用
键名=本地文件路径的格式传参:
kubectl create configmap mongo-init-script --from-file=init.js=./mongo-setup.js -n <你的业务命名空间>
幂等更新命令
如果后续本地JS文件有修改,不需要删除原有ConfigMap重建,执行以下命令即可自动同步最新文件内容:
kubectl create configmap mongo-init-script \ --from-file=init.js=./mongo-setup.js \ -n <你的业务命名空间> \ --dry-run=client -o yaml | kubectl apply -f -
结果校验
创建完成后可以直接执行以下命令确认文件是否正确加载,不需要导出完整YAML核对内容:
kubectl describe configmap mongo-init-script -n <你的业务命名空间>
返回结果中如果对应键的文件大小和本地JS文件大小一致,即代表加载成功。
Pod挂载使用示例
以MongoDB容器挂载初始化脚本为例,只需要在工作负载配置中关联对应ConfigMap,挂载到容器的指定路径即可,示例片段如下:
volumes: - name: mongo-init-volume configMap: name: mongo-init-script containers: - name: mongodb image: mongo:6.0 volumeMounts: - name: mongo-init-volume mountPath: /docker-entrypoint-initdb.d/init.js subPath: init.js
注意:ConfigMap挂载后如果更新了文件内容,已经运行的Pod不会自动同步新脚本,需要重启对应Pod才会加载最新版本的脚本。
内容的提问来源于stack exchange,提问作者DireRaven
相关产品推荐
相关产品推荐

