自动将etcd集群自configuration为Docker群集服务
我想find一种将etcd集群部署为Docker Swarm服务的方法,该服务可以自动configuration而不需要任何交互。 基本上,我想到了这个命令的精神:
docker service create --name etcd --replicas 3 my-custom-image/etcd
我假设覆盖networking被configuration为安全的,并提供encryption和身份validation,所以我相信我不需要TLS,甚至不需要--auto-tls
。 不希望额外的头痛findconfiguration证书的方式,这可以在另一层上解决。
我需要一个唯一的名称为每个实例,但我可以从一个入口点脚本,将使用export ETCD_NAME=$(hostname --short)
。
问题是,我卡在初始configuration。 基于聚类指南有三个选项,但没有一个适合:
- DNS发现场景与我正在查找的距离最近,但此时Docker 不支持DNS SRVlogging发现。 我可以查找
etcd
,我会得到我节点的容器的所有IP,但没有_etcd-server._tcp
logging。 - 我不能自动构build
ETCD_INITIAL_CLUSTER
因为当我知道IP时,我不知道其他节点的名称,我不知道有什么方法可以解决这些问题。 (我不打算暴露Docker的API套接字的etcd容器为此。) - 没有预先存在的etcd集群,并提供来自discovery.etcd.io的初始configurationURI是一种可能的解决方法,我感兴趣的不是这样做。 我的目标是“只从这个
docker-compose.yml
部署一个堆栈,它会自动做正确的事情,没有问题的问题”毫不费力的情况。
有什么我可以拉的技巧吗?