如何挂载couchDB的配置文件?

wfypjpf4  于 2023-10-14  发布在  CouchDB
关注(0)|答案(1)|浏览(280)

我想将couchdb-config挂载到我的CouchDB部署中。
这是我的沙发yaml

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: couchdb-delp
  5. spec:
  6. replicas: 1
  7. selector:
  8. matchLabels:
  9. app: couchdb
  10. template:
  11. metadata:
  12. labels:
  13. app: couchdb
  14. spec:
  15. containers:
  16. - name: couchdb
  17. image: couchdb:latest
  18. env:
  19. - name: COUCHDB_USER
  20. value: admin
  21. - name: COUCHDB_PASSWORD
  22. value: password
  23. ports:
  24. - name: couchdb
  25. containerPort: 5984
  26. volumeMounts:
  27. - name: couchdb-config
  28. mountPath: /opt/couchdb/etc/local.ini
  29. volumes:
  30. - name: couchdb-config
  31. configMap:
  32. name: couchdb-config

这是我的couchdb-config

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: couchdb-config
  5. data:
  6. local.ini: |
  7. [chttpd]
  8. enable_cors = true
  9. [httpd]
  10. port = 5984
  11. [couch_peruser]
  12. enable = true
  13. [cors]
  14. origin: "*"
  15. credentials: true
  16. methods: GET,PUT,POST,HEAD,DELETE
  17. headers: accept, authorization, content-type, origin, referer

然后我得到这个错误msg -> Error msg image

  1. Error: failed to create containerd task: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/var/lib/kubelet/pods/c2895190-e2cc-4ccf-acb0-a41b65edf510/volumes/kubernetes.io~configmap/couchdb-config" to rootfs at "/opt/couchdb/etc/local.ini": mount /var/lib/kubelet/pods/c2895190-e2cc-4ccf-acb0-a41b65edf510/volumes/kubernetes.io~configmap/couchdb-config:/opt/couchdb/etc/local.ini (via /proc/self/fd/6), flags: 0x5001: not a directory: unknown

我之前也包含了subPath。但我也得到了错误
这是在yaml中挂载couchdb配置的方法吗?

vxf3dgd4

vxf3dgd41#

将配置Map挂载为文件夹,然后将其作为文件引用。
根据文档,它不是这样工作的。
你需要做的是以下几点(未经测试,但你得到的图片):

  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: couchdb-delp
  5. spec:
  6. replicas: 1
  7. selector:
  8. matchLabels:
  9. app: couchdb
  10. template:
  11. metadata:
  12. labels:
  13. app: couchdb
  14. spec:
  15. containers:
  16. - name: couchdb
  17. image: couchdb:latest
  18. env:
  19. - name: COUCHDB_USER
  20. value: admin
  21. - name: COUCHDB_PASSWORD
  22. value: password
  23. ports:
  24. - name: couchdb
  25. containerPort: 5984
  26. volumeMounts:
  27. - name: couchdb-config
  28. mountPath: /opt/couchdb/etc/ # Note the missing filename
  29. volumes:
  30. - name: couchdb-config
  31. configMap:
  32. name: couchdb-config
  33. items:
  34. - key: local.ini # The name of the key in the ConfigMap
  35. path: local.ini # The name of the file when in the filesystem

然而,这会导致一个不同的问题:由于您在/opt/couchdb/etc上挂载了一个只读“文件系统”,而couchdb在/opt/couchdb/local.d中运行,因此您需要将另一个卷挂载到这个挂载点/opt/couchdb/local.d
根据image's documentation的建议解决方案是创建一个自定义的Docker镜像,这很容易:

  1. FROM couchdb
  2. COPY local.ini /opt/couchdb/etc/

另一个解决方案是official Helm chart of couchDB所做的:"init container"用于将从配置Map和机密中挂载的数据包带到临时路径,并将它们复制到为/opt/local/etc提供的卷。
如果你只想部署CouchDB,我强烈建议使用Helm Chart。

展开查看全部

相关问题