DevOps FM
4.93K subscribers
637 photos
12 videos
10 files
752 links
♾️ Канал для тех, кто живёт DevOps и системным администрированием.

Новости, статьи, best practices, инструменты и чилл-аут контент. Cloud Native, Docker, Kubernetes, CI/CD, БД, мониторинг etc.

По вопросам — к Ладе @b_vls
Download Telegram
Авто-ресурсы в Kubernetes, Pulumi NEO и Google MCP: инфраструктура на автопилоте

🔔Всем срединедельный DevOps! Обсудим свежие апдейты авто-выделения ресурсов в K8s и инструментов GitOps. Полезно тем, кто хочет меньше крутить кластеры вручную.

🟡 Kubernetes 1.34 и динамическое выделение ресурсов
В версии Kubernetes 1.34 кластер сам подбирает ресурсы GPU, CPU и I/O под конкретные задачи — без необходимости заранее прописывать лимиты в PodSpec. Теперь через API можно запрашивать устройства с нужными параметрами (тип GPU, версия CUDA, объём памяти) — и Kubernetes подберёт подходящее оборудование.
Это снижает долю простаивающих ресурсов, особенно при ML- и AI-нагрузках, где требования к железу меняются на лету.

⚫️ Pulumi NEO упрощает GitOps
Pulumi NEO читает IaC-код, сам формирует план изменений инфраструктуры, проверяет его через Policy as Code и применяет. Он понимает зависимости, окружения и может откатывать изменения без ручного kubectl apply. Полезен, когда GitOps-потоки разрастаются, а ручное управление окружениями тормозит релизы.

🟡 Google MCP для баз данных
Google представил MCP Toolbox — серверный набор инструментов, который реализует MCP для безопасной автоматизации доступа к базам данных. SQL-операции задаются декларативно в tools.yaml , а MCP управляет подключениями, пулами и правами доступа. Поддерживает Cloud SQL, AlloyDB, Spanner, PostgreSQL и MySQL. Система следит за нагрузкой, масштабирует кластеры и перестраивает схемы без ручного вмешательства DBA. Ещё один шаг к инфраструктуре, где всё крутится само.

#DevOps #Kubernetes #SRE
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥52
Kubernetes под микроскопом: как SPO видит действия пользователей

👩‍💻Всем DevOps! Сегодня поговорим о том, как отслеживать, что происходит внутри контейнеров в Kubernetes. В стандартной конфигурации Kubernetes аудит фиксирует только действия на уровне API: кто применил kubectl exec или kubectl debug. Что именно происходило внутри pod’а после входа в контейнер увидеть нельзя. Эту проблему решает Security Profiles Operator (SPO) — отслеживайте действия пользователей и процессов внутри pod’ов и на узлах.

🔄Принцип работы
SPO использует системные источники данных — например, /var/log/audit/audit.log и /proc/<pid>. Каждое событие записывается в JSON-формате, а JSON Enricher связывает его с соответствующим API-запросом через request UID. Это позволяет восстановить полную цепочку: API-запрос → контейнер → процесс → результат

🔓Как включить Security Profiles Operator?
- Установите cert-manager
Он нужен для автоматического управления сертификатами, используемыми SPO.
- Разверните Security Profiles Operator
Используйте официальный манифест из подборки репозиториев.
- Настройте хранение логов
SPO может сохранять логи: локально на узле (по умолчанию в /var/log/security-profiles-operator/ ), в общем томе (PVC), или выводить в stdout — удобно для интеграции с системами сбора логов вроде Loki или Elasticsearch;
- Включите JSON Enricher
Он обогащает события дополнительной информацией о процессе.
- Настройте seccomp-профиль для отслеживания системных вызовов
Он фиксирует вызовы вроде execve и clone, а объект ProfileBinding применяет профиль ко всем pod’ам в выбранном пространстве имён ( namespace ).

📎Репозитории с инструкциями по установке:
audit-logging-guide — описывает, как включить аудит действий внутри pod’ов и узлов через Security Profiles Operator.
installation-usage — показывает, как установить Security Profiles Operator и применить seccomp-профили к pod’ам.

С SPO вы поймете, что произошло, почему и кем было сделано — без лишней нагрузки и сложных интеграций.

#devops #kubernetes #spo
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍11🔥54
Пятничная подборка подкастов: от AI в инфраструктуре до архитектурных решений

🗣В эту пятницу будет, что послушать DevOps-инженеру. Делимся свежей подборкой подкастов.

Готова ли инфраструктура к AI? Разбираем на практике — DevOps Paradox #319
Ведущие Дарин Поуп и Виктор Фарчик подчеркивают, разницу между ожиданиями разработчиков AI-платформ и реальностью на примере кейсов. Главным барьером в работе они называют отсутствие опыта взаимодействия с агентами и векторными базами данных.

Workload identity: меньше ручного контроля, больше прозрачности — Day Two DevOps #284
Ведущий Нед Беллаванс и гость Кристиан Поста обсуждают, как сервисы и агенты взаимодействуют между собой без участия человека. Разбирают, как работают workload identities — цифровые удостоверения, по которым системы подтверждают подлинность и права доступа друг к другу.

