Как включить http2/grpc на порту 80 (т. е. без TLS) с помощью входа nginx?

#nginx #kubernetes #grpc #http2 #nginx-ingress

Вопрос:

В соответствии с этими двумя проблемами на ingress-nginx Github, похоже, что единственный способ заставить grpc/http2 работать на порту 80 без TLS-это использовать пользовательский шаблон конфигурации:

  1. вход не поддерживает http2 на порту 80 без протокола tls #6313
  2. Добавьте новую аннотацию для поддержки прослушивания 80 http2 #6736

К сожалению, я не смог найти никаких простых примеров того, как настроить пользовательскую конфигурацию входа в nginx. Вот ссылки, которые я пробовал:

  1. Пользовательский шаблон NGINX
  2. Пользовательские Шаблоны

Может ли кто-нибудь помочь мне с точными шагами и настройками того, как заставить grpc/http2 работать с nginx-входом на порту 80 без TLS?

Комментарии:

1. Это кажется мне более сложным, чем использование GRPC по протоколу TLS. Примерно следующие шаги: 1) запустите отдельный контроллер nginx в пустом пространстве имен, чтобы избежать проблем с основным контроллером; 2) создайте пользовательские шаблоны, используя их в качестве ссылки; 3) поместите их в configMap такое ;

2. 4) Установите шаблоны в модуль контроллера, как в этом примере

3. Спасибо @anemyte — ты прав. Это сложнее, чем должно быть!

4. Привет @SaurabhNanda. Вам удалось заставить его работать?

Ответ №1:

Это ответ вики-сообщества, опубликованный для лучшей видимости. Не стесняйтесь расширять его.

Как уже упоминалось в комментариях, шаги, чтобы заставить его работать, заключаются в следующем:

  1. Запустите отдельный контроллер nginx в пустом пространстве имен, чтобы избежать проблем с основным контроллером.
  2. Создавайте собственные шаблоны, используя их в качестве справочных.
  3. Поместите их ConfigMap вот так.
  4. Смонтируйте шаблоны в модуль контроллера, как в этом примере.