Библиотека девопса | DevOps, SRE, Sysadmin
10.2K subscribers
1.55K photos
74 videos
4 files
2.79K links
Все самое полезное для девопсера в одном канале.

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
👻 Пугающие баги

Праздник — отличный повод немного отвлечься от задач и сменить атмосферу. А вы сегодня кого-нибудь напугали? Даже простой костюм может добавить настроения.

💬 Оставляйте свои впечатления и фото в комментариях 👇


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

#холиварня
Please open Telegram to view this post
VIEW IN TELEGRAM
📎 Забыли про requests и limits — получили OOMKilled

Kubernetes не требует указывать requests и limits для CPU и памяти. Поды запускаются и без них. Но когда кластер растёт, начинаются проблемы.

Scheduler не знает, сколько ресурсов нужно поду. Он пихает на одну ноду 20 подов, которые съедают всю память. Результат — OOM killer убивает случайные поды. Или наоборот: один под жрёт все ресурсы, остальные задыхаются.

Как исправить:
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "200m"


Начните с минимальных значений. Запустите под, посмотрите kubectl top pods. Увидите реальное потребление — скорректируете цифры. Если нагрузка скачет, добавьте HorizontalPodAutoscaler.

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
☕️ Gitea 1.25.0

Gitea — это бесплатная платформа для хостинга и управления Git-репозиториями.

Что нового:

• Добавлен предварительный просмотр 3D-файлов и CAD-файлов.

• Поддерживаются email-уведомления о результатах CI/CD.

• Улучшена SSH-подпись коммитов и интеграция с OpenID Connect.

• Админ-панель оптимизирована: архивы исключены из бэкапов, улучшена настройка эмодзи.

• Удалены устаревшие источники аутентификации.

➡️ Release notes

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
📎 Боремся с infra-flake

Когда вы запускаете автоматические тесты или задачи, иногда возникают ошибки, связанные с инфраструктурой — с сетью, временными сбоями серверов или сбоями среды выполнения. Они проявляются как короткие перебои или ошибки 5xx.

В таких случаях есть эффективный подход: сделать автоматическую повторную попытку один раз.

Почему это работает? Обычно проблема — не в вашем коде, а в инфраструктуре. Если перезапуск помогает и задача проходит успешно, значит ошибка — временная и связана с сетью или сервером, а не с самим программным продуктом.

Пример:
jobs:
tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
max-parallel: 4
steps:
- uses: actions/checkout@v4
- name: Run tests with one retry on infra errors
run: |
set -e
for i in 1 2; do
npm test && break || {
if grep -qE "ENETUNREACH|ECONNRESET|502 Bad Gateway" test.log; then
echo "Retrying due to infra indicators..."
sleep 10
else
exit 1
fi
}
done


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

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
😮 Шестидневка позади

Выдохнули — самая насыщенная неделя завершена. Теперь время для перезагрузки: встречи с друзьями, хобби, любимые сериалы — всё, что поможет восстановить силы.

💬 Как вы справились с этой неделей? Что первым делом сделаете в выходные? Рассказывайте в комментариях 👇

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

#холиварня
Please open Telegram to view this post
VIEW IN TELEGRAM
🔒 Consul 1.22 и MCP-сервер для управления через AI

HashiCorp анонсировал релиз Consul 1.22 и новый MCP-сервер, который меняет способ взаимодействия с платформой service mesh.

Теперь можно управлять сервисами, health checks и конфигурацией через обычный разговор с AI-ассистентом.

Сам Consul 1.22 получил поддержку IPv6 (требование для федеральных агентств США), улучшенную SSO-аутентификацию через private key JWT вместо client_secret, и расширенную телеметрию для IPv6-трафика.

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

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
1
👨‍💻 Без probes Kubernetes не знает, что ваше приложение умерло

Kubernetes считает контейнер живым, пока процесс не завершился. Приложение может зависнуть, тупить, инициализироваться 5 минут — Kubernetes всё равно отправит трафик.

Что происходит

Liveness probe проверяет, жив ли контейнер. Если нет — перезапускает. Readiness probe проверяет, готов ли контейнер принимать трафик. Если нет — убирает из Service.

Без readiness probe пользователи попадут на ещё не прогретое приложение. Получат таймауты, 500-е, странные ошибки. Вы будете часами искать баг, которого нет.

Как исправить:
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 30
periodSeconds: 10

readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5


Добавьте в приложение два эндпоинта. /healthz отвечает 200, если приложение работает. /ready отвечает 200, если приложение загрузилось и готово обрабатывать запросы.

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
🍷 Wine: 32 бита на 64-битной системе

Вышла версия Wine 10.18. Основной фокус — доработка WoW64 режима, который позволяет запускать 32-битные Windows-приложения на 64-битной Linux-системе, имитируя нативный Windows WoW64 подсистему.

OpenGL теперь использует Vulkan для отображения в памяти в WoW64 режиме, добавлена поддержка SCSI pass-through, реализована API синхронизационных барьеров (нужна для некоторых игр, например The Obsessive Shadow), поддержка WinRT исключений. Плюс 30 багфиксов для приложений и игр.

➡️ Анонс

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩 Апгрейднули cp

Когда Вы копируете большую папку командой cp -r, Вы не видите, что происходит. Процесс может занять часы, а Вы сидите в неведении — копируется ли вообще? Сколько осталось? Если что-то пойдёт не так, часто нужно начинать заново.

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

Базовая команда:
rsync -av --progress /path/to/src/ /path/to/dest/


-a — архивный режим. Cохраняет права, временные метки, символические ссылки.
-v — подробный вывод
--progress — показывает прогресс для каждого файла

Если Вы копируете по сети на удалённый сервер, добавьте флаг -z для сжатия:
rsync -avz --progress /local/path/ user@server:/remote/path/


Если копирование прервалось, просто запустите ту же команду ещё раз — rsync пропустит уже скопированные файлы и продолжит с того же места.

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻 kubectl logs — это не логирование

kubectl logs показывает логи только из работающих или недавно упавших контейнеров. Логи лежат на диске ноды. Контейнер удалился, нода перезагрузилась, логи ротировались — всё пропало.

Что происходит

Под упал ночью. Утром вы приходите разбираться — логов нет. Или под был в namespace с агрессивной политикой очистки. Или кто-то удалил Deployment.
В production это значит, что вы не узнаете, почему сервис лёг в 3 часа ночи.

Как исправить

Поднимите централизованное логирование. Fluentd или Fluent Bit собирают логи со всех подов и отправляют в хранилище — Elasticsearch, Loki, S3.

Пример sidecar с Fluent Bit:
containers:
- name: app
image: your-app:1.0
- name: fluent-bit
image: fluent/fluent-bit:latest
volumeMounts:
- name: varlog
mountPath: /var/log


Если нужна корреляция логов с метриками — добавьте OpenTelemetry. Если нужны трейсы — Jaeger. Но начните с простого: соберите логи в одном месте.

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

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