Как использовать Jbbelet: безопасное выполнение процесса Linux сделано простым

Как использовать Jbbelet: безопасное выполнение процесса Linux сделано простым

9 июля 2025 г.

Для кого эта статья для

Основная аудитория:Инженеры Devops, системные администраторы, команды SRE, разработчики бэкэнд, управляющие инфраструктурой Linux

Предварительные условия:

  • Базовый опыт командной строки Linux
  • Понимание SSH и удаленного управления сервером
  • Знакомство сsystemdуслуги
  • Основные знания сертификатов TLS/SSL (полезные, но не требуемые)

Что такое Иоплет?

Jablet-это легкая платформа изоляции процесса, которая позволяет запускать команды и сценарии в безопасных, контролируемых ресурсах средах. Думайте об этом как о более простой альтернативе Docker для выполнения процесса - никаких контейнеров не требуется, только один двоичный файл, который предоставляет:

  • Безопасная изоляцияИспользование пространств имен Linux
  • Пределы ресурсовДля процессора, памяти и ввода -вывода
  • Мониторинг процессов в реальном времении потоковой трансляции журнала
  • GRPC APIс аутентификацией
  • Простой CLIдля легкого взаимодействия

Независимо от того, строите ли вы систему CI/CD, безопасно выполняете код пользователя или нуждаетесь в изолированном выполнении задач, Jblet предоставляет чистое, готовое к производству решение.

Зачем использовать хлеб? Перед VS после сценариев

Давайте посмотрим, как Иоплет преобразует общие проблемы с развитием и операциями с реальными примерами:

🔍 Изоляция системного вызова в действии

❌ Без хлеба: прямое исполнение хоста (опасно)

# Running ps aux directly on the host shows ALL system processes

$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.3 167744 13132 ?        Ss   Jun26   0:11 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jun26   0:00 [kthreadd]
systemd+     564  0.0  0.2  90096  5392 ?        Ss   Jun26   0:00 /lib/systemd/systemd-resolved
messagebus   565  0.0  0.1   8808  3840 ?        Ss   Jun26   0:02 /usr/bin/dbus-daemon --system
joblet      1234  0.1  0.5 123456 10240 ?        Sl   Jun26   1:23 /opt/joblet/joblet
postgres    2345  0.0  1.2 456789 25600 ?        S    Jun26   0:45 postgres: main process
mysql       3456  0.2  2.1 789012 43520 ?        Sl   Jun26   2:10 mysqld --datadir=/var/lib/mysql
apache2     4567  0.0  0.8 234567 16384 ?        S    Jun26   0:30 /usr/sbin/apache2 -DFOREGROUND
...
user        9999  0.0  0.0  10072  1608 pts/2    R+   17:37   0:00 ps aux

Проблемы безопасности:

  • Процесс может видеть все системные процессы (включая конфиденциальные услуги)
  • Имеет доступ к деталям процесса, PID и использованию ресурсов
  • Может взаимодействовать с другими процессами или сигнализировать или сигнализировать
  • Нет изоляции от ресурсов хост -системы

✅ с Jbbelet

# Running the same command through Joblet shows ONLY the job's process
$ rnx run ps aux
Job started:
ID: 120
Command: ps aux
Status: RUNNING
StartTime: 2025-01-15T17:34:33Z

$ rnx log 120   
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
0              1  0.0  0.0  10044  1580 ?        R    17:34   0:00 ps aux

Пособия по безопасности:

  • Работа видит только свой собственный процесс (PID 1 в изолированном пространстве имен)
  • Не может обнаружить или взаимодействовать с процессами хоста
  • Полная изоляция процесса от системы хоста
  • Защищен от вмешательства другими рабочими

Быстрый старт: ваша первая работа (процесс)

Установка

