Sobre o projeto
debux é um depurador de contêineres de código aberto projetado para ambientes Docker e Kubernetes. Ele aborda um ponto problemático comum: depurar contêineres de estilo de produção que não possuem shells ou gerenciadores de pacotes, como imagens distroless, scratch e mínimas. Ao contrário de `docker exec`, que requer ferramentas e um shell dentro da imagem alvo, o debux inicia um contêiner de caixa de ferramentas de depuração separado que anexa ao alvo, compartilha namespaces úteis (rede, processo) e expõe o sistema de arquivos alvo em `$DEBUX_TARGET_ROOT` (geralmente `/proc/1/root`).
Os principais recursos incluem:
- **Funciona com qualquer contêiner**: Depura contêineres em execução, parados, encerrados ou em loop de falha, incluindo aqueles sem shells ou gerenciadores de pacotes.
- **Suporte a Docker e Kubernetes**: Fluxo de trabalho unificado para contêineres Docker locais, serviços Docker Compose, contêineres Podman e pods Kubernetes. Também suporta depuração de nós Kubernetes com acesso ao namespace do host.
- **Caixa de ferramentas pronta para uso**: Ferramentas pré-instaladas incluem curl, wget, dig, nmap, tcpdump, strace, ltrace, gdb, htop, vim, jq, git, openssh, zsh, tmux e mais. A caixa de ferramentas é baseada em Wolfi e usa mise para gerenciamento de pacotes.
- **Instalação de ferramentas sob demanda**: O comando `dctl` instala ferramentas adicionais durante uma sessão de depuração usando mise. As ferramentas podem ser pré-carregadas no início da sessão com `--tools`.
- **Shell ciente do alvo**: Entre na raiz do alvo, inspecione processos do alvo, reutilize o namespace de rede do alvo e execute os binários do próprio alvo via chroot quando a caixa de ferramentas não os tiver.
- **Encaminhamento de porta e cópia de arquivos**: Alcance e extraia arquivos de qualquer alvo, mesmo contêineres iniciados sem `-p` e pods distroless onde `kubectl cp` falha.
- **Modo de cópia Kubernetes**: Quando contêineres efêmeros são bloqueados por RBAC ou política de admissão, `--copy` cria um pod duplicado temporário para depuração. Suporta sessões de cópia de longa duração com TTL, proteção Karpenter e recursos de reanexação.
- **Depuração de nós**: `debux node` agenda um pod de caixa de ferramentas com namespace do host em um nó Kubernetes, montando o sistema de arquivos raiz do nó e compartilhando namespaces de PID, rede e IPC.
- **Depuração de imagens**: Depure uma imagem sem iniciá-la, útil quando a própria imagem não pode inicializar.
- **Interface TUI**: Navegador de alvos em tela cheia com navegação de contexto/namespace Docker e Kubernetes, reanexação de sessão ativa, sessões recentes e alternâncias de opções.
- **Conclusão de shell**: As conclusões geradas incluem alvos Docker e Kubernetes ao vivo com correspondência de substring.
A ferramenta é distribuída como um único binário com um script de instalação que suporta Linux e macOS em amd64/arm64. Os ativos de lançamento são verificados por checksum, e a verificação opcional de assinatura cosign é suportada. O projeto é licenciado sob MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.