Как запустить Consul в сервисной сети Istio
У меня проблемы с запуском Consul в сервисной сети Istio. Я использую HTTPS и шифрование сплетен, которое работало должным образом, прежде чем вводить сайдкары Envoy (с принудительным mTLS). Я пытаюсь запустить кластер Consul из 3 участников и вижу следующие ошибки на каждом члене:
2020/02/15 21:15:52 [WARN] consul: error getting server health from "consul-2": rpc error getting client: failed to get conn: remote error: tls: protocol version not supported
2020/02/15 21:15:53 [WARN] consul: error getting server health from "consul-2": context deadline exceeded
2020/02/15 21:15:53 [INFO] agent: (LAN) joining: [consul-0.cluster consul-1.cluster consul-2.cluster]
2020/02/15 21:15:54 [WARN] consul: error getting server health from "consul-2": rpc error getting client: failed to get conn: remote error: tls: protocol version not supported
2020/02/15 21:15:55 [WARN] consul: error getting server health from "consul-2": context deadline exceeded
2020/02/15 21:15:56 [WARN] consul: error getting server health from "consul-2": rpc error getting client: failed to get conn: remote error: tls: protocol version not supported
2020/02/15 21:15:56 [WARN] agent: (LAN) couldn't join: 0 Err: 3 errors occurred:
* Failed to join 10.0.2.213: EOF
* Failed to join 10.0.3.123: EOF
* Failed to join 10.0.1.11: Encryption is configured but remote state is not encrypted
2020/02/15 21:15:56 [WARN] agent: Join LAN failed: <nil>, retrying in 30s
2020/02/15 21:15:57 [WARN] consul: error getting server health from "consul-2": context deadline exceeded
2020/02/15 21:15:58 [WARN] consul: error getting server health from "consul-2": rpc error getting client: failed to get conn: remote error: tls: protocol version not supported
Порты для службы консула следующие:
ports:
- name: tcp-server
port: 8300
targetPort: tcp-server
- name: tcp-serflan
protocol: TCP
port: 8301
targetPort: tcp-serflan
- name: udp-serflan
protocol: UDP
port: 8301
targetPort: udp-serflan
- name: https
port: 8501
targetPort: https
Мое лучшее предположение о том, что происходит, заключается в том, что Envoy не понижается с L7 до L4 для серверных RPC-соединений, как указано в документации, и поэтому Consul пытается выполнить рукопожатие TLS с удаленным сайтом Envoy, а не с удаленным Consul.
Я мог бы либо использовать трафик Consul с открытым текстом с Istio mTLS, либо удалить боковые машины Envoy и сохранить шифрование Consul, но, если возможно, я хотел бы иметь оба шифрования с помощью Consul, но в сетке Istio mTLS (отчасти, чтобы посмотреть, возможно ли это не поддерживает Istio).