fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

DevOps для ДевоПсов

DevOps для ДевоПсов

رفتن به کانال در Telegram

Самые актуальные материалы по DevOps на русском и английском языке Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels Другие наши проекты: https://tprg.ru/media

نمایش بیشتر
3 187
مشترکین
-324 ساعت
-107 روز
-2330 روز
آرشیو پست ها
Как управлять коллекторами OpenTelemetry без перехода на Alloy Коллекторы уже настроены через OTel YAML, но общие изменения приходится раскатывать по множеству окружений. Grafana Cloud Fleet Management теперь поддерживает управление совместимыми коллекторами OpenTelemetry через OpAMP. Можно централизованно задавать конвейеры обработки телеметрии, выбирать коллекторы для их применения и оформлять конфигурацию через Terraform. Существующий язык конфигурации OTel сохраняется. При этом локальная и удалённая конфигурации объединяются. Одинаковые имена компонентов могут привести к переопределению настроек. Fleet Management добавляет имена конвейеров к идентификаторам удалённых компонентов и обновляет ссылки, а одинаковые определения объединяет. Перед подключением всей инфраструктуры проверьте итоговую конфигурацию одного коллектора и его собственную телеметрию. Поддержка OpAMP стала общедоступной, но конкретный дистрибутив и его способ развёртывания всё равно нужно сверить с требованиями. Подробнее ДевоПсы

Как выделить CPU приложению и не раздать ядра вспомогательным контейнерам Основному контейнеру нужны выделенные CPU и NUMA-локальная память. Небольшому экспортёру телеметрии отдельное физическое ядро обычно избыточно, но он работает в том же поде. В Kubernetes 1.37 Pod-Level Resource Managers позволяют менеджерам CPU, памяти и топологии учитывать ресурсы всего пода. Поддерживается гибридная схема: основные контейнеры получают выделенные ресурсы, а вспомогательные работают в общем пуле, изолированном на уровне пода. Это отдельное развитие механизма ресурсов уровня пода: наличие .spec.resources само по себе не означает, что менеджеры ноды уже используют новую модель размещения. Функция в бета-версии и выключена по умолчанию. Начните с тестовой ноды, проверьте политики менеджеров и фактическое выделение ресурсов. В PodResources API добавлены поля для CPU и памяти уровня пода — мониторинг должен учитывать их без двойного подсчёта. Подробнее ДевоПсы

Как переносить артефакты без разовой миграции реестра пакетов У каждой команды свой реестр пакетов, правила хранения и учётные данные для CI. Чтобы узнать происхождение пакета, приходится сопоставлять его с пайплайном отдельно. GitLab Artifact Central предлагает общий реестр пакетов на уровне организации. Артефакты из CI получают сведения о сборке, коммите и публикации, а для доступа используется знакомый CI_JOB_TOKEN. Переход можно начать с виртуального репозитория: существующие хранилища подключаются как удалённые источники, разработчики обращаются по одному URL. Старый реестр остаётся источником данных, пока команда не готова менять схему хранения. В анонсе от 6 октября Artifact Central доступен в бесплатной бета-версии на GitLab.com, с подключением через команду GitLab. Доступность Self-Managed тогда ещё была в планах. Перед пилотом стоит проверить поддержку нужных форматов и текущие ограничения бета-версии. Подробнее ДевоПсы

Как один ретрай превращается в лавину запросов В цепочке сервисов каждый клиент настроен повторить запрос один раз. Если ошибка возникает глубоко внутри, верхние уровни повторяют уже повторённую работу и усиливают нагрузку на проблемный сервис. Uber разбирает пример, где запросы к четвёртому сервису вырастают в восемь раз. Бюджет повторных попыток уменьшает усиление, но ограничения отдельных сервисов не устраняют его по всей цепочке. В своей инфраструктуре команда добавила определение источника ошибки. Это позволяет отличать собственный сбой сервиса от ошибки, которую он только передал дальше, и ограничивать повторы ближе к месту возникновения. При разборе инцидента проверьте все уровни повторов: клиентскую библиотеку, прокси и код приложения. Затем измерьте суммарное число попыток на исходный запрос. Настройка «всего один повтор» в каждом компоненте может оказаться совсем не маленькой. Подробнее ДевоПсы

