I want to find a way to deploy an etcd cluster as a Docker Swarm service that would automatically configure itself without any interaction. Basically, I think of something in spirit of this command:
docker service create --name etcd --replicas 3 my-custom-image/etcd
I'm assuming that overlay network is configured to be secure and provide both encryption and authentication, so I believe I don't need TLS, not even --auto-tls
. Don't want an extra headache finding a way to provision the certificates, when this can be solved on the another layer.
I need an unique --name
for each instance, but I can get that from an entrypoint script that would use export ETCD_NAME=$(hostname --short)
.
The problem is, I'm stuck on initial configuration. Based on the clustering guide there are three options, but none seems to fit:
etcd
and I will get all the IPs of my nodes' containers, but there are no _etcd-server._tcp
records. ETCD_INITIAL_CLUSTER
because while I know the IPs, I don't know the names of the other nodes and I'm not aware about any way to figure those out. (I'm not going to expose Docker API socket to etcd container for this.) docker-compose.yml
and it'll automatically do the right thing, no questions asked" no-brainer scenario. Is there any trick I can pull?
As you have correctly said you know the IPs of your nodes' containers, so the suggested trick is to simply build the required etcd
names as derivatives of each node's IP address.
etcd
is named using this particular container's IP ie etcd-$ip
ETCD_INITIAL_CLUSTER
is populated using other containers' IPs in a similar way The names could be as simple as etcd-$ip
or even better ie we could use the netmask
to calculate the node's IP on this network to make the names prettier.
In this case in a simple 3-nodes configuration one could end up having names like etcd-02
etcd-03
etc
No specific requirements exist for the name attribute, it just needs to be unique and human-readable. Although it indeed looks like a trick it might work
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.