Api client para KuberProject con servicios rest implementando el framework gin-gonic https://theboshy.github.io/client-consum/
Client Consum API es un servicio REST implementado con el framework Gin-Gonic para el proyecto KuberProject. Este servicio actúa como un cliente que consume datos de KuberProject a través de una conexión RPC.
Tras recibir una solicitud a través de API REST, el servicio se conecta mediante el protocolo Buf al servidor TCP alojado en KuberProject.
Asegúrate de tener instaladas las siguientes herramientas antes de comenzar:
Ejecuta los siguientes comandos para construir y desplegar el servicio en Kubernetes:
# Navega al directorio del proyecto
$ cd ./[<project_path>]
# Construcción de archivos protobuf (pb)
$ protoc -I ./mcs --go_out=plugins=grpc:./pb ./mcs/*.proto
# Configurar el entorno Docker en Minikube
$ eval $(minikube docker-env)
# Construcción de la imagen Docker
$ docker build -t [<docker_image_name>] -f Dockerfile.api .
# Desplegar en Kubernetes
$ kubectl apply -f api-deployment.yaml
Los endpoints disponibles en la API son los siguientes:
Endpoint:
GET /gcd/{a}/{b}
Ejemplo de uso:
$ curl http://<API_URL>/gcd/6/2
Respuesta:
{
"result": 2
}
Comando:
$ minikube service api-service --url
Salida esperada:
http://xxx.xxx.xx.xx:xxxx
$ go get github.com/DeanThompson/ginpprof
Método | Ruta |
---|---|
GET | /debug/pprof/ |
GET | /debug/pprof/heap |
GET | /debug/pprof/goroutine |
GET | /debug/pprof/block |
GET | /debug/pprof/threadcreate |
GET | /debug/pprof/cmdline |
GET | /debug/pprof/profile |
GET | /debug/pprof/symbol |
POST | /debug/pprof/symbol |
GET | /debug/pprof/trace |
GET | /debug/pprof/mutex |
Ejemplo de uso fuera del clúster de Minikube:
$ go tool pprof goprofex http://localhost:3000/profiler/debug/pprof/profile/
$ go tool pprof goprofex http://localhost:3000/profiler/debug/pprof/heap/
$ pip install graphviz
$ choco install graphviz
Configura la variable de entorno para Graphviz en el PATH del sistema.
$ go tool pprof goprofex http://xxx.xxx.xx.xx:xxxx/profiler/debug/pprof/profile/
$ (pprof) web
Este proyecto está licenciado bajo la Licencia Apache 2.0.