DevITWay | Павел Волков
166 subscribers
70 photos
6 videos
121 links
Системное мышление → DevOps-практика → карьерный рост.
Production-кейсы, разборы инцидентов, новые подходы.
Бесплатные мини-курсы: Git | Linux | Docker
Веду лично. Основатель DevIT Academy.
devitacademy.com | devopsway.ru | devitacademy.com/kmb
Download Telegram
MLOps: 70% DevOps, 30% магии или просто другой Airflow?

Открываешь roadmap.sh/mlopsи хочется закрыть. Там 90+ тем, от Feature Stores до Data Labeling, которые выглядят как план захвата Луны. Но рынок диктует другие правила. Я взял 838 реальных вакансий (getmatch + hh.ru) и "прожарил" их данными, чтобы понять, за что на самом деле платят деньги.

Спойлер: roadmap.sh вам врет.

Главное из разбора:

1. 10 из 12 ключевых навыков – это чистый DevOps. Python (85%), K8s (80%), Docker и CI/CDбаза, которая закрывает 80% требований.

2. Специфика начинается с 11-го места. Весь ваш "входной билет" в MLOps это джентльменский набор из Airflow и MLflow. Каждый встречается в 50% вакансий на роль MLOps.

3. Кладбище хайпа. Инструменты вроде W&B, Neptune или Feast имеют 0 (ноль) упоминаний в 566 вакансиях getmatch. Учить их сейчаскак учить суахили для поездки в Тулу.

4. Деньги на столе. Медиана рынка – 325К на руки. Хотите 400К+? Придется копать в сторону GPU-специфики: CUDA, Triton и деплой LLM.

Полный разбор: зарплатная пирамида, почему AWS не нужен в РФ и план перехода из DevOps за 5 шаговуже в статье.

🔗 devopsway.ru/posts/mlops-roadmap/

#mlops #devops #карьера #datadriven
🔥52
⚡️ DevOps Digest #13 | 03.05.2026

🔥 Главное:
1. Copy Fail (CVE-2026-31431) – эскалация до root в ядре Linux. Уязвимость в подсистеме AF_ALG затрагивает все дистрибутивы с ядром начиная с 4.14. Эксплоит публичный – патчите немедленно.
🔗 https://www.opennet.ru/opennews/art.shtml?num=65325

2. Proxmox Backup Server 4.2 – обновление self-hosted системы резервного копирования. Бесплатные репозитории обновлений, поддержка бэкапов виртуальных машин и контейнеров. Хорошая альтернатива коммерческим решениям для тех, кто строит инфраструктуру на Proxmox.
🔗 https://www.opennet.ru/opennews/art.shtml?num=65338

3. DevSecOps на практике: как встроить SAST в CI/CD для кода, написанного с помощью LLM. Автор подключил SonarCloud и Semgrep к пайплайну, настроил Quality Gate как блокировщик деплоя и показал реальные цифры – 234 проблемы в проекте, сгенерированном нейросетью.
🔗 https://habr.com/ru/companies/ruvds/articles/1017858/

4. Cilium и eBPF – новая парадигма сетевого стека в Kubernetes. Разбор того, как eBPF-программы заменяют kube-proxy и iptables, объединяя сетевые политики, безопасность и наблюдаемость (Hubble) прямо в ядре Linux.
🔗 https://dev.to/fundacjadobrepanstwo/cilium-and-ebpf-the-new-networking-paradigm-in-kubernetes-3oeb

5. SeaweedFS набирает популярность – 311 звёзд за неделю. Распределённое хранилище с поддержкой S3 API, файловых систем и таблиц Iceberg. Горизонтальное масштабирование и O(1) доступ к диску – серьёзная self-hosted альтернатива облачным объектным хранилищам.
🔗 https://github.com/seaweedfs/seaweedfs

🔍 eBPF вытесняет iptables из Kubernetes

Замена kube-proxy на Cilium – уже не эксперимент, а осознанный выбор для кластеров от 50 узлов. Ключевое преимущество – не скорость (хотя она тоже есть), а единая точка наблюдения: сетевые политики, шифрование между подами и метрики трафика живут в одном месте вместо разрозненных инструментов. Если планируете переход – начните с Cilium в режиме совместимости с kube-proxy, чтобы откатиться без простоя.

🛠 Команда дня:
lsmod | grep -q algif_aead && echo "⚠️ algif_aead ЗАГРУЖЕН — вы уязвимы" || echo " algif_aead не загружен"

Проверяет, активен ли модуль algif_aead — именно он содержит уязвимость Copy Fail (CVE-2026-31431). Модуль предоставляет доступ к AEAD-шифрованию ядра через сокеты, реально нужен только на embedded/IoT-устройствах. На серверах и десктопах не используется — TLS, LUKS и VPN работают через userspace-библиотеки или другие модули ядра. Даже если модуль не загружен сейчас, локальный пользователь может триггернуть его автозагрузку.
Заблокируйте:
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/cve-2026-31431.conf


#дайджест #security #kubernetes

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥6
Общая память: почему .md – это не RAG

В серии про "Барьер" я топил за то, что нельзя становиться био-адаптером для нейронки. Нужно выходить на уровень архитектора.

Знаете момент в "Матрице", когда Нео открывает глаза и говорит "I know kung fu"? Ему загрузили программу напрямую в мозг.

Теперь представьте Нео, у которого загрузка слетает каждые два часа. Он снова не знает кунг-фу. Каждый спарринг начинается с "а что такое удар?".

Вот так работает AI-ассистент без памяти. Каждая сессия – чистый лист. Ты заново объясняешь структуру проекта, свои конвенции, свои баги. Цифровая деменция.

Главный вопрос после тех постов: как сделать так, чтобы AI не "забывал" контекст через два часа?

Обычно предлагают два пути:

1. Закинуть всё в CLAUDE.md или скармливать Obsidian-плагинам.

2. Поднимать RAG.

