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.

Другие вопросы по тегам