# Download the latest release
wget $(curl -s https://api.github.com/repos/ehsaniara/joblet/releases/latest | grep "browser_download_url.*_amd64\.deb" | cut -d '"' -f 4)

# Interactive installation (recommended - prompts for server IP)
sudo dpkg -i joblet_*_amd64.deb

# Start the service
sudo systemctl start joblet
sudo systemctl enable joblet

# test locally
rnx --config=/opt/joblet/config/rnx-config.yml list

Вот и все! Jblet теперь работает как системная служба с автоматическими сертификатами SSL.

Ваш первый процесс

# Run a simple command
rnx run echo "Hello from Joblet!"

# Output:
# Job started:
# ID: 1
# Command: echo Hello from Joblet!
# Status: RUNNING
# StartTime: 2024-01-15T10:30:45Z
# Network: host (shared with system)

Поздравляю! Вы только что запустили свою первую изолированную работу.

Основные команды

Работающие работы

Аrnx runКоманда - ваш основной интерфейс для выполнения задания:

# Basic command
rnx run ls -la

# Python script
rnx run python3 -c "print('Hello from Python!')"

# With resource limits
rnx run --max-cpu=50 --max-memory=256 stress-ng --cpu 1 --timeout 30s

# Complex shell commands
rnx run bash -c "for i in {1..5}; do echo 'Iteration $i'; sleep 1; done"

ОБЪЯСНЕНИЯ РЕСУРСА объяснили:

  • --max-cpu=N- Процент процессора (50 = 50% от одного ядра)
  • --max-memory=N- Предел памяти в МБ
  • --max-iobps=N- Операции ввода/вывода в секунду.

Мониторинг рабочих мест

# List all jobs
rnx list

# Output:
# 1 COMPLETED StartTime: 2024-01-15T10:30:45Z Command: echo Hello from Joblet!
# 2 RUNNING StartTime: 2024-01-15T10:31:20Z Command: sleep 60
# 3 FAILED StartTime: 2024-01-15T10:32:10Z Command: invalid-command

# Get detailed job status
rnx status 2

# Output:
# Id: 2
# Command: sleep 60
# ExitCode: 0
# Started At: 2024-01-15T10:31:20Z
# Ended At: 
# Status: RUNNING
# MaxCPU: 100
# MaxMemory: 512
# MaxIOBPS: 0

Поток журнала в реальном времени

Одна из функций убийцы Иоплета-потоковая передача журнала в реальном времени:

# Stream logs from a running job
rnx log 2

# Output streams in real-time:
# Logs for job 2 (Press Ctrl+C to exit if streaming):
# Starting process...
# Processing data...
# Step 1 complete
# Step 2 complete
# ...

Команда журнала автоматически следует за выводом до завершения задания, или вы нажимаете Ctrl+c.

Конфигурация и настройка

Конфигурация сервера

Поведение Jablet можно настроить через файл конфигурации по/opt/joblet/config/joblet-config.yml:

server:
  address: "0.0.0.0"
  port: 50051

joblet:
  defaultCpuLimit: 100        # Default CPU limit (100%)
  defaultMemoryLimit: 512     # Default memory limit (512MB)
  defaultIoLimit: 0           # No I/O limit by default
  maxConcurrentJobs: 50       # Max simultaneous jobs
  jobTimeout: "1h"            # Job timeout
  validateCommands: true      # Enable command validation

security:
  # Certificates embedded here automatically
  serverCert: |
    -----BEGIN CERTIFICATE-----
    ...
  serverKey: |
    -----BEGIN PRIVATE KEY-----
    ...
  caCert: |
    -----BEGIN CERTIFICATE-----
    ...

logging:
  level: "INFO"               # DEBUG, INFO, WARN, ERROR
  format: "text"              # text or json
  output: "stdout"            # stdout or file path

После изменения конфигурации:

sudo systemctl restart joblet

Конфигурация клиента

Укажите CLI на другой сервер:

# Connect to remote Joblet instance
rnx --server 192.168.1.100:50051 run echo "Hello from remote!"

# Or set it as default
export JOBLET_SERVER=192.168.1.100:50051
rnx run echo "Using environment variable"

Безопасность и аутентификация

Управление сертификатами

Иоплет использует MTL для безопасности. Сертификаты автоматически генерируются во время установки, но вы можете восстановить их:

# Regenerate all certificates
sudo /usr/local/bin/certs_gen.sh

# This creates:
# - CA certificate
# - Server certificate 
# - Admin client certificate (full access)
# - Viewer client certificate (read-only access)

Доступ на основе ролей

Иоплет поддерживает две роли через сертификат организационных единиц:

Административная роль(полный доступ):

  • Запустить задание
  • Остановить работу
  • Просмотреть статус работы и журналы
  • Перечислите все работы

Роль зрителя(только для чтения):

  • Просмотреть статус работы и журналы
  • Перечислите все работы
  • Не может работать или остановить задания

Роль определяетсяOUПоле в сертификате клиента.

Мониторинг и устранение неполадок

Служба статуса

# Check Joblet service status
sudo systemctl status joblet

# View service logs
sudo journalctl -u joblet -f

# Check resource usage
sudo systemctl show joblet --property=CPUUsageNSec,MemoryCurrent

Отладка работы

# Check job output for failed jobs
rnx status <job-id>
rnx log <job-id>

# List recent jobs with status
rnx list | head -10

# Monitor active jobs
watch -n 2 'rnx list | grep RUNNING'

Советы по производительности

  1. Пределы ресурсов: Всегда устанавливайте соответствующие ограничения, чтобы предотвратить сбежавшие задания
  2. Одновременная работа: Мониторинг системных ресурсов при выполнении многих параллельных заданий
  3. Управление журналом: Длительные работы могут генерировать большие журналы - рассмотрите вращение журнала
  4. Уборка: Иоплет автоматически очищает выполненные задания, но контролируйте дисковое пространство

Сравнение с альтернативами

Особенность

Иоплет

Докер

Система

Сложность установки

Простой

Умеренный

Сложный

Изоляция ресурсов

Ограничен

Сетевая изоляция

Необязательный

Изоляция файловой системы

Журналы в реальном времени

Руководство

Руководство

Job API

Руководство

Одиночный бинарный

Получить помощь

  • Документация: ПроверьтеРепозиторий GitHub
  • Проблемы: Сообщите об ошибках и запросах функций на GitHub
  • Журналы: Всегда проверяйтеsudo journalctl -u jobletпо вопросам обслуживания
  • Сообщество: Присоединяйтесь к обсуждениям в вопросах GitHub проекта

Заключение

Jbbelt обеспечивает чистый, простой способ выполнения изолированных заданий без сложности оркестровки контейнеров. Независимо от того, обрабатываете ли вы данные, запускаете тесты или выполняете код пользователя, комбинация безопасности, простоты и мониторинга Jablet делает его отличным выбором для выполнения задания.

Ключевые выводы:

  • Установка проста: Один пакет, автоматическая конфигурация
  • Использование интуитивно понятно: Знакомый интерфейс командной строки
  • Безопасность встроена: Изоляция пространства имен и аутентификация MTLS
  • Мониторинг в режиме реального времени: Журналы потоков и мониторинг использования ресурсов
  • Интеграция проста: GRPC API для программного доступа

Начните с простых команд, экспериментируйте с ограничениями ресурсов и постепенно интегрируйте Jbbelt в ваши рабочие процессы. Платформа предназначена для роста с вашими потребностями при сохранении простоты и безопасности.

GitHub

https://github.com/ehsaniara/joblet?embedable=true


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE