2017-02-10 7 views
0

セキュリティのためにTLSを使用するetcdクラスタがあります。他のマシンで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クライアントは、サーバの完全なリストを発見する最初のクエリを実行し、終了後には、そのリスト内のサーバーの1に対して、その本当のクエリを実行します。

$ 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 

私は--advertise-client-urls=http://localhost:2379にetcdマスターを変更する場合は、プロキシは自身に接続し、無限ループに入ります。また、プロキシはクライアントとマスター間のトラフィックを変更しないため、通知されたクライアントURLは書き換えられません。

etcdプロキシが役に立たないと思われるので、何かを理解してはいけません。

答えて

0

このモードでは、ほとんどのetcdクライアント(locksmith、flanneldなど)がプロキシでうまく動作することが分かります。これは、異なる動作をする唯一のetcdctlです。私はetcdctlでテストしていたので、プロキシ設定が全く動作していないと思いました。 etcdctl--skip-syncで実行されている場合は

  1. 、それはむしろ公共エンドポイントのリストを取得するよりも、プロキシを介して通信します。
  2. etcdctl cluster-healthは、--skip-syncを無視し、常にパブリックetcdエンドポイントに接触します。それはプロキシでは決して動作しません。
0

オプション--endpoints "https://{YOUR_ETCD_ADVERTISE_CILENT_URL}:2379"の場合。

あなたがetcdのためにTLSを設定しているので、あなたはオプション--ca-file--cert-file--key-fileを追加する必要があります。

関連する問題