Как запустить Kubernetes без прав root В Kubernetes 1.37 KubeletInUserNamespace перешёл в бета-версию и включён по умолчанию. Существующий кластер после обновления автоматически на работу без root не переходит. Механизм позволяет запускать kubelet, среду выполнения контейнеров, CNI и kube-proxy в пространстве имён пользователей Linux от непривилегированного пользователя хоста. Само пространство имён нужно подготовить отдельно. Это отличается от hostUsers: false у пода: там в пространство имён пользователей помещается нагрузка, а компоненты ноды могут продолжать работать от root. Оба подхода можно сочетать. Для стенда в статье есть примеры с kind и minikube поверх Docker без прав root. Перед переносом рабочих нагрузок проверьте совместимость CNI, CSI и операций, которым нужен настоящий root. На ноде признак runningInUserNamespace помогает определить режим; само включение функции его не доказывает. Подробнее ДевоПсы

Что произошло с PAT при преобразовании аккаунта Docker Hub Docker исправила ошибку, при которой преобразование личного аккаунта в организацию меняло владельца его персональных токенов доступа (PAT). Секрет токена при этом не отзывался и не заменялся. Такой PAT мог получить доступ нового владельца к реестру образов в пределах своих разрешений: например, к загрузке или публикации образов. Уязвимость не давала входа в веб-интерфейс и не позволяла сменить пароль или настройки 2FA. Исправление выпустили 30 сентября. Затронутых пользователей и владельцев организаций уведомили 2 октября; Docker пишет, что при отсутствии такого письма действий по этому инциденту не требуется. Для платформенной команды это повод проверить жизненный цикл токенов реестра: кто ими владеет, где они используются и что происходит с ними при изменении учётной записи. Перенос владельца без смены секрета способен изменить доступ незаметно для CI. Подробнее ДевоПсы

Что проверить при подключении Tempo 3.1 к Kafka Kafka-брокер требует TLS, а Tempo не подключается. В Tempo 3.0 клиент для нового механизма приёма данных поддерживал SASL PLAIN без настройки TLS. В 3.1 эту часть расширили. Появились TLS и механизмы SCRAM-SHA-256, SCRAM-SHA-512, OAUTHBEARER и AWS_MSK_IAM. Перед обновлением сверьте механизм аутентификации, сертификаты и настройки брокера. Если секреты подставляются из окружения, для конфигурации нужен -config.expand-env=true. Для чтения из реплики в своей зоне доступен client_rack. Одной настройки клиента мало: идентификаторы стоек должны быть заданы и на брокерах. На компонент distributor, который пишет в Kafka, эта настройка не распространяется. Отдельно проверьте producer_compression: например, Kafka-совместимый Azure Event Hubs принимает gzip. Поддержка протокола ещё не означает совместимость со всеми настройками клиента. Подробнее ДевоПсы

Почему Kubernetes Job не запускается, хотя ноды свободны Выполнение Job приостановлено, подов ещё нет, смотреть логи негде. В кластере с Kueue сначала нужно проверить, допущена ли задача к выполнению: свободных ресурсов ноды для этого недостаточно. В Headlamp откройте Kueue → Workloads и найдите объект задачи. Начните с условий QuotaReserved и Admitted. Сообщение условия поможет отличить нехватку квоты от неподходящего ResourceFlavor или остановленной очереди. Дальше пройдите по связям LocalQueue → ClusterQueue и сравните запрос задачи с доступной квотой. Учитывайте всю параллельную нагрузку: три пода по одному CPU запрашивают три CPU. Если Admitted=True, а поды остаются Pending, переходите к событиям обычного планировщика Kubernetes. Плагин Kueue версии 0.1.0-alpha показывает ресурсы на чтение; управление очередями в нём пока не реализовано. Подробнее ДевоПсы

Как отдавать телеметрию SaaS в мониторинг клиента Клиент хочет видеть логи вашего сервиса в своём мониторинге. Если предложить только API для polling, ему придётся поддерживать интервалы запросов, пагинацию, повторные попытки и загрузку пропущенных данных. Вариант с OTLP позволяет платформе отправлять телеметрию в заданный клиентом endpoint. В настройках нужны адрес, заголовки авторизации и выбор сигналов: логи, метрики или трассы. Для сложных схем можно предоставить отдельное направление каждому сигналу. У мультиарендной платформы остаётся выбор архитектуры Collector. Отдельный экземпляр на клиента упрощает изоляцию, но сотни экземпляров потребуют ресурсов. Общий Collector с отдельными pipelines экономнее, зато требует аккуратной маршрутизации и управления конфигурацией. При экспорте сохраняйте timestamps, resource attributes и связь логов с trace/span IDs. Иначе данные дойдут до мониторинга клиента, а контекст для разбора инцидента потеряется. Подробнее ДевоПсы

