J'ai un cluster etcd utilisant TLS pour la sécurité. Je veux que d'autres machines utilisent le proxy etcd, donc les clients locauxhost n'ont pas besoin d'utiliser TLS. Le proxy est configuré comme ceci:etcd2 en mode proxy ne fait rien d'utile
[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"
Et cela fonctionne aussi loin que la première connexion. Mais le client ETCD fait une requête initiale pour découvrir la liste complète des serveurs, puis il effectue sa véritable requête sur l'un des serveurs dans cette liste:
$ 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
Si je change les maîtres ETCD à --advertise-client-urls=http://localhost:2379
, le proxy se connectera à lui-même et entrer dans une boucle infinie. Et le proxy ne modifie pas le trafic entre le client et le maître, de sorte qu'il ne réécrit pas les URL des clients annoncés.
Je ne dois pas comprendre quelque chose, parce que le proxy etcd semble inutile.