Я хочу найти способ развернуть кластер etcd в качестве службы Docker Swarm, который автоматически настроил бы себя без какого-либо взаимодействия. В принципе, я думаю о чем-то в духе этой команды:
docker service create --name etcd --replicas 3 my-custom-image/etcd
Я предполагаю, что оверлейная сеть настроена на безопасность и обеспечивает как шифрование, так и аутентификацию, поэтому я считаю, что мне не нужен TLS, даже --auto-tls
. Не хотите, чтобы дополнительная головная боль находила способ предоставления сертификатов, когда это можно решить на другом уровне.
Мне нужен уникальный --name
для каждого экземпляра, но я могу получить его с точки входа script, которая использовала бы export ETCD_NAME=$(hostname --short)
.
Проблема в том, что я застрял в начальной конфигурации. На основе руководства по кластеризации есть три варианта, но ни один из них не подходит:
- Сценарий обнаружения DNS ближе всего к тому, что я ищу, но Docker не поддерживает обнаружение DNS SRV на данный момент. Я могу найти
etcd
, и я получу все IP-адреса контейнеров своих узлов, но нет записей_etcd-server._tcp
. - Я не могу автоматически создавать
ETCD_INITIAL_CLUSTER
, потому что, пока я знаю IP-адреса, я не знаю имена других узлов, и я не знаю, как это можно понять. (Я не собираюсь открывать сокет Docker API для контейнера etcd для этого.) - Существует уже существовавший и т.д. кластер, и при поставке начального URI конфигурации из discovery.etcd.io - это возможное обходное решение, которое я заинтересован в том, чтобы не делать этого. Я пытаюсь "просто развернуть стек из этого
docker-compose.yml
, и он автоматически сделает все правильно, без вопросов".
Есть ли трюк, который я могу вытащить?