如何向swarm集群不同节点上的mongod容器提供证书进行内部authentication?
我正在docker swarm中试验mongod。 我用docker-compose文件(v3)在swarm中部署了mongod服务。 我的群由三个节点组成
node1
node2
node3
当我使用docker stack deploy --compose-file <my-docker-compose-file>
部署mongod服务时,mongod服务在三个节点之间分配,然后将这些mongod实例configuration为副本集。
要在副本集中启用内部authentication,我需要提供为在容器内运行的mongod实例生成的x.509证书。 我已经生成了所有相关的证书,这些证书位于node1
目录中。 现在我需要将这些证书提供给在服务中运行的容器。 我无法想出一个方法来将configuration添加到docker-compose
文件,该文件将证书从node1
挂载到在node2
和node3
上运行的容器。
我努力了:
services: rs1a: ... volumes: - certs:/certs
volumes: certs: driver: local driver_opts: device:/path/to/dir/containing/certs/on/node1
它没有工作,并提出一个错误no such device
请注意,当我使用组合文件重新部署服务时,它们可能会被分发到任何随机节点,因此我需要在可共享的地方拥有所有mongod实例的证书。 我不能在节点上使用mongod实例特定的证书。 我不知道这是不是一个好的方法来解决这个问题。 如果有的话,请提出更好的方法。