У меня есть кластер etcd, использующий TLS для обеспечения безопасности. Я хочу, чтобы другие машины использовали прокси-сервер etcd, поэтому клиентам localhost не нужно использовать TLS. Прокси конфигурируется следующим образом:etcd2 в режиме прокси-сервера ничего не делает
[Service]
Environment="ETCD_PROXY=on"
Environment="ETCD_INITIAL_CLUSTER=etcd1=https://master1.example.com:2380,etcd2=https://master2.example.com:2380"
Environment="ETCD_PEER_TRUSTED_CA_FILE=/etc/kubernetes/ssl/ca.pem"
Environment="ETCD_PEER_CERT_FILE=/etc/kubernetes/ssl/worker.pem"
Environment="ETCD_PEER_KEY_FILE=/etc/kubernetes/ssl/worker-key.pem"
Environment="ETCD_TRUSTED_CA_FILE=/etc/kubernetes/ssl/ca.pem"
И это работает, поскольку первое соединение идет. Но etcd клиент делает первоначальный запрос, чтобы открыть полный список серверов, а затем он выполняет свой реальный запрос к одному из серверов в этом списке:
$ etcdctl --debug ls
start to sync cluster using endpoints(http://127.0.0.1:4001,http://127.0.0.1:2379)
cURL Command: curl -X GET http://127.0.0.1:4001/v2/members
got endpoints(https://1.1.1.1:2379,https://1.1.1.2:2379) after sync
Cluster-Endpoints: https://1.1.1.1:2379, https://1.1.1.2:2379
cURL Command: curl -X GET https://1.1.1.1:2379/v2/keys/?quorum=false&recursive=false&sorted=false
cURL Command: curl -X GET https://1.1.1.2:2379/v2/keys/?quorum=false&recursive=false&sorted=false
Error: client: etcd cluster is unavailable or misconfigured
error #0: x509: certificate signed by unknown authority
error #1: x509: certificate signed by unknown authority
Если я изменяю etcd мастеров --advertise-client-urls=http://localhost:2379
, то прокси подключается к себе и попадает в бесконечный цикл. И прокси не изменяет трафик между клиентом и мастером, поэтому он не переписывает рекламируемые URL-адреса клиентов.
Я не должен что-то понимать, потому что прокси-сервер etcd кажется бесполезным.