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

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

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

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

РКН: https://gosuslugi.ru/snet/6798b4e4509aba565
Download Telegram
🧹 Kubernetes housekeeping

Kubernetes по умолчанию не удаляет завершённые поды автоматически. И это имеет смысл — логи можно посмотреть, причину падения изучить, отладить проблему.

Но когда таких подов сотни или тысячи, кластер превращается в свалку:
$ kubectl get pods -A | grep -E 'Completed|Error|Evicted' | wc -l
847


Как почистить кластер

Удалить все Completed поды:
kubectl get pods -A --field-selector=status.phase==Succeeded \
-o json | jq -r '.items[] | "\(.metadata.namespace) \(.metadata.name)"' \
| xargs -n2 bash -c 'kubectl delete pod -n $0 $1'


Или проще, если у вас kubectl 1.24+:
kubectl delete pods --all-namespaces \
--field-selector=status.phase==Succeeded


Удалить все Failed поды:
kubectl delete pods --all-namespaces \
--field-selector=status.phase==Failed


Удалить Evicted поды
Тут хитрее, потому что Evicted — это не phase, а reason:
kubectl get pods -A -o json | \
jq -r '.items[] | select(.status.reason=="Evicted") | "\(.metadata.namespace) \(.metadata.name)"' | \
xargs -n2 bash -c 'kubectl delete pod -n $0 $1'


Удалить всё разом:
kubectl get pods -A -o json | \
jq -r '.items[] |
select(.status.phase=="Succeeded" or .status.phase=="Failed" or .status.reason=="Evicted") |
"\(.metadata.namespace) \(.metadata.name)"' | \
xargs -n2 bash -c 'kubectl delete pod -n $0 $1 --ignore-not-found=true'


Чистый кластер — счастливый кластер.

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍1
💥 Октябрь — месяц апгрейда!

До конца этого месяца действует скидка 40% на все курсы Proglib Academy (кроме AI-агентов, ML для старта и математики).

Под акцию попал и наш хит — курс «Алгоритмы и структуры данных».

👨‍💻 Он подойдёт джунам, мидлам и всем, кто хочет писать код осознанно, а не наугад.

👨‍🏫 Преподаватели — инженеры из Яндекса и ВШЭ.

🎓 Сертификат по итогам обучения — в портфолио.

47 видеоуроков и 150 практических задач;
поддержка преподавателей и чат;
доступ к материалам на 12 месяцев.

Полная программа курса тут 👈

👉 Остальные курсы
🧑‍💻 Топ-вакансий для девопсов за неделю

Инженер по инфраструктуре — от 440 000 ₽ с удалёнкой.

Network Engineer — до 3 500 € и удалёнка.

Senior DevOps-инженер с удалёнкой от 400 000 ₽.

➡️ Еще больше топовых вакансий — в нашем канале Devops Jobs

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

#вакансия_недели
Please open Telegram to view this post
VIEW IN TELEGRAM
🐋 Отладка Docker-сборок в Visual Studio Code

Теперь вы можете отлаживать Dockerfile прямо в VS Code, как обычный код.

Что умеет новый отладчик

• Ставьте брейкпоинты на любую инструкцию RUN в Dockerfile и останавливайте сборку именно в этом месте.

• Смотрите все переменные окружения, аргументы сборки, рабочую директорию и другие параметры прямо в панели Variables.

• Исследуйте структуру файлов внутри образа на любом этапе сборки. Видите, что скопировалось, что нет, и даже можете просматривать содержимое текстовых файлов.

• Когда сборка приостановлена на брейкпоинте, введите команду exec в Debug Console — и вы получите живой shell внутри образа, который сейчас собирается.

➡️ Попробовать фишки

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10
📎 Запустил и забыл

screen — это программа, которая не даёт вашим командам на сервере прерваться, если интернет пропал или вы закрыли терминал.

Как пользоваться

Создать новую сессию:
screen -S my-task


Теперь вы внутри screen. Запускайте команды как обычно.

Выйти из сессии (она продолжит работать):
Нажмите Ctrl+A, отпустите, потом нажмите D

Посмотреть все запущенные сессии:
screen -ls


Вернуться в сессию:
screen -r my-task


Открыть ещё одну вкладку внутри screen:
Ctrl+A, потом C

Переключаться между вкладками:

Ctrl+A, потом N — следующая вкладка
Ctrl+A, потом P — предыдущая вкладка
Ctrl+A, потом цифра (0, 1, 2...) — конкретная вкладка

Убить конкретную сессию:
screen -X -S 12345 quit


