Как использовать API7 Enterprise для проксирования gRPC-сервисов?
January 2, 2024
В современном быстро развивающемся технологическом ландшафте gRPC (Google Remote Procedure Call) стал неотъемлемым компонентом многих приложений. Однако, чтобы полностью раскрыть потенциал gRPC, надежный API-шлюз необходим для эффективного управления gRPC-сервисами, предоставляя такие важные функции, как преобразование протоколов, балансировка нагрузки, аутентификация и авторизация.
Независимо от того, знакомы ли вы с gRPC или нет, быстрый 5-минутный просмотр этой статьи даст вам знания о том, как использовать API7 Enterprise для проксирования gRPC-сервисов.

Предварительные требования
-
Установите API7 Enterprise.
-
Установите
grpcurlдля имитации взаимодействия клиента gRPC с вашим gRPC-сервером. -
Запустите gRPC-сервис для тестирования:
- API7.ai предоставляет пример gRPC-сервиса для тестирования. Вы также можете запустить его с помощью следующей команды docker:
docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0- После запуска используйте
grpcurlдля просмотра доступного списка gRPC-сервисов и методов:
$ grpcurl -plaintext 127.0.0.1:50051 list grpc.reflection.v1alpha.ServerReflection helloworld.Greeter helloworld.TestImport $ grpcurl -plaintext 127.0.0.1:50051 list helloworld.Greeter helloworld.Greeter.GetErrResp helloworld.Greeter.Plus helloworld.Greeter.SayHello helloworld.Greeter.SayHelloAfterDelay helloworld.Greeter.SayHelloBidirectionalStream helloworld.Greeter.SayHelloClientStream helloworld.Greeter.SayHelloServerStream
Использование API7 Enterprise для проксирования gRPC-сервисов
Обновление конфигурации экземпляра шлюза
По умолчанию экземпляры API7 Enterprise поддерживают только TLS-зашифрованный HTTP/2 на порту 9443. Для удобства тестирования измените конфигурационный файл экземпляра шлюза в разделе node_listen, добавив порт 9081 для поддержки незашифрованного HTTP/2.
apisix: node_listen: - port: 9080 enable_http2: false - port: 9081 enable_http2: true
После внесения изменений перезапустите docker-compose up -d в каталоге api7-ee, где установлен API7 Enterprise.
Настройка сервисов и маршрутов
Далее на панели управления API7 Enterprise настройте соответствующие ресурсы для проксирования подготовленного gRPC-сервиса.
- Добавьте сервис с именем
grpc-exampleи выберитеgRPCв качестве схемы вышестоящего сервера.

-
Добавьте маршрут в сервис grpc-example
- Формат пути маршрута:
/{service}/{method} - Например, на основе ранее запрошенного списка gRPC-сервисов и методов настройте путь как
/helloworld.Greeter/SayHello.
- Формат пути маршрута:

Публикация сервисов для тестирования
После создания сервиса и маршрута опубликуйте сервис в группе шлюзов, чтобы он стал активным.
-
Нажмите на "Опубликовать сервис", выберите указанную группу шлюзов и выберите сервис для публикации.
-
Добавьте узел gRPC-сервиса (IP + порт), затем нажмите "Опубликовать".
-
Протестируйте gRPC-сервис с помощью
grpcurl:- Используйте файл
helloworld.proto, чтобы убедиться, что grpcurl согласует формат запроса и ответа с определением gRPC-сервиса. Файл .proto для этого примера можно найти здесь. - Выполните следующую команду, чтобы увидеть успешное проксирование gRPC-сервиса с использованием API7 Enterprise.
$ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 helloworld.Greeter.SayHello { "message": "Hello apisix" } - Используйте файл
Заключение
API7 Enterprise обладает более чем 100 встроенными плагинами, охватывающими широкий спектр функций, таких как аутентификация, авторизация, ограничение скорости, логирование и мониторинг. Использование API7 Enterprise для проксирования gRPC-сервисов значительно повышает гибкость, безопасность, производительность и управляемость системы, предоставляя разработчикам и операционным командам мощные инструменты и механизмы управления. Сделайте шаг, чтобы попробовать API7 Enterprise и усилить ваше gRPC-приложение!