Как мигрировать метрики .NET без отключения Prometheus Переход на OpenTelemetry не обязательно делать одним переключением. .NET-приложение может одновременно отдавать метрики через scrape endpoint для Prometheus и отправлять их по OTLP в новый backend. Для этого инструменты Meter подключают к OpenTelemetry SDK с двумя экспортерами. Один обслуживает HTTP endpoint, второй выполняет OTLP push. Так можно некоторое время сравнивать данные и работу алертов в обеих системах. Если приложение сейчас использует только отдельную библиотеку Prometheus, сначала потребуется перенести инструментирование на Meter. Простое добавление OTLP exporter старые метрики не преобразует. Есть и ограничения: статья отмечает отсутствие прямых аналогов Prometheus summaries и native histograms в описанном пути через Meter. Перед миграцией проверьте используемые типы метрик, запросы и пороги алертов. Подробнее ДевоПсы

Что проверить при обновлении Changed Block Tracking до Beta Changed Block Tracking помогает получать сведения об изменённых блоках между снимками тома. При переходе на Beta изменился API CRD SnapshotMetadataService: вместо v1alpha1 теперь используется cbt.storage.k8s.io/v1beta1. В релизе external-snapshot-metadata 1.0.0 старую версию убрали, а не оставили рядом с новой. Автоматической конвертации нет: нужно применить новую CRD, обновить манифесты ресурсов и код клиентов или контроллеров. Минимальные требования — Kubernetes 1.33 и CSI 1.10. Драйвер должен поддерживать snapshots и поставлять соответствующий sidecar; само обновление кластера эту возможность не добавляет. Проверьте запросы GetMetadataAllocated и GetMetadataDelta в тестовом сценарии бэкапа. CBT здесь относится к блочным томам: переносить эти ожидания на файловые тома и сетевые файловые ресурсы нельзя. Подробнее ДевоПсы

Как блокировать опасные зависимости до сборки Сканер нашёл проблемный пакет после сборки, хотя зависимость уже успела попасть в процесс установки. GitLab Dependency Firewall предлагает проверять пакеты до их загрузки по политикам организации. Внедрение можно начать с режима warn: сборка продолжится, а совпадение с правилом появится в аудите, дашборде и сводке CI. Когда правила проверены на реальных проектах, режим block останавливает пайплайн с объяснением причины. Политики хранятся как код и наследуются от групп к проектам. Для согласованных исключений есть bypass с записью в аудит. Проверку можно вызвать через CLI ещё до добавления зависимости. Функция пока в early access для GitLab.com и Self-Managed на Premium или Ultimate. Это стоит учесть при планировании внедрения: анонс не означает доступность во всех установках. Подробнее ДевоПсы

Как разделить маршрутизацию алертов между командами В общем дереве уведомлений изменение маршрута одной команды требует правки конфигурации всей организации. Отдельные ветки помогают читать правила, но остаются одним ресурсом для управления и развёртывания. В Grafana 13.2 именованные notification policies стали общедоступны. Каждая политика получает собственное дерево, а правило алерта выбирает, куда отправлять уведомления. Правила без такого выбора продолжают использовать default policy. Это позволяет выделить команде отдельный ресурс Terraform и права на её политику. Изменение маршрутов platform-команды не требует замены дерева payments-команды. Начните с одного сервиса: перенесите его маршруты, назначьте правила новой политике и проверьте получателей, группировку и интервалы уведомлений. Остальные алерты могут оставаться на default policy до своей очереди. Подробнее ДевоПсы

Что проверить перед переходом Kubernetes на cgroup v2 После обновления Kubernetes нода может не подняться из-за старого режима cgroup. Начиная с 1.35, failCgroupV1 по умолчанию равен true: kubelet отказывается запускаться на cgroup v1. Проверьте каждую Linux-ноду командой stat -fc %T /sys/fs/cgroup/. Для cgroup v2 ответ будет cgroup2fs. Поддержки со стороны Kubernetes недостаточно: нужны соответствующий режим ОС, ядро и container runtime. Отдельно сверяйте cgroup driver kubelet и runtime. Для kubeadm рекомендуют systemd; автоматическое определение драйвера требует поддержки CRI RuntimeConfig со стороны runtime. Временный failCgroupV1: false позволяет сохранить старый режим, но не заменяет миграцию. Переход сначала стоит проверить на тестовой ноде с реальными нагрузками. Сам по себе cgroup v2 также не исправляет расчёт давления памяти, связанный с большим page cache. Подробнее ДевоПсы