Первый вариант работает до определённого масштаба. Пока у тебя 50 заметок и один проект, .md хватает. Но у этого подхода есть "стеклянный потолок". Например, Claude Code принудительно обрезает CLAUDE.md после ~200 строк. Даже если скормить модели огромный файл целиком, вступает в силу эффект Lost in the Middle: модели хуже извлекают данные из середины длинного контекста (это подтверждено тестами ребят из Stanford и Anthropic). Кроме того, это статика: спрашиваешь про Rust, а модель "переваривает" и твои заметки по Python, просто потому что они лежат в том же файле.

RAG (Retrieval-Augmented Generation) – это уже не просто "положи файл". Здесь речь про динамику и фильтрацию.

Например, у меня сейчас:
180+ файлов памяти (заметки, логи, база знаний).
11 000+ только профильных DevOps-фрагментов (всего в базе под 300к векторов).
Векторный стор (Qdrant) + семантический поиск.

Это и есть "человек в цепочке". Я сам решаю, что пойдет в индекс и как оно режется на чанки. RAG не пихает в модель всё подряд – он делает семантический поиск и отдает только те куски, которые релевантны текущему вопросу. В итоге ассистент не просто "умный", он контекстный. Он знает специфику именно моего кода и старые баги моих проектов.

Многие боятся лезть в RAG, думая, что нужны серверные стойки.
Спойлер: GPU не нужен.

Для персональной базы знаний в пару тысяч фрагментов Qdrant занимает ~100 МБ оперативки – это действительно уровень одной вкладки Chrome. У меня на 300к векторов база потребляет 4.7 ГБ RAM, работая на обычном CPU. Поиск по смыслу при этом происходит мгновенно.

В следующих постах и заметках в блоге попробуем собрать пайплайн с нуля.
Скоро про Qdrant. Минимум теории, только конфиги и запуск.

#миникурс #мышление
🔥81
Как понять, что ты стал чужим KPI, а не кандидатом

"Ходит дурачок по лесу,
ищет дурачок глупее себя"
– Егор Летов


Недавно со мной общался AI-бот от крупной компании. Четыре раунда глубоких вопросов: архитектура моей платформы, стек, метрики, бюджеты. По сути бесплатный консалтинг на полчаса.

В ответ на мои вопросы о зарплате, стеке и локации бот выдавал "нет информации". Через три недели шаблонный отказ без фидбека (сами нашли, сами написали, сами отказали, молодцы). Система не оценивала мою экспертизу, она её тупо собирала. Это не скрининг, а экстракция данных какая-то под видом интервью.

Красные флаги, что вы строчка в отчёте:

Односторонний обмен. Бот вытягивает детали архитектуры, но не дает конкретики по вакансии.

Барьер из чат-ботов. Вас не пускают к живому человеку, так как бот собирает данные дешевле и быстрее.

Зарплата на первой минуте. Сбор рыночных вилок без контекста задач и стека.

Рекрутер "на подмене". Человек в чате не знает деталей позиции и работает просто как оператор эксельки.

Документы до этапов. Просьба прислать трудовую "для белого списка" еще до технического интервью.

Фантомные вакансии. В 2026 году до 40% вакансий просто фейки для создания видимости рынка или сбора аналитики.

Что с этим делать:

Выходите на нанимающих напрямую. LinkedIn, митапы или рефералы позволяют обойти "сборочный цех" ботов.

Соблюдайте пропорциональность. Глубина вашего ответа должна соответствовать прозрачности вакансии. Не назвали стек не расписывайте архитектуру.

Тестируйте инверсией. Спросите бота или рекрутера: "Какую техническую боль команда решала в прошлом квартале?". Шаблонный ответ признак мертвой вакансии.

Никаких документов до оффера. Паспорт и трудовая передаются только при оформлении.

Если чувствуете, что вас гоняют по кругу вы не в найме, а в чужой отчетности.

Если хочешь разобрать свою стратегию поиска и перестать быть чужим KPI – записывайся на разбор:
calendly.com/devitway/meet-with-me

#devops #карьера
🔥4👍21
⚡️ DevOps Digest #14 | 10.05.2026

🔥 Главное за неделю:
1. Cilium: практики защиты CI/CD в open-source проекте. Команда Cilium опубликовала разбор того, как они защищают свой конвейер сборки – актуально для любого, кто поддерживает CI/CD с публичными контрибьюторами и supply-chain рисками.
🔗 https://cilium.io/blog/2026/05/06/securing-cicd-open-source-lessons-from-cilium

2. Kubescape набирает обороты – open-source платформа безопасности Kubernetes для IDE, CI/CD и кластеров. Сканирование на соответствие стандартам, поиск мисконфигураций, анализ рисков. Работает локально, без привязки к облачным вендорам.
🔗 https://github.com/kubescape/kubescape

3. Gitleaks – поиск секретов в репозиториях продолжает расти (230 звёзд за неделю). Инструмент для интеграции в CI/CD: сканирует коммиты, pre-commit хуки, целые репозитории на предмет утечек ключей, токенов и паролей.
🔗 https://github.com/gitleaks/gitleaks

4. Импортозамещение: централизованная аутентификация в Linux. Практический опыт интегратора по настройке аутентификации в закрытом контуре – FreeIPA, SSSD, работа с отечественными дистрибутивами. Полезно тем, кто мигрирует с Active Directory.
🔗 https://habr.com/ru/companies/astralinux/articles/1023816/

🔍 Безопасность CI/CD – не только про код
Cilium показал, что защита пайплайна – это не только сканирование образов. Это подписание артефактов, ограничение прав GitHub Actions runners, изоляция секретов между окружениями и аудит доступа контрибьюторов. Если у вас в CI есть хотя бы один step с доступом к продовым секретам – стоит пройтись по их чеклисту.

🛠 Команда дня:
kubescape scan --enable-host-scan --format pretty-printer

Сканирует кластер Kubernetes на мисконфигурации и соответствие стандартам безопасности (NSA, MITRE). Работает без облачного аккаунта

