Библиотека девопса | DevOps, SRE, Sysadmin
10.4K subscribers
1.85K photos
76 videos
5 files
3.25K links
Все самое полезное для девопсера в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/25874ec4

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/6798b4e4509aba56522d1787
Download Telegram
У «Библиотеки программиста» появился резервный канал в мессенджере MAX

Он нужен исключительно для связи с теми, кто не может следить за обновлениями здесь из-за трудностей с доступом. Поэтому, если вы видите это сообщение, распространите его среди жильцов вашего ЖЭКа.

Контент в MAX будет дублировать телеграмный — основной нашей площадкой был и остаётся Telegram. Надеемся, это временная мера.

Подписаться на «Библиотеку программиста» в MAX
😁4👍3🌚2
Кажется, мы окончательно перешли от игрушек к суровому AgentOps

Приглашаем на наш обновлённый курс по разработке ИИ-агентов. Никакой воды про «будущее нейросетей», только инженерный подход.

На курсе мы:

— пошагово строим готовые системы на LangGraph, CrewAI и MCP;
— настраиваем кэширование и роутинг, чтобы бот не сожрал токены;
— разбираемся со стейтом, учимся дебажить через time-travel и прикручиваем human-in-the-loop;
— выводим RAG в прод так, чтобы безопасники не завернули архитектуру из-за 152-ФЗ.

В пекло скучные лекции про общую инфраструктуру — сразу фокусируемся на агентных фреймворках и написании кода. Занятия ведут бывалые лиды из Газпромбанка и Альфы, набившие шишки на реальных задачах.

Кстати, на днях мы пилили агента в прямом эфире, если пропустили — есть запись вебинара.


Сегодня последний день, когда можно забрать курс по старым ценам. Базовый тариф сейчас стоит 49 000 ₽ (вместо 62 990 ₽), продвинутый трек — 99 000 ₽ (вместо 124 990 ₽). Если не хочется отдавать всю сумму сразу, есть рассрочка. Торопитесь — на потоке осталось всего 5 мест!

Зафиксировать цену и перейти к сборке своих агентов
1
⚡️ В k8s переписали ядро, удалили 20% кода и никто не заметил

Каждый образ с registry.k8s.io попал туда через kpromo. Без него ни один выпуск Kubernetes не выходит. Ядро переписали с нуля, удалили 16 000+ строк, ускорили. Пользователи не заметили ничего.

Что делает kpromo


Копирует образы в производственную среду, подписывает через cosign, реплицирует подписи на 20+ зеркал, генерирует аттестации происхождения по SLSA.

Почему понадобился рефакторинг

За 7 лет — 42 участника, 3 500 коммитов, 60+ выпусков. К 2025 производственные задания падали с ошибками лимита запросов и работали больше 30 минут. Монолитная логика мешала.

Как переписывали

9 фаз, каждая — отдельный запрос на слияние.

Фаза 1 — ограничение частоты с адаптивным откатом.
Фаза 2 — реестр и авторизация за интерфейсами.
Фаза 3 — движок конвейера: продвижение как последовательность шагов.
Фазы 4–5 — проверка происхождения SLSA, выпуск v4.2.0 на обкатку.
Фазы 6–9 — разделение подписи и репликации, удаление старого кода.

Новый конвейер

SetupPlanProvenanceValidatePromoteSignAttest

Шаги последовательны — каждый получает полный бюджет лимита запросов.

Производительность


Параллельное чтение 1 350 реестров: фаза Plan с ~20 мин до ~2 мин.

57% образов без подписей — пропускают, обращений к API вдвое меньше.

Проверка основного реестра перед зеркалами: с ~17 часов до ~15 минут.

Итоги

— 40+ запросов на слияние, выпуски v4.2.0, v4.3.0, v4.4.0
— кодовая база уменьшилась на 20%, закрыто 19 задач
— аттестации происхождения, сканирование уязвимостей, логика повторных попыток

Команда kpromo cip принимает те же флаги и читает те же манифесты. Никто ничего не обновлял.

