Утренний шторм в инфраструктуре не начинается с громких взрывов – он стартует с тихого шёпота в алертах.
Сегодня прилетел алерт с моей инфры. В 06:15:45 мониторинг фиксирует рядовой сбой:
На этот предупреждающий писк я почти забил. А зря: именно он оказался единственным свидетелем катастрофы, которая через несколько минут уронит сервер в софтверный нокаут с перегревом процессора до 96°C 🫠
Как один ночной апдейт запускает цепную реакцию:
1. Автообновление (unattended-upgrades) ночью накатывает новый драйвер NVIDIA. Пользовательские библиотеки и модуль на диске получают новую версию, а работающий в ядре старый выгрузить нельзя, его держат активные процессы. Возникает критический рассинхрон версий (mismatch).
2. Сервисы теряют GPU, падают на процессор, нагрузка улетает в космос, система раскаляется докрасна.
3. И вишенка: Docker рапортует, что девайс используют все контейнеры разом, а реально его держат всего два процесса. Манифесты врут, симптомы маскируют истинную причину.
Как распутать клубок версий, выгрузить старый драйвер без ребута хоста и настроить детектор рассинхрона, чтобы ловить проблему за 9 минут до перегрева – в подробном разборе:
👉 https://devopsway.ru/posts/incident-nvidia-driver-mismatch/
#кейс #devops
Сегодня прилетел алерт с моей инфры. В 06:15:45 мониторинг фиксирует рядовой сбой:
⚠️ SystemdServiceFailed: nvidia-cdi-refresh.service — failed
На этот предупреждающий писк я почти забил. А зря: именно он оказался единственным свидетелем катастрофы, которая через несколько минут уронит сервер в софтверный нокаут с перегревом процессора до 96°C 🫠
Как один ночной апдейт запускает цепную реакцию:
1. Автообновление (unattended-upgrades) ночью накатывает новый драйвер NVIDIA. Пользовательские библиотеки и модуль на диске получают новую версию, а работающий в ядре старый выгрузить нельзя, его держат активные процессы. Возникает критический рассинхрон версий (mismatch).
2. Сервисы теряют GPU, падают на процессор, нагрузка улетает в космос, система раскаляется докрасна.
3. И вишенка: Docker рапортует, что девайс используют все контейнеры разом, а реально его держат всего два процесса. Манифесты врут, симптомы маскируют истинную причину.
Как распутать клубок версий, выгрузить старый драйвер без ребута хоста и настроить детектор рассинхрона, чтобы ловить проблему за 9 минут до перегрева – в подробном разборе:
👉 https://devopsway.ru/posts/incident-nvidia-driver-mismatch/
#кейс #devops
❤2🔥2
⚡️ DevOps Digest #25 | 27.07.2026
🔥 Главное за неделю:
1. 10 типичных ошибок в CI/CD-пайплайнах – от "set and forget" до одного монолитного пайплайна на всё, из-за чего сборки тормозят, а команда буксует. Хороший чек-лист, чтобы пересобрать процесс, а не терпеть 40-минутные прогоны на каждый push.
🔗 https://devops.com/these-are-10-ci-cd-pipeline-mistakes-that-slow-down-engineering-teams-2/
2. Self-hosted WAF в Docker за 15 минут – разбор, как поставить перед своим стеком открытый SafeLine (reverse-proxy перед Nginx), не трогая код приложения. Режет ботов, сканеры и SQL-инъекции; ставится рядом с уже работающим reverse-proxy. Практично для одиночного VPS, который сразу начинают сканировать из интернета.
🔗 https://dev.to/_eb0609572b9efcf27472066/how-i-added-a-self-hosted-waf-to-my-docker-stack-in-15-minutes-11hn
3. Observability в одном Go-бинарнике – инженер собрал self-hosted, Sentry-совместимый сбор ошибок поверх PostgreSQL и ClickHouse, без Kafka и Redis. Для пары проектов, где официальные "два десятка контейнеров" – это перебор; перенос сводится к смене DSN в существующем SDK.
🔗 https://habr.com/ru/articles/1062624/
4. Terraform: восстановление workspace и Stacks (GA) – HCP/Terraform Enterprise научился откатывать удалённый workspace или stack в один клик, вместе со стейтом, историей прогонов и переменными. Раньше случайно снесённое окружение импортировали руками по ресурсу – теперь есть штатный recovery.
🔗 https://www.hashicorp.com/blog/terraform-introduces-workspaces-and-stacks-restore-and-more
5. Что сломалось, что зависит, кто владелец – три вопроса при любом алерте, на которые без карты сервисов (service map) отвечают часами методом тыка. Разбор, как service architecture превращает эти часы в минуты. База для быстрого разбора инцидентов, которой в легаси-командах часто просто нет.
🔗 https://thenewstack.io/build-resilient-service-architecture/
6. SRE Weekly #527 – свежая подборка: цена дежурства с кодом, который написал AI (кто и как отлаживает это в 3 ночи), негативное время до обнаружения инцидента и разбор сложной миграции Kafka в Honeycomb. Хорошее чтение на неделю.
🔗 https://sreweekly.com/sre-weekly-issue-527/
🛠 Команда недели:
Показывает, что реально занимает место на Docker-хосте – образы, контейнеры, тома и build cache, с колонкой RECLAIMABLE (сколько можно освободить). Первое, что смотреть, когда на сервере внезапно кончается диск, до того как вслепую запускать prune.
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. 10 типичных ошибок в CI/CD-пайплайнах – от "set and forget" до одного монолитного пайплайна на всё, из-за чего сборки тормозят, а команда буксует. Хороший чек-лист, чтобы пересобрать процесс, а не терпеть 40-минутные прогоны на каждый push.
🔗 https://devops.com/these-are-10-ci-cd-pipeline-mistakes-that-slow-down-engineering-teams-2/
2. Self-hosted WAF в Docker за 15 минут – разбор, как поставить перед своим стеком открытый SafeLine (reverse-proxy перед Nginx), не трогая код приложения. Режет ботов, сканеры и SQL-инъекции; ставится рядом с уже работающим reverse-proxy. Практично для одиночного VPS, который сразу начинают сканировать из интернета.
🔗 https://dev.to/_eb0609572b9efcf27472066/how-i-added-a-self-hosted-waf-to-my-docker-stack-in-15-minutes-11hn
3. Observability в одном Go-бинарнике – инженер собрал self-hosted, Sentry-совместимый сбор ошибок поверх PostgreSQL и ClickHouse, без Kafka и Redis. Для пары проектов, где официальные "два десятка контейнеров" – это перебор; перенос сводится к смене DSN в существующем SDK.
🔗 https://habr.com/ru/articles/1062624/
4. Terraform: восстановление workspace и Stacks (GA) – HCP/Terraform Enterprise научился откатывать удалённый workspace или stack в один клик, вместе со стейтом, историей прогонов и переменными. Раньше случайно снесённое окружение импортировали руками по ресурсу – теперь есть штатный recovery.
🔗 https://www.hashicorp.com/blog/terraform-introduces-workspaces-and-stacks-restore-and-more
5. Что сломалось, что зависит, кто владелец – три вопроса при любом алерте, на которые без карты сервисов (service map) отвечают часами методом тыка. Разбор, как service architecture превращает эти часы в минуты. База для быстрого разбора инцидентов, которой в легаси-командах часто просто нет.
🔗 https://thenewstack.io/build-resilient-service-architecture/
6. SRE Weekly #527 – свежая подборка: цена дежурства с кодом, который написал AI (кто и как отлаживает это в 3 ночи), негативное время до обнаружения инцидента и разбор сложной миграции Kafka в Honeycomb. Хорошее чтение на неделю.
🔗 https://sreweekly.com/sre-weekly-issue-527/
🛠 Команда недели:
docker system df -v
Показывает, что реально занимает место на Docker-хосте – образы, контейнеры, тома и build cache, с колонкой RECLAIMABLE (сколько можно освободить). Первое, что смотреть, когда на сервере внезапно кончается диск, до того как вслепую запускать prune.
#дайджест #devops #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
DevOps.com
These are 10 CI/CD Pipeline Mistakes That Slow Down Engineering Teams
Avoid common CI/CD pipeline mistakes that slow software delivery, increase costs, and reduce developer productivity.
❤2🔥1
"Я джун, взяли меня прямо перед твоим отпуском.
Ты уехал на Багамы, связь фиговая – еле созвонились.
У нас полсайта лежит, я твои руки на клавиатуре. Диктуй, что делать."
Один из моих дежурный вопросов на собесе, который позволял понять, кто по ту сторону экрана. И это честная проверка: знаешь ты сети или просто помнишь, куда тыкать. Печатаешь не ты – мышечная память бесполезна. Надо вслух, по шагам, вести чужие руки: что за ошибка, на каком уровне искать, какой командой.
А половина таких "полсайта лёг" – это 5xx на прокси. Первое, что диктуешь джуну: не рестартить nginx – он-то как раз работает. 502 значит, что прокси жив, но не достучался до бэкенда за ним. Дальше по шагам: curl к бэкенду мимо nginx, ss – кто слушает порт, логи. Чинишь либо сам сервис, либо связь до него.
📺 Networking 20/80, пятый пост. Те самые 20% сетей, что закрывают 80% работы DevOps. Слои, адреса, имена и соединения уже разобрали – сегодня язык, на котором говорит почти весь веб: HTTP и его зашифрованный конверт TLS.
В посте:
– анатомия запроса и ответа: что реально летит в
– статус-коды группами (2xx/3xx/4xx/5xx) – почему их учат пачками, а не по одному;
– 401 против 403 – классика собеса, на которой путаются даже сеньоры;
– как дебажить 502 по шагам, а не гаданием;
– TLS-рукопожатие: что именно проверяет сертификат и откуда бесплатные Let's Encrypt;
– чем HTTP/2 и HTTP/3 отличаются от привычного HTTP/1.1.
Плюс три подвоха с собеса – включая коварный "зачем TLS, если трафик и так внутри VPC".
Полная версия 👇
https://devopsway.ru/posts/networking-04-http-tls/
#networking #linux #devops
Ты уехал на Багамы, связь фиговая – еле созвонились.
У нас полсайта лежит, я твои руки на клавиатуре. Диктуй, что делать."
Один из моих дежурный вопросов на собесе, который позволял понять, кто по ту сторону экрана. И это честная проверка: знаешь ты сети или просто помнишь, куда тыкать. Печатаешь не ты – мышечная память бесполезна. Надо вслух, по шагам, вести чужие руки: что за ошибка, на каком уровне искать, какой командой.
А половина таких "полсайта лёг" – это 5xx на прокси. Первое, что диктуешь джуну: не рестартить nginx – он-то как раз работает. 502 значит, что прокси жив, но не достучался до бэкенда за ним. Дальше по шагам: curl к бэкенду мимо nginx, ss – кто слушает порт, логи. Чинишь либо сам сервис, либо связь до него.
📺 Networking 20/80, пятый пост. Те самые 20% сетей, что закрывают 80% работы DevOps. Слои, адреса, имена и соединения уже разобрали – сегодня язык, на котором говорит почти весь веб: HTTP и его зашифрованный конверт TLS.
В посте:
– анатомия запроса и ответа: что реально летит в
curl -v;– статус-коды группами (2xx/3xx/4xx/5xx) – почему их учат пачками, а не по одному;
– 401 против 403 – классика собеса, на которой путаются даже сеньоры;
– как дебажить 502 по шагам, а не гаданием;
– TLS-рукопожатие: что именно проверяет сертификат и откуда бесплатные Let's Encrypt;
– чем HTTP/2 и HTTP/3 отличаются от привычного HTTP/1.1.
Плюс три подвоха с собеса – включая коварный "зачем TLS, если трафик и так внутри VPC".
Полная версия 👇
https://devopsway.ru/posts/networking-04-http-tls/
#networking #linux #devops
🔥5❤1
⚡️ DevOps Digest #26 | 03.08.2026
🔥 Главное за неделю:
1. Homelab дорос до прода: SQLite уронил control plane k3s – k3s по умолчанию хранит состояние в SQLite (через kine). Десятки операторов с leader-election раздули базу: WAL 13.8 ГБ не чекпоинтился, CPU в потолок, load 79 на 8 ядрах. Разбор инцидента + миграция на встроенный etcd (7.5 ГБ SQLite → 313 МБ etcd, load 79 → 5). Гоняешь k3s не только для тестов – закладывай etcd заранее.
🔗 https://dev.to/tomaszwostal/when-your-homelab-grows-up-how-sqlite-took-down-my-k3s-control-plane-1kdp
2. GitHub бьёт по supply-chain-атакам на npm и GitHub Actions – разбор, как устроены цепочки атак через пакеты и CI/CD (кража токенов, саморазмножение по сотням проектов) и какие защиты GitHub уже включил. Читать всем, у кого пайплайны тянут внешние экшены и пакеты.
🔗 https://github.blog/security/supply-chain-security/disrupting-supply-chain-attacks-on-npm-and-github-actions/
3. DNS – это инфраструктура. Управляй ей как кодом – домены и DNS-записи всё ещё правят руками в дашборде регистратора, без истории "кто что менял". Тезис простой: заводи их в Terraform/Ansible, как и остальную инфру. Напоминание – 1.1.1.1 от Cloudflare лежал 62 минуты не из-за атаки, а из-за misconfiguration.
🔗 https://thenewstack.io/dns-domain-management-automation/
4. Почему логи – недостающее звено в разборе инцидентов – метрики показывают, ЧТО сломалось, но первопричина чаще в логах, а прыжки между тремя инструментами (метрики → логи → трейсы) съедают время. У трети команд 5+ инструментов observability, у двух третей время до устранения больше 4 часов.
🔗 https://devops.com/why-log-monitoring-is-the-missing-link-in-most-incident-response-workflows/
5. gluetun – VPN-клиент в лёгком Docker-контейнере – один контейнер заворачивает трафик других сервисов в OpenVPN/WireGuard, с DNS-over-TLS и парой прокси из коробки. Удобно для self-hosted: прячешь исходящий трафик контейнеров за VPN, не трогая сами сервисы.
🔗 https://github.com/passteque/gluetun
6. SRE Weekly #528: контринтуитивно про инциденты – подборка недели: если гнаться за снижением ЧИСЛА инцидентов – система станет менее надёжной; цель – больше инцидентов, отработанных хорошо. Плюс новая роль incident tech lead и постмортем Spotify по сбою публикации подкастов.
🔗 https://sreweekly.com/sre-weekly-issue-528/
🛠 Команда недели:
Показывает, через какой интерфейс и с каким исходным IP реально уйдёт пакет к адресу. Мгновенно отвечает на вопрос "с какой NIC на самом деле выходит трафик" на multi-homed хосте – когда есть несколько сетей и подозреваешь асимметричный роутинг.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. Homelab дорос до прода: SQLite уронил control plane k3s – k3s по умолчанию хранит состояние в SQLite (через kine). Десятки операторов с leader-election раздули базу: WAL 13.8 ГБ не чекпоинтился, CPU в потолок, load 79 на 8 ядрах. Разбор инцидента + миграция на встроенный etcd (7.5 ГБ SQLite → 313 МБ etcd, load 79 → 5). Гоняешь k3s не только для тестов – закладывай etcd заранее.
🔗 https://dev.to/tomaszwostal/when-your-homelab-grows-up-how-sqlite-took-down-my-k3s-control-plane-1kdp
2. GitHub бьёт по supply-chain-атакам на npm и GitHub Actions – разбор, как устроены цепочки атак через пакеты и CI/CD (кража токенов, саморазмножение по сотням проектов) и какие защиты GitHub уже включил. Читать всем, у кого пайплайны тянут внешние экшены и пакеты.
🔗 https://github.blog/security/supply-chain-security/disrupting-supply-chain-attacks-on-npm-and-github-actions/
3. DNS – это инфраструктура. Управляй ей как кодом – домены и DNS-записи всё ещё правят руками в дашборде регистратора, без истории "кто что менял". Тезис простой: заводи их в Terraform/Ansible, как и остальную инфру. Напоминание – 1.1.1.1 от Cloudflare лежал 62 минуты не из-за атаки, а из-за misconfiguration.
🔗 https://thenewstack.io/dns-domain-management-automation/
4. Почему логи – недостающее звено в разборе инцидентов – метрики показывают, ЧТО сломалось, но первопричина чаще в логах, а прыжки между тремя инструментами (метрики → логи → трейсы) съедают время. У трети команд 5+ инструментов observability, у двух третей время до устранения больше 4 часов.
🔗 https://devops.com/why-log-monitoring-is-the-missing-link-in-most-incident-response-workflows/
5. gluetun – VPN-клиент в лёгком Docker-контейнере – один контейнер заворачивает трафик других сервисов в OpenVPN/WireGuard, с DNS-over-TLS и парой прокси из коробки. Удобно для self-hosted: прячешь исходящий трафик контейнеров за VPN, не трогая сами сервисы.
🔗 https://github.com/passteque/gluetun
6. SRE Weekly #528: контринтуитивно про инциденты – подборка недели: если гнаться за снижением ЧИСЛА инцидентов – система станет менее надёжной; цель – больше инцидентов, отработанных хорошо. Плюс новая роль incident tech lead и постмортем Spotify по сбою публикации подкастов.
🔗 https://sreweekly.com/sre-weekly-issue-528/
🛠 Команда недели:
ip route get 1.1.1.1
Показывает, через какой интерфейс и с каким исходным IP реально уйдёт пакет к адресу. Мгновенно отвечает на вопрос "с какой NIC на самом деле выходит трафик" на multi-homed хосте – когда есть несколько сетей и подозреваешь асимметричный роутинг.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
DEV Community
When Your Homelab Grows Up: How SQLite Took Down My k3s Control Plane
Originally published at wostal.eu. TL;DR: My Hetzner k3s lab quietly became a platform. Dozens of...
❤2🔥1
iptables -j DROP не в той строке
SSH отвалился, а до сервера уже не достучишься, пока не доберёшься до консоли.
Файрвол – это не набор правил, а алгоритм: он читает их сверху вниз и останавливается на первом совпадении.
Поставил общий DROP выше, чем ACCEPT на порт 22 и твой SSH попал под запрет раньше, чем под разрешение. Правило верное, порядок нет. На удалённом сервере это уже не отладка, а квест через управляющую консоль или через звонок админу с просьбой ребутнуть железку.
Тот же принцип белого списка кусает и в Kubernetes. Одна NetworkPolicy с default-deny на namespace и поды перестают резолвить имена: забыл открыть egress на DNS (UDP 53). По всему кластеру "Name or service not known", дежурный час копает CoreDNS, а DNS жив, его просто перестали выпускать. Обычно "виноват всегда DNS", а тут его полномочия как бы всё.
Firewall – это не стена, а фильтр: на каждый пакет решение "пропустить / отбросить молча / отказать явно" по правилам, которые читаются по порядку.
📺 Networking 20/80, шестой пост. Те самые 20% сетей, что закрывают 80% работы DevOps. Слои, адреса, имена, соединения и HTTP уже разобрали – сегодня как этот трафик фильтровать и не отстрелить себе ногу или чего ещё 🫠
В посте:
– iptables как фундамент: таблицы, цепочки и почему их ПОРЯДОК решает – одно правило не на своём месте открывает или рубит всё;
– DROP против REJECT: почему один клиент висит до таймаута, а другой сразу ловит "refused" – и когда что выбирать;
– Kubernetes NetworkPolicy: почему в кластере по умолчанию всё открыто и как закрыть по белому списку, не уронив DNS;
– Security Groups в облаках – тот же файрвол, но для виртуалок, и чем stateful отличается от stateless;
– чеклист "почему после правила перестало работать".
Плюс три подвоха с собеса и код-челлендж: написать NetworkPolicy, которая пускает только откуда надо.
Полная версия с iptables, NetworkPolicy и Security Groups 👇
https://devopsway.ru/posts/networking-05-firewall/
#networking #security #devops
SSH отвалился, а до сервера уже не достучишься, пока не доберёшься до консоли.
Файрвол – это не набор правил, а алгоритм: он читает их сверху вниз и останавливается на первом совпадении.
Поставил общий DROP выше, чем ACCEPT на порт 22 и твой SSH попал под запрет раньше, чем под разрешение. Правило верное, порядок нет. На удалённом сервере это уже не отладка, а квест через управляющую консоль или через звонок админу с просьбой ребутнуть железку.
Тот же принцип белого списка кусает и в Kubernetes. Одна NetworkPolicy с default-deny на namespace и поды перестают резолвить имена: забыл открыть egress на DNS (UDP 53). По всему кластеру "Name or service not known", дежурный час копает CoreDNS, а DNS жив, его просто перестали выпускать. Обычно "виноват всегда DNS", а тут его полномочия как бы всё.
Firewall – это не стена, а фильтр: на каждый пакет решение "пропустить / отбросить молча / отказать явно" по правилам, которые читаются по порядку.
📺 Networking 20/80, шестой пост. Те самые 20% сетей, что закрывают 80% работы DevOps. Слои, адреса, имена, соединения и HTTP уже разобрали – сегодня как этот трафик фильтровать и не отстрелить себе ногу или чего ещё 🫠
В посте:
– iptables как фундамент: таблицы, цепочки и почему их ПОРЯДОК решает – одно правило не на своём месте открывает или рубит всё;
– DROP против REJECT: почему один клиент висит до таймаута, а другой сразу ловит "refused" – и когда что выбирать;
– Kubernetes NetworkPolicy: почему в кластере по умолчанию всё открыто и как закрыть по белому списку, не уронив DNS;
– Security Groups в облаках – тот же файрвол, но для виртуалок, и чем stateful отличается от stateless;
– чеклист "почему после правила перестало работать".
Плюс три подвоха с собеса и код-челлендж: написать NetworkPolicy, которая пускает только откуда надо.
Полная версия с iptables, NetworkPolicy и Security Groups 👇
https://devopsway.ru/posts/networking-05-firewall/
#networking #security #devops
🔥4❤1
⚡️ DevOps Digest #27 | 10.08.2026
🔥 Главное за неделю:
1. KubeVirt: живая миграция VM между кластерами упирается не в KubeVirt, а в сеть – децентрализованная live-migration приехала в v1.6, но VM должна сохранить IP и MAC на новом кластере, а значит нужен растянутый L2 между площадками. Разбор, как это закрыть через EVPN без новых VLAN, тикетов и change-window. Актуально всем, кто переносит VM в Kubernetes взамен VMware.
🔗 https://thenewstack.io/kubevirt-evpn-vm-migration/
2. Dependabot теперь ловит вредоносные пакеты не только в npm, а в 8 экосистемах – malware-предупреждения расширены на PyPI, Maven, RubyGems, NuGet, Go, crates.io и PHP Composer (на базе открытых данных OpenSSF malicious-packages). Если тянете зависимости из публичных реестров – теперь алерты приходят и по Go, Rust, Python, а не только по JS.
🔗 https://github.blog/security/supply-chain-security/how-we-took-malware-advisories-beyond-npm/
3. Docker-песочницы в 2026: как изолировать недоверенный код и где это ломается – практический разбор границ безопасности контейнера через namespaces, cgroups и capabilities, и когда их уже мало (нужен gVisor). Главная мысль для легаси-контуров: ядро у контейнера и хоста общее, побег из контейнера = доступ к хосту.
🔗 https://dev.to/kaixintelligence/docker-sandboxes-in-2026-the-evolution-of-secure-code-isolation-55b8
4. Microsoft выложил open-source агент для генерации юнит-тестов – code-testing-generator (в репозитории dotnet/skills) полезен не столько кодом, сколько уроком про тихий отказ: AI-тесты часто компилируются и проходят локально, но никогда не запускаются в CI, потому что их забыли подключить к решению или тест-команде. Проверьте, что ваши тесты реально гоняются в пайплайне, а не только на ноутбуке.
🔗 https://devops.com/microsofts-new-testing-agent-tackles-the-trust-gap-in-ai-generated-code/
5. Ansible на русском: настройка серверов с нуля (часть 7.1 серии "С нуля до Junior DevOps") – пошагово про автоматизацию рутины после создания сервера: пакеты, пользователи, службы, Docker, Nginx. Хороший вход в IaC для джунов и тех, кто до сих пор настраивает серверы руками.
🔗 https://habr.com/ru/articles/1068460/
6. SRE Weekly #529: процесс инцидентов – это не документ, а программа – подборка недели: почему процесс управления инцидентами загнивает без поддерживающей его программы, кейс с route cache ядра как скрытым убийцей надёжности и как LLM-агенты меняют паттерны запросов к системам наблюдаемости. Пища для тех, кто выстраивает культуру эксплуатации, а не только графики.
🔗 https://sreweekly.com/sre-weekly-issue-529/
🛠 Команда недели:
Показывает счётчики ошибок и потерь по каждому интерфейсу (errors, dropped, overrun) – первый шаг, когда подозреваешь потерю пакетов или флапающий линк, прежде чем винить приложение или сеть.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное за неделю:
1. KubeVirt: живая миграция VM между кластерами упирается не в KubeVirt, а в сеть – децентрализованная live-migration приехала в v1.6, но VM должна сохранить IP и MAC на новом кластере, а значит нужен растянутый L2 между площадками. Разбор, как это закрыть через EVPN без новых VLAN, тикетов и change-window. Актуально всем, кто переносит VM в Kubernetes взамен VMware.
🔗 https://thenewstack.io/kubevirt-evpn-vm-migration/
2. Dependabot теперь ловит вредоносные пакеты не только в npm, а в 8 экосистемах – malware-предупреждения расширены на PyPI, Maven, RubyGems, NuGet, Go, crates.io и PHP Composer (на базе открытых данных OpenSSF malicious-packages). Если тянете зависимости из публичных реестров – теперь алерты приходят и по Go, Rust, Python, а не только по JS.
🔗 https://github.blog/security/supply-chain-security/how-we-took-malware-advisories-beyond-npm/
3. Docker-песочницы в 2026: как изолировать недоверенный код и где это ломается – практический разбор границ безопасности контейнера через namespaces, cgroups и capabilities, и когда их уже мало (нужен gVisor). Главная мысль для легаси-контуров: ядро у контейнера и хоста общее, побег из контейнера = доступ к хосту.
🔗 https://dev.to/kaixintelligence/docker-sandboxes-in-2026-the-evolution-of-secure-code-isolation-55b8
4. Microsoft выложил open-source агент для генерации юнит-тестов – code-testing-generator (в репозитории dotnet/skills) полезен не столько кодом, сколько уроком про тихий отказ: AI-тесты часто компилируются и проходят локально, но никогда не запускаются в CI, потому что их забыли подключить к решению или тест-команде. Проверьте, что ваши тесты реально гоняются в пайплайне, а не только на ноутбуке.
🔗 https://devops.com/microsofts-new-testing-agent-tackles-the-trust-gap-in-ai-generated-code/
5. Ansible на русском: настройка серверов с нуля (часть 7.1 серии "С нуля до Junior DevOps") – пошагово про автоматизацию рутины после создания сервера: пакеты, пользователи, службы, Docker, Nginx. Хороший вход в IaC для джунов и тех, кто до сих пор настраивает серверы руками.
🔗 https://habr.com/ru/articles/1068460/
6. SRE Weekly #529: процесс инцидентов – это не документ, а программа – подборка недели: почему процесс управления инцидентами загнивает без поддерживающей его программы, кейс с route cache ядра как скрытым убийцей надёжности и как LLM-агенты меняют паттерны запросов к системам наблюдаемости. Пища для тех, кто выстраивает культуру эксплуатации, а не только графики.
🔗 https://sreweekly.com/sre-weekly-issue-529/
🛠 Команда недели:
ip -s link
Показывает счётчики ошибок и потерь по каждому интерфейсу (errors, dropped, overrun) – первый шаг, когда подозреваешь потерю пакетов или флапающий линк, прежде чем винить приложение или сеть.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
The New Stack
Why your KubeVirt VMs can’t move between clusters — and how EVPN fixes it
Migrate KubeVirt VMs between clusters seamlessly with EVPN/VXLAN overlays and OpenPERouter CRDs. No network tickets required.
🔥6❤1
kubectl get pods – всё Running, казалось бы.
Service есть. А в ответ – 503.
Потому что selector в Service разошёлся с labels пода на один символ, и список endpoint-ов пустой. Кубер сделал ровно что просили: слать трафик туда, где никого нет.
Service – это вам не сервер. Это правило "куда слать": совпали labels – есть endpoint-ы, не совпали, пока пока, 503 при живых подах. И так на каждом слое: снаружи Ingress (L7, роутинг по Host/URL) → Service (L4, стабильный IP) → iptables/kube-proxy → pod. Пять мест, где "всё выглядит правильно", а трафик не идёт.
📺 Networking 20/80, седьмой и последний пост. Те самые 20% сетей, что закрывают 80% работы DevOps. Модель, адреса, DNS, TCP, HTTP и файрволы уже разобрали – сегодня собираем всё вместе: как запрос снаружи долетает до пода и делится между репликами.
В посте:
– L4 против L7: почему Service балансирует по IP:порту, а маршрутизация по URL и Host – это уже Ingress;
– четыре типа Service (ClusterIP / NodePort / LoadBalancer / ExternalName) – что где открывается наружу;
– Ingress и nginx как обратный прокси: терминация TLS, upstream, алгоритмы балансировки – и почему их нельзя смешивать в одном upstream;
– service mesh на пальцах: что даёт sidecar (Envoy) и почему джуну не надо настраивать Istio;
– чеклист диагностики: Service → Endpoints → DNS → Ingress, где именно рвётся.
И да – контроллер ingress-nginx ушёл на пенсию в марте 2026. Поэтому разбираем принципы L4/L7, а не один тул: они переносятся на любой контроллер.
Плюс три подвоха с собеса (в том числе "почему kube-proxy – вовсе не proxy") и финальный код-челлендж: описать весь путь запроса от https://… до пода по слоям.
Финал мини-курса. Полная версия 👇
https://devopsway.ru/posts/networking-06-lb-k8s/
#networking #kubernetes #devops
Service есть. А в ответ – 503.
Потому что selector в Service разошёлся с labels пода на один символ, и список endpoint-ов пустой. Кубер сделал ровно что просили: слать трафик туда, где никого нет.
Service – это вам не сервер. Это правило "куда слать": совпали labels – есть endpoint-ы, не совпали, пока пока, 503 при живых подах. И так на каждом слое: снаружи Ingress (L7, роутинг по Host/URL) → Service (L4, стабильный IP) → iptables/kube-proxy → pod. Пять мест, где "всё выглядит правильно", а трафик не идёт.
📺 Networking 20/80, седьмой и последний пост. Те самые 20% сетей, что закрывают 80% работы DevOps. Модель, адреса, DNS, TCP, HTTP и файрволы уже разобрали – сегодня собираем всё вместе: как запрос снаружи долетает до пода и делится между репликами.
В посте:
– L4 против L7: почему Service балансирует по IP:порту, а маршрутизация по URL и Host – это уже Ingress;
– четыре типа Service (ClusterIP / NodePort / LoadBalancer / ExternalName) – что где открывается наружу;
– Ingress и nginx как обратный прокси: терминация TLS, upstream, алгоритмы балансировки – и почему их нельзя смешивать в одном upstream;
– service mesh на пальцах: что даёт sidecar (Envoy) и почему джуну не надо настраивать Istio;
– чеклист диагностики: Service → Endpoints → DNS → Ingress, где именно рвётся.
И да – контроллер ingress-nginx ушёл на пенсию в марте 2026. Поэтому разбираем принципы L4/L7, а не один тул: они переносятся на любой контроллер.
Плюс три подвоха с собеса (в том числе "почему kube-proxy – вовсе не proxy") и финальный код-челлендж: описать весь путь запроса от https://… до пода по слоям.
Финал мини-курса. Полная версия 👇
https://devopsway.ru/posts/networking-06-lb-k8s/
#networking #kubernetes #devops
🔥4
⚡️ DevOps Digest #28 | 17.08.2026
🔥 Главное:
1. Flux выпустил Flux Mirror – плагин CLI, который по декларативной конфигурации зеркалирует образы, Helm-чарты и OCI-артефакты между реестрами с проверкой политик прямо при синхронизации. Для закрытого контура это способ убрать чужие реестры из своей прод-архитектуры (привет rate limits Docker Hub и заморозке каталога Bitnami).
🔗 https://fluxcd.io/blog/2026/08/flux-mirror/
2. GitLab Secrets Manager (на движке OpenBao) получил поддержку External Secrets Operator и Terraform/OpenTofu. Один секрет-стор с Vault-совместимым KV v2 API для рабочих нагрузок Kubernetes, IaC и CI/CD – меньше рассинхрона моделей доступа и разрозненных журналов аудита.
🔗 https://about.gitlab.com/blog/gitlab-secrets-manager-add-eso-terraform-api-support/
3. ProjectDiscovery выпустила Neo 1.0 – открытую платформу автономного тестирования уязвимостей на базе Nuclei, Subfinder, httpx, Katana и Naabu. Есть интеграции с GitHub, Jira и Model Context Protocol; ядро полностью open-source, что удобно для self-hosted обвязки.
🔗 https://devops.com/projectdiscovery-brings-open-source-ai-testing-to-vulnerability-discovery/
🔍 Неподписанные образы – это отложенная мина
Сканер отвечает на вопрос "что лежит внутри образа", но не на главный: "кто его собрал и не подменили ли его после сборки". Это разные гарантии, и вторую даёт только криптографическая подпись. В закрытом контуре с внутренними реестрами подпись через cosign плюс проверка на этапе синхронизации (та же Flux Mirror) и на admission (Kyverno/policy-controller) – это не роскошь, а базовая гигиена цепочки поставки, особенно с учётом наследования от базовых образов.
🔗 https://thenewstack.io/unsigned-container-images-ai/
🛠 Команда дня:
Показывает самые тяжёлые слои образа – сразу видно, какой шаг сборки раздувает вес и где резать.
#дайджест #security #devops
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное:
1. Flux выпустил Flux Mirror – плагин CLI, который по декларативной конфигурации зеркалирует образы, Helm-чарты и OCI-артефакты между реестрами с проверкой политик прямо при синхронизации. Для закрытого контура это способ убрать чужие реестры из своей прод-архитектуры (привет rate limits Docker Hub и заморозке каталога Bitnami).
🔗 https://fluxcd.io/blog/2026/08/flux-mirror/
2. GitLab Secrets Manager (на движке OpenBao) получил поддержку External Secrets Operator и Terraform/OpenTofu. Один секрет-стор с Vault-совместимым KV v2 API для рабочих нагрузок Kubernetes, IaC и CI/CD – меньше рассинхрона моделей доступа и разрозненных журналов аудита.
🔗 https://about.gitlab.com/blog/gitlab-secrets-manager-add-eso-terraform-api-support/
3. ProjectDiscovery выпустила Neo 1.0 – открытую платформу автономного тестирования уязвимостей на базе Nuclei, Subfinder, httpx, Katana и Naabu. Есть интеграции с GitHub, Jira и Model Context Protocol; ядро полностью open-source, что удобно для self-hosted обвязки.
🔗 https://devops.com/projectdiscovery-brings-open-source-ai-testing-to-vulnerability-discovery/
🔍 Неподписанные образы – это отложенная мина
Сканер отвечает на вопрос "что лежит внутри образа", но не на главный: "кто его собрал и не подменили ли его после сборки". Это разные гарантии, и вторую даёт только криптографическая подпись. В закрытом контуре с внутренними реестрами подпись через cosign плюс проверка на этапе синхронизации (та же Flux Mirror) и на admission (Kyverno/policy-controller) – это не роскошь, а базовая гигиена цепочки поставки, особенно с учётом наследования от базовых образов.
🔗 https://thenewstack.io/unsigned-container-images-ai/
🛠 Команда дня:
docker history --human --format '{{.Size}}\t{{.CreatedBy}}' nginx:latest | sort -rh | headПоказывает самые тяжёлые слои образа – сразу видно, какой шаг сборки раздувает вес и где резать.
#дайджест #security #devops
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
fluxcd.io
Introducing Flux Mirror
Declarative mirroring for container images, Helm charts, and OCI artifacts, with signature verification, provenance policies, and minimum artifact age.
❤1👍1🥰1
Раньше как было? Берешь железку, операционную систему, шаманский бубен, собираешь систему с нуля и получаешь ровно то, что нужно.
Ничего лишнего, только железобетонная стабильность.
Прошло энцать лет.
Как встроенный беспроводной интернет положил сервер на 6 часов
9 августа мой главный рабочий компухтер, на котором крутится ЛЛМка, ушел в глухой зависон. Без предупреждений, без нормального завершения работы, журнал просто обрывается.
Первая мысль, наверное, питание, в июле уже было похожее. Но нет, соседний бокс на том же порту пахал 25 дней без единого чиха. Сеть жива.
Лезем в системные журналы за прошлый сеанс. За 6 минут до смерти видим каскад системных ошибок. Виновник? Встроенный модуль беспроводной связи MediaTek. Прошивка потеряла связь, драйвер пошел в перезагрузку, зацепил оперативную память и всё завертелось, система встала намертво.
Самое обидное: этот беспроводной модуль вообще никогда не включался. Сервер подключен к интернету через обычный провод, беспроводная сеть не использовалась. Программа управления просто болталась в памяти и померла от скуки.
Что сделал:
Прописал в системе жесткий запрет на запуск драйверов этой беспроводной платы.
Пересобрал загрузочный образ, чтобы эта зараза даже не пыталась грузиться на старте.
Включил аппаратный сторожевой таймер. Если опять повиснет — перезагрузится сам за полминуты, а не будет лежать тушкой до ручного перезапуска.
Мораль сей басни такова:
Неиспользуемая часть системы, не "пусть висит", а готовая точка отказа. Особенно всякие беспроводные чипы на платах, которые мы берем с запасом.
Удаляйте всё, что не нужно. Запрещайте то, чем не пользуетесь. И ставьте автоматическую перезагрузку на всё, к чему не хочется ездить ногами.
#DevITWay #ProductionStories #Linux
Ничего лишнего, только железобетонная стабильность.
Прошло энцать лет.
Как встроенный беспроводной интернет положил сервер на 6 часов
9 августа мой главный рабочий компухтер, на котором крутится ЛЛМка, ушел в глухой зависон. Без предупреждений, без нормального завершения работы, журнал просто обрывается.
Первая мысль, наверное, питание, в июле уже было похожее. Но нет, соседний бокс на том же порту пахал 25 дней без единого чиха. Сеть жива.
Лезем в системные журналы за прошлый сеанс. За 6 минут до смерти видим каскад системных ошибок. Виновник? Встроенный модуль беспроводной связи MediaTek. Прошивка потеряла связь, драйвер пошел в перезагрузку, зацепил оперативную память и всё завертелось, система встала намертво.
Самое обидное: этот беспроводной модуль вообще никогда не включался. Сервер подключен к интернету через обычный провод, беспроводная сеть не использовалась. Программа управления просто болталась в памяти и померла от скуки.
Что сделал:
Прописал в системе жесткий запрет на запуск драйверов этой беспроводной платы.
Пересобрал загрузочный образ, чтобы эта зараза даже не пыталась грузиться на старте.
Включил аппаратный сторожевой таймер. Если опять повиснет — перезагрузится сам за полминуты, а не будет лежать тушкой до ручного перезапуска.
Мораль сей басни такова:
Неиспользуемая часть системы, не "пусть висит", а готовая точка отказа. Особенно всякие беспроводные чипы на платах, которые мы берем с запасом.
Удаляйте всё, что не нужно. Запрещайте то, чем не пользуетесь. И ставьте автоматическую перезагрузку на всё, к чему не хочется ездить ногами.
#DevITWay #ProductionStories #Linux
👍3❤1🔥1
⚡️ DevOps Digest #29 | 24.08.2026
🔥 Главное:
1. Radar – open-source UI для Kubernetes от Skyhook: один Go-бинарник без регистрации, топология кластера, timeline событий, менеджер Helm-релизов, GitOps для FluxCD и встроенный read-only MCP-сервер для ИИ-агентов. Разворачивается через Helm, замена связке Lens/Headlamp без тяжёлого десктоп-стека, разумный дефолт "только чтение".
🔗 https://habr.com/ru/articles/1073566/
2. Критический RCE в Serena, одном из популярных ИИ-агентов для кода: вредоносный .serena/project.yml выполняет произвольный код в момент открытия проекта, обходя защиту trusted_project_path_patterns. Обновляйтесь до 1.7.0 – и это первый пример нового класса угроз через MCP-серверы.
🔗 https://about.gitlab.com/blog/critical-rce-in-serena/
3. Flux Mirror – новый плагин Flux CLI зеркалит образы, Helm-чарты и OCI-артефакты между реестрами по декларативной конфигурации с проверкой политик при синхронизации. Прямое лекарство для закрытых контуров: заморозка бесплатного каталога Bitnami и лимиты Docker Hub перестают быть частью вашей прод-архитектуры.
🔗 https://fluxcd.io/blog/2026/08/flux-mirror/
4. Практический разбор Node NotReady: это два инцидента в одном – больной узел и осиротевшие поды. Kubelet жив и жалуется (сломанный runtime/CNI/PLEG) – чинишь на узле через journalctl -u kubelet; kubelet молчит – это мёртвый узел, протухший сертификат или сетевой разрыв, и через 5 минут поды выселяются по NoExecute-taint.
🔗 https://dev.to/devtocash/kubernetes-node-notready-how-to-debug-and-fix-it-5cda
5. Kubernetes v1.37 sneak peek: депрекация режима ipvs у kube-proxy, статичные поды больше не могут ссылаться на Secrets/ConfigMaps (feature gate удалён), депрекация kubectl run -f. Проверьте манифесты заранее, особенно если держите kube-proxy в режиме ipvs.
🔗 https://kubernetes.io/blog/2026/07/31/kubernetes-v1-37-sneak-peek/
🔍 Подпись образов: сканер говорит что внутри, но не кто собрал
Сканирование отвечает на вопрос "какие уязвимости в образе", но не на "кто его собрал и не подменили ли его после сборки" – а это важнее, когда каждый образ наследует базовый по цепочке. Практический минимум за пару часов: заморозить непроверенные зависимости с периодом выдержки и отключить lifecycle-скрипты, собирать через multi-stage, генерировать SBOM с провенансом и блокировать в CI исправимые Critical-CVE по точному digest образа. Подпись – это проактивное доказательство происхождения, а не реактивное сканирование постфактум.
🔗 https://thenewstack.io/unsigned-container-images-ai/
🛠 Команда дня:
Показывает файловые системы, где израсходовано больше 80% inode – частая причина "No space left on device", когда df -h показывает свободное место.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное:
1. Radar – open-source UI для Kubernetes от Skyhook: один Go-бинарник без регистрации, топология кластера, timeline событий, менеджер Helm-релизов, GitOps для FluxCD и встроенный read-only MCP-сервер для ИИ-агентов. Разворачивается через Helm, замена связке Lens/Headlamp без тяжёлого десктоп-стека, разумный дефолт "только чтение".
🔗 https://habr.com/ru/articles/1073566/
2. Критический RCE в Serena, одном из популярных ИИ-агентов для кода: вредоносный .serena/project.yml выполняет произвольный код в момент открытия проекта, обходя защиту trusted_project_path_patterns. Обновляйтесь до 1.7.0 – и это первый пример нового класса угроз через MCP-серверы.
🔗 https://about.gitlab.com/blog/critical-rce-in-serena/
3. Flux Mirror – новый плагин Flux CLI зеркалит образы, Helm-чарты и OCI-артефакты между реестрами по декларативной конфигурации с проверкой политик при синхронизации. Прямое лекарство для закрытых контуров: заморозка бесплатного каталога Bitnami и лимиты Docker Hub перестают быть частью вашей прод-архитектуры.
🔗 https://fluxcd.io/blog/2026/08/flux-mirror/
4. Практический разбор Node NotReady: это два инцидента в одном – больной узел и осиротевшие поды. Kubelet жив и жалуется (сломанный runtime/CNI/PLEG) – чинишь на узле через journalctl -u kubelet; kubelet молчит – это мёртвый узел, протухший сертификат или сетевой разрыв, и через 5 минут поды выселяются по NoExecute-taint.
🔗 https://dev.to/devtocash/kubernetes-node-notready-how-to-debug-and-fix-it-5cda
5. Kubernetes v1.37 sneak peek: депрекация режима ipvs у kube-proxy, статичные поды больше не могут ссылаться на Secrets/ConfigMaps (feature gate удалён), депрекация kubectl run -f. Проверьте манифесты заранее, особенно если держите kube-proxy в режиме ipvs.
🔗 https://kubernetes.io/blog/2026/07/31/kubernetes-v1-37-sneak-peek/
🔍 Подпись образов: сканер говорит что внутри, но не кто собрал
Сканирование отвечает на вопрос "какие уязвимости в образе", но не на "кто его собрал и не подменили ли его после сборки" – а это важнее, когда каждый образ наследует базовый по цепочке. Практический минимум за пару часов: заморозить непроверенные зависимости с периодом выдержки и отключить lifecycle-скрипты, собирать через multi-stage, генерировать SBOM с провенансом и блокировать в CI исправимые Critical-CVE по точному digest образа. Подпись – это проактивное доказательство происхождения, а не реактивное сканирование постфактум.
🔗 https://thenewstack.io/unsigned-container-images-ai/
🛠 Команда дня:
df -i | awk 'NR==1 || ($5+0)>80'
Показывает файловые системы, где израсходовано больше 80% inode – частая причина "No space left on device", когда df -h показывает свободное место.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
👍2❤1🔥1
Вот лето пролетело, но мы-то знаем, что лучшее впереди
Прошлой весной я всерьёз залез в LLM. Читал про очередную модель и думал: да они же скоро всё смогут. Ещё годик, и кодить будет нейросеть, а я – элегантно ей дирижировать.
Прошло чуть больше года.
Есть такой киноприём: первый кадр – герой висит над пропастью или горит в машине, всё вокруг летит к чёрту, картинка замирает, и голос за кадром: "Вам, наверное, интересно, как я сюда попал". Вот это самое я чувствую каждое утро, вставая к компу. Да, теперь не дом – работа – дом, а кровать – комп – кровать, ибо пришлось помарафонить.
До этого я много лет работал в энтерпрайзе, где у каждой ручки сидел специально обученный человек. Хочешь релиз – заявка, согласование, окно. Медленно, бюрократично, зато крайний – никогда не ты.
Мне бы убрать к чёрту все эти преграды, дайте рычаги – сам сделаю быстро и как надо. И тут подвернулся ровно такой шанс. Правда, теперь всё чаще ловлю себя на мысли, что надо было в сантехники.
Мечта сбылась. Преград не осталось. Крайний теперь всегда один.
На текущем проекте я не абы кто, не разработчик, не девопс, а тот чувак с ЛЛМками. Задача на словах простая: перенести двухлетнее легаси. На деле – раскопки. Археологические слои, по которым читается смена поколений: вот код, который писали руками; вот место, где в проект зашли LLM; вот костыли и самокаты, наваленные лишь бы закрыть задачу к дедлайну. И теперь всё это моё. 🤪
Как говорится, "бойтесь своих желаний" (с). Человек-оркестр – мечта идиота: я хотел мир без бюрократии и без специально обученного человека на каждой ручке, и получил его целиком. Вместе со всеми ручками. Команду ещё предстоит набрать и обучить.
Так что это новая рубрика – записки сумасшедшего девопса. Что горело, что я потушил, что поджёг сам. Часто это один и тот же пожар.
Дальше буду показывать и рассказывать, из каких ролей этот оркестр собран на самом деле и на какие грабли я в каждой напоролся. Может, чего и вам пригодится.
#devops #LLM #человек_оркестр
Прошлой весной я всерьёз залез в LLM. Читал про очередную модель и думал: да они же скоро всё смогут. Ещё годик, и кодить будет нейросеть, а я – элегантно ей дирижировать.
Прошло чуть больше года.
Есть такой киноприём: первый кадр – герой висит над пропастью или горит в машине, всё вокруг летит к чёрту, картинка замирает, и голос за кадром: "Вам, наверное, интересно, как я сюда попал". Вот это самое я чувствую каждое утро, вставая к компу. Да, теперь не дом – работа – дом, а кровать – комп – кровать, ибо пришлось помарафонить.
До этого я много лет работал в энтерпрайзе, где у каждой ручки сидел специально обученный человек. Хочешь релиз – заявка, согласование, окно. Медленно, бюрократично, зато крайний – никогда не ты.
Мне бы убрать к чёрту все эти преграды, дайте рычаги – сам сделаю быстро и как надо. И тут подвернулся ровно такой шанс. Правда, теперь всё чаще ловлю себя на мысли, что надо было в сантехники.
Мечта сбылась. Преград не осталось. Крайний теперь всегда один.
На текущем проекте я не абы кто, не разработчик, не девопс, а тот чувак с ЛЛМками. Задача на словах простая: перенести двухлетнее легаси. На деле – раскопки. Археологические слои, по которым читается смена поколений: вот код, который писали руками; вот место, где в проект зашли LLM; вот костыли и самокаты, наваленные лишь бы закрыть задачу к дедлайну. И теперь всё это моё. 🤪
Как говорится, "бойтесь своих желаний" (с). Человек-оркестр – мечта идиота: я хотел мир без бюрократии и без специально обученного человека на каждой ручке, и получил его целиком. Вместе со всеми ручками. Команду ещё предстоит набрать и обучить.
Так что это новая рубрика – записки сумасшедшего девопса. Что горело, что я потушил, что поджёг сам. Часто это один и тот же пожар.
Дальше буду показывать и рассказывать, из каких ролей этот оркестр собран на самом деле и на какие грабли я в каждой напоролся. Может, чего и вам пригодится.
#devops #LLM #человек_оркестр
🔥4❤2👍2😁2
⚡️ DevOps Digest #30 | 31.08.2026
🔥 Главное:
1. Вышел Kubernetes v1.37 "Garhwal" – 67 изменений, из них 16 в Stable. Ключевое для эксплуатации: Metrics API (
🔗 https://kubernetes.io/blog/2026/08/26/kubernetes-v1-37-release/
2. Критическая уязвимость в Redis (CVE-2026-81934): use-after-free при обработке TLS-данных, аутентифицированный атакующий потенциально получает удалённое выполнение кода. Патч уже вышел – если Redis смотрит наружу с TLS, обновляйтесь не откладывая.
🔗 https://redis.io/blog/security-advisory-cve-2026-81934/
3. Практика экономии на нодах Kubernetes: паттерн node overprovisioning через PriorityClass и placeholder-поды. KEDA схлопывает кластер ночью, а утром пустые capacity-поды мгновенно отдают место бизнес-нагрузке – никакого ожидания, пока Cluster Autoscaler поднимет новую ноду. Готовый демо-стенд в статье.
🔗 https://habr.com/ru/articles/1076538/
4. Cloudflare переупаковала DNS-кэш 1.1.1.1: пять изменений раскладки в памяти срезали размер записи более чем на 50% и освободили около 100 ТБ RAM по флоту. Бонусом +43% на вставку и −19% к задержке чтения – редкий случай, когда экономия памяти ещё и ускоряет.
🔗 https://blog.cloudflare.com/dns-cache-memory-optimization-1111/
5. GitLab показал next-gen SCM: Git проектировался под людей, а не под флот агентов. Клон ради одного файла = 5–10 ГБ трафика и 30+ секунд на старт; переписывают бэкенд под изоляцию сессий и concurrency. Разработчикам с автоматизацией под сотни агентов стоит следить.
🔗 https://about.gitlab.com/blog/gitlab-next-gen-scm/
🔍 Обновление сертификата – это деплой-процесс, а не задача в cron:
Успешная ACME-транзакция доказывает лишь, что сертификат выпущен, – но не то, что нужный сервис отдаёт его пользователям. Между выпуском и рабочим состоянием ломается всё: файл не скопировался на хост, контейнер не перемонтировал секрет, nginx/HAProxy не сделал reload. Правильная модель – это цепочка renew → deploy → reload → verify → recover, где каждый шаг проверяется, а не считается выполненным по факту зелёного джоба. Если руками надоело – посмотрите на self-hosted certimate: полный цикл выпуска, деплоя, продления и мониторинга ACME-сертификатов визуально.
🔗 https://github.com/certimate-go/certimate
🛠 Команда дня:
Показывает текущее число отслеживаемых соединений и лимит conntrack – если первое подбирается ко второму, ядро начнёт дропать пакеты (nf_conntrack: table full), и это одна из любимых причин "загадочных" таймаутов на нодах Kubernetes.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
🔥 Главное:
1. Вышел Kubernetes v1.37 "Garhwal" – 67 изменений, из них 16 в Stable. Ключевое для эксплуатации: Metrics API (
metrics.k8s.io, за kubectl top и HPA) доведён до v1, а Pod Certificates и Cluster Trust Bundles стали GA – выдача X.509 для TLS/mTLS встроена прямо в ядро, без внешнего CA для рабочих нагрузок.🔗 https://kubernetes.io/blog/2026/08/26/kubernetes-v1-37-release/
2. Критическая уязвимость в Redis (CVE-2026-81934): use-after-free при обработке TLS-данных, аутентифицированный атакующий потенциально получает удалённое выполнение кода. Патч уже вышел – если Redis смотрит наружу с TLS, обновляйтесь не откладывая.
🔗 https://redis.io/blog/security-advisory-cve-2026-81934/
3. Практика экономии на нодах Kubernetes: паттерн node overprovisioning через PriorityClass и placeholder-поды. KEDA схлопывает кластер ночью, а утром пустые capacity-поды мгновенно отдают место бизнес-нагрузке – никакого ожидания, пока Cluster Autoscaler поднимет новую ноду. Готовый демо-стенд в статье.
🔗 https://habr.com/ru/articles/1076538/
4. Cloudflare переупаковала DNS-кэш 1.1.1.1: пять изменений раскладки в памяти срезали размер записи более чем на 50% и освободили около 100 ТБ RAM по флоту. Бонусом +43% на вставку и −19% к задержке чтения – редкий случай, когда экономия памяти ещё и ускоряет.
🔗 https://blog.cloudflare.com/dns-cache-memory-optimization-1111/
5. GitLab показал next-gen SCM: Git проектировался под людей, а не под флот агентов. Клон ради одного файла = 5–10 ГБ трафика и 30+ секунд на старт; переписывают бэкенд под изоляцию сессий и concurrency. Разработчикам с автоматизацией под сотни агентов стоит следить.
🔗 https://about.gitlab.com/blog/gitlab-next-gen-scm/
🔍 Обновление сертификата – это деплой-процесс, а не задача в cron:
Успешная ACME-транзакция доказывает лишь, что сертификат выпущен, – но не то, что нужный сервис отдаёт его пользователям. Между выпуском и рабочим состоянием ломается всё: файл не скопировался на хост, контейнер не перемонтировал секрет, nginx/HAProxy не сделал reload. Правильная модель – это цепочка renew → deploy → reload → verify → recover, где каждый шаг проверяется, а не считается выполненным по факту зелёного джоба. Если руками надоело – посмотрите на self-hosted certimate: полный цикл выпуска, деплоя, продления и мониторинга ACME-сертификатов визуально.
🔗 https://github.com/certimate-go/certimate
🛠 Команда дня:
cat /proc/sys/net/netfilter/nf_conntrack_count /proc/sys/net/netfilter/nf_conntrack_max
Показывает текущее число отслеживаемых соединений и лимит conntrack – если первое подбирается ко второму, ядро начнёт дропать пакеты (nf_conntrack: table full), и это одна из любимых причин "загадочных" таймаутов на нодах Kubernetes.
#дайджест #kubernetes #security
💬 Переслал коллегам? Пусть подпишутся: @DevITWay
Kubernetes
Kubernetes v1.37: Garhwal
Editors: Arsh Sharma, Christopher Tineo, Kirti Goyal, Sophia Ugochukwu, Swathi Rao, Troy Connor
Similar to previous releases, the release of Kubernetes v1.37 introduces new Stable, Beta, and Alpha features. The consistent delivery of high-quality releases…
Similar to previous releases, the release of Kubernetes v1.37 introduces new Stable, Beta, and Alpha features. The consistent delivery of high-quality releases…
👍2❤1🔥1