Docker Swarmサービスとしてetcdクラスタをデプロイする方法を見つけたいと思います。基本的に、私は、このコマンドの精神で何かを考える:Docker swarmサービスとしてのetcdクラスタの自動自己設定
docker service create --name etcd --replicas 3 my-custom-image/etcd
ていなくても、私はそのオーバーレイネットワークが安全であると暗号化と認証の両方を提供するように構成されていると仮定していますので、私は私がTLSを必要としないと考えています--auto-tls
。証明書をプロビジョニングする方法を見つける余計な頭痛を、別の層で解決できるようにしたくない場合。
各インスタンスに一意の--name
が必要ですが、export ETCD_NAME=$(hostname --short)
を使用するエントリポイントスクリプトから取得できます。
問題は、私は初期設定に固執しています。 clustering guideに基づいて、3つのオプションがありますが、どれも合うように思わない:doesn't support DNS SRV records発見の瞬間に
- DNSディスカバリシナリオは私が探しているものに最も近いですが、ドッカー。私は
etcd
を検索することができ、ノードのコンテナのすべてのIPを取得しますが、_etcd-server._tcp
レコードはありません。 - 私はIPを知っていますが、他のノードの名前は分かりませんし、それらを理解する方法も知らないので、自動的に
ETCD_INITIAL_CLUSTER
をビルドすることはできません。 (これについては、Docker APIソケットをetcdコンテナに公開するつもりはありません)。 - etcdクラスタがなく、discovery.etcd.ioからの初期設定URIを提供すると、私が興味を持っている可能性のある回避策ですこれをしないでください。私は "この
docker-compose.yml
からスタックをデプロイするだけで、自動的に正しいことをするつもりですが、質問はありません"と思っています。
私はプルできるトリックはありますか?
サービスコンテナのアップデートでIPアドレスが変更されないのですか?コンテナが削除され、同じノードで開始されている(つまり同じデータ量を持っている)のですが、これまでとは違うものと考えているのは奇妙です。名前のポイントは、ネットワーク識別子が変わっても、名前は変わらないので、ノードは同じであることをノードに認識させるということです。 – drdaeman