Невозможно связаться с сервисом Go gRPC в Kubernetes

Я пытаюсь запустить службу gRPC, написанную на Golang, внутри Kubernetes. Я развертываю сервис (без SSL). Kubernetes также nginx работает с флагом --enable-ssl-passthrough. У меня есть клиент Go, который пытается вызвать службу gRPC (без TLS), и я получаю следующую ошибку:

2020/03/20 18:12:54 rpc error: code = Unavailable desc = connection closed
exit status 1

Когда я делаю kubectl exec в сервисном модуле gRPC и запускаю клиентский код внутри модуля (с адресом: localhost:<port>), я получаю правильный результат. Но я не могу связаться со службой gRPC извне.


person Chintan Rajvir    schedule 20.03.2020    source источник
comment
Пожалуйста, поделитесь своим yaml из pod and services. Откуда вы пытаетесь общаться? Вы используете IP-адрес модуля, IP-адрес службы, имя службы?   -  person Mr.KoopaKiller    schedule 20.03.2020
comment
Попробуйте отправить на сервер простой пакет TCP с помощью netcat. Это должно, по крайней мере, помочь вам определить, может ли трафик перенаправляться на входной шлюз кластера.   -  person davidmontoyago    schedule 20.03.2020
comment
Спасибо за помощь! Связь сейчас работает нормально. Ему нужно было общаться через TLS (потому что этого ожидал контроллер nginx).   -  person Chintan Rajvir    schedule 21.03.2020


Ответы (1)


Модуль nginx controller ожидал, что служба, на которую он перенаправляет, работает по TLS. Поскольку я не включил безопасный gRPC внутри сервера / клиента, связь не передавалась от контроллера. Я включил внутреннюю службу TLS / SSL и установил безопасную связь с клиентом, и теперь он работает нормально!

person Chintan Rajvir    schedule 21.03.2020