grpc-go over https: ошибка rpc: code = недоступно desc = транспорт закрывается:
Примечание: это работает в контейнерах в Kubernetes.
Я успешно сделал это очень краткое описание: https://knative.dev/docs/serving/samples/grpc-ping-go/
Успех:
2019/05/08 13:43:56 Ping got hello - pong
2019/05/08 13:43:56 Got pong 2019-05-08 13:43:57.646935391 +0000 UTC m=+1.661567121
Но если я запускаю через 443 от шлюза на knative setup для https, он не работает:
docker run -ti --entrypoint=/client docker.io/{username}/grpc-ping-go \
-server_addr="${SERVICE_IP}:443" \
-server_host_override="${SERVICE_HOST}" \
-insecure
2019/05/08 13:50:28 &{0xc00012e000}.Ping failed rpc error: code = Unavailable desc = transport is closing:
Код клиента из примера и код сервера. Сервер не прослушивает tls, но соединение с сервером осуществляется через https.
Просто чтобы убедиться, я знаю, что HTTPS работает из-за простого текстового ответа.
1 ответ
В коде вашего сервера вы не слушаете порт 443, так что это, скорее всего, причина, по которой ваш пример не работает.
Если вы хотите продолжать использовать http, а не https, тогда ваш код работает просто отлично.
Если вы хотите, чтобы он работал с TLS, этот обзор довольно хороший.
Чтобы заставить порт 80 перенаправить на порт 443 (я очень рекомендую его, если вы используете https), см. Этот пост SO.