Об этом проекте

debux — это отладчик контейнеров с открытым исходным кодом, разработанный для сред Docker и Kubernetes. Он решает распространённую проблему: отладку контейнеров производственного типа, в которых отсутствуют оболочки или менеджеры пакетов, таких как образы distroless, scratch и минимальные образы. В отличие от `docker exec`, который требует наличия инструментов и оболочки внутри целевого образа, debux запускает отдельный контейнер отладочного набора инструментов, который подключается к цели, разделяет полезные пространства имён (сеть, процессы) и предоставляет доступ к файловой системе цели по пути `$DEBUX_TARGET_ROOT` (обычно `/proc/1/root`). Ключевые возможности включают: - **Работает с любым контейнером**: отладка работающих, остановленных, завершившихся или циклически перезапускающихся контейнеров, включая те, в которых отсутствуют оболочки или менеджеры пакетов. - **Поддержка Docker и Kubernetes**: единый рабочий процесс для локальных контейнеров Docker, сервисов Docker Compose, контейнеров Podman и подов Kubernetes. Также поддерживается отладка узлов Kubernetes с доступом к пространству имён хоста. - **Готовый к использованию набор инструментов**: предустановленные инструменты включают curl, wget, dig, nmap, tcpdump, strace, ltrace, gdb, htop, vim, jq, git, openssh, zsh, tmux и другие. Набор инструментов основан на Wolfi и использует mise для управления пакетами. - **Установка инструментов по требованию**: команда `dctl` устанавливает дополнительные инструменты во время сеанса отладки с помощью mise. Инструменты можно предварительно загрузить при запуске сеанса с помощью `--tools`. - **Оболочка с учётом цели**: переход в корневую директорию цели, проверка процессов цели, повторное использование сетевого пространства имён цели и запуск собственных двоичных файлов цели через chroot, если в наборе инструментов их нет. - **Переадресация портов и копирование файлов**: доступ к файлам и их извлечение из любой цели, даже из контейнеров, запущенных без `-p`, и подов distroless, где `kubectl cp` не работает. - **Режим копирования Kubernetes**: когда эфемерные контейнеры заблокированы RBAC или политикой допуска, `--copy` создаёт временный дублирующий под для отладки. Поддерживаются длительные сеансы копирования с TTL, защитой Karpenter и возможностью повторного подключения. - **Отладка узлов**: `debux node` планирует под набора инструментов с пространством имён хоста на узле Kubernetes, монтируя корневую файловую систему узла и разделяя пространства имён PID, сети и IPC. - **Отладка образов**: отладка образа без его запуска, полезна, когда сам образ не может загрузиться. - **Интерфейс TUI**: полноэкранный браузер целей с навигацией по контекстам/пространствам имён Docker и Kubernetes, повторным подключением к активным сеансам, недавними сеансами и переключателями параметров. - **Завершение ввода в оболочке**: сгенерированные завершения включают живые цели Docker и Kubernetes с сопоставлением подстрок. Инструмент распространяется как один двоичный файл со скриптом установки, поддерживающим Linux и macOS на amd64/arm64. Ресурсы релиза проверяются контрольными суммами, поддерживается дополнительная проверка подписи cosign. Проект лицензирован под MIT.