Лайфхак: всегда давайте сессиям понятные имена (-S backup, -S deploy), а не оставляйте автоматические номера — так проще найти нужную.

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71
🚨 Критический баг в Ubuntu 25.10

В Ubuntu 25.10 обнаружен баг в команде date из пакета rust-coreutils, который блокирует автоматическую проверку доступных обновлений системы.

Как проверить, затронута ли ваша система:
dpkg -l rust-coreutils


Затронуты системы с версией: <= 0.2.2-0ubuntu2
Не затронуты системы с версией: >= 0.2.2-0ubuntu2.1

Быстрый фикс:
sudo apt install --update rust-coreutils


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

➡️ Источник

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1🙏1
🧠 Готовишься к собесам, а ноутбук еле тянет IDE?

Самое время прокачать скиллы и апгрейднуть железо!

Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻

Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!

📚 Среди курсов:

▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.

▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.

▫️ Python, математика для DS, основы IT и другие направления.

👉 Принять участие
1
📎 Быстрая диагностика через journalctl

На проде что-то сломалось. Первое что нужно — посмотреть свежие ошибки.

journalctl --since "1 hour ago" | grep -i error


Вытаскивает все записи с ошибками за нужный промежуток. Можно изменить период: «10 minutes ago», «2 hours ago», «today».

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
😭 NGINX Unit больше не разрабатывается

F5 Networks приняли решение прекратить активную разработку NGINX Unit. Репозиторий на GitHub переведен в архив — это означает конец поддержки проекта, который многие считали перспективным универсальным app-сервером.

Для тех, кто не знаком с проектом — Unit был амбициозной попыткой создать универсальный сервер приложений

Если вы используете Unit в проде:

• Провести аудит безопасности текущей версии

• Начать планирование миграции (3-6 месяцев)

• Искать community fork (если появится)

• Готовить план миграции на альтернативы

Альтернативы NGINX Unit по языкам

— Python:

• Gunicorn — проверенный WSGI сервер
• Uvicorn — современный ASGI (для FastAPI, Django async)
• uWSGI — мощный и гибкий (но сложный)

— PHP:

• PHP-FPM — стандарт индустрии
• FrankenPHP — новый, с поддержкой worker mode

Node.js:

• PM2 — production process manager
• Node.js напрямую за NGINX (для простых случаев)

Ruby:

• Puma — современный и быстрый
• Unicorn — стабильный классический выбор

Java:

• Tomcat / Jetty — традиционные app servers
• Spring Boot embedded server

➡️ Последний раз посмотреть в репозиторий

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🙏1
🔒 Как хранить секреты в Terraform

Правило №1: Никогда не хардкодьте секреты. Инфраструктурный код — это тоже код, и к нему применяются те же правила безопасности.

Плохой пример:
resource "aws_db_instance" "database" {
password = "notasecurepassword"
}


Правильный подход:

1. Объявляем переменную в variables.tf:
variable "db_password" {
type = string
}


2. Создаем secrets.tfvars:
db_password = "insecurepassword"


3. Используем переменную:
resource "aws_db_instance" "database" {
password = var.db_password
}


Не забудьте добавить secrets.tfvars в .gitignore

Но это только первый шаг. Хранить секреты в файлах — всё ещё не лучшее решение.

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

#root@prompt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Media is too big
VIEW IN TELEGRAM
Идём на Avito Infra DrinkUp 12 ноября, без вариантов ☄️

Коллеги из Авито зовут на встречу по инфраструктуре. Обещают брейншторм об инструментах IaC, разработке в SRE, базах данных, Kubernetes и многом другом. Но есть подвох: никаких записей и трансляций — только офлайн, только хард-кор.

Как будто итог один — пропускать нельзя. Советуем уже сейчас кликать по ссылке и регистрироваться с коллегами и друзьями, пока не закончились места.
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🧑‍💻 Самая длинная рабочая неделя 2025 года

Эта неделя — 6 рабочих дней подряд. Для большинства это событие, для девопса — обычный вторник.

Для нас разница не особо заметна. On-call работает все семь дней, инциденты не смотрят на календарь, мониторинг не знает про выходные, а деплои случаются когда угодно.

💬 А как вы настроились на эту неделю? У вас будет две пятницы или два понедельника?

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

#dev_null
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥4
🔄 Bottles 51.25: исправления и поддержка st terminal

Вышла новая версия Bottles — менеджера для запуска Windows-приложений на Linux через Wine. Релиз 51.25 исправляет ошибки, которые мешали нормальной работе программы.

Исправили вылет при обновлении списка зависимостей, проблему с некорректным вызовом метода при изменении даты обновления, и баг, из-за которого папки не удалялись полностью.