➡️ Блог разработчиков

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
👨‍💻 Синдром пятничного оффлайна

Проверить мессенджеры перед выключением ноутбука, потому что «вдруг что-то случилось» — знакомо? У этого явления уже есть название. Как и у десятка других ситуаций, которые случаются с айтишниками каждый день.

➡️ Новая статья — это карьерный словарь на 14 терминов

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🔄 Вышел Bcachefs 1.37.0

Релиз Bcachefs 1.37.0 включает два компонента: ядерный модуль bcachefs-kernel-dkms и утилиты bcachefs-tools для создания, монтирования, проверки и управления файловой системой. DKMS-версия работает начиная с Linux 6.16.

Главное в этом релизе — стабилизация erasure coding. Это аналог RAID 5/6 внутри самой файловой системы: данные распределяются по N дискам с возможностью восстановления при потере одного из них.

Из других заметных изменений: добавлены три новые команды для работы с подразделами.

subvolume list показывает список подтомов с иерархией
subvolume list-snapshots выводит снапшоты для конкретного подраздела
subvolume reflink-option-propagate распространяет настройки reflink на вложенные файлы и каталоги.

Пакеты уже доступны для Arch Linux, Debian, Ubuntu, Fedora, openSUSE и NixOS.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#локализация
Please open Telegram to view this post
VIEW IN TELEGRAM
🤭 Топ-вакансий для девопсов за неделю

DevOps Middle — 200 000 - 350 000₽, гибрид в Москве

DevOps-инженер — от 400 000 ₽, удалёнка или офис в Москве

DevOps/SRE инженер — от 270 000 ₽, гибрид в Москве

➡️ Еще больше топовых вакансий — в нашем канале Devops Jobs

🐸Библиотека devops'a

#вакансия_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 systemd 260: что изменилось и что сломается

Вышел systemd 260. Это юбилейный релиз, и он принёс несколько серьёзных изменений, о которых стоит знать заранее.

Поддержка скриптов System V окончательно убрана. Это не сюрприз, об этом предупреждали ещё в прошлом релизе. Вместе с ней ушли systemd-sysv-generator, systemd-rc-local-generator, rc-local.service и хук systemd-sysv-install. Если у вас где-то ещё живут старые init-скрипты, самое время их переписать на нативные unit-файлы.

Что появилось

varlinkctl list-registry теперь показывает все публичные интерфейсы из /run/varlink/registry/.

Появился новый systemd-report с экспериментальной системой репортинга через /run/systemd/report/.

systemd-networkd получил секцию [MobileNetwork] для интеграции с ModemManager.

systemd-vmspawn теперь умеет регистрировать виртуальные машины в пользовательском инстансе systemd-machined, а не только в системном.

systemd-ask-password теперь можно запускать от обычного пользователя через политику PolKit.

Добавили поддержку SCHED_EXT в CPUSchedulingPolicy юнита.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🧑‍💻 Процесс, который держит Linux живым

В Linux есть процесс, который никто не трогает. Не потому что он как-то защищён или спрятан. А потому что если он остановится, система упадёт целиком. Это PID 1. И чтобы понять, как Linux работает изнутри, стоит разобраться именно с ним.

Что такое PID 1 и откуда он берётся

Когда Linux загружается, ядро первым делом инициализирует железо и память. После этого оно запускает один-единственный процесс в пользовательском пространстве. Этот процесс получает идентификатор 1 и становится родителем для всего остального, что будет работать на машине.

На большинстве современных дистрибутивов этим процессом является systemd. Проверить это можно прямо в терминале:

ps -p 1


Вывод покажет systemd с PID 1. Всё просто.

Почему это важно

Каждый процесс в Linux имеет родителя. Терминал запускает bash, bash запускает скрипт, скрипт запускает что-то ещё. Если подняться выше по этой цепочке, в конце всегда окажется PID 1.

Упрощённый вид дерева процессов:
systemd (PID 1)
├── sshd
├── nginx
├── docker
├── cron
└── bash
└── команды пользователя


