[英]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.