client-consum

Api client para KuberProject con servicios rest implementando el framework gin-gonic https://theboshy.github.io/client-consum/

View the Project on GitHub theboshy/client-consum

Go Report Card License GitHub Stars

DockerHub


Client Consum API 🚀

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.


📌 Requisitos

Asegúrate de tener instaladas las siguientes herramientas antes de comenzar:


⚙️ Construcción y Despliegue

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

📂 Archivos de Configuración


🔥 Endpoints de la API

Los endpoints disponibles en la API son los siguientes:

📌 Obtener el MCD de dos números

Endpoint:

GET /gcd/{a}/{b}

Ejemplo de uso:

$ curl http://<API_URL>/gcd/6/2

Respuesta:

{
  "result": 2
}

📌 Obtener la URL del servicio en Minikube

Comando:

$ minikube service api-service --url

Salida esperada:

http://xxx.xxx.xx.xx:xxxx

🔍 Soporte para net/http/pprof

📥 Instalación de pprof

net/http/pprof

$ go get github.com/DeanThompson/ginpprof

📌 Rutas de Perfilado (Profiler)

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

📌 Uso del profiler

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/

📊 Generación de Gráficos con Graphviz

📥 Instalación de Graphviz 2.38

Usando pip

$ pip install graphviz

Usando Chocolatey

$ choco install graphviz

Configura la variable de entorno para Graphviz en el PATH del sistema.

Configuración del PATH

📌 Uso del Profiler con Graphviz

$ go tool pprof goprofex http://xxx.xxx.xx.xx:xxxx/profiler/debug/pprof/profile/
$ (pprof) web

Ejemplo de gráfica


📝 Licencia

Este proyecto está licenciado bajo la Licencia Apache 2.0.