Есть и ещё один момент. Если какой-то процесс завершается, а его дочерние процессы остаются запущенными, они становятся сиротами. Linux автоматически передаёт их под контроль PID 1. systemd разбирается с ними сам.

Что именно делает systemd

systemd занимается не только стартом при загрузке. Это менеджер всей системы. Он читает юнит-файлы с конфигурацией и запускает сервисы: SSH, сеть, логирование, планировщики задач, Docker, веб-серверы. При сбое сервиса systemd может перезапустить его автоматически, остановить зависимые компоненты и записать всё в журнал.

В отличие от старых SysV-систем, где сервисы стартовали строго по очереди, systemd запускает их параллельно. Именно поэтому современные Linux-системы загружаются заметно быстрее.

Посмотреть всё дерево процессов и убедиться, что оно начинается с PID 1, можно командой:
pstree -p


PID 1 это не просто технический факт из учебника. Это точка, с которой начинается вся работа системы.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82
🔄 GNOME 50 Tokyo

Вышел свежий GNOME с кодовым именем «Tokyo». Это юбилейный выпуск с заметными изменениями.

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

Также заложена основа для веб-фильтрации на уровне системного сервиса. Фронтенд пока не готов, но бэкенд уже есть.

VRR и дробное масштабирование теперь включены по умолчанию. Курсор при активном VRR работает на полной частоте монитора независимо от FPS приложения.

Для пользователей NVIDIA исправлены проблемы со статтерами и временем кадра. Добавлена поддержка второй версии протокола управления цветом Wayland и HDR при захвате экрана.

Удалённый рабочий стол ускорили через аппаратное ускорение на базе Vulkan и VA-API. Появилась поддержка HiDPI, перенаправление камеры и аутентификация через Kerberos.

Из точечных улучшений: в Files переработан пакетное переименование и ускорена загрузка миниатюр, в Calendar появился список участников событий и экспорт в ICS, в средстве просмотра документов переписан инструмент аннотаций.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру.

Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.

По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов.

Также в программе:

— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу MCP;
— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).

Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.

Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест.

👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде
⚙️ Безопасный дебаг прода в Kubernetes

Типичная картина во время инцидента — инженер получает широкий доступ: cluster-admin, общий jump-бокс или долгоживущий SSH-ключ.

У этого подхода два системных последствия: аудит теряет смысл, потому что непонятно, кто и что делал, а временные исключения тихо становятся постоянной нормой.

Три принципа

1. Минимальные права через RBAC

Вместо cluster-admin выдавать роль с конкретным набором действий, которые нужны дежурному.