Добавили поддержку терминала st. Теперь bottles корректно загружает конфиг из файла bottle.yml, если он существует. Ещё один фикс касается запуска CMD через xfce4-terminal.

➡️ Релиз на GitHub

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
📊 Структурированное логирование ошибок: практическое руководство

Неинформативные логи типа «Error!» затрудняют отладку. В проде поиск проблемы занимает часы.

Решение: 6-значная система кодирования
01 01 03
│ │ └─ Тип ошибки
│ └──── Сервис
└─────── Модуль


Первые 2 цифры — модуль:

01 — User
02 — Shipping
03 — Order
04 — Payment
05 — Notification

Средние 2 цифры — сервис:

01 — Database
02 — External API
03 — Payment Gateway
04 — Cache
05 — Queue

Последние 2 цифры — тип:

01 — Configuration
02 — Authentication
03 — Timeout
04 — Validation
05 — Not Found

Уровни серьёзности:

Low — информационные сообщения, не требуют действий
Medium — влияют на UX, требуют исправления
High — нарушают работу функционала
Critical — полный отказ системы, требуют немедленной реакции

Как выглядит лог в Json:
{
code: '010103', // Код ошибки
level: 'Medium', // Уровень
message: 'Clear text', // Описание
timestamp: '2025-10-29T...',

// Контекст
userId: 12345,
requestId: 'req-abc-123',
service: 'UserService',

// Технические детали
stack: error.stack,
duration: 3450
}


Минимальный старт

1. Определите 3-5 основных модулей
2. Создайте таблицу кодов
3. Добавьте структурированное логирование в критичные места
4. Настройте алерты на Critical
5. Постепенно расширяйте покрытие

Наши курсы построены по тому же принципу: чёткая структура, конкретные практические примеры, измеримые результаты. 3 дня до конца скидок!

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

#арсенал_инженера
Please open Telegram to view this post
VIEW IN TELEGRAM
🎁 Конкурс от Proglib Academy!

Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro

Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.

Чтобы поучаствовать, нужно:

1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.

До 15 ноября, потом всё — поезд (и макбук) уйдёт.

👉 Участвовать в розыгрыше
🎩 Вышла Fedora Linux 43

Fedora выпустила новую версию дистрибутива. Главное изменение для пользователей — установщик Anaconda WebUI теперь работает не только в Workstation.

Для любителей GNOME новость менее радужная: десктоп теперь работает только через Wayland, поддержку X11 полностью убрали.

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

Fedora CoreOS изменила схему обновлений: вместо OSTree-репозитория система получает апдейты как OCI-образы. Теперь любой может собрать FCOS через обычный Containerfile с помощью podman, без специальных инструментов.

Для чистой установки доступны все редакции: от классических Workstation и Server до Atomic-десктопов вроде Silverblue. 21 ноября пройдет виртуальная вечеринка в честь релиза.

➡️ Release notes

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

#пульс_индустрии
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Каким образом мы можем управлять вычислительными ресурсами в k8s?

Для эффективного управления ресурсами в кластере k8s используются resources requests / limits. Они могут быть настроены для CPU, памяти и, в последних версиях k8s, для GPU.

Requests используются для определения типичного потребления ресурсов нашим приложением. На основе этих данных Kubernetes scheduler выбирает ноды для запуска PODов (сумма всех request'ов контейнеров во всех PODах не должна превышать доступные ресурсы на ноде).

Limits служат как механизм предотвращения, ограничивая потребление ресурсов контейнером в PODе. При превышении лимита процессорного времени применяется thermal throttling, а при превышении лимита памяти — механизм OOM.

Модель, при которой requests меньше limits, называется burstable QoS, а когда requests равны limits — guaranteed QoS.

Кроме того, можно установить квоты ресурсов на namespace (CPU, память, количество запущенных PODов, размер диска persistent volume) и указать требования к resources requests на PODах в namespace с помощью limit ranges.

Для управления ресурсами приложений также можно использовать автоскейлеры. В k8s доступны HPA (horizontal pod autoscaler), который регулирует количество PODов в зависимости от потребления CPU и/или памяти, и VPA (vertical pod autoscaler), который управляет resources requests / limits.

Существуют также реализации автоскейлеров, которые могут использовать внешние метрики (например, длину очереди), такие как carpenter или KEDA. В облачном окружении можно использовать cluster autoscaler для добавления или удаления нод в зависимости от общей загрузки кластера.


Библиотека собеса по DevOps
14 вопросов, после которых вам не перезвонят

Разбираем 14 вопросов, которые лучше не задавать на собеседовании: что не так с каждым из них и как переформулировать, чтобы получить нужную информацию без риска для репутации.

➡️ Прочитать статью

🐸 Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1