gRPC чувствителен к настройкам прокси. Сервис может нормально работать внутри кластера, но падать при подключении через ingress.

Почему возникает проблема

Частые причины: ingress обрабатывает трафик как обычный HTTP, не включен HTTP/2, неверный backend protocol, проблемы TLS, неправильный service port или timeout на длинных вызовах.

Что проверяю

  • Работает ли gRPC напрямую внутри кластера.
  • Какие annotations стоят на ingress.
  • Включен ли HTTP/2 и корректный backend protocol.
  • Совпадают ли TLS, host и port.
  • Что показывают логи ingress controller и сервиса.

Как решаю задачу

Я разделяю проверку на два уровня: сам gRPC-сервис и маршрут через ingress. Так быстрее понять, где именно ломается соединение.

  • Проверяю сервис напрямую.
  • Тестирую вызов через ingress отдельным клиентом.
  • Исправляю annotations и protocol.
  • Настраиваю TLS и timeout.
  • Проверяю health checks и логи после изменения.

Что будет на выходе

  • gRPC-клиент подключается через ingress.
  • Маршрут работает стабильно.
  • Ошибки прокси становятся видимыми.
  • Конфигурация подходит для production-нагрузки.

Что подготовить

  • YAML ingress и service.
  • Логи ingress controller.
  • Адрес gRPC-сервиса.
  • Команду или клиент для воспроизведения ошибки.

Вопросы и ответы

Почему REST работает, а gRPC нет?

gRPC требует корректной поддержки HTTP/2 и другого поведения прокси.

Можно ли решить без смены ingress?

Часто да. Нужны правильные annotations, protocol и timeout.

Нужна похожая задача?

Опишите, что именно не работает и где это видно. Я быстро разберу симптомы, проверю техническую причину и предложу понятный план исправления без лишних созвонов и затяжки.