2017-02-10 17 views
0

У меня есть кластер 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 кажется бесполезным.

ответ

0

Оказывается, большинство клиентов и т. Д. (Слесарь, фланель и т. Д.) Отлично работают с прокси-сервером в этом режиме. Это только etcdctl, который ведет себя по-другому. Поскольку я тестировал с помощью etcdctl, я думал, что прокси-конфигурация не работает вообще.

  1. Если etcdctl запускается с --skip-sync, то он будет общаться через прокси-сервер, а не получение списка открытых точек.
  2. etcdctl cluster-health игнорирует --skip-sync и всегда затрагивает конечные точки публики и т. Д. Он никогда не будет работать с прокси-сервером.
0

С опцией --endpoints "https://{YOUR_ETCD_ADVERTISE_CILENT_URL}:2379".

Поскольку вы настроили TLS для etcd, вы должны добавить опции --ca-file, --cert-file, --key-file.