#дайджест #security #cicd

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥4
RAG Pipeline 1/N: Qdrant

Qdrant – векторная БД. Текст превращается в массив из 384 чисел. Два похожих текста дают похожие массивы. Косинусная близость (Cosine similarity) между "reverse proxy" и "проксирование запросов" – 0.94. Между "reverse proxy" и "рецепт борща" – 0.12. PostgreSQL с LIKE так не умеет.

В посте практика от docker run до семантического поиска на Python. Без теории ради теории: запустил, создал коллекцию, загрузил данные, нашёл по смыслу. Плюс продакшен-параметры из моего рабочего pipeline: 16 446 чанков, 384 измерения, systemd timer на синхронизацию.

Это первый пост серии RAG Pipeline.
Следующий – про embeddings: Ollama vs API, подводные камни с русским текстом.

👉 devopsway.ru/posts/rag-01-qdrant-vectors/

#кейс #ai
🔥61
RAG Pipeline 2/N: Embeddings

Embedding-модель превращает текст в массив чисел. От выбора модели зависит, найдёт ваш RAG правильный фрагмент или вернёт мусор.

Взял три модели из Ollama и скормил им пару фраз на русском: "настройка reverse proxy" и "проксирование запросов через nginx". Смысл одинаковый, слова разные. Для контроля добавил "рецепт борща" – модель должна понять, что это не про nginx.

Результат:
– all-MiniLM (23 MB): score 0.24.
Провал. RAG ничего не найдёт.

– nomic-embed-text (274 MB): score 0.45.
Но "рецепт борща" тоже 0.46. Модель не отличает nginx от кулинарии.

– mxbai-embed-large (670 MB): score 0.72.
Работает, но борщ всё ещё 0.50 – порог нужно настраивать аккуратно.

Почему так плохо? Русское слово "контейнер" для этих моделей – девять токенов: "к", "о", "н", "т", "е", "и", "н", "е", "р". Побуквенно. Русского текста в обучающих данных было мало, и модели его просто плохо понимают.

Ещё в посте: почему batch ломается на длинном русском тексте, зачем чистить текст перед embedding, и реальные параметры pipeline для 206,000+ векторов.

Полная версия с кодом и benchmark-скриптом
👉 devopsway.ru/posts/rag-02-embeddings/

#кейс #ai
🔥3👍2
⚡️ DevOps Digest #15 | 18.05.2026

🔥 Главное за неделю:

1. Kubernetes v1.36: ExternalIPs в Service объявлен deprecated – Поле .spec.externalIPs признано небезопасным (CVE-2020-8554) и объявлено устаревшим. Если используете его в on-premise кластере вместо облачного балансировщика – пора переходить на MetalLB или kube-vip. В будущих версиях kube-proxy перестанет поддерживать ExternalIPs.
🔗 https://kubernetes.io/blog/2026/05/14/kubernetes-v1-36-deprecation-and-removal-of-service-externalips/

2. Terraform 1.15: переменные в source модулей и deprecation переменных – Теперь можно использовать переменные прямо в source и version модулей (через новый атрибут const = true). Плюс появился механизм пометки переменных как deprecated с кастомным сообщением – удобно при рефакторинге больших конфигураций.
🔗 https://www.hashicorp.com/blog/new-in-terraform-115-dynamic-sources-variable-deprecation-and-more

3. node-ipc снова скомпрометирован – но не через код, а через домен за $9 – Атакующие перехватили просроченный домен мейнтейнера, сбросили пароль npm-аккаунта и опубликовали вредоносные версии пакета. Payload крал AWS-ключи, SSH и .env, а эксфильтрация шла через DNS TXT-записи – SIEM такое почти не видит. Если у вас есть npm-зависимости в CI/CD – стоит прочитать.
🔗 https://habr.com/ru/articles/1035902/

4. Стоимость уборки за AI-кодом – то, о чём молчит нарратив про скорость – GitHub прогнозирует 14 млрд коммитов в 2026 году. Но AI генерирует код быстрее, чем команды успевают его ревьюить и поддерживать. Статья разбирает скрытые расходы: технический долг, раздувание кодовой базы, проблемы с безопасностью сгенерированного кода. Полезный взгляд для тех, кто внедряет AI-инструменты в пайплайн.
🔗 https://thenewstack.io/cleanup-cost-ai-code/

5. Как программа попадает в память: от execve до main – Пошаговый разбор того, что происходит в Linux после ./myprogram: как ядро находит файл, загружает ELF в память, вызывает динамический линковщик и доходит до main(). Всё с примерами через strace. Отличный материал для понимания того, что происходит под капотом.
🔗 https://habr.com/ru/articles/1036444/

6. Cloudflare: как оптимизация TCP в ядре Linux сломала QUIC – Инженеры обнаружили, что окно перегрузки CUBIC залипает на минимуме и не восстанавливается. Причина – Linux-ядро обнуляет таймер cwnd_epoch при переходе в idle, но QUIC-реализация quiche использует CUBIC иначе, чем TCP-стек ядра. Починили одной строкой. Поучительный разбор про то, как допущения одной подсистемы ломают другую.
🔗 https://blog.cloudflare.com/quic-death-spiral-fix/

🛠 Команда недели:
kubectl get svc -A -o json | jq -r '.items[] | select(.spec.externalIPs != null) | "\(.metadata.namespace)/\(.metadata.name): \(.spec.externalIPs)"'

Найти все Service с externalIPs в кластере – после deprecation в K8s 1.36 стоит знать, где они у вас.

#дайджест #kubernetes #devops

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥51
RAG Pipeline 3/N: Чанки

RAG-pipeline не скармливает файл модели целиком. Он отдаёт фрагменты – чанки по 800 символов. Если граница реза прошла посередине мысли, модель получит огрызок и ответит мусором.

Первая версия моего pipeline резала по 1500 символов. Ollama падала с HTTP 500 – binary search показал: worst-case русский markdown укладывает 512 токенов в 912 символов. 1500 – это ~840 токенов, на 60% больше лимита. Уменьшил до 800 – ошибки ушли.

