Skip to content

Отладка

Selenite не предоставляет интерактивный shell на хосте. Вместо этого для диагностики и отладки используется команда debug, которая запускает привилегированный контейнер с примонтированной корневой файловой системой хоста в /host.

Команда debug

ssh -t <server> debug <image> [command...]

Параметры:

  • <image> — образ контейнера (например, busybox, registry.access.redhat.com/ubi9/toolbox).
  • [command...] — необязательная команда для выполнения внутри контейнера. Если не указана, запускается sh.

Флаг -t обязателен, так как команда требует PTY (псевдотерминал).

Примеры

Открыть интерактивный shell в контейнере:

bash
ssh -t server debug alpine

Выполнить одну команду и выйти:

bash
ssh -t server debug alpine cat /host/etc/hostname

Что происходит внутри

Команда debug запускает временный привилегированный контейнер на хосте. Контейнер имеет полный доступ к устройствам и namespaces хоста, а его корневая файловая система примонтирована в /host внутри контейнера. Рабочая директория по умолчанию — /host, поэтому стандартные команды сразу работают с файлами системы.

После завершения сессии контейнер удаляется. Образ тоже удаляется, чтобы не занимать место на диске.

WARNING

Команда debug предоставляет неограниченный доступ к хосту. Разрешение на её использование контролируется через RBAC — ресурс debug, действие invoke.

Права доступа

Чтобы использовать debug, пользователю нужно разрешение invoke на ресурс debug:

yaml
access:
  roles:
    - name: debugger
      rules:
        - resources: [debug]
          verbs: [invoke]
  users:
    - name: alice
      roles: [debugger]
      keys:
        - ssh-ed25519 AAAAC3NzaC... alice@example.com

Пользователи с ролью root имеют доступ автоматически.