Как связать сборку и тесты одним trace CI-раннер запускает shell, shell — сборку, сборка — тестовые процессы. Без передачи контекста их spans могут оказаться в разных traces, и разбирать задержки будет сложнее. OpenTelemetry предлагает переносить контекст через окружение дочернего процесса: TRACEPARENT, TRACESTATE и при необходимости BAGGAGE. Спецификация находится в Release Candidate; поддержка зависит от инструмента и языка. Рабочие примеры уже есть: otel-cli оборачивает команду в span, а Jenkins OpenTelemetry plugin передаёт контекст в shell, batch и PowerShell steps. Для каждого дочернего процесса нужна отдельная копия окружения с его контекстом. Переменные сами spans не создают — получатель должен уметь извлечь контекст. Секреты в baggage передавать не следует. Подробнее ДевоПсы

Как показать обслуживание ноды в Kubernetes Статус NotReady не объясняет, сломалась нода или её намеренно вывели на обслуживание. Kubernetes 1.37 вводит общие имена условий: DrainInProgress, Drained, MaintenancePlanned, MaintenanceInProgress и GracefulNodeShutdownInProgress. Контроллер обслуживания может выставить MaintenancePlanned, а после начала работ — MaintenanceInProgress. Условия доступны людям и автоматизации, которая умеет их читать. В этой версии компоненты ядра Kubernetes на них ещё не реагируют. Alpha feature gate выключен по умолчанию и пока не влияет на поведение; для публикации условий включать его не требуется. За запрет размещения подов и эвакуацию по-прежнему отвечают cordon, drain и taints. Назначьте владельца каждого условия и очищайте статус после работ, чтобы мониторинг не показывал устаревшее обслуживание. Подробнее ДевоПсы

Как проверить мониторинг перед Java agent 3.0 OpenTelemetry Java agent 2.32.0 позволяет попробовать поведение будущего 3.0. Это preview: до финального релиза детали ещё могут измениться. Сначала сохраните телеметрию тестового приложения с текущими настройками. Затем сравните старые и новые соглашения через dual emission, а после включите общий preview. Проверяйте значения и единицы измерения. Например, метрики длительности работы пула соединений переходят из миллисекунд в секунды: старый порог алерта потребует пересчёта. Меняются также атрибуты БД и связи между messaging spans. Режим /dup сохраняет обе версии не для всех метрик и не воспроизводит обе структуры трассы. Поэтому для проверки нужны исходные данные, запросы дашбордов и реальные сценарии приложения. Подробнее ДевоПсы

Приходится ли вам копипастить данные и какие именно, когда переходите из одной нейросети в другую?
Anonymous voting

Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsi
Общая папка для работы Claude Code и Codex Луи-Франсуа Бушар собрал заметки, инструкции-скиллы, скрипты и итоги встреч в Obsidian. Его связка устроена так: Папка хранит исходные материалы и решения ↓ Индекс указывает, где искать данные для задачи ↓ Claude Code планирует работу ↓ Codex выполняет задачи по его вызову В описании этого рабочего процесса Бушар объясняет, зачем даёт агенту сведения для конкретной задачи. Начать предлагает с общей папки, короткого индекса и одного повторно используемого скилла. #ии #инструменты

Как масштабировать обработчики очереди до нуля В Kubernetes 1.37 поддержка HPA scale-to-zero перешла в beta и включена по умолчанию. Для minReplicas: 0 нужна хотя бы одна object или external metric: CPU и память не дадут сигнал для запуска, когда подов нет. Для обработчика очереди можно использовать её длину или lag. Метрика должна оставаться доступной без воркеров, например через Prometheus Adapter. Начинайте с одной реплики. Если вручную выставить Deployment в ноль, HPA считает это паузой. Автоматическое уменьшение до нуля он отмечает условием ScaledToZero=True и может запустить поды снова. Измерьте время от появления задачи до готовности воркера. Очередь может переждать холодный старт, а Kubernetes Service HTTP-запросы при отсутствии готовых подов не буферизует. Подробнее ДевоПсы