¿Cómo usar API7 Enterprise para hacer proxy de servicios gRPC?
January 2, 2024
En el panorama tecnológico actual en constante evolución, gRPC (Google Remote Procedure Call) se ha convertido en un componente indispensable en muchas aplicaciones. Sin embargo, para aprovechar al máximo el potencial de gRPC, una puerta de enlace API robusta es esencial para la gestión efectiva de los servicios gRPC, proporcionando funcionalidades cruciales como la conversión de protocolos, el balanceo de carga, la autenticación y la autorización.
Ya sea que estés familiarizado con gRPC o no, una lectura rápida de 5 minutos de este artículo te proporcionará el conocimiento necesario sobre cómo usar API7 Enterprise para hacer de proxy de servicios gRPC.
Requisitos Previos
-
Instala API7 Enterprise.
-
Instala
grpcurl
para simular interacciones de cliente gRPC con tu servidor gRPC. -
Inicia un servicio gRPC para pruebas:
- API7.ai proporciona un ejemplo de servicio gRPC para pruebas. Alternativamente, puedes ejecutarlo usando el siguiente comando de docker:
docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
- Una vez iniciado, usa
grpcurl
para ver la lista de servicios gRPC disponibles y los métodos:
$ 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
Usando API7 Enterprise para Hacer de Proxy de Servicios gRPC
Actualizar la Configuración de la Instancia de la Puerta de Enlace
Por defecto, las instancias de API7 Enterprise solo admiten HTTP/2 cifrado con TLS en el puerto 9443. Para facilitar las pruebas, modifica el archivo de configuración de la instancia de la puerta de enlace en la sección node_listen
, añadiendo un puerto 9081 para admitir HTTP/2 no cifrado.
apisix:
node_listen:
- port: 9080
enable_http2: false
- port: 9081
enable_http2: true
Después de realizar los cambios, vuelve a ejecutar docker-compose up -d
en el directorio api7-ee
donde está instalado API7 Enterprise.
Configurar Servicios y Rutas
A continuación, en el panel de control de API7 Enterprise, configura los recursos correspondientes para hacer de proxy del servicio gRPC preparado.
- Añade un servicio llamado
grpc-example
y seleccionagRPC
como el esquema del upstream.
-
Añade una ruta dentro del servicio grpc-example
- Formato de la ruta:
/{servicio}/{método}
- Por ejemplo, basado en la lista de servicios gRPC y métodos consultados previamente, configura la ruta como
/helloworld.Greeter/SayHello
.
- Formato de la ruta:
Publicar Servicios para Pruebas
Después de crear el servicio y la ruta, publica el servicio en el grupo de la puerta de enlace para que sea efectivo.
-
Haz clic en "Publicar Servicio", selecciona el grupo de la puerta de enlace especificado y elige el servicio a publicar.
-
Añade un nodo de servicio gRPC (IP + puerto), luego haz clic en "Publicar".
-
Prueba el servicio gRPC usando
grpcurl
:- Usa el archivo
helloworld.proto
para asegurarte de que grpcurl alinee el formato de solicitud y respuesta con la definición del servicio gRPC. El archivo .proto para este ejemplo se puede encontrar aquí. - Ejecuta el siguiente comando para ver el proxy exitoso del servicio gRPC usando API7 Enterprise.
$ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 helloworld.Greeter.SayHello { "message": "Hello apisix" }
- Usa el archivo
Conclusión
API7 Enterprise cuenta con más de 100 plugins integrados, cubriendo una amplia gama de funcionalidades como autenticación, autorización, limitación de tasa, registro y monitoreo. Utilizar API7 Enterprise para hacer de proxy de servicios gRPC mejora significativamente la flexibilidad, seguridad, rendimiento y capacidad de gestión del sistema, proporcionando a los desarrolladores y equipos de operaciones herramientas poderosas y mecanismos de control. Da el paso para probar API7 Enterprise y potencia tu aplicación gRPC.