Но размер – полдела. Фрагмент "…настройка Cad" без продолжения "dy reverse proxy" бесполезен.

У меня два уровня нарезки:
– Сначала по заголовкам H2/H3 в markdown. Каждая секция – логически завершённая мысль.
– Если секция больше 800 символов – дорезка с перекрытием (overlap) 150 символов. Контекст на стыке не теряется. 800/150 – соотношение, к которому пришёл после трёх итераций.

Ещё санитизация: Unicode-мусор, управляющие символы, строки длиннее 200 знаков без пробелов (base64, хеши) – всё это шумные векторы.
Фрагменты короче 20 символов отбрасываются.

Результат: 180+ файлов памяти → 3 010 фрагментов в Qdrant. Каждый фрагмент несёт метаданные: файл, секция, зона (hot/warm/cold), проект. Это потом позволяет фильтровать поиск, а не надеяться только на косинусную близость.

Полная версия с кодом и скриптом нарезки
👉 devopsway.ru/posts/rag-03-chunking/

Следующий – про поиск: почему одних векторов мало и зачем гибридный поиск (BM25 + dense).

#кейс #ai
🔥4
Локальный AI в терминале: как собрать автономный стек и не зависеть от вендоров

В апреле Alibaba прикрыла бесплатный тир Qwen Code. Инструмент, на который завязали часть пайплайнов, протух за пару месяцев. Вывод банальный: любой внешний вендор – это точка отказа.
Пересобрал стек и статью по принципу полной автономности. CLI отдельно, инференс отдельно. Если завтра закроется очередной API-токен, мы просто меняем одну строку в конфиге.

Что внутри:
– 3 CLI (OpenCode, Aider, Qwen Code) – установлены, настроены, проверены
– MoE-модели: Qwen 3 30B-A3B выдаёт 20 t/s на CPU – быстрее, чем dense 8B
– Тест на DevOps-задачах: Dockerfile, systemd, Terraform, K8s – Gemma 4 26B оказалась лучше Qwen по качеству
– Грабли: /no_think сломан в Ollama 0.24, thinking mode жрёт токены, модели болтают вместо кода
– CPU vs GPU: реальные замеры на RTX 3090 и CPU с ограничением потоков

Полная версия с конфигами, Modelfile и таблицами
👉 devopsway.ru/posts/local-ai-devops-ollama-2026/

#гайд #ai #devops
🔥52🙏1👻1
⚡️ DevOps Digest #16 | 25.05.2026

🔥 Главное за неделю:

1. Песочница для AI-агентов: почему "просто Docker" не спасает – Пошаговый гайд по изоляции AI-агентов, которые выполняют код: drop root, фильтрация syscalls, сетевые политики, отключение docker.sock. Актуально для всех, кто запускает автоматизацию с доступом к shell.
🔗 https://dev.to/alanwest/how-to-sandbox-ai-coding-agents-without-crippling-them-116c

2. docker-use – переключение между аккаунтами Docker Hub – Простая CLI-утилита: по директории конфигов на каждый аккаунт + shell-функция для переключения через DOCKER_CONFIG. Полезно, если работаете с несколькими реестрами.
🔗 https://dev.to/chiragagg5k/managing-multiple-docker-hub-accounts-using-docker-use-b6p

3. Массовые обновления безопасности: nginx, OpenSSH, PostgreSQL, rsync, dnsmasq – На этой неделе вышли патчи для Debian, SUSE, Ubuntu, Fedora, AlmaLinux. Затронуты nginx, openssh, postgresql (14–18), rsync, dnsmasq, bind9, podman, runc. Проверьте свои серверы.
🔗 https://lwn.net/Articles/1073860/

4. Как ломаются сложные системы: 18 уроков для дежурного инженера – Разбор классической работы Ричарда Кука через призму SRE: катастрофа требует стечения нескольких отказов, система уже содержит баги, о которых вы не знаете, и постмортемы – не поиск виноватых, а способ учиться.
🔗 https://how.complexsystems.fail/

5. Кто мониторит AI-агентов в продакшене – CrewAI, AutoGen, LangGraph уже работают в production, но наблюдаемость этих систем хуже, чем у микросервисов 10 лет назад. Статья разбирает, что именно ломается: петли вызовов, рост latency, неконтролируемые расходы.
🔗 https://thenewstack.io/who-monitors-ai-agents/

6. CGE – краулер с визуализацией связей между поддоменами – Open-source инструмент для red team: собирает поддомены из SSL-сертификатов, краулит эндпоинты, парсит JS/HTML/формы, строит граф взаимодействий в реальном времени. Web UI + CLI.
🔗 https://github.com/a11mut3d/CGE

🛠 Команда недели:
kubectl get events --sort-by='.lastTimestamp' -A | tail -20

Показывает последние 20 событий кластера в хронологическом порядке. Быстрый способ понять, что происходило, когда поды начали падать.

#дайджест #devops #security

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥41
RAG Pipeline 4/N: Гибридный поиск

Продолжаем серию про построение конвейера "общей памяти" между сессиями с LLM.
В предыдущих постах разобрали векторный поиск, эмбеддинги и нарезку на чанки. Сегодня – почему одних векторов мало.

Запрос "docker compose настройка". Векторный поиск возвращает чанки про оркестрацию, networking, даже Kubernetes. Семантические соседи. А конкретный docker compose up -d из моего конспекта – на пятой позиции. Для эмбеддинга "настройка" и "конфигурирование" – одно и то же, точное совпадение слова ему безразлично.

BM25 (поиск по ключевым словам) – обратная история. "docker compose" – вот три чанка, где это упоминается. Но "как поднять сервисы в фоне" он не свяжет с docker compose up -d никогда.

Запускаю оба параллельно, результаты сливаю по рангам (Reciprocal Rank Fusion). Векторный ~50ms, BM25 ~5ms, слияние ~5ms. Итого ~80ms – копейки на фоне генерации ответа.