Привязывается к группе, а не к конкретному пользователю:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: oncall-debug
namespace: payments
rules:
- apiGroups: [""]
resources: ["pods", "events"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get"]
- apiGroups: [""]
resources: ["pods/exec", "pods/portforward"]
verbs: ["create"]
- apiGroups: [""]
resources: ["pods/ephemeralcontainers"]
verbs: ["update"]


RBAC умеет ограничивать, может ли пользователь запустить pods/exec, но не может ограничить, какие команды он выполнит внутри сессии. Это задача для отдельного слоя поверх RBAC.

2. Краткосрочные учётные данные, привязанные к личности

Статичные kubeconfig с долгоживущими токенами — классический вектор компрометации. Цель: каждая сессия дебаггинга должна иметь учётные данные, которые истекают через 15-30 минут и однозначно идентифицируют конкретного человека.

Два способа реализации.

Вариант А — короткоживущие OIDC-токены. Большинство managed-кластеров это уже поддерживает. Достаточно настроить kubeconfig так, чтобы токен обновлялся автоматически, а не копировался вручную в конфиг:
users:
- name: oncall
user:
exec:
apiVersion: client.authentication.k8s.io/v1
command: cred-helper
args: ["--cluster=prod", "--ttl=30m"]


Вариант Б — короткоживущие X.509-сертификаты. Если API-сервер доверяет клиентскому CA, можно выдавать временные сертификаты через CertificateSigningRequest API. Приватный ключ остаётся на машине инженера, в идеале в аппаратном токене.
openssl genpkey -algorithm Ed25519 -out oncall.key

openssl req -new -key oncall.key -out oncall.csr \
-subj "/CN=user/O=oncall-payments"


После подписания CSR используем вместе с приватным ключом в kubectl. Через 30 минут сертификат протухает автоматически.

3. Just-in-time access gateway

Это точка входа, которую разворачивают в кластере по запросу — на время сессии. Работает по SSH-протоколу. Инженер запрашивает доступ, получает короткоживущий OpenSSH user certificate, подключается.

Gateway аутентифицирует пользователя, применяет политики и от его имени делает вызовы Kubernetes API. Сессия пишется в лог. После завершения гейт удаляется.

RBAC для такого сценария выглядит так:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: jit-debug
namespace: payments
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["pods/exec"]
verbs: ["create"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: jit-debug
namespace: payments
subjects:
- kind: Group
name: jit:oncall:payments
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: jit-debug
apiGroup: rbac.authorization.k8s.io


Имя группы jit:oncall:payments берётся из короткоживущего сертификата или OIDC-токена — так в логах всегда видно, кто именно и к чему имел доступ.

Три принципа работают как слои: RBAC определяет, что разрешено; краткосрочные учётные данные убирают риск утечки; JIT gateway даёт полный аудит каждой сессии. Каждый из них можно внедрить отдельно, не переписывая всё сразу.

➡️ Блог разработчиков

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
2
🏗 DevOps-вопрос с собеса

Вам нужно выкатить одно и то же приложение на dev → staging → prod.

Как вы это делаете?

Подумайте: как передать конфиг, если образ нельзя менять? Как откатиться, если что-то пошло не так? Как доказать, что в проде крутится именно то, что прошло тесты?

➡️ Ответ

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#задача_со_звёздочкой
Please open Telegram to view this post
VIEW IN TELEGRAM
Почитали тут свежий отчёт по рынку ИИ-ускорителей в РФ: оказывается, 54% компаний тормозят внедрение ИИ исключительно из-за конских цен на инфраструктуру.

Ну, то есть написать пет-проект с вызовом API это задача на вечер, а вот запустить агента в продакшн так, чтобы он не сжёг бюджет отдела за неделю — суровая инженерия.

По сути, сейчас мало уметь собирать RAG. Нужно считать токены, настраивать time-travel дебаг в LangGraph и уметь роутить запросы на лету. Всё это мы учли в обновлённом курсе по разработке AI-агентов, где акцент сделан именно на AgentOps и жёсткий контроль ресурсов.

Также в программе:

— оценка качества, трейсинг и защита от деградации пайплайнов;
— мультиагентные паттерны и интеграция по протоколу MCP;
— локальный деплой Open Source под 152-ФЗ (когда данные нельзя выносить наружу).

Кажется, это единственный адекватный roadmap по переходу от блокнотов к enterprise-решениям.

Прямо сейчас можно урвать курс с увесистой скидкой (49 000 ₽ 62 990 ₽ за базовый тариф и 99 000 ₽ 124 990 ₽ за продвинутый трек), но стоит поторопиться — на потоке осталось всего 5 мест.

👉 Зафиксировать цену и начать собирать агентов, за которых не стыдно в проде
🥱4
👋 Ansible Automation Platform 2.4 уходит на покой

Red Hat объявила дату окончания поддержки для Ansible Automation Platform 2.4 — 30 июня 2026 года. Платформа вышла в июне 2023 года и стала первым релизом с Event-Driven Ansible в составе. Теперь пришло время переходить на актуальную версию.

Рекомендуемая версия для обновления Ansible Automation Platform 2.6. Важный момент: прямое обновление с 2.4 на версии 2.7 и выше будет недоступно. Поэтому переход на 2.6 сейчас это правильная подготовка инфраструктуры к будущим релизам.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👏2
🔥 CI/CD заслуживает нормального QA

Docker, Jenkins, OpenShift — QA-инженеры наконец начали говорить на одном языке с девопсами.

Автотесты в пайплайне, трассировка через микросервисы, логи в Kibana — это уже норма, а не экзотика.

➡️ Как выглядит современный QA изнутри

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
🔄 Релизы недели

Неделя была полна релизов и не только, обновляем в памяти.

Debian 13.4

Вышел systemd 260

GNOME 50 Tokyo

Синдром пятничного оффлайна

Ansible Automation Platform 2.4 уходит на покой

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#дайджест_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️ Git считает chmod за изменение

Сделали chmod -R 755 на проекте и git показывает 300 изменённых файлов. Код не трогали. Сейчас разберёмся почему так.

Git отслеживает не только содержимое, но и исполняемый бит файла. Рекурсивный chmod меняет права с 644 на 755 у всех файлов. Git видит смену режима 100644 → 100755 и считает их изменёнными.

Как починить:
git config core.fileMode false        # для текущего репозитория
git config --global core.fileMode false # для всех реп на машине


Если права уже попали в staging:
git diff -p -R --no-color \
| grep -E "^(diff|(old|new) mode)" \
| git apply


С fileMode false git будет молча игнорировать и намеренные изменения исполняемого бита. Если в проекте есть деплой-скрипты, то стоит предупредить команду перед глобальным включением.

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#root_prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
🛠 Микро Ghostty

Команда Ghostty выпустила демо-проект Ghostling. Это рабочий терминал, уместившийся в один .c файл. Делают это не просто так, а показывают, как использовать libghostty в сторонних приложениях.

libghostty — встраиваемая библиотека из ядра Ghostty с C и Zig API. Ghostling демонстрирует, что поверх неё можно собрать свой терминал с любым рендерером — хоть на OpenGL, хоть на чём угодно ещё.

Что под капотом

• Рендеринг через Raylib: 2D, без прямого GPU

• Однопоточный, без зависимостей, даже без libc

• VT-парсинг, управление состоянием, Unicode

• SIMD-оптимизированный парсинг, 24-bit цвет, Kitty keyboard protocol, трекинг мыши

➡️ Репозиторий

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
🔄 Wayland 1.25 вышел

Быстрый обзор свежего обновления Wayland.

Что нового

Документация переведена из DocBook в mdBook. Диалект Wayland XML, модель обновления контента и управление цветом теперь полностью задокументированы.

Новый атрибут frozen для интерфейсов с несколькими родительскими интерфейсами.

Новый запрос wl_surface.get_release для per-commit коллбэков освобождения буфера

Функция wl_display_dispatch_pending_single() для диспетчеризации одного события

Wayland 1.25 продолжает закрывать белые пятна в документации и добавляет низкоуровневые API, которых не хватало.

➡️ Источник

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
⚙️ systemd-nspawn: контейнеры, о которых вы не знали, что они уже у вас есть

Пока все спорят, Podman лучше Docker или нет, в вашей системе уже лежит systemd-nspawn. Просто никто не сказал.

Это системный контейнер прямо из коробки часть systemd. Никакого демона, никакого рантайма, никакой регистрации на Docker Hub.

nspawn — это лёгкий контейнер на уровне ОС. Не Docker с OCI-образами, слоями, сетью, не VM с гипервизором и своим ядром. Что-то среднее: изолированный процесс со своим корнем файловой системы, PID-пространством и сетью. Ядро при этом общее с хостом.

Когда использовать вместо альтернатив

Docker/Podman когда нужны образы, реестры, оркестрация, микросервисы.

nspawn когда нужно:

• быстро поднять изолированное окружение для теста или сборки
• запустить другой дистрибутив на том же хосте без VM
• отлаживать chroot, но с нормальной изоляцией
• не тащить Docker на минималистичный сервер

Примеры команд

Создаём минимальный Debian-контейнер:
debootstrap stable /var/lib/machines/mydebian


Запускаем:
systemd-nspawn -D /var/lib/machines/mydebian


Запускаем как полноценный systemd-контейнер:
systemd-nspawn -D /var/lib/machines/mydebian --boot --network-veth


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

📍 Навигация: ВакансииЗадачиСобесы

🐸 Библиотека devops'a

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5