Лидерство и инженерные решения — Azure & DevOps Podcast
Джимас Стейли беседует с Джонатаном Джей Тауэром, Microsoft MVP и основателем Trailhead Technology Partners о том, как техническим лидерам принимать осознанные решения, исходя из целей продукта. Говорят о кейсе, в котором отказ от микросервисов в пользу простой архитектуры ускорил релизы и снизил затраты на поддержку.

👍Пусть сервисы не падают, а кофе не заканчивается! Хороших выходных и приятного прослушивания.

#devops #подкаст #AI #лидерство
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥53
Макросы в коде: что стоит учитывать при ревью и CI/CD

👩‍💻Линус Торвальдс прошёлся по коду, где был предложен макрос make_u32_from_two_u16()— инструмент для объединения двух 16-битных чисел в одно 32-битное. На первый взгляд, решение удобно, но Линус назвал реализацию "мусорной": такая абстракция усложняет понимание и сопровождение кода.

Как улучшить код и ревью
Используйте явную запись
Прямое выражение показывает порядок и логику:

((uint32_t)a << 16) | (uint32_t)b

Добавляйте абстракции только при необходимости
Макросы и функции избавляют от дублирования или повышают безопасность, а не просто «упаковывают» очевидные выражения.

Следите за переносимостью
Добавляйте приведения типов и маскирование, чтобы избежать ошибок на разных архитектурах:
#define MAKE_U32_FROM_TWO_U16(high, low) \
(((uint32_t)(high) << 16) | ((uint32_t)(low) & 0xFFFF))


Сохраняйте ясность и локальность изменений
Если нужна общая утилита — поместите её в отдельный модуль и документируйте назначение. Так, вы снижаете вероятность конфликтов и улучшаете читаемость кода.

Используйте ИИ-инструменты осознанно
Генераторы кода (ChatGPT, Gemini и пр.) могут предложить готовое решение, но итоговый вариант важно проверять: читаемость, переносимость, соответствие стилю проекта — всё это остаётся задачей разработчика.

Даже небольшие абстракции требуют осознанного подхода.
Если операция проста, прозрачна и понятна, лучше записать её явно. Так, код становится надёжнее, ревью — быстрее, а CI/CD-процессы — стабильнее.

#DevOps #Linux #CICD
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍4🔥32
Helm исполнилось 10 лет!

🔅Это повод вспомнить, как всё начиналось.

Идея родилась во время хакатона: за полтора дня Мэтт Бутчер создал CLI-утилиту для взаимодействия с Kubernetes, Джэк Норман разработал серверный прототип менеджера пакетов k8space, а Римантас Моцевичюс подготовил первый чарт — набор шаблонов YAML.

19 октября 2015 года был сделан первый коммит. Так появился внутренний проект Helm Classic, который объединили с Google Deployment Manager. После этого появился Helm, знакомый нам сегодня.

За десять лет инструмент прошёл путь от прототипа до полноценной экосистемы с поддержкой:
• чартов (пакетов с шаблонами YAML)
• системы репозиториев и версионирования
• шаблонизации и параметров конфигурации
• управления релизами и откатами
• интеграции в CI/CD

В 2018 году проект вошёл в состав CNCF и продолжил развиваться как одно из ключевых решений для cloud-native инфраструктур.

О названии.
🖼️Выбор был сделан не случайно: helm – «штурвал». Kubernetes казался штормовым морем, а инструмент – помощником в управлении.

Для тех, кто любит погружаться в историю – советуем прочесть очерк сооснователя, путь от альфы до v4 Beta Glory.

Хороших выходных и спокойного дежурства! ⚓️

#devops #kubernetes #helm
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍95
Docker vs. Kubernetes — от изолированных контейнеров к единой среде

🔄Сегодня разбираем, почему одного контейнера недостаточно для обмена данными между процессами внутри Pod.

Контейнер запускает приложение как отдельный процесс: отдельный сетевой стек (IP, интерфейсы и маршруты), своё PID-пространство и управление ресурсами через cgroups (CPU и память). Эти механизмы изолируют и сохраняют предсказуемость работы — один процесс, один контейнер.

На практике несколько процессов работают параллельно, обмениваются данными и используют общие ресурсы. Например, основной контейнер выполняет приложение, а вспомогательный (sidecar) собирает логи, проксирует трафик или ведёт метрики.

📱В статье от iximiuz Labs дан подробный разбор того, как Kubernetes реализует Pods на уровне Linux и можно ли воспроизвести функциональность Pod в чистом Docker.
Спойлер: можно, если вручную подключить сетевые и IPC namespace, но не всё получится — UTS, например, остаётся изолированным.

Полный разбор здесь ⬅️, а ниже — практика от iximiuz Labs
Run a Sidecar Container in the Namespace of Another Container— проверь, как контейнеры делят namespace, как в Pod.
Limit CPU and Memory Usage of a Docker Compose Application — узнай, как задать лимиты CPU и памяти через cgroups.

#devops #kubernetes #containers #pods
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥4
От Talos до Vault: обзор обновлений инфраструктуры и секретов

Срединедельный DevOps! Публикуем дайджест релизов и новостей.

⚫️ Talos OS и Kubernetes: операционная выгода и риски
SNCF разворачивает Kubernetes с Talos OS в OpenStack, чтобы повысить безопасность узлов, стандартизировать образы и упростить автоматизированное развертывание. Переход потребовал создания новых облачных команд и внедрения практик GitOps с неизменяемой инфраструктурой. Подробнее в статье.