Два нюанса, которые стоили часов отладки.

– Первый: русская морфология. "Настройка", "настройки", "настроить" – без pymorphy BM25 на русском теряет треть релевантности.

– Второй: "docker", "kubectl", "git" встречаются в каждом втором чанке. Наивный BM25 посчитает их стоп-словами и выкинет. А для девопса это ключевые термины. Защищаю от фильтрации явным списком из 179 токенов.

Результат: точность top-5 выросла на треть по сравнению с чистым векторным. Особенно на запросах с конкретными командами.

Следующий – про переранжирование: 10 результатов есть, но порядок неправильный.

Полная версия с кодом и сравнением методов
👉 devopsway.ru/posts/rag-04-hybrid-search/

#кейс #ai
🔥31
⚡️ DevOps Digest #17 | 01.06.2026

🔥 Главное за неделю:

1. Kubernetes: исправляют записи о незакрытых CVE — сканеры могут заалертить – 1 июня Kubernetes SRC обновит CVE-записи для трёх старых уязвимостей (CVE-2020-8561, CVE-2020-8562, CVE-2021-25740), которые ранее ошибочно указывали наличие фикса. Эти баги — архитектурные компромиссы, полного исправления нет. После обновления записей сканеры могут начать показывать новые алерты на ваших кластерах — не паникуйте, но проверьте, применимы ли mitigation из описания CVE.
🔗 https://kubernetes.io/blog/2026/05/26/reconciling-unfixed-kubernetes-cves/

2. GitLab 19.0: SBOM-сканирование зависимостей стало GA – Новый анализатор строит полный граф зависимостей (включая транзитивные), сверяет с базой уязвимостей и показывает проблемы прямо в merge request. Если используете GitLab — включите и замените старый Gemnasium-сканер: он видит глубже и находит больше.
🔗 https://about.gitlab.com/blog/sbom-based-dependency-scanning/

3. Чеклист на 54 пункта для деплоя в прод – Инженер из промышленной автоматизации собрал проверки по 4 фазам: pre-deploy, execution, post-deploy, 24h stability. Ничего революционного, но как готовый шаблон для команды без формализованного процесса — отличная отправная точка. Особенно полезно джунам, которые деплоят впервые.
🔗 https://dev.to/fabrciowplima/the-54-point-production-deployment-checklist-that-saves-you-from-3am-rollbacks-22i4

4. Java vs C# в Kubernetes: практический гайд по оптимизации Docker-образов – Подробное сравнение двух стеков в контейнерной среде: размеры образов, время старта, настройка JVM/AOT, GC, лимиты памяти, пробы. Полезно тем, кто контейнеризирует Java/C#-приложения и хочет понять, где теряются ресурсы.
🔗 https://dev.to/syedahmershah/java-vs-c-optimizing-docker-for-kubernetes-1kkc

5. LeafWiki — self-hosted вики в одном Go-бинарнике – SQLite, Markdown-файлы на диске, Ctrl+V для вставки скриншотов, SSO через HTTP-заголовки (Authentik, Authelia), роли. Ноль внешних зависимостей. Если ищете лёгкую вики для внутренней документации в закрытом контуре — стоит попробовать.
🔗 https://github.com/perber/leafwiki

🛠 Команда недели:
kubectl get events --field-selector reason=Unhealthy --sort-by='.lastTimestamp' -A | tail -20

Покажет последние 20 событий о failed проверках (liveness/readiness) по всем namespace. Удобно для быстрой диагностики, когда поды рестартятся без видимой причины.

#дайджест #kubernetes #security
🔥32
RAG Pipeline 5/N: Почему ваш гибридный поиск – это просто первичный отсев, а не точная сортировка

Гибридный поиск (пост 4/N) находит нужный кусок кода или доки в условный top-15, но порядок внутри этого топа напоминает лотерею. Алгоритм RRF пытается скрестить ужа с ежом: "Так, BM25 поставил этот чанк первым, векторный поиск – третьим, складываем обратные ранги".

Проблема в том, что ни один из этих алгоритмов не читал документ вместе с вашим запросом. Они просто сравнивают сухие индексы и вектора. А для LLM критически важен именно top-1. Что туда попало – из того она и соберет ответ. Если на первом месте оказался мусор, замаскированный под релевантный результат, на выходе получите классический garbage in, garbage out. Чтобы решить это, в стек пришлось тащить Cross-encoder.

Как это работает на пальцах
Cross-encoder не занимается сравнением готовых векторов. Он берет запрос, приклеивает к нему текст найденного чанка и читает их вместе, как человек. Модель буквально вчитывается в контекст пары "вопрос-ответ".

Минус очевиден – это дорого по ресурсам. Гонять такую модель по всему корпусу в 360K чанков – безумие. Поэтому мы используем каскадную схему, знакомую любому инженеру по классической архитектуре систем:

– Bi-encoder + BM25 – это наш L1/L2 кэш или Bloom-фильтр перед диском. Его задача – быстро отсечь 99% явного мусора и выплюнуть пачку кандидатов.

– Cross-encoder – это финальный тяжелый запрос к диску. Он ювелирно разбирает оставшийся 1% (наши 15 кандидатов) и расставляет их по реальной релевантности.

Что показали тесты на NORA
Загнал в систему пачку из 30 реальных тестовых запросов по репозиторию. Результат: у двух третей запросов после реранкинга top-1 полностью изменился. Гибридный поиск честно находил нужный кусок, но закапывал его на 5-7 место.

Живой пример:
Запрос: "XSS vulnerability in NORA UI".

До реранкинга: На первом месте болтался какой-то случайный JSON, который dense search случайно ранжировал выше нужного чанка.

После реранкинга: Система вытащила конкретный чанк с фиксом пайплайна под issue #521. Rerank score 0.99 – модель уверена.

Цена вопроса и суровая реальность
За точность приходится платить таймингами, и чудес тут нет.

– Время поиска без реранкера: 91ms

