home
Planet ingest
Infraestructura
---> Esto al 2024-09-23
-
Corre en
Main Worker 2 -
El sistema se deploya dockerizado. Son 3 contenedores que se lanzan con docker compose. 001-boilerplate.conf Dockerfile LICENSE README.md init.py boilerplate.wsgi core docker-compose.yml docs features requirements.txt run.py run_api.py wsgi.conf API -> para las solicitudes internas de alta + los endpoints de manejo de keys por espacio 001-boilerplate.conf Dockerfile LICENSE README.md init.py boilerplate.wsgi core docker-compose.yml docs features requirements.txt run.py run_api.py wsgi.conf Worker -> Celery 001-boilerplate.conf Dockerfile LICENSE README.md init.py boilerplate.wsgi core docker-compose.yml docs features requirements.txt run.py run_api.py wsgi.conf beat -> Cron
-
La imagen se buildea en el CI/CD y se sube a ECR bajo el nombre
planet_ingest, donde cada tag es el commit de master. -
El contenedor que corre la API mapea el puerto 12002 al host ya que ahi sirve Flask. No se configuró con apache ya que la API tiene un uso muy esporádico, asi se reduce el tamaño de la imagen. Por lo tanto corre el server de desarrollo de Flask.
-
Celery se conecta al redis general.
-
Hay un DNS en Route53
planetworker.internal.auravant.comque apunta al main_worker2. -
El proyecto tiene Sentry configurado.
Keys
Entre las variables de entorno se encuentra API_KEY.
Esa es una key generada desde una cuenta de planetlabs que pertenezca a la organziación de auravant.
Deploy
El único truco es aclarar el tag de la imagen que se va a correr en el docker-compose.yml
(recordar hacerlo para los 3 servicios)
Para correr el sistema:
docker compose up -d
Para deploy de nueva versión:
- cambiar el tag de la imagen en el
docker-compose.ymlpor el de la nueva versión - pull de la imagen nueva
docker compose pull
- correrlo
docker compose up -d
- borrar las imágenes que ya no se usen del servidor.
Notas:
- corre en main_worker2 -> ~/planet_ingest
- En la documentación están especificadas algunas funciones para reprocesar en caso de error.
- Actualmente la integración usa la api_key de bruno. Habría que cambiarla por cualquiera de otra cuenta que pertenezca a auravant.
- Revisar Sentry periódicamente.
- Suele darse un fallo en “results fetcher” por errores de planet (el servidor responde con 500), en ese caso no pasa nada porque si falta algún resultado de suscripciones, la próxima vez que verifique resultados, lo encontrará.
- Ha pasado que se desconecta de REdis y hay que tirar un docker compose restart
- Podría fallar el poll alguna orden, lo que implica tener que dispararla manualmente (ver punto 1 del To-Do).
- En la página de planet labs están listadas todas las ordenes y suscripciones creadas.
To-Do:
- !!! GUardar en la base de datos las órdenes que se crean, para poder re-intentarlas automáticamente en vez de a mano.
- Un cron que dé de baja la suscripciones de lotes eliminados.
- UN cron que elimine las imágenes de lotes eliminados +30 días (como con sentinel).