🟡 Разбираем Vault 1.21 — SPIFFE, VSO и granular recovery в действии
Vault 1.21 добавил SPIFFE-аутентификацию для рабочих нагрузок без участия инженеров, детализированное восстановление секретов (granular secret recovery), настройку TOTP и защищённую выдачу секретов через VSO — доставку данных в поды без сохранения в etcd. Среди улучшений — движение к сертификации FIPS 140-3 уровня 1. Разбираем, как Vault 1.21 меняет подход к управлению идентичностями и секретами.

⚫️ Корпоративная почта — быстрый техобзор и что проверить
Обновлённое руководство: читаем зачем бизнесу доменная почта, как выбрать между облачным сервисом, хостингом и собственным сервером, а также какие настройки помогают избежать попадания писем в спам. Для DevOps-специалистов полезно с точки зрения конфигурации DNS, контроля безопасности и стабильности почтовой инфраструктуры. Что проверить – в статье.

🔓Безопасных запусков и прозрачного управления секретами

#DevOps #Vault #TLS #EmailSecurity
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍2
Какие призраки прячутся в API?

В прошлом мы рассказывали о зомби-ресурсах, сегодня поговорим о приведениях.

👻Призрачные API — это эндпоинты, о которых команда уже не помнит: устаревшие версии API, тестовые и предрелизные окружения, временные debug -эндпоинты, внутренние маршруты, неиспользуемые SDK-колбэки или микросервисы без владельца. Такие точки входа остаются живыми, но не попадают в мониторинг и тесты — поэтому злоумышленники ищут их в первую очередь.

Как обнаружить:
• анализ кода и скрытых маршрутов;
• перебор и сравнение версий API;
• следы в логах, документации и старых тестах.

Как изгнать:
• Инвентаризация: централизованный каталог API (Swagger/OpenAPI, Postman).
• Политика «Убей, не прячь»: полностью удаляйте ненужные маршруты, не переименовывайте.
• Владение: у каждого эндпойнта — владелец и SLA; без владельца — автоматическое выключение.

👀Подробности читайте в статье Medium

Делимся подборкой инструментов-охотников:
Pluto — CLI-утилита для обнаружения устаревших/удалённых версий API в Kubernetes-манифестах или кластере
Kubent — аналогично Pluto, CLI-инструмент для K8s. Проверяет кластер и исходники на использование Ghost=deprecated API

👻Пусть ваши релизы проходят без мёртвого кода и призрачных эндпойнтов

#DevOps #Security #API
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍86🔥6
mypy в Python: типизация и контроль скриптов

👩‍💻Сегодня обсудим, как встроить ad-hoc скрипты из ~/bin в предсказуемую и проверяемую автоматизацию. В статье Simple Thread Джо Понд дал руководство по снижению риска ошибок.

В чем кроется проблема?
• Скрипт удобен, но непредсказуем: ошибки типов проявляются только во время выполнения.
• Без явных контрактов функций рефакторинг становится рискованным, растёт технический долг.
• Чем больше людей правят код, тем выше риск регресса и скрытых багов в проде.

Какие решения?
Пошаговое улучшение надежности кода: добавьте статическую типизацию через mypy, управляйте зависимостями через Poetry и запускайте проверки в CI. Так, вы постепенно укрепляете код и минимизируете риски, когда проект расширяется и подключаются новые разработчики.

Как внедрить?
Проверка типов на старте — один файл за раз
• Добавьте в dev-dependencies:
poetry add --group dev mypy

• Запустите проверку для конкретного файла:
poetry run mypy main.py

Так, вы находите баги до запуска и спокойно приступаете к следующему шагу.

Добавьте mypy в CI/CD
• Создайте окружение через Poetry и проверьте проект mypy
poetry run mypy .

Типы проверяются в пайплайне: ошибки останавливают merge и защищают main branch от багов.

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

Для желающих узнать историю развития Python рекомендуем прочесть статью здесь 👈

Делимся подборкой репозиториев:
👩‍💻python/mypy — анализирует типы для Python, реализует PEP 484. Нужен как эталонный инструмент для проверки контрактов и постепенной типизации кода.
👩‍💻 tsuyoshicho/action-mypy — готовая GitHub Action для запуска mypy в CI; поддерживает вывод в формате JSON, удобно для интеграции с reviewdog и системами агрегации ошибок

#devops #python #mypy
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥10👍54
Инфраструктура для ИИ-сервисов: Linkerd получает MCP, Европа — свою LLM, GitHub — центр управления агентами

Всем DevOps! По традиции, делимся новостями. В прошлый раз у нас сработал алерт: часть источников устарела. Починили, обновили, задеплоили новую срединедельную подборку — свежие релизы и актуальные данные.

Linkerd — поддержка MCP
Buoyant (BTI) объявила о планах добавить в Linkerd поддержку протокола MCP, чтобы сервис-меш управлял агентским ИИ трафиком: обеспечивал наблюдаемость (метрики использования ресурсов, инструментов и запросов), детальную политику авторизации для всех вызовов MCP, и защиту через идентификаторов рабочей нагрузки. По словам компании, это снизит потребность в отдельных прокси и инструментах мониторинга, а больше деталей об анонсе можете найти здесь.

