Библиотека девопса | DevOps, SRE, Sysadmin
Все самое полезное для девопсера в одном канале. Наши курсы: https://clc.to/ZJ7Z1w По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Mostrar más📈 Análisis del canal de Telegram Библиотека девопса | DevOps, SRE, Sysadmin
El canal Библиотека девопса | DevOps, SRE, Sysadmin (@devopsslib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 10 390 suscriptores, ocupando la posición 11 449 en la categoría Tecnologías y Aplicaciones y el puesto 61 235 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 10 390 suscriptores.
Según los últimos datos del 27 agosto, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de 6, y en las últimas 24 horas de 0, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 10.22%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 4.22% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 1 062 visualizaciones. En el primer día suele acumular 439 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 1.
- Intereses temáticos: El contenido se centra en temas clave como devops'a, навигация, скрипт, docker, git.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Все самое полезное для девопсера в одном канале.
Наши курсы: https://clc.to/ZJ7Z1w
По рекламе: @proglib_adv
Для обратной связи: @proglibrary_feeedback_bot
РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 28 agosto, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
root (UID 0) внутри контейнера, на хосте отображается в непривилегированного пользователя. Так, даже при побеге из контейнера, атакующий не получит прав на ноде.
Второй важный момент: с hostUsers: false возможности вроде CAP_NET_ADMIN становятся namespaced. Это значит, что они дают административные права только над ресурсами внутри контейнера, не затрагивая хост. Раньше такой сценарий требовал запуска полностью привилегированного контейнера.
Как включить
Одно поле в манифесте пода:
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
hostUsers: false
containers:
- name: app
image: my-app:latest
Этого достаточно, чтобы под получил собственное изолированное пространство UID/GID.
Что важно учитывать
Требования к среде: Linux-нода с поддержкой user namespaces в ядре, а также совместимый container runtime (containerd >= 1.7, CRI-O >= 1.25).
Диапазон UID/GID для каждого пода должен быть кратен 65536 и начинаться с числа >= 65536. Начиная с v1.33 это можно настроить через KubeletConfiguration:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
userNamespaces:
idsPerPod: 65536
До v1.33 значение было жёстко задано и равно 65536.
Изменения в Pod Security Standards
Для подов с hostUsers: false Kubernetes ослабляет ряд ограничений PSS. Поля, которые обычно блокируются в Baseline и Restricted, становятся допустимыми, потому что root внутри такого пода никогда не отображается в реальный root на хосте.
Работа над этой функцией началась около 10 лет назад. В alpha она вошла в v1.25, в v1.33 была включена по умолчанию, а в v1.36 получила статус стабильной.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераlxqt-powermanagement появился отдельный таймаут на отключение монитора для режимов AC и батареи. Интерфейс настроек стал чище — лишние опции убрали из выпадающих списков.
Панель и звук
Плагин громкости в lxqt-panel получил горизонтальный layout. Теперь он показывает все доступные аудиовыходы, а громкость нужного можно менять прямо колесом мыши на иконке в панели.
Ещё в версии 2.3.3 поправили фильтр в «Fancy menu» — поиск теперь приоритизирует совпадения с начала строки. Например, fir всегда покажет Firefox первым.
Файловый менеджер
В диалоге сохранения файла PCManFM-Qt имя файла теперь сразу выделено — можно переименовать без лишних кликов. На Wayland починили консистентность отображения элементов рабочего стола при работе с несколькими мониторами.
Сессии
Настройки для X11 и Wayland-сессий разделили в lxqt-config-session. Wayland-раздел виден только если установлен lxqt-wayland-session. Главное меню теперь открывается и на Wayland через lxqt-qdbus openmenu.
Терминал
В QTerminal улучшили поиск: теперь подсвечиваются все совпадения сразу. Починили URL-паттерн, из-за которого ссылки со скобками давали 404. Добавили тему Nord и шорткат для кнопки «keep open» в режиме выпадающего терминала.
Уведомления
Транзитные уведомления, например заголовки треков из плеера, больше не сохраняются когда включён режим «Не беспокоить».
Требования к версии Qt не изменились. Cборка на Debian Trixie и производных по-прежнему работает.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии-Xms512m — сколько памяти выделить сразу при старте
• -Xmx2g — максимум, выше которого heap не вырастет
java -Xms512m -Xmx2g -jar app.jar
Ставьте -Xmx всегда. Без него JVM может решить, что ей нужна половина RAM сервера и будет права по своей логике.
CPU / потоки
Ограничить количество потоков GC и компилятора:
-XX:ActiveProcessorCount=2Особенно актуально в Docker/Kubernetes, ведь JVM видит все ядра хоста, а не контейнера. Без этого флага она создаст лишние потоки и будет драться за ресурсы. Если запускаете в контейнере Начиная с Java 11+ JVM умеет читать cgroup-лимиты контейнера автоматически. Но лучше явно включить:
-XX:+UseContainerSupportИ добавьте
-Xmx через переменную окружения, чтобы удобно менять без пересборки:
JAVA_OPTS="-Xms256m -Xmx1g -XX:ActiveProcessorCount=2"
java $JAVA_OPTS -jar app.jar
📌 Итого: минимальный набор для продакшена
-Xms256m -Xmx1g -XX:ActiveProcessorCount=2 -XX:+UseContainerSupportДальше смотрите на метрики и подкручивайте под своё приложение. ➡️ Больше про Java без воды в канале. Подписывайтесь, там научат делать Java-Java 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека devops'a #root_prompt
"kind": "AdhocVariable" остался прежним.
Добавили лимит серий в легенде — помогает с производительностью, когда панель показывает тысячи серий.
Появились grouping-level переменные: теперь можно задать переменную, которая влияет только на определённую группу панелей, а не на весь дашборд сразу.
AI
Grafana Assistant теперь умеет генерировать SQL Expressions — объединение и трансформация данных из нескольких запросов через SQL. Раньше это требовало знания того, что имена запросов становятся именами таблиц и понимания MySQL-диалекта.
Источники данных и плагины
Добавлена поддержка IBM DB2 (public preview для Grafana Cloud и Enterprise).
Elasticsearch теперь поддерживает два режима запросов помимо визуального построителя: Query DSL и ES|QL.
Grafana Advisor вышел в GA. Это встроенный инструмент проверки состояния инстанса: находит источники данных с ошибками, устаревшие плагины, проблемы в настройках SSO. Проверки запускаются раз в неделю или вручную, можно настроить алерты.
Breaking changes
Несколько вещей, которые стоит проверить перед обновлением:
Удалены дублирующиеся метрики кэширования запросов grafana_caching_items и grafana_caching_size — они были объявлены deprecated в v12.
Изменены дефолты для аудит-логирования запросов к источникам данных (log_datasource_query_request_body, log_datasource_query_response_body).
Устарел ряд Prometheus-метрик для БД. Метрики вида go_sql_stats_* и grafana_database_conn_* заменяются на go_sql_*. Данные те же, только имена другие. Старые будут удалены в следующих релизах.
Удалена возможность отключить Scenes-архитектуру для дашбордов. Она была включена по умолчанию с v11, теперь feature toggle убрали совсем.
➡️ Источник | Upgrade Guide
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииAHCI SATA и PCIe для SoC Baikal-T1. Параллельно на рассмотрении находятся pull-запросы на удаление ещё нескольких связанных драйверов: таймера, памяти, physmap, шины, hwmon, dwc и bt1-rom. В ядре 7.0 уже удалили поддержку i2c и spi dw для той же платформы.
Причина удаления — отсутствие сопровождения и незавершённая интеграция. Например, драйвер PCIe для Baikal-T1 так и не был доведён до рабочего состояния. Компания «Байкал Электроникс» прекратила деятельность в начале 2025 года после того, как TSMC заморозила поставки чипов под санкционным давлением ещё в 2022 году.
Поддержка Baikal-T1 в ядре Linux появилась в версии 5.8.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрии/etc/defaults или .env — это не просто «кто-то узнал пароль», а потенциально открытая дыра до тех пор, пока вы не заметите и не отзовёте ключ.
С агентами стало хуже. Некоторые модели при виде ключа в контексте отказываются работать или записывают его в межсессионную память — и потом пытаются использовать уже отозванный ключ.
Ротация ключей помогает, но не решает проблему полностью. OAuth в теории справляется, но на практике требует браузерного флоу с участием человека. Автоматизировать это под агента почти невозможно.
Решение: прокси, который подставляет заголовки
Большинство API работают через HTTP и принимают ключ в заголовке запроса. Значит, можно убрать ключ из кода и переложить его в HTTP-прокси, который будет добавлять нужный заголовок автоматически.
Обычный запрос к Stripe выглядит так:
curl https://api.stripe.com/v1/customers \
-u "sk_test_BQokikJOvBiI2HlWgH4olfQ2:" \
-d "name=Jenny Rosen"
С прокси он выглядит так:
curl https://stripe.int.your-company.xyz/v1/customers \
-d "name=Jenny Rosen"
Ключа в запросе нет. Ключ хранится в прокси. Доступ к сервису определяется тем, может ли ваш сервер или агент достучаться до этого прокси — а не тем, знает ли он ключ.
Как это работает
Вы поднимаете внутренний HTTP-прокси, который:
• принимает запросы без авторизации от ваших сервисов и агентов,
• подставляет нужный заголовок с ключом,
• проксирует запрос на реальный внешний API.
Сам ключ никуда не передаётся клиентам. Он живёт только внутри прокси. Если сервер скомпрометирован, то атакующий не получает ключ, он получает только доступ к прокси, который можно быстро отключить или ограничить.
Что это даёт
Код перестаёт знать про ключи. Ни .env, ни переменные окружения, ни конфиги — ключ просто не попадает в кодовую базу.
Ротация становится проще. Менять ключ нужно только в прокси, а не по всем сервисам и окружениям.
Кому подходит
Это не замена полноценной системе управления секретами вроде HashiCorp Vault или AWS Secrets Manager. Но это работающий подход для небольших команд, которым не нужна вся операционная сложность таких систем. Прокси с подстановкой заголовков закрывает большую часть рисков при минимальных затратах.
➡️ Оригинал
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#локализацияmysqldump и pg_dump справляются с задачей, но плохо масштабируются: нет алертов при сбоях, бэкапы хранятся локально, а для нескольких баз нужно поддерживать отдельные скрипты. Databasus закрывает все эти пробелы через единый веб-интерфейс.
Databasus это open source инструмент (Apache 2.0) для автоматизированных бэкапов баз данных. Основной фокус на PostgreSQL, но поддерживает MySQL, MariaDB и MongoDB.
Умеет:
• Хранить бэкапы в локальном хранилище, S3, Cloudflare R2, Google Drive, Dropbox, SFTP и через Rclone.
• Уведомлять об успехе и сбоях через Email, Telegram, Slack, Discord и вебхуки.
• Шифровать файлы бэкапов по AES-256-GCM — это значит, что бэкапы безопасно хранить даже в публичных S3-бакетах.
Как работает подключение к базе
Два режима.
1. Remote — Databasus подключается к базе по сети напрямую, агент не нужен. Удобно для managed баз вроде RDS.
2. Agent — лёгкий агент на Go запускается рядом с базой и стримит бэкап напрямую в хранилище, база не торчит наружу.
Как запустить
Самый быстрый способ через Docker:
docker run -d \
--name databasus \
-p 4005:4005 \
-v ./databasus-data:/databasus-data \
--restart unless-stopped \
databasus/databasus:latest
После запуска открываем http://localhost:4005, добавляем базу, настраиваем расписание, хранилище и уведомления.
Для Linux есть автоматический скрипт, который сам установит Docker и настроит автозапуск:
sudo apt-get install -y curl && \
sudo curl -sSL https://raw.githubusercontent.com/databasus/databasus/refs/heads/main/install-databasus.sh \
| sudo bash
Для Kubernetes доступен Helm-чарт из OCI-реестра:
helm install databasus oci://ghcr.io/databasus/charts/databasus \
-n databasus --create-namespace
Важный момент
Сам Databasus тоже стоит забэкапить или хотя бы сохранить ключ шифрования. Без него восстановить зашифрованные бэкапы не получится даже при наличии файлов в хранилище. Документация по восстановлению без Databasus есть на сайте.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженераhostUsers: false в спецификацию пода:
spec:
hostUsers: false
containers:
- name: app
image: my-app
Контейнер работает как root внутри неймспейса, но снаружи — от непривилегированного пользователя. Это снижает риски при компрометации контейнера.
MutatingAdmissionPolicy
Раньше для мутации ресурсов нужны были admission webhooks — внешние сервисы с TLS, деплоем и всеми сопутствующими проблемами. Теперь логику мутации можно описать через нативные объекты Kubernetes на языке CEL, без внешних серверов:
apiVersion: admissionregistration.k8s.io/v1alpha1
kind: MutatingAdmissionPolicy
metadata:
name: add-default-labels
spec:
mutations:
- patchType: ApplyConfiguration
applyConfiguration:
expression: >
Object{metadata: Object.metadata{labels: {"env": "production"}}}
OCI VolumeSource
Артефакты OCI: веса ML-моделей, конфиги, датасеты, бинари; теперь можно монтировать как тома напрямую из реестра образов без необходимости упаковывать всё в основной образ.
Тонкая авторизация kubelet API
Kubelet теперь поддерживает гранулярное управление доступом к своему API. Каждый эндпоинт можно разрешить или ограничить отдельно, без открытия всего API целиком.
SELinux-монтирование томов
Вместо рекурсивного перемаркирования файлов Kubernetes теперь применяет SELinux-контекст через mount -o context=XYZ при монтировании. Это сокращает время старта подов на системах с SELinux.
Что изменилось в Beta
Mutable scheduling directives для приостановленных Job
Теперь можно менять nodeSelector, affinity и запросы ресурсов у приостановленного (suspend: true) Job перед его возобновлением. Особенно полезно для пакетных и ML-задач, где параметры планирования могут меняться динамически.
HPA Scale-to-Zero
HorizontalPodAutoscaler теперь умеет масштабировать деплойменты до нуля реплик на основе внешних метрик. Актуально для dev/staging-окружений и событийно-ориентированных сервисов с простоями.
Что появилось в Alpha
Workload Aware Scheduling (WAS)
Новая группа фич для распределённых рабочих нагрузок. Включает Gang Scheduling (все поды джоба стартуют одновременно или не стартуют вовсе), топологически осведомлённое размещение и новый PodGroup API. Ориентировано на AI/ML-тренировки и batch-пайплайны.
HPA External Metrics Fallback
Если внешний провайдер метрик (Datadog, облачные очереди) недоступен, HPA сможет использовать резервное значение вместо того, чтобы падать с ошибкой.
Что удалено и что стоит проверить
• Плагин томов gitRepo отключён навсегда. Он позволял выполнять код от имени root через клонирование репозитория. Миграция — на init-контейнеры или внешние git-sync инструменты.
• Режим IPVS в kube-proxy удалён (был deprecated в v1.35).
• Поле externalIPs в Service помечено deprecated из-за уязвимости CVE-2020-8554. Полное удаление ожидается в v1.43.
• Ingress NGINX официально выведен из поддержки 24 марта 2026 года — новых релизов, патчей безопасности и исправлений не будет. Существующие инсталляции продолжат работать, но миграция на Gateway API становится обязательной задачей.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииmysqldump работает ровно до того момента, пока кто-то не забыл его запустить. Для продакшна нужен автоматический запуск по расписанию.
Скрипт с ротацией и сжатием
Создаём файл /opt/scripts/mysql-backup.sh:
#!/bin/bash
BACKUP_DIR="/opt/backups/mysql"
CONTAINER="mysql-container"
DB_USER="root"
DB_PASS="yourpassword"
DATABASE="mydatabase"
RETENTION_DAYS=7
mkdir -p "$BACKUP_DIR"
FILENAME="$BACKUP_DIR/${DATABASE}_$(date +%Y%m%d_%H%M%S).sql.gz"
docker exec "$CONTAINER" mysqldump \
-u "$DB_USER" -p"$DB_PASS" \
--single-transaction \
--routines \
--triggers \
"$DATABASE" | gzip > "$FILENAME"
if [ $? -eq 0 ]; then
echo "Backup completed: $FILENAME"
else
echo "Backup failed!" >&2
exit 1
fi
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
Флаг --single-transaction снимает дамп без блокировки таблиц — важно для InnoDB в продакшне. --routines и --triggers включают в дамп хранимые процедуры и триггеры, которые по умолчанию не экспортируются. find в конце удаляет файлы старше RETENTION_DAYS дней.
Добавляем в cron. Запуск каждый день в 4 утра:
0 4 * * * /opt/scripts/mysql-backup.sh >> /var/log/mysql-backup.log 2>&1
Ограничения
Для небольшого пет-проекта этого хватит. Но у подхода есть три слабых места, которые становятся проблемой при серьёзной нагрузке.
Нет алертов при сбое. Скрипт пишет ошибку в лог, но никто не узнает об этом, пока не заглянет туда вручную. Бэкап может не работать неделями без каких-либо уведомлений.
Файлы хранятся локально. Если сервер упадёт или диск сгорит, бэкапы уйдут вместе с данными. Для надёжности нужен вывод в S3 или другое внешнее хранилище.
Плохо масштабируется. Несколько баз — значит несколько копий скрипта, которые нужно поддерживать отдельно.
Для проекта, потеря данных в котором некритична, этот скрипт закрывает задачу. Для всего остального эти три пункта рано или поздно дадут о себе знать.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_promptКак эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токеныВ кружке Кирилл рассказал, какие именно подходы будем разбирать. 👉 Занять место на вебинаре
EVP_CIPHER, EVP_MD, EVP_PKEY, TLSv1_client_method().
Из других добавлений: функция хэширования cSHAKE на базе SHA-3, KDF-функции для SNMPv3 и SRTP, новый флаг -defer_tests для FIPS-режима.
➡️ Источник
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#пульс_индустрииaxios сработала потому, что злоумышленник получил долгоживущий классический токен npm от аккаунта мейнтейнера. Если бы была включена 2FA, одного токена не хватило бы для публикации новой версии пакета.
Как включить 2FA
Для личного аккаунта:
npm profile enable-2fa auth-and-writes
Режим auth-and-writes требует второй фактор и при входе, и при публикации. Это сильнее, чем auth-only, который защищает только вход, но не публикацию.
Для организации нужны права администратора:
npm access 2fa-required --otp=ВАШ_КОД your-org
Либо через интерфейс: Organisation Settings > Security > Require two-factor authentication.
Что ещё стоит сделать
Классические токены npm живут вечно и дают широкий доступ. В 2022 году появились гранулярные токены. Они ограничены конкретными пакетами и позволяют задать режим read-only или publish-only. Переходите на них.
Классические токены, которые существуют больше 90 дней, стоит проверить и пересоздать. Найти их можно в Account Settings > Access Tokens.
Если разработчик ушёл из команды, то сразу отзывайте его доступ к публикации. npm не делает это автоматически, права сохраняются бессрочно.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#root_prompt