– Время поиска с реранкером: 3.3 секунды (на CPU)

Для CLI-утилиты или MCP-тула, который ты запустил в фоне и ждешь развернутый аудит, это приемлемо. Сидишь, пьешь кофе, автоматизация работает. Но если вы попытаетесь прикрутить такую схему на автокомплит в IDE – вы просто убьете UX, разработчики вас проклянут. Для фаст-трека нужен либо мощный GPU-инференс, либо более легкие дистиллированные модели.

В следующем посте разберем классические грабли: почему пайплайн, который выдавал 98% accuracy на моих локальных данных, мгновенно развалился, стоило закинуть в него чужой репозиторий.

Полная версия с кодом интеграции и замерами производительности каскада:
👉devopsway.ru/posts/rag-05-reranking/

#кейс #ai
🔥32
⚡️ DevOps Digest #18 | 08.06.2026

🔥 Главное за неделю:

1. Риск-ориентированное ревью IaC-пулл-реквестов – Не каждый PR в Terraform/Ansible заслуживает одинакового внимания. Подход с оценкой риска (blast radius, окружение, тип ресурса, откатываемость) помогает направить внимание ревьюеров туда, где оно действительно нужно. Полезная модель для любой команды, которая тонет в PR на инфраструктуру.
🔗 https://devops.com/risk-based-review-for-infrastructure-as-code-pull-requests/

2. Аудит песочницы AI-чатбота как чёрного ящика Linux – Инженер за 6 часов исследовал рантайм Kimi 2.6 стандартными Linux-инструментами: нашёл захардкоженный SSH-пароль в /proc/self/environ, измерил лимиты cgroup, определил инфраструктуру (K8s Pod, Burstable QoS). Отличный пример того, как базовые навыки Linux и контейнерной безопасности работают на практике.
🔗 https://dev.to/alex72py/i-audited-an-ai-chatbots-sandbox-like-a-black-box-linux-machine-bhe

3. acme.sh снова в трендах GitHub – Чистый shell-скрипт для автоматизации TLS-сертификатов через ACME-протокол. Работает без зависимостей, поддерживает десятки DNS-провайдеров и wildcard-сертификаты. Если вы ещё управляете сертификатами вручную или привязаны к certbot – стоит посмотреть.
🔗 https://github.com/acmesh-official/acme.sh

4. Метастабильные отказы: почему устранение триггера не помогает – SRE Weekly выделяет статью о метастабильных сбоях: система восстанавливается после триггера, но остаётся в нестабильном состоянии и падает снова. Классика для on-premise инфраструктуры с ограниченным запасом ресурсов. Рекомендую прочитать и оригинальную статью.
🔗 https://sreweekly.com/sre-weekly-issue-520/

5. AI ускоряет DevOps, но интеграции тормозят – AI-инструменты сделали отдельные шаги умнее (сканирование, код-ревью, триаж инцидентов), но передача данных между Jira, ServiceNow, мониторингом и CI/CD осталась ручной. Bottleneck сместился от написания кода к стыкам между инструментами. Актуально для команд, которые внедряют AI-помощников и удивляются, что пайплайн не ускорился.
🔗 https://devops.com/ai-is-accelerating-devops-poor-integrations-are-slowing-it-down/


🛠 Команда недели:
cat /proc/self/environ | tr '\0' '\n' | grep -iE 'pass|key|token|secret'

Проверяет переменные окружения текущего процесса на утечки секретов. Полезно при аудите контейнеров и CI-раннеров – если видите тут пароли в открытом виде, пора переходить на Vault или sealed secrets.

#дайджест #devops #security
🔥42
RAG Pipeline 6/N: Бенчмарк – 98% на своих данных, 52.7% на чужих

Продолжаю серию про конвейер "общей памяти" между сессиями с LLM. В предыдущих постах разобрали векторный поиск, эмбеддинги, нарезку на чанки, гибридный поиск и переранжирование. Конвейер собран и работает. Сегодня вопрос, который я долго откладывал: насколько он вообще хорош? Пока нет цифры, "хорошо" остаётся ощущением, а не фактом.

Взял 50 своих вопросов по реальным рабочим заметкам и прогнал систему. С первого захода – 20% (поймал пару тихих ошибок: поиск молча возвращал пустоту). После четырёх правок – 98%.

Но 98% на своих вопросах – это экзамен, который сам себе составил и сам же сдал. Поэтому прогнал ту же систему через чужой бенчмарк – LoCoMo (1986 вопросов, придумал не я). Результат: 52.7%. Выше, чем у "голого" GPT-4 на том же тесте (32%), но далеко от лучших (Mem0 – 92.5%).

Дальше попытка улучшить. И вот что показали замеры:
– находить нужный фрагмент система стала заметно лучше: с 67 до 83 из 100;
– а отвечать правильно – почти не сдвинулась: с 53 до 55 из 100.

В этом разрыве вся суть. Найти нужную страницу и дать по ней правильный ответ – две разные задачи. Можно положить перед моделью идеально подходящий текст, а она всё равно ответит мимо. Поиск я подтянул сильно, но узкое место просто переехало в генерацию ответа.

Три вывода:
1. Свой бенчмарк всегда льстит. Нужна честная оценка – бери вопросы, которые придумал не ты.
2. Хороший поиск ≠ хороший ответ. Между "нашёл" и "понял" – разрыв на этапе генерации.
3. 98% и 52% – не противоречие. Первое меряет твой прогресс, второе – реальное место среди других. Нужны обе цифры.

Полная версия с методикой, кодом и разбором всех просадок:
👉 devopsway.ru/posts/rag-06-benchmark/

#кейс #ai
🔥42
⚡️ DevOps Digest #19 | 15.06.2026

🔥 Главное за неделю:

1. Атака на цепочку поставок: клон Shai-Hulud пришёл в PyPI – Пять вредоносных пакетов: тайпсквоттинг Flask, Requests, NumPy плюс перехваченный легитимный mflux-streamlit. Код срабатывает прямо на установке (без import), это самораспространяющийся вор учёток, нацеленный на CI/CD-окружения. Вывод: пиньте версии, проверяйте зависимости перед сборкой, не ставьте свежие релизы вслепую.
🔗 https://about.gitlab.com/blog/shai-hulud-copycat-campaign-targets-python-developers/

2. GitHub Actions: долой PAT для агентных воркфлоу – Теперь можно использовать встроенный GITHUB_TOKEN вместо персонального токена: он короткоживущий, привязан к конкретному запуску и ограничен правами из workflow-файла. Откажитесь от долгоживущих широких PAT в пользу scoped-токенов везде, где это возможно.
🔗 https://devops.com/github-removes-pat-requirement-for-agentic-workflows/

3. AmneziaWG 2.0: маскировка переезжает в сам поток данных – Если раньше имитация была короткой «дымовой завесой» перед хендшейком, то теперь транспортные пакеты на проводе выглядят как трафик другого протокола. Практично для закрытых контуров, где обычный WireGuard режется по DPI.
🔗 https://habr.com/ru/articles/1047080/

4. Ansible Automation Platform 2.7 – Новый релиз развивает self-service-портал автоматизации: операционные команды могут отдавать готовые сценарии тем, кто не является экспертом в Ansible. Если живёте на AAP – посмотрите changelog перед обновлением.
🔗 https://www.redhat.com/en/blog/whats-new-ansible-automation-platform-2-7

5. K8s Necromancer: чёрный ящик для умерших подов – Контроллер перехватывает смерть пода до сборки мусора и замораживает форензику: логи, таймлайн событий, ENV, снапшот spec, графики CPU/память из Prometheus. Лекарство от вечного «CrashLoopBackOff без контекста, логи уже ротировались».
🔗 https://dev.to/solojoe/k8s-necromancer-a-black-box-flight-recorder-for-dead-kubernetes-pods-4pa8


🛠 Команда недели:
kubectl get events -A --sort-by='.lastTimestamp' | tail -20

Показывает последние 20 событий кластера в хронологическом порядке – быстрый разбор, когда «только что что-то сломалось», а куда смотреть, ещё непонятно.

#дайджест #devops #security

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥21
Ошибка, которой нет в логах: как не изобрести велосипед с LLM-мотором на дежурстве

История о том, как одна пропущенная строчка в логе съедает два часа инженерного времени

Пользователь загружает фото с Айфона в наш AI-сервис, получает ошибку, а у разработчиков на тестовых стендах всё работает. В логах стандартный raise_for_status() на 400 Bad Request. Видно, что упало, но само тело ответа от внешнего провайдера никто не сохранил.

Пришлось идти в мессенджеры, выпрашивать у клиента исходный файл и ковырять его руками. Выяснилось, что картинка весит 5 МБ (в лимит по байтам укладывались), но её разрешение – 12.2 Мп. Внешний API резал файлы именно по габаритам, выставляя жесткий лимит в 12 Мп. Автоматика могла бы выплюнуть эту причину одной строкой, но вместо неё контекст собирали люди.

В статье разбираем, как правильно выстроить регистрацию ошибок и почему сейчас не стоит слепо следовать тренду на автоматизацию мониторинга с помощью LLM:

Контекст вместо сырых трейсов: как оформлять логи и настраивать сбор метаданных в Sentry или его легковесном open-source аналоге GlitchTip.

Почему LLM не место в критическом пути алертинга: разбираем проблемы с недетерминизмом, задержками ответов и поведением моделей во время OOM-штормов, когда логи сыплются тысячами строк в секунду.

Архитектура здорового человека: как спроектировать трехуровневую систему, где за мгновенные оповещения отвечает жесткое ядро на регулярных выражениях, а нейросеть работает офлайн и пакетно — просто предлагая новые правила для этого ядра.

Фикс кейса: как мы закрыли проблему с Айфонами с помощью Pillow и как доставляем такие инциденты до дежурных через alert-платформу Pusk.

👉 Читать статью полностью

#кейс #devops
🔥3👍2
⚡️ DevOps Digest #20 | 22.06.2026

🔥 Главное за неделю:

1. Прогнал gitleaks по своему репозиторию – нашёл 12 живых секретов – Инженер был уверен, что его homelab-репозиторий чист: CI зелёный, секреты вроде бы в Vault. Полный скан истории нашёл 12 секретов в открытом виде, включая приватный OIDC-ключ, которым подписываются SSO-токены для ArgoCD, Vault и Grafana. Прогони полную историю у себя – почти наверняка что-то всплывёт.
🔗 https://dev.to/dwoitzik/i-ran-gitleaks-against-my-own-repo-and-found-12-real-secrets-1j18

2. IncidentRelay дорос до полноценного on-call – Open-source и self-hosted система дежурств: маршрутизация алертов, эскалации, ACK/Resolve. За месяц добралась до v1.0.21-beta и закрыла всю цепочку дежурства. Живая альтернатива PagerDuty и OpsGenie для закрытого контура.
🔗 https://habr.com/ru/articles/1050286/

3. Terraform Ansible collection 2.0 – HashiCorp выкатила версию 2.0 на pyTFE: динамический инвентарь и доработанные Terraform actions. Связка provisioning (Terraform) и управления конфигурацией (Ansible) стала плотнее и двунаправленной. Если оба инструмента в твоей обвязке – посмотри, что поменялось.
🔗 https://www.hashicorp.com/blog/whats-new-with-terraform-ansible

4. Вышел Valkey 9.1 – Open-source форк Redis под крылом Linux Foundation: кеш, очереди, key-value-структуры. Заметную часть багфиксов в релизе бэкпортировал AI-агент – сам разруливал конфликты и гонял CI. Главное – это бесплатная замена Redis после смены его лицензии.
🔗 https://thenewstack.io/valkey-ai-backporting-agents/