EuroLLM: шаг ЕС к независимой цифровой среде
В Европе появился EuroLLM — открытая языковая модель многоязычной (multilingual) LLM, рассчитанная на 24 официальные языка ЕС. EuroLLM подходит для локальных экспериментов, кастомизации и повышенной прозрачности, необходимых в рамках политики повышения цифровой автономности. Подробнее об особенностях здесь.

Agent HQ от GitHub: единый инструмент для работы с ИИ-агентами
GitHub запустил Agent HQ – инструмент для работы с ИИ-агентами. Идея проста: вместо работы с каждым агентом отдельно, теперь можно назначать задачи, отслеживать их выполнение и управлять поведением ИИ из одного интерфейса. В ближайшие месяцы на GitHub станут доступны агенты от OpenAI, Google, Anthropic, Cognition и других, всё это в рамках подписки Copilot Pro+. Про формат подписки здесь.

#Linkerd #EuroLLM #AgentHQ #DevOps
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍5🔥5
Как работать с Docker Networking: концепции и применение

👩‍💻Автор статьи описывает классический случай из практики с Docker: разработчик запускает контейнер, подключается к нему через localhost и…возникает проблема. Веб-сервис развёрнут в одном контейнере, БД — в отдельном. Как настроить сетевое взаимодействие между ними?
На деле Docker уже делает всю работу – ниже расскажем об основном, подробнее найдете в статье.

👀Почему проблема возникла?
При установке Docker создает дефолтный сетевой мост (network-bridge), где он выстраивает коммуникацию по временным IP таким образом, что многоконтейнерные приложения становятся неудобными: разработчик не находит сервисы по имени, и каждый перезапуск меняет адреса контейнеров.

Как решать?
Для устранения проблемы автор предлагает использовать user-defined bridge сети. При создании такой сети Docker автоматически включает внутренний DNS, и контейнеры получают постоянные hostname. Всё, что потребуется от разработчика – запустить контейнеры и подключить их к одной сети, чтобы приложение могло обращаться к базе по имени к БД, независимо от IP и рестарта контейнера.

Контейнеры с user-defined bridge

services:
app2:
image: nginx
networks:
- mybridge

app3:
image: alpine
command: ["sh", "-c", "while true; do sleep 3600; done"]
networks:
- mybridge

networks:
mybridge:
driver: bridge


Контейнер со статическим IP и объявленная сеть
Для выполнения данного решения разработчик создает пользовательскую bridge-сеть с объявленным пулом адресов (subnet) и назначением контейнеру фиксированного IPv4 через ipv4_address. Так, мы обеспечиваем предсказуемую адресацию, полезную для интеграции с системой, которая зависит от IP. При этом сеть сохраняет встроенный DNS Docker, позволяющий обращаться к контейнерам по имени.


services:
app:
image: nginx
networks:
custom_net:
ipv4_address: 172.20.0.10

networks:
custom_net:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/24


🚀Вывод: для многоконтейнерных приложений не стоит использовать дефолтный bridge. Создавайте собственные сети или пользуйтесь Docker Compose, чтобы надёжно связать сервисы по их именам, а не по временным IP-адресам.

#devops #docker #dockercompose #networking #containers
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍9🔥6
Логирование и мониторинг — топ-3 инструмента для DevOps в 2025

🗣Несложно представить ситуацию: трафик на пике, API выдает 500-е ошибки. Вы заходите на сервер по SSH, суматошно переходите из директории в директорию, пытаетесь разобраться в веренице логов микросервисов и в конце находите виновника. Спустя время сбой устранили, но вопрос остался – «неужели нельзя проще?». Отвечаем – можно, с инструментами observability.

🚀Топ-3 инструмента для логирования и мониторинга:

1.Grafana Loki
Плюсы:
• Минимальные расходы: Loki не индексирует содержимое логов, используя только метки (labels) — как в Prometheus. Это снижает потребление CPU, RAM и дискового пространства.
• Тесная интеграция с Prometheus и Grafana: Если вы уже используете Grafana или Prometheus, например в рамках KubePrometheusStack, то вам может быть полезна возможность просматривать логи там же, где и метрики.
• Простота развёртывания и масштабирования: monolithic mode идеально подходит для старта, так как объединяет в рамках одно бинарного файла все компоненты Loki. Но как только вам его не хватает, советуем перейти на микросервисный режим, разделив Distributor, Ingester, Querier и Compactor на отдельные сервисы
• Гибкий язык запросов: LogQL похож на PromQL, что позволяет проводить агрегаций и подсчёт ошибок за период времени, а затем выводить панели с количеством ошибок, рейтами и распределениями в Grafana.
💬Что учесть
Однако, Loki разработан для фильтрации логов на основе меток и регулярных выражений, а не для глубокого полнотекстового поиска и не позволяет справляться со сложным анализом логов.

2.
Elastic Stack
Плюсы:
• Настройка на всех уровнях: от сбора данных с помощью Logstash или Beats до запросов и дашбордов в Kibana — почти все можно настроить
• Мощный поиск и аналитика: Elasticsearch обеспечивает быстрый полнотекстовый поиск и агрегацию в больших масштабах
• Работа в реальном времени: данные индексируются и становятся доступны для поиска почти мгновенно
Гибкость индексации и управления данными: в Elasticsearch есть возможность настраивать ILM (Index Lifecycle Management) - автоматически перемещать "тёплые" и "холодные" данные между нодами, удалять старые индексы по политике.
💬Что учесть:
Операционные затраты могут быть высокими, а расходы на облачные услуги быстро растут при производственном масштабе.

