Sobre el proyecto

debux es un depurador de contenedores de código abierto diseñado para entornos Docker y Kubernetes. Aborda un problema común: depurar contenedores de estilo producción que carecen de shells o gestores de paquetes, como imágenes distroless, scratch y mínimas. A diferencia de `docker exec`, que requiere herramientas y un shell dentro de la imagen objetivo, debux inicia un contenedor de toolbox de depuración separado que se adjunta al objetivo, comparte namespaces útiles (red, proceso) y expone el sistema de archivos del objetivo en `$DEBUX_TARGET_ROOT` (generalmente `/proc/1/root`). Las capacidades clave incluyen: - **Funciona con cualquier contenedor**: Depura contenedores en ejecución, detenidos, salidos o en bucle de caída, incluidos aquellos sin shells o gestores de paquetes. - **Soporte para Docker y Kubernetes**: Flujo de trabajo unificado para contenedores Docker locales, servicios Docker Compose, contenedores Podman y pods de Kubernetes. También admite depurar nodos de Kubernetes con acceso al namespace del host. - **Toolbox listo para usar**: Herramientas preinstaladas incluyen curl, wget, dig, nmap, tcpdump, strace, ltrace, gdb, htop, vim, jq, git, openssh, zsh, tmux y más. El toolbox se basa en Wolfi y usa mise para la gestión de paquetes. - **Instalación de herramientas bajo demanda**: El comando `dctl` instala herramientas adicionales durante una sesión de depuración usando mise. Las herramientas pueden precargarse al inicio de la sesión con `--tools`. - **Shell consciente del objetivo**: Salta a la raíz del objetivo, inspecciona procesos del objetivo, reutiliza el namespace de red del objetivo y ejecuta los binarios propios del objetivo mediante chroot cuando el toolbox carece de ellos. - **Reenvío de puertos y copia de archivos**: Alcanza y extrae archivos de cualquier objetivo, incluso contenedores iniciados sin `-p` y pods distroless donde `kubectl cp` falla. - **Modo de copia de Kubernetes**: Cuando los contenedores efímeros están bloqueados por RBAC o política de admisión, `--copy` crea un pod duplicado temporal para depuración. Admite sesiones de copia de larga duración con TTL, protección Karpenter y capacidades de reenganche. - **Depuración de nodos**: `debux node` programa un pod de toolbox con namespace del host en un nodo de Kubernetes, montando el sistema de archivos raíz del nodo y compartiendo namespaces de PID, red e IPC. - **Depuración de imágenes**: Depura una imagen sin iniciarla, útil cuando la imagen en sí no puede arrancar. - **Interfaz TUI**: Navegador de objetivos a pantalla completa con navegación de contexto/namespace de Docker y Kubernetes, reenganche de sesiones activas, sesiones recientes y alternancias de opciones. - **Completado de shell**: Los completados generados incluyen objetivos Docker y Kubernetes en vivo con coincidencia de subcadenas. La herramienta se distribuye como un binario único con un script de instalación que admite Linux y macOS en amd64/arm64. Los activos de lanzamiento se verifican con checksums, y se admite verificación de firma cosign opcional. El proyecto está licenciado bajo MIT.