Aprende a ordenar tus entornos de desarrollo y pruebas en GCP
Experimentar con Google Cloud, probar ideas nuevas y crear muchos recursos en la nube para POCs puede dejar bastante desorden. Y dejarlo ahí termina saliendo caro. Además, ese desorden tiene un costo: el de volver a entender tu propio entorno cada vez que retomas el proyecto.
¿Qué hacer? ¡Volarlo todo!

¡Volarlo todo!
Si eres cliente de DoiT International, puedes usar los Sandbox Projects, que son autocontenidos y se eliminan para dejar todo limpio.
Un breve pitch de DoiT: si contratas tus servicios de GCP a través de DoiT, no pagas más de lo que pagarías por tu cuenta. Encima, recibes consultoría gratuita de arquitectos como yo y acceso a las mejores herramientas de control de costos.
Pero si todavía no eres cliente de DoiT, o si en tus proyectos de desarrollo hay recursos que prefieres conservar mientras eliminas el resto, échale un vistazo a Cloud Blaster, un nuevo proyecto open source del que voy a hablar en este artículo. En pocas palabras, Cloud Blaster encuentra y elimina de forma segura los recursos que ya no necesitas.
Cloud Blaster vs Safe Scrub
Safe Scrub es un proyecto que escribí en Bash. En esencia, hace lo mismo. Si quieres más detalles, lee este blog post.
Las ventajas de Safe Scrub:
- Safe Scrub te da la tranquilidad de no eliminar nada de inmediato. Solo genera un script de Bash con una lista simple de sentencias
delete. Después lo revisas y lo ejecutas cuando quieras. - Como Safe Scrub es Bash puro, puede darte más confianza ver el código que se ejecuta, sin pasos de compilación.
- Safe Scrub admite más tipos de recursos que Cloud Blaster (por ahora).
Cloud Blaster tiene sus propias funciones de seguridad, como verás más adelante. También admite los tipos de recursos más comunes, con la posibilidad de añadir más.
Frente a Safe Scrub, Cloud Blaster soporta mayor complejidad porque está hecho en Kotlin y no en Bash. Esto facilita agregar nuevos tipos de recursos y funciones, y manejar casos especiales con solidez. Cloud Scrub está al límite de la complejidad que se puede manejar en Bash, así que es poco probable que avance más.
Caso de uso de Cloud Blaster: el mismo que Safe Scrub
Está pensado para proyectos de desarrollo y pruebas informales, en los que quieres empezar de cero al final del día o antes de una nueva ronda de pruebas.
Es menos probable que sea útil en proyectos de producción o staging, o incluso en proyectos de pruebas en equipo. Para esos casos deberías usar Terraform u otra Infrastructure as Code (IaC) que lleve registro de los recursos creados. Así puedes eliminarlos cuando lo necesites.
Primero la seguridad
Para que todo sea seguro y confiable, Cloud Blaster cuenta con estas funciones.
- El primer paso, el Lister, no elimina ningún recurso. Solo lista los recursos en un archivo que puedes revisar.
- El Lister te exige indicar el proyecto de forma explícita. No usa de manera implícita el proyecto por defecto de tu
gcloud. - El Lister se puede filtrar. Puedes definir una expresión regular por tipo de recurso para que solo se listen u omitan ciertos recursos.
- Después de ejecutar el Lister, revisas la lista de recursos por eliminar y agregas la línea de comentario
# Ready to deleteal inicio. Así te aseguras de no saltarte la etapa de revisión. (Si te gusta vivir al límite, escribe un script que añada este comentario entre los pasos del Lister y el Deleter.) - Por último, ejecuta el Deleter, que elimina exactamente los recursos listados en el archivo.
Instrucciones
Para obtener el código, haz git clone o descárgalo como archivo zip.
Consulta el README para ver detalles y opciones. En resumen:
- Si lo deseas, edita
list-filter.yamlpara incluir en lista blanca o negra los recursos que quieras dejar dentro o fuera de la lista de eliminación. - Ejecuta el Lister desde la línea de comandos.
- Revisa el archivo de salida
asset-list.txty agrega un comentario# Ready to delete. - Ejecuta el Deleter.
Para ver otras opciones, ejecuta ./lister.sh -h o ./deleter.sh -h.
Consulta el README de Cloud Blaster para más detalles
Funcionalidades
Cloud Blaster ya admite los tipos de recursos más comunes que se crean y se desmontan en desarrollo y QA. Entre ellos:
- Instancias, discos, firewalls y direcciones de Google Compute Engine
- Topics y suscripciones de Google Cloud PubSub
- Clusters regionales y zonales de Google Kubernetes Engine
- Métricas de logs de Google Cloud Operations
- Servicios y versiones de Google App Engine
- Google Cloud Functions
- Servicios de Cloud Run
- Instancias de Cloud SQL
- Buckets de Google Cloud Storage
Cómo agregar funcionalidades
Si quieres más tipos de recursos o nuevas funciones, abre un issue en GitHub o añade soporte para el tipo de recurso y envía un pull request.
¡Es fácil!
La sintaxis concisa de Kotlin y una clase base de deleter hacen que sea sencillo agregar un deleter para un nuevo tipo de recurso. El cuerpo del deleter de PubSub Topic, por ejemplo, tiene apenas siete líneas. Desde que escribí el primer borrador de este artículo, agregué uno para Cloud SQL y lo probé, en apenas 15 minutos y 13 líneas de código.
Así se hace:
- Descomenta el tipo de recurso en
asset-types.propertiesy, si hace falta, especifica ahí la clase del deleter. Las instrucciones están al inicio de ese archivo. - Agrega el tipo de recurso a
list-filter.yaml. (Mantenemos dos archivos de configuración separados porque solo uno está pensado para que lo edite el usuario. Si olvidas editar este archivo, un mensaje de error claro te lo recordará.) Si lo deseas, agrega un filtro por defecto, como en el ejemplo deFirewalldentro del archivo. - Implementa una subclase de
BaseDeleterjunto a las clases de deleter existentes. Te sirven de ejemplo para invocar las distintas APIs de Google Cloud.
Otros proyectos y enfoques
- Safe Scrub es un proyecto en Bash más antiguo que hace lo mismo.
- Travis CI GCloud Cleanup y Bazooka también eliminan recursos de GCE.
- Cloud Nuke hace lo mismo en AWS.
- Sandbox Projects está disponible sin costo para los clientes de DoiT International.
Para mantenerte al día, síguenos en el DoiT Engineering Blog , el canal de DoiT en LinkedIn y el canal de DoiT en Twitter . Para explorar oportunidades laborales, visita https://careers.doit-intl.com .