🚀 Inicio Rápido
Esta sección presenta una guía para realizar la configuración y puesta en funcionamiento de Automate External Tms Loads para el desarrollo de forma local en tu computadora.
✅ Prerrequisitos
Antes de comenzar, asegúrate de tener lo siguiente instalado en tu sistema:
- 🐍 Python 3.11
-
📦 Pipenv: Una herramienta para gestionar las dependencias de proyectos de Python. Puedes instalarlo usando
pip:
* 🐳 Docker: Puedes instalar Docker Desktop (Instrucciones de instalación) o solo el motor de Docker (Docker Engine). Para Ubuntu, puedes usar:pip install pipenv
* kubectl: La herramienta de línea de comandos de Kubernetes, que será necesaria para conectarnos al servicio de Graph API, dado que es un servicio interno no expuesto públicamente a internet. * Instrucciones de instalación * Lens: Una aplicación de escritorio que permite gestionar tus clústeres de Kubernetes de forma cómoda y eficiente. Esta aplicación nos permitirá acceder al clúster donde se encuentra el servicio de Graph API. * Instrucciones de instalaciónsudo apt update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
📁 1. Clonar el Repositorio
Primero, clona el repositorio del proyecto por medio de SSH desde GitHub:
git clone git@github.com:guanes/glt-bol-service.git
cd glt-bol-service
📦 2. Instalar Dependencias
Este proyecto utiliza Pipenv para gestionar sus dependencias. Para instalarlas, ejecuta el siguiente comando desde el directorio raíz del proyecto:
pipenv install
Esto creará un entorno virtual e instalará todos los paquetes necesarios especificados en el Pipfile.
Para activar el entorno virtual, ejecuta:
pipenv shell
💻 3. Configurar la conexión a Graph API
Con la instalación previa de kubectl, abre Lens y una terminal de comandos. Luego, ejecuta el siguiente comando en la terminal para verificar el contexto actual de kubectl:
kubectl config current-context
Este comando te dirá el clúster al que estás conectado. El contexto para Automate External Tms Loads es charliebertvg. Si tu contexto actual no es el mismo, ejecuta el siguiente comando para cambiarlo:
gcloud container clusters get-credentials glt-cluster --zone us-central1-c --project charliebertvg
Después de establecer el contexto correcto, ve a Lens, donde debe aparecer el clúster gke_charliebertvg_us-central1-c_glt-cluster.
En Lens, navega a Workloads > Pods y selecciona el namespace dev-assistant. Busca el pod cuyo nombre comience con graph-ltl-deploy, que corresponde al despliegue de Graph API. Copia el nombre completo del pod, ya que lo necesitarás para el siguiente paso.
Vuelve a la terminal y ejecuta el siguiente comando para establecer la conexión con Graph API:
kubectl port-forward -n dev-assistant [nombre_completo_del_pod_graph-ltl-deploy] 5050:8080 --address 0.0.0.0
Por ejemplo:
kubectl port-forward -n dev-assistant graph-ltl-deploy-58ff94c8dc-nz5md 5050:8080 --address 0.0.0.0
Deberías ver el siguiente mensaje, indicando que la conexión fue exitosa: Forwarding from 0.0.0.0:5050 -> 8080.
Nota: El nombre del pod puede cambiar. Si pierdes la conexión, verifica que el pod siga activo y que el nombre no haya cambiado. Si cambió, copia el nuevo nombre y vuelve a ejecutar el comando
port-forward.
🚀 4. Ejecutar la Aplicación
La forma recomendada de ejecutar el proyecto localmente es utilizando Docker Compose, lo que permite iniciar la aplicación con un solo comando.
Antes de continuar, es necesario que solicites al líder del proyecto los archivos .env, cloud_key.json y launch.json, y los coloques en el directorio raíz del proyecto.
Una vez que tengas los archivos, ejecuta el siguiente comando en una nueva terminal (no en la que se está ejecutando el port-forward):
docker compose -f docker/docker-compose.yml -f docker/docker-compose.override.yml up --build
La ejecución del comando puede tardar varios minutos, ya que creará la imagen de Docker y levantará el contenedor. Al finalizar, si tienes Docker Desktop, puedes verificar visualmente que el contenedor se esté ejecutando correctamente.
➡️ 5. Realizar una llamada a la API
La conexión con Graph API se utiliza para acceder a una cuenta de correo, obtener los correos electrónicos relevantes y descargar los archivos BOL adjuntos. Los correos se filtran por remitente (FROM) y asunto (SUBJECT).
Para probar el flujo localmente, debes realizar los siguientes pasos:
-
Configurar el remitente: En el archivo
docker/docker-compose.override.yml, modifica la variable de entornoMAIL_FILTER_FROMy establece tu propio correo electrónico de la organización. -
Enviar un correo de prueba: Desde la dirección de correo que configuraste en el paso anterior, envía un correo a
charlieshared@goglt.comcon el siguiente asunto:Booking dispatched - BOLXXXXX, dondeXXXXXcorresponde al número de 5 dígitos del BOL. -
Ejecutar el proceso: Una vez enviado el correo, puedes ir a la documentación Swagger de la API para realizar una petición. El único parámetro de entrada es una fecha y hora (
start_date). Este valor debe ser unos minutos anterior al momento en que enviaste el correo, ya que la API buscará todos los mensajes que coincidan a partir de esa fecha y hora.