5. Arcane – простой веб-UI для Docker – Self-hosted панель управления контейнерами на Go, на этой неделе набрала больше сотни звёзд. Лёгкая альтернатива Portainer, когда нужен понятный интерфейс для контейнеров на одном-двух хостах.
🔗 https://github.com/getarcaneapp/arcane

6. "Скорость – это не поток" – Деплои чаще, дашборды зелёные, а ценность всё равно стоит в очереди. Разбор, почему автоматизация без системного выравнивания просто разгоняет хаос, и как Value Stream Mapping показывает, где реально застревает работа. Полезно тем, кто внедряет DevOps-практики.
🔗 https://devops.com/you-cannot-fake-flow-what-organizations-get-wrong-about-value-delivery/

🛠 Команда недели:
df -ih

Использование inode по файловым системам. Если IUse% подходит к 100, а по df -h места ещё полно – диск забит не объёмом, а числом файлов: классика на legacy-серверах, где мелкие логи или сессии выели все inode, и запись падает с No space left on device, хотя "место вроде есть".

#дайджест #devops #security

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
👍4🔥1
Разбираемся с сетями (без занудства и OSI ради OSI)

Давай честно: сколько раз за последний год ты нейрогуглил что-то по сетям или лез в калькулятор подсетей, чтобы проверить маску /24 и /25, или пытался понять, а те, кто выпускают для корпсети имена доменов в своём уме или это у тебя уже кукуха отлетела? А когда на собесе спрашивают "что происходит, если ввести URL в браузер", внутри обычно что-то типа: "Ну там DNS бороздит просторы Большого театра и пакеты летают".

И это нормально. Обычно сети либо учат по академическим кирпичам типа Олифера (где засыпаешь на главе про физический уровень), либо собирают по кусочкам на практике: тут скопировал конфиг ингресса, там пробросил порт в докере – вроде завелось, и ладно.

Проблемы начинаются как обычно внезапно, когда сыплет 502 ошибка, pod не видит базу, а сертификат внезапно протух. И ты сидишь перед монитором, пытаясь угадать, на каком вообще этапе всё сломалось. (Хотя мы-то знаем, что виноват всегда DNS. Даже когда он не виноват).

Решил собрать в кучу и разложить по полочкам ту базу по сетям, которая реально нужна каждый день в DevOps. Назовём это Networking 20/80.

План такой: пройдёмся по ключевым темам короткими и понятными постами. Никакой зубрёжки ради собесов, только практика:

1. Как на самом деле устроена модель сети (и почему OSI полезна только для диагностики).
2. IP-адреса, подсети и маршрутизация на пальцах.
3. DNS – как он устроен внутри и почему ломается.
4. TCP и UDP: флаги, хендшейки и почему рвутся соединения.
5. HTTP, HTTPS и TLS (что под капотом у сертификатов).
6. Файрволы и базовый забор из правил.
7. Балансировка трафика и то, как всё это крутится внутри Kubernetes.

В каждом посте – минимум теории, происхождение протоколов (чтобы понять логику создателей) и живые команды, которые пригодятся в консоли (ip, ping, traceroute, ss). Задача – научиться понимать, на каком уровне искать, когда всё упало.

Первый пост уже готов, погнали разбираться 👇
https://devopsway.ru/posts/networking-00-model/

#networking #linux #devops
🔥7👍1
⚡️ DevOps Digest #21 | 29.06.2026

🔥 Главное за неделю:

1. Podman 6.0 — много breaking changes – Вышел мажор: несколько статических IP на контейнер, улучшенная изоляция сети ради совместимости с Docker, переписанные Quadlet и обработка конфигов. Перед апгрейдом обязательно прочитай release notes – ломающих изменений хватает.
🔗 https://lwn.net/Articles/1079600/


2. Плагин Cluster API для Headlamp – У open-source UI для Kubernetes появился визуальный модуль для Cluster API: обзор кластеров, MachineDeployments и Machines, масштабирование прямо из интерфейса вместо сырых kubectl-команд. Удобно тем, кто рулит жизненным циклом кластеров.
🔗 https://kubernetes.io/blog/2026/06/25/headlamp-cluster-api-plugin/

3. DataSafeS3 v1.0.1 / v1.0.2 – Молодой российский open-source: своё S3-хранилище с веб-консолью, ролями и журналом действий на своём железе (нужны только Docker и Linux). Команда честно разбирает, что сломалось после первого релиза и как чинили – полезно тем, кто уже катит его в тестовом контуре.
🔗 https://habr.com/ru/articles/1053082/

4. Progressive delivery: управляем blast radius – Разбор, как уйти от "выкатил и молись" к контролируемым релизам: разделяем deployment (выкладка кода) и release (показ фичи юзерам), катим на 1–5% трафика через canary и feature flags, держим наготове kill switch. Наблюдаем, решаем, расширяем.
🔗 https://devops.com/mastering-the-blast-radius-deployment-without-fear-progressive-delivery-in-modern-devops/

5. Когда брешь вендора становится твоей – Забытый доступ у вендора Klue открыл атакующим данные Salesforce его клиентов. Хороший разбор цепочечных SaaS-взломов и чек-лист: какие ключи и интеграции пора проаудитить, чтобы чужой инцидент не стал твоим.
🔗 https://snyk.io/blog/when-a-vendors-breach-becomes-yours-lessons-from-the-klue-incident/

6. Vessel – обновление панели для VPS – Локальная (local-first) панель управления сервером на Rust/Tauri: автодетект и установка Docker, запуск контейнеров из UI, хвост логов нескольких контейнеров в одном окне через один SSH-канал. Лицензия MIT.
🔗 https://github.com/shihebamrii/vessel

🛠 Команда недели:
find / -xdev -perm -4000 -type f 2>/dev/null

Список всех SUID-бинарников: каждый запускается с правами root, поэтому забытый или подозрительный файл здесь – прямой путь к эскалации привилегий. -xdev держит поиск в пределах одной ФС (не лезет в /proc, /sys, сетевые маунты) – быстро и без шума.

#дайджест #kubernetes #security

💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥3