Я следовал руководству Traefik по настройке Let's Encrypt и Docker, и теперь my-domain.com
правильно принимает HTTPS со статическим веб-сайтом за ним. Затем я хотел бы запустить сервер gRPC за Traefik на my-grpc-server.my-domain.com
. Просматривая документацию Traefik по использованию gRPC с Traefik, я вижу, что инструкции использовать самозаверяющие сертификаты. Как мне воспользоваться тем фактом, что у меня уже есть действующие сертификаты от Let's Encrypt?
Приняв решение ... в моем grpc-server
контейнере Docker я мог бы смонтировать acme.json
файл, который пишет Traefik, прочитать ключи из этого файла и использовать их для инициализации сервера gRPC. Это потребует некоторой кропотливой работы, и это нормально, но даже в этом случае мне, возможно, понадобится другая traefik.toml
конфигурация, чтобы учесть тот факт, что трафик между Traefik и моим grpc-server
контейнером Docker нуждается в SSL.
ОБНОВЛЕНИЕ: я пробовал это до сих пор безуспешно. Я вручную экспортировал ключи acme для тестирования, чтобы для простоты избавиться от материала Let's Encrypt.
Ошибка клиента gRPC: grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with (StatusCode.CANCELLED, Received http2 header with status: 500)>
И ошибка Traefik: level=warning msg="Error forwarding to https://172.18.0.2:443, err: stream error: stream ID 1; INTERNAL_ERROR"
Любопытно, что когда я подключаюсь к клиенту gRPC, на сервере gRPC нет сообщений. Однако, когда я нажимаю my-grpc-server.my-server.com
в веб-браузере, я получаю ту же ошибку в Traefik и дополнительную ошибку на сервере gRPC: E1112 21:06:37.480636928 8 http_server_filter.c:236] GET request without QUERY
Теперь мне интересно, почему трафик перенаправляется в случае веб-браузера, но не случай клиента gRPC.