[英]Automatic self-configuration of an etcd cluster as a Docker swarm service
我想找到一种方法将etcd集群部署为Docker Swarm服务,该服务将自动配置而无需任何交互。 基本上,我想到了这个命令的精神:
docker service create --name etcd --replicas 3 my-custom-image/etcd
我假设覆盖网络配置为安全并提供加密和身份验证,所以我相信我不需要TLS,甚至不需要--auto-tls
。 当这可以在另一层上解决时,不希望额外的头痛找到提供证书的方法。
我需要为每个实例使用唯一的--name
,但我可以从使用export ETCD_NAME=$(hostname --short)
的入口点脚本中获取。
问题是,我坚持初始配置。 根据聚类指南 ,有三个选项,但似乎都不适合:
etcd
,我将获得节点容器的所有IP,但是没有_etcd-server._tcp
记录。 ETCD_INITIAL_CLUSTER
因为虽然我知道IP,但我不知道其他节点的名称,我不知道有任何方法可以解决这些问题。 (我不打算将Docker API套接字暴露给etcd容器。) docker-compose.yml
部署一个堆栈,它会自动做正确的事情,没有问题”没有问题。 有什么技巧可以拉吗?
正如你已经正确地说你知道你的节点容器的IP,所以建议的技巧是简单地构建所需的etcd
名称作为每个节点的IP地址的衍生物。
etcd
中使用这个特定容器的IP命名,即etcd-$ip
ETCD_INITIAL_CLUSTER
以类似的方式使用其他容器的IP填充 名称可以像etcd-$ip
一样简单,甚至更好,即我们可以使用netmask
来计算该网络上节点的IP,使名称更漂亮。
在这种情况下,在一个简单的3节点配置中,最终可能会有像etcd-02
etcd-03
等名称
name属性没有特定的要求,它只需要是唯一的和人类可读的。 虽然它确实看起来像一个技巧,它可能会起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.