3. OpenSearch
Плюсы:
• Полный open-source: OpenSearch является решением с открытым кодом без лицензионных рисков.
• Гибкость в сборе и анализе логов: поддерживает SQL и PPL, а также обладает встроенным observability-стеком
• Alerting-plugin — в отличие от ElasticSearch, OpenSearch из коробки позволяет строить гибкие триггеры и уведомления.
• Активное сообщество и поддержка AWS: он поддерживается AWS, Capital One, Red Hat, SAP и другими.

👩‍💻 Подборки репозиториев:
https://github.com/grafana/grafana – интеграция с Grafana с дашбордами и алертингом;
https://github.com/grafana/loki – репозиторий для агрегации логов
https://github.com/elastic – у Elastic на GitHub свыше 800 репозиториев, включая ядро Elasticsearch и множество интеграций и плагинов.

#DevOps #Observability #Grafana #Elastic
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍10🔥63
Лучшие из худших сообщений коммитов

Всем DevOps! Хорошие новости – сегодня пятница, значит скоро нас ждет перерыв от дейликов. Плохие – всё еще нужно писать сообщения коммитов после деплоя и релизов. Представляем зал славы лучших из худших сообщений коммитов, где собраны нестандартные варианты из рабочих репозиториев. Расширенный сборник найдёте здесь.

👀Вот сейчас точно исправил
"fix"
"fix-final"
"ok final fix"
"fix final final"
"fixed previous fix"

Именно так выглядели коммиты DevOps-инженера автора статьи каждый раз, когда нужно было «быстренько что-нибудь установить».

👀Всё, что надо было, сделал
"did the needful"

Классическое сообщение тиммейтов при поступлении срочной задачи, которую закрыть надо было ещё вчера.

👀Хроники борьбы с билдом
"attempt to fix the build"
"ok, fix the build"

Попыток было в разы больше.

👀Пожалуйста, работай…
"please work"

Признайтесь, были и такие моменты в работе.

👀Эпоха до ESLint
"added a coma, now works fine"

Кто бы что ни говорил, а проблема «казнить нельзя помиловать» актуальна.

Какие находки из коммитов помните вы?

#git #commits #commitmessages #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
115👍10🔥6
Good practices: конфигурации в Kubernetes

Конфигурации – основа рабочей нагрузки Kubernetes. Опытные инженеры знают, что достаточно пропущенной кавычки, неактуальной API-версии или смещённого отступа в YAML для возникновения проблемы при деплое. Представляем подборку good practices с советами по стабилизации кластера — для новичков и опытных пользователей. Подробнее читайте здесь.👀

Общие practices:
Используйте актуальную версию API
Kubernetes быстро развивается и обновляется. Менее актуальные API не работают корректно и приводят к сбоям при деплое. Проверяйте версию API, используя следующую команду:
kubectl api-resources 

Храните конфиги под версионным контролем
Не применяйте файлы манифеста с десктопа, храните их в системе контроля версий, например, в Git. Если что-то сломается – вы быстро откатитесь к прошлому коммиту.
Пишите конфиги в YAML, не в JSON
Технически работают оба формата для обмена и хранения данных, но YAML более удобен, по словам автора. В YAML используйте только true/false, т.к. yes/no/on/off могут парситься по-разному. Для надёжности берите в кавычки всё, что похоже на булево значение (например, "yes").
Группируйте связанные объекты
Если ресурсы – часть одного сервиса, храните их в одном файле YAML-манифеста. Так легче отслеживать, ревьювить и разворачивать изменения.
Применяйте эту команду, чтобы задеплоить всё в папке:
kubectl apply -f configs/ 


🚀Стандартизированные конфигурации упрощают управление кластером и берегут нервы администратора. Следуйте базовым принципам: контроль версий, единая система меток, отказ от использования отдельных Pod-ов без контроллеров. Так, вы значительно сократите время на диагностику и устранение ошибок.

#kubernetes #k8s #clustermanagment #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥3
Как развернуть Prometheus через systemd и запустить базовый мониторинг
👨‍💻Возвращаемся с инструментами по observability и SRE. Prometheus – это система мониторинга с открытым исходным кодом, которую можно использовать для сбора и отслеживания различных метрик из экспортеров в Time Series Database (TSDB). Сегодня разберем, как настроить и запустить Prometheus и управлять через systemd на сервере Ubuntu или Debian. Для инженеров single-node установка позволяет использовать Prometheus как базовую систему мониторинга без лишних инфраструктурных настроек.

Шаг 1. Подготовка пользователя и загрузка Prometheus
Создаем отдельного пользователя для Prometheus:
sudo useradd -M -U prometheus

Выбираем версию для вашей системы и скачиваем бинарь:
wget https://github.com/prometheus/prometheus/releases/download/v2.40.0-rc.0/prometheus-2.40.0-rc.0.linux-amd64.tar.gz
tar -xzvf prometheus-2.40.0-rc.0.linux-amd64.tar.gz
sudo mv prometheus-2.40.0-rc.0.linux-amd64 /opt/prometheus

Меняем права на папку, чтобы Prometheus мог работать безопасно:
sudo chown prometheus:prometheus -R /opt/prometheus


Шаг 2. Настройка systemd-сервиса
Создаем файл /etc/systemd/system/prometheus.service с таким содержимым:
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Restart=on-failure
ExecStart=/opt/prometheus/prometheus \
--config.file=/opt/prometheus/prometheus.yml \
--storage.tsdb.path=/opt/prometheus/data \
--storage.tsdb.retention.time=30d

[Install]
WantedBy=multi-user.target


Шаг 3. Запуск и управление Prometheus
Активируем сервис и запускаем его:
sudo systemctl daemon-reload

sudo systemctl start prometheus.service

sudo systemctl enable prometheus.service


Проверяем статус и логи сервиса:
sudo systemctl status prometheus.service

sudo journalctl -u prometheus.service -f


Теперь Prometheus работает как системный сервис, собирает метрики и готов к подключению экспортеров.

Шаг 4. Дальнейшие шаги
⁃ Настройка AlertManager для уведомлений.
⁃ Подключение экспортеров для серверов, контейнеров и приложений.
⁃ Использование Grafana для визуализации метрик.

🗂Подробнее о настройке алертов: Prometheus Alerting

Вывод: такой минимальный setup позволяет быстро поднять Prometheus для тестов и PoC, понять, как работает TSDB, и интегрировать систему мониторинга в DevOps-процессы.

#sre #observability #prometheus #monitoring #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
211👍6🔥5
Свежие новостные релизы, которые ещё не успели настояться

Срединедельный DevOps! 🚀Сегодня поговорим о сбое Cloudflare, рассмотрим превью AWS DevOps Agent и релизы AWS re:Invent 2025 в области безопасности.

Не опять, а снова: сбой в Cloudflare, ошибка 500
Cloudflare частично оказалась недоступной на 25 минут в прошлую пятницу. Во время инцидента примерно треть запросов вела на пустую страницы с кодом ошибки 500. В этот раз, причиной стала проблема в коде на языке Lua, которая применяется в системе фильтрации трафика WAF для блокирования вредоносных запросов. В логах отображалось:

[lua] Failed to run module rulesets callback late_routing: /usr/local/nginx-fl/lua/modules/init.lua:314: attempt to index field 'execute' (a nil value)


Изменение было отменено в 09:12 UTC, и после отката нормальная обработка трафика восстановилась.

AWS DevOps Agent (preview): выявление и локализация причин инцидентов.
AWS представила превью AWS DevOps Agent, ИИ-агента для расследования и предотвращения инцидентов.
Интеграция с Datadog MCP Server обеспечивает доступ к логам, метрикам и трассировкам, что позволяет агенту автоматически сопоставлять данные из AWS и Datadog. В демонстрации агент за минуты выявил суть проблемы всплеска 5XX ошибок API Gateway. Ранние пользователи отмечают сокращение MTTR с часов до минут. Подробнее здесь.

re:Invent 2025: релизы инструментов и обновления
На re:Invent 2025 AWS представила ряд обновлений в области безопасности, управления идентификацией, тарификации, а также состоялись релизы тулзов: IAM Policy Autopilot, инструмент для генерации IAM-политик на основе детерминированного анализа приложений, Org-level S3 Block Public Access, расширение блокировки публичного доступа на уровне организации, TLS Proxy, новый сервис прокси для TLS-инспекции. Прочитать об обновлениях можно здесь.

#devops #cloudflare #aws #awsdevopsagent
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥42🤯1
Не делайте так: мой пятничный деплой

👀Снова пятница, пора сворачиваться и надеяться, что ни один pipeline не применит изменения, способные снести пол-инфры. Расскажем поучительную историю о DevOps-инженере, который решил выполнить развертывание в пятницу, после рефакторинга Terraform-модулей. Не судите автора статьи слишком строго, он обычный человек, который на кофеине нажал «Deploy».

💬Что произошло в пятницу?

15:47 – запуск развертывания после рефактора Terraform-модулей.
Изменение – автор переименовал одну переменную, которая используется в сорока семи местах, в трёх окружениях. Но проверка линтером пройдена. Что может пойти не так?
16:02 – запуск GitHub Actions, а дальше...пайплайн упал, в Terraform появился неожиданный destroy -план. Уведомления в Slack накрыли волной.
16:07 – сообщения о падении staging и подозрительные изменения в проде, возгласы: "КТО ДЕПЛОИЛ В ПЯТНИЦУ?!". Автор попытался отключить роутер, но было поздно – имя уже в коммите.
16:11 – созвон в зуме, SRE подключился со вздохом, бэкэнд-разработчик присоединился с пивом, CTO – с пляжа на Бали.
16:20-16:45 – откат коммита, повторный прогон пайплайна, окружение восстановлено.

После – постмортем без прямых обвинений с коллективной критикой в виде смайликов и пассивно-агрессивных мемов.

Проблема заключалась в том, что при рефакторинге конфигурации автор изменил имя без полного анализа зависимостей и проверки влияния на все окружения. Изменения затронули многочисленные модули и окружения, но не были синхронизированы между собой. Сопутствующими факторами стали недостаточная верификация terraform plan во всех средах и отсутствие автоматизированных проверок.

Уроки, которые автор не усвоил (а должен был):

•Не деплоить в пятницу
•Всегда перепроверять terraform plan для каждого окружения перед применением.
•Подготовить воспроизводимый плана отката, желательно, без слёз.
•Внедрить автоматическую валидацию переменных и контрактов модулей (schema/validation) и тесты на согласованность именований.

Пятничный деплой: храбрость или безрассудство? Делитесь вашими историями ниже.

#deploy #devops #terraform #postmortem
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍9🤯6🔥31
От values-файлов к управлению вариантами конфигураций в ConfigHub: как перестать рендерить вслепую

В этот понедельник поговорим о переходе от классического Helm-подхода с values.yaml к модели Configuration as Data, которая реализует себя в ConfigHub. Если вы всё ещё храните values.yaml для разных сред, при аварийных запросах запускаете helm template и парсите YAML – рекомендуем сменить подход. В ConfigHub реализуется модель «конфигурация как данные»: вместо того чтобы каждый раз генерировать YAML из шаблонов по запросу, вы создаёте готовый манифест один раз.

Как внедрить подход?
Развертывание базового окружения (Infra Space)

1. Добавляем репозиторий Helm:

helm repo update


2. Разворачиваем базовое окружение для инфраструктуры:
cub space create infra


3. Устанавливаем Helm-чарт через ConfigHub:


cub helm install --space infra \
--use-placeholder=false \
--namespace monitoring \
prometheus prometheus-community/kube-prometheus-stack \
--version 79.6.1


• ConfigHub использует движок Helm для однократного рендеринга чарта.
• Результат сохраняется как материализованный, версионируемый и индексируемый артефакт (Config Unit).

Создание пространств для окружений (Spaces)
1. Создаем пространства для каждого целевого окружения:
cub space create dev
cub space create prod

2. В качестве альтернативы – создаем пространства через UI ConfigHub, используем кнопку [Add] на странице списка Spaces.
3. Каждое пространство будет содержать копии базовых конфигураций для конкретного окружения.

Клонирование и создание Вариантов (Variants)
Variant – это копия Config Unit, которая создается через операцию Clone.

1. Создаем Dev Variant из базового окружения:
2. Выбираем чарты в infra space.
3. Выбираем dev space как цель.
4. Нажимаем [Clone Units].
5. Создаем Prod Variant из Dev Variant аналогично.

⬆️Так, мы получаем цепочку конфигураций:
[infra's Helm charts] → [dev's Helm charts] → [prod's Helm charts]

Аналогичную концепцию можем использовать в Kustomize. Мы начинаем с базовых ресурсов, а затем добавляем к ним «Dev Overlays».

Мгновенный доступ к конфигурациям
1. После клонирования не требуется повторный рендеринг.
2. Получаем точные манифесты для окружений:

Dev

cub unit get --space dev prometheus --data-only


Prod

cub unit get --space prod prometheus --data-only


Получаем готовый YAML, а не шаблон или переменную.

Решение сценариев «Fire Drill»
1. Так как конфигурации сохранены как данные, можно выполнять поиск и анализ без повторного рендеринга:

Поиск уязвимых образов

cub unit list --space "*" \
--resource-type monitoring.coreos.com/v1/Prometheus \
--where-data "spec.image ~ '.*registry.compromised.com.*'"


Поиск образов

cub unit list --space "*" \
--resource-type monitoring.coreos.com/v1/Prometheus \
--where-data "spec.image ~ '.*quay.io.*'"


👀Подводные камни и что делать:
• Нативные зависимости и postinstall хуки. При рендере учитывайте, что некоторые чарты рассчитывают поведение во время выполнения. Обязательный этап – прогон тестов в staging.
• Избежание версионных конфликтов Helm чартов, за счет фиксирования версий чарта; используйте lock-файлы чарта или helmfile для управления групповыми релизами.

Делимся полезными ресурсами:
⚙️Интеграция ConfigHub-workflow с CI/CD (build → render → store → apply), примеры для GitHub Actions/GitLab CI и рекомендации по кэшированию здесь.
How-to по Variants и GitOps (ArgoCD/Flux) – синхронизация «данных-конфигураций» с Git и кластерами (Kustomize в ArgoCD), подробнее тут.

#confighub #kubernetes #helm #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍125🔥4👎2
Анонсы и прогнозы: Docker с Dynamic MCP, Rust в Linux, тренды.

Срединедельный DevOps! Обсудим прогнозы и ключевые события уходящего года: развитие DevOps-инструментов, Rust в Linux, рост трафика с ИИ и лучшие кейсы цифровизации.

Docker Desktop 4.5 и Dynamic MCP
Docker Desktop – приложение для локальной разработки, которое позволяет разработчику собирать, запускать и администрировать контейнеризованные приложения. Представили экспериментальную функцию Dynamic MCP в версии Docker Desktop 4.5. При её использовании ИИ-агенты находят и подключают MCP-серверы в реальном времени. Dynamic MCP начинает работу при подключении клиента к MCP Toolkit, а шлюз MCP предоставляет агентам набор инструментов (mcp-find, mcp-add и др.), с помощью которых им удается обнаружить, добавить и управлять серверами в ходе работы. Подробнее об особенностях функции читайте тут, а с примером использования – на GitHub.

Эксперимент признан успешным: Rust в проекте ядра Linux
Эксперимент по внедрению Rust в ядро Linux, начатый в версии 6.1 в 2022 году и в котором приняли участие 173 разработчика, официально завершён. Ведущий разработчик Rust для Linux Мигель Охеда опубликовал патч для удаления из документации к ядру предупреждения о характере поддержки. Язык уже используется в производственной среде, поддерживается рядом крупных дистрибутивов Linux. Стоит учитывать, что поддержка Rust пока не охватывает все возможные конфигурации ядра, архитектуры и инструментальные цепочки. Так, часть сценариев, включая смешанные сборки с GCC и LLVM, полноценная поддержку GCC остаётся экспериментальной. Значительный объём работы предстоит как в самом ядре, так и в смежных проектах – upstream Rust, GCC и других компонентах экосистемы. Ознакомиться с комментарием можно здесь.

Cloudflare: 19% годового роста трафика и растущая доля ИИ-ботов
По результатам отчёта Cloudflare за 2025 год наблюдается рост глобального интернет-трафика на 19%. Из ключевых особенностей выделяем автоматизированных агентов и сервисов ИИ, которые составляют значительную часть прироста. Подобные изменения сказываются на структуре трафика и порождают требования к новой, безопасной инфраструктуре. В отчёте представлена информация по усилению угроз безопасности и снижению устойчивости сервисов. Cloudflare зафиксировала 25 крупных распределённых DDoS-атак, которые привели к сбоям и ограничению доступа сервисов. В качестве оптимального решения компания внедрила постквантовое шифрование для 52% TLS 1.3-трафика. Подготовка к будущему, в котором квантовые компьютеры обойдут системы шифрования, началась уже сейчас. Подробности об интернет сервисах, HTTP версиях, IPv6 можете прочесть здесь.

«Лидеры Цифрофизации – 2025»: номинация лучший кейс
Внедрение цифровых технологий в процессы бизнеса и управления не потеряют актуальности в 2026-м. Портал TECH совместно с бизнес-клубом Global при поддержке «Деловой России» и «Ассоциация "Руссофт"» опубликовал результаты рейтинга «Лидеры Цифрофизации – 2025», задачей которого являлось отображение лидирующих российских IT-компаний в сфере финансовых услуг, научно-исследовательской деятельности, инженерии и разработки. Победителем в лидеры номинации «Лучший кейс» стал проект по внедрению 1С, системы ML Sense в ММНИО. В число лидеров вошёл кейс «TargetADS» IT-интегратора Nixys по разработке сервиса проверки качества инвентаря, антифрода с выявлением неревантных показов, кликов, что позволило оптимизировать расход рекламного бюджета. Ознакомиться с результатами рейтинга TECH можно здесь.

#docker #dynamicmcp #rust #linux #devops
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍9🔥43👎1
Пятничное чтиво от DevOps FM

Сегодня поговорим об инфраструктурных мелочах с большими последствиями.

👀Что могло пойти не так, но с версией Kubernetes 1.35 будет работать корректно
• Под уверенно занял порт на хосте, а потом мы выяснили, что все процессы внутри работали как root. Хорошо, что теперь это можно настроить.
• Для распределённой задачи требуется 10 рабочих подов, а запустилось только 5. Что с этим делает Kubernetes 1.35?
• Образ на узле, ресурсов хватает, но под не стартует – kubelet проверяет наличие imagePullSecrets.
• Кластер не поднялся после обновления узлов. При чём тут cgroup v1 и релиз 1.35? Читайте в статье.

👀5 ошибок DevOps стартапа (версия 2025)
DevOps как набор инструментов
Контуры процессов, технический стек внедрены, а совместной ответственности и быстрой обратной связи всё ещё нет.
Команды работают разрозненно
Разработка, эксплуатация и безопасность живут в своих мирах – потом долго ищут виноватых и чинят одно и то же.
Гонка за скоростью без прозрачности.
Релизы частые, но без мониторинга и логов проблемы находят пользователи, а не команда.
Ручные операции там, где давно нужна автоматизация.
Деплой «по инструкции», инфраструктура «на память», подборка ошибок – человеческих и повторяющихся.
Безопасность на «потом»
Сканирование, политики и контроль доступа подключают после инцидента, когда уже поздно.
Подробности читайте здесь.

👀Побойтесь DevOps-а…
Компания искала DevOps-инженера, чтобы навести порядок в инфраструктуре, и наняла специалиста с полными правами на продовые серверы. Прошло время и сотрудничество прекратили: доступы отозвали, пароли сменили, учётки заблокировали. Спустя пять дней прод внезапно упал: сервисы недоступны, логи выглядели «разорванными», массовая утечка данных. В ходе внутреннего расследования выяснили – до увольнения был создан скрытый пользователь с правами root, через VPN добавлена отложенная cron-задача на уничтожение системы, а после срабатывания последовал шантаж с требованием выкупа. Как всё закончилось? Читайте здесь.

🚀Приятного чтения! Пусть все инциденты сегодня будут только на Habr.

#пятничноечтиво #kubernetes #devops #security
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍75🔥4🤔2