Об этом проекте
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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.