Библиотека девопса | DevOps, SRE, Sysadmin
1.27K subscribers
6 photos
25 links
Блог DevOps инженера
Download Telegram
💡 Когда docker system prune спасает твой диск... но не всё так просто

Все мы знаем, что Docker любит кушать диск. Особенно, если часто собирать образы, поднимать временные контейнеры или играться с volume'ами. Рано или поздно ты ловишь No space left on device, и начинается пляска с du -sh * в /var/lib/docker.

И вот тут на сцену выходит герой — docker system prune.


docker system prune -a --volumes


🔪 Удалит всё:

* остановленные контейнеры
* неиспользуемые образы
* все dangling volume'ы
* неиспользуемые networks

Но вот в чём засада: он удалит и то, что тебе может быть нужно. Например, образы, которые не используются сейчас, но могут быть нужны через 5 минут.

⚠️ Советы по выживанию:

* Перед запуском — проверь, что ты точно хочешь всё вычистить.
* Если нужны только образы без volume'ов — не добавляй --volumes.
* Лучше сначала посмотреть, что будет удалено:


docker system df


или


docker images --filter dangling=true


🧼 А ещё можно настроить регулярную очистку через cron или systemd timers, но аккуратно — лучше вручную, чем потерять нужное.

📲 Мы в MAX

Подпишись 👉@devopslib
👍3
🔍Тестовое собеседование с Head of DevOps уже завтра

18 августа(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle DevOps-разработчика.

Как это будет:
📂 Александр Хренников, Head of DevOps в KTS с опытом 14+ лет, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Александру

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для DevOps-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_devops_bot

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🔥1
Как проверить, что твои бэкапы не просто занимают место?

Резервное копирование — это как страховка: пока не случится беда, никто о нём не думает. Но когда приходит время восстановления, многие с удивлением обнаруживают, что бэкап либо повреждён, либо неполон, либо вовсе не содержит нужных данных. Как избежать этого?

🔹 Автоматическое тестирование восстановления
Настрой регулярное восстановление из резервных копий в тестовой среде. Например, можно развернуть временный сервер и поднять на нём восстановленную БД.

🔹 Сравнение контрольных сумм
Для файловых бэкапов сохраняй хэши (MD5, SHA256) до и после резервного копирования. Это поможет выявить изменения или повреждения данных.

🔹 Логирование и мониторинг
Настрой алерты на ошибки резервного копирования. Если скрипт завершился неудачно, ты должен об этом узнать раньше, чем твой прод улетит в тартарары.

🔹 Глубина хранения и дедупликация
Не удаляй старые бэкапы слишком рано. Иногда проблему замечают через несколько недель. Храни несколько версий резервных копий, но следи за размером и удостоверься, что не копируешь лишнее.

🔹 Периодические мануальные проверки
Раз в месяц пробуй восстановить данные вручную. Это займёт 15 минут, но может спасти компанию от потерь.

Бэкап, который не тестировали на восстановление — это просто набор битов. Убедись, что твои копии действительно можно использовать!

📲 Мы в MAX

Подпишись 👉@devopslib
👍1
🔥 Kubernetes vs Docker Compose: Что выбрать? 🔥

Когда приходит время управлять контейнерами, многие задаются вопросом: использовать Docker Compose или Kubernetes? Разбираемся!

🚀 Docker Compose
✅ Простота развертывания — один YAML-файл, одна команда docker-compose up.
✅ Идеально подходит для локальной разработки и тестирования.
✅ Быстрый старт без сложных конфигураций.
❌ Не поддерживает автоматическое масштабирование и самовосстановление контейнеров.
❌ Ограниченные возможности оркестрации.

🏗️ Kubernetes
✅ Масштабируемость и отказоустойчивость из коробки.
✅ Автоматическое управление состоянием контейнеров (перезапуск, балансировка нагрузки).
✅ Гибкость за счет Helm, CRD и сложных политик.
❌ Сложность в настройке и сопровождении.
❌ Требует значительных ресурсов.

💡 Вывод
👉 Docker Compose — лучший вариант для разработки и небольших проектов.
👉 Kubernetes — когда нужна продакшен-инфраструктура, масштабирование и высокая доступность.

📲 Мы в MAX

Подпишись 👉@devopslib
👍1🤡1
Как DevOps-у не сгореть на работе? 🔥🚒

DevOps — это бесконечный поток задач, инцидентов и улучшений. Но если постоянно тушить пожары и не заботиться о себе, можно быстро перегореть. Как этого избежать?

1️⃣ Автоматизируй всё, что можно
Если ты делаешь одну и ту же рутину более двух раз — это кандидат на автоматизацию. Bash-скрипты, Ansible, Terraform, GitHub Actions — твои лучшие друзья.

2️⃣ Логи и мониторинг – твой щит 🛡️
Не жди звонка в 3 ночи из-за того, что прод лег. Настрой Prometheus + Grafana, Loki, ELK или OpenTelemetry. Ставь алерты заранее, чтобы проблемы решались до того, как их заметит бизнес.

3️⃣ Не будь "героем", работай в команде 🤝
Нет ничего хуже, чем быть единственным, кто знает, как работает инфраструктура. Делегируй, пиши документацию, проводи knowledge-sharing сессии.

4️⃣ Баланс между работой и жизнью 🌿
Если ты постоянно на связи 24/7, это путь в никуда. Разделяй работу и личную жизнь. Учись говорить «нет» и отдыхать без чувства вины.

5️⃣ Следи за трендами, но не будь их рабом
Kubernetes, Istio, eBPF, AI в DevOps — технологии меняются быстро, но не надо бежать за каждым хайпом. Оценивай их пользу для своего проекта, прежде чем внедрять.

Береги себя, DevOps! И помни: лучший DevOps — это отдохнувший DevOps. 😉


📲 Мы в MAX

Подпишись 👉@devopslib
👍5❤3
🔥 Как не попасть в ад Kubernetes? 🔥

Все любят Kubernetes, пока он не начинает тащить вас в бездну бесконечных YAML-файлов и неожиданных фейлов. Держи чек-лист, чтобы не превратить кластер в хаос:

✅ RBAC с первого дня – без ограничений все контейнеры вдруг получают суперспособности (и это не круто). Разграничивай доступ сразу!

✅ Readiness & Liveness Probes – не будь тем, кто деплоит сервис без проверки его живучести. Без этих проб — гарантированные проблемы с балансировкой.

✅ Resource Requests & Limits – хочешь, чтобы один под сожрал все CPU и мем? Нет? Тогда ставь лимиты!

✅ Поднимай мониторинг раньше, чем тебе понадобится – Prometheus, Grafana, Loki… Не жди, пока что-то сломается.

✅ Network Policies – не будь дырявым – если не ограничить трафик, твои поды будут общаться как захотят. Взломать такой кластер проще простого.

✅ Backup etcd – всегда! – потеря etcd = потеря всего. Делай бэкапы, иначе одна ошибка и привет, восстановление с нуля.

✅ Автоматизируй деплои и GitOps – ручные правки в манифестах — путь к страданиям. ArgoCD, FluxCD в помощь!

📌 Kubernetes – мощь, но без дисциплины он превращается в боль. Делай всё с умом!

📲 Мы в MAX

Подпишись 👉@devopslib
🔥2👍1
Как мониторить сервер без Prometheus?

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

🔥 1. Нагрузка на процессор

top -o %CPU
htop

top покажет общую картину, htop— более детализированную с цветами.

🔥 2. Использование памяти

free -h
vmstat -s

Команда free -h выведет статистику по RAM в удобном виде.

🔥 3. Диск и файловая система

df -h
du -sh /var/log

Если место пропадает загадочным образом, du -sh /path поможет найти, куда оно ушло.

🔥 4. Сетевые соединения

netstat -tulnp
ss -tulnp

Хотите узнать, какие процессы слушают порты? ss -tulnp поможет.

🔥 5. Нагрузка на дисковую систему

iostat -dx 1
iotop

Если сервер тормозит, а CPU не загружен — возможно, виноват диск.

🔥 6. Логи в реальном времени

tail -f /var/log/syslog
journalctl -f

Полезно для отладки проблем в режиме реального времени.

Эти команды помогут быстро оценить состояние сервера без лишних сложностей. А какие утилиты используешь ты? Делись в комментариях!

📲 Мы в MAX

Подпишись 👉@devopslib
👍2
🔹 DevOps: секреты работы с Terraform State 🔹

Terraform — мощный инструмент для управления инфраструктурой, но работа с его state-файлом требует особого внимания. Сегодня разберем, как правильно управлять состоянием и избегать проблем.

🚀 Основные проблемы с Terraform State
1️⃣ State-файл локально – потеряешь файл = потеряешь инфраструктуру.
2️⃣ Конфликты изменений – если несколько людей работают с одним state-файлом, возможны проблемы.
3️⃣ Частичная поломка state – если во время apply что-то пойдет не так, можно остаться с "битым" состоянием.

🔧 Как правильно работать с state?
✔️ Храни state в удаленном бекенде (S3 + DynamoDB, GCS, Azure Blob) – это защитит от потерь.
✔️ Включай блокировку state – например, DynamoDB table предотвратит конфликты.
✔️ Используй команды terraform state – они помогут править state без лишних apply.
✔️ Настрой шифрование – если хранишь state в облаке, включай AES-256.
✔️ Разделяй стейты по окружениям – лучше иметь отдельные файлы для dev, staging, prod.

⚠️ Лайфхак: как восстановить state?
Если state поврежден, попробуй:
🔹 terraform state pull > backup.tfstate – сохранить текущий state.
🔹 terraform import – добавить ресурсы вручную.
🔹 terraform refresh – попытаться синхронизировать текущее состояние с реальными ресурсами.

💡 Привычка правильно работать с Terraform State спасет тебе кучу нервов!

📲 Мы в MAX

Подпишись 👉@devopslib
👍3🔥1
🚀 GitOps: революция в управлении инфраструктурой

GitOps — это подход к управлению инфраструктурой и развертыванию приложений, основанный на использовании Git как единственного источника правды. Все изменения проходят через pull request'ы, что дает прозрачность, контроль версий и автоматизацию.

🔹 Как это работает?
1️⃣ Вся конфигурация хранится в Git-репозитории.
2️⃣ Изменения происходят через коммиты и pull request'ы.
3️⃣ Автоматические агенты (ArgoCD, FluxCD) следят за репозиторием и применяют изменения в кластер.

🔹 Преимущества GitOps:
✅ Полная история изменений — легко откатиться назад.
✅ Автоматизация CI/CD — минимум ручной работы.
✅ Единая точка правды — все изменения в Git.
✅ Повышенная безопасность — политика pull request'ов предотвращает случайные ошибки.

🔹 Лучшие инструменты для GitOps:
🔸 ArgoCD — мощный инструмент с UI для визуального управления деплоями.
🔸 FluxCD — легковесное решение, полностью интегрируемое с Kubernetes.
🔸 Terraform + GitHub Actions — для инфраструктуры как кода.

GitOps — это не просто хайп, а будущее управления инфраструктурой! А ты уже внедрил его в проде?

📲 Мы в MAX

Подпишись 👉@devopslib
👍3
🔥 Kubernetes: Как уменьшить время старта подов? 🔥

Одной из распространенных проблем в Kubernetes является длительный запуск подов, особенно если в кластере много сервисов. Давайте разберёмся, как можно ускорить этот процесс.

🚀 1. Используйте лёгкие образы
Выбирайте образы с минимальным количеством зависимостей. Вместо ubuntu:latest лучше взять alpine или distroless.

⚡ 2. Настройте readinessProbe и livenessProbe
Некорректные пробки могут заставить Kubernetes перезапускать поды или считать их неготовыми дольше, чем нужно. Используйте их осознанно.

🎯 3. Предзагружайте образы (Image Pull Policy)
Если ваши поды используют публичные образы, включите ImagePullPolicy: IfNotPresent или Never, чтобы не скачивать образ при каждом старте.


containers:
- name: app
image: my-registry/app:latest
imagePullPolicy: IfNotPresent


💾 4. Используйте InitContainers для подготовки окружения
Если поду требуется что-то до старта (например, миграции БД), лучше использовать InitContainers, чтобы основное приложение стартовало быстрее.

📦 5. Настройте ресурсы
Ограничения CPU и памяти (requests и limits) могут повлиять на скорость старта пода. Если ресурсов мало, контейнеру придётся ждать, пока Kubernetes выделит ему место.


resources:
requests:
cpu: "250m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"


🏎 6. Используйте preStopHook для graceful shutdown
Чтобы уменьшить задержки при перезапуске подов, обрабатывайте завершение работы приложения через preStopHook.


lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 5"]


🔄 7. Включите startupProbe для долгозапускающихся сервисов
Если приложение стартует долго, лучше использовать startupProbe, чтобы Kubernetes не убивал его раньше времени.


startupProbe:
httpGet:
path: /healthz
port: 8080
failureThreshold: 30
periodSeconds: 5


📲 Мы в MAX

Подпишись 👉@devopslib
👍3
🚀 Зачем DevOps инженеру уметь писать код?

Часто можно услышать мнение, что DevOps — это про инфраструктуру, пайплайны и кубер, а кодить должны разработчики. Но на практике хороший DevOps инженер неизбежно сталкивается с кодом и скриптингом. Почему это важно?

🔹 Автоматизация всего
Ручные операции = баги и потери времени. Написание CI/CD пайплайнов, автоматизация деплоя, инфраструктура как код (IaC) — все это требует хорошего знания Python, Bash, Go или даже Ruby.

🔹 Глубокое понимание приложений
Если ты можешь прочитать код, понять его логику, то тебе проще решать проблемы в продакшене. Debugging, логирование, мониторинг — все это связано с кодом.

🔹 Эффективный troubleshooting
Зачастую DevOps инженер — первый, к кому приходят с проблемами продакшена. Понимание кода помогает быстро локализовать ошибки, а не просто перезапускать контейнеры в надежде, что "само пройдет".

🔹 Разработка внутренних инструментов
Часто приходится писать собственные тулзы: CLI утилиты, API сервисы для инфраструктуры, кастомные плагины для Kubernetes, Terraform или Ansible.

🔹 Общение с разработчиками
Если ты говоришь с разработчиками на одном языке (и в прямом, и в переносном смысле), то взаимодействие между командами становится более продуктивным.

💡 Вывод: кодинг — это не просто полезный навык, а must-have для современного DevOps. Если еще не кодишь — самое время начать!

📲 Мы в MAX

Подпишись 👉@devopslib
👍5❤2🔥2
🔥 Как мониторить логи в реальном времени?

Мониторинг логов в реальном времени — одна из важнейших задач DevOps-инженера. Если сервис падает или выдаёт ошибки, нужно быстро понять, что произошло. Давайте разберём несколько инструментов, которые помогут оперативно анализировать логи.

🔹 tail -f и less +F
Классика UNIX. tail -f позволяет следить за последними строками лога, а less +F даёт возможность как мониторить в реальном времени, так и быстро пролистывать вверх для анализа.

🔹 multitail
Продвинутый вариант tail -f, который позволяет следить за несколькими логами одновременно в одном терминале.

🔹 journalctl -f
Если у вас systemd, используйте journalctl -f -u <service> для слежения за логами конкретного сервиса.

🔹 lnav
Очень мощный CLI-инструмент для логов с синтаксическим разбором, цветовой разметкой и возможностью фильтрации.

🔹 Grafana Loki + Promtail
Если нужен централизованный сбор и визуализация логов, то связка Loki + Promtail отлично подойдёт. Loki индексирует метаданные логов, а Promtail забирает их с серверов.

🔹 ELK (Elasticsearch + Logstash + Kibana)
Если нужно что-то мощнее и удобнее для анализа, то ELK-стек — отличный вариант. Kibana позволяет гибко фильтровать и строить дашборды по логам.

🔹 Vector
Современная альтернатива Logstash и Fluentd, очень эффективен для передачи логов в S3, Kafka, Elasticsearch и другие хранилища.

🔹 Sentry и New Relic
Если нужна агрегация логов и ошибок приложений, используйте Sentry или New Relic. Они позволяют быстро находить проблемные места в коде.

📲 Мы в MAX

Подпишись 👉@devopslib
👍2🔥1
🔹Как DevOps может ускорить CI/CD?

Каждый DevOps-инженер рано или поздно сталкивается с проблемами долгих сборок и развертываний. Чем больше микросервисов, тем сложнее их быстро катить в прод. Давай разберем ключевые методы ускорения CI/CD!

🚀 Кэширование артефактов
Используй кэш для зависимостей и промежуточных сборок. Например, в GitHub Actions можно хранить кэш NPM-модулей или Docker-образов.

⚡ Параллельные джобы
Запускай тесты и сборки в параллель, если твой CI/CD позволяет. Например, в GitLab CI можно указать parallel: 4, чтобы запустить 4 одинаковых джобы.

🐳 Оптимизация Docker-образов
1. Правильный порядок команд в Dockerfile – сначала COPY package.json и RUN npm install, потом сам код.
2. Меньше слоев – объединяй команды RUN через &&.
3. Используй легковесные базовые образы – Alpine вместо Debian.

🔄 Incremental Builds
Используй механизмы buildx в Docker и Bazel для сборки только измененных частей кода. Это снижает нагрузку на CI/CD.

🌍 Локальные runner'ы
Если GitHub Actions или GitLab CI тормозят из-за облачных ресурсов, разворачивай self-hosted runners. Это особенно полезно для проектов с высокой нагрузкой на CI.

📊 Мониторинг CI/CD
Включай метрики (Prometheus + Grafana) и анализируй узкие места пайплайна. Иногда проблема – не в коде, а в ресурсах билд-агентов.

📲 Мы в MAX

Подпишись 👉@devopslib
👍1
🔥 DevOps-антипаттерны, которые мешают вашей инфраструктуре

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

🔹 Хрупкая инфраструктура
Вы выкатываете изменения в прод без тестов, мониторинга и резервных копий? Поздравляю, у вас хрупкая инфраструктура, которая рухнет при первом же сбое.

🔹 Один DevOps-инженер на все задачи
"У нас есть DevOps, он все делает". Такой подход быстро приводит к выгоранию и техническому долгу. DevOps — это культура, а не человек.

🔹 Отсутствие IaC (Infrastructure as Code)
Если вы настраиваете серверы руками, вы уже проиграли. Terraform, Ansible, Pulumi — вот ваши лучшие друзья.

🔹 Логирование в "черную дыру"
Вы собираете логи, но никто их не смотрит? Или, что еще хуже, нет нормального логирования? Тогда успехов в поиске багов "на ощупь".

🔹 "Работает — не трогай"
Этот принцип может убить ваш прод. Обновления закрывают уязвимости, повышают стабильность и улучшают производительность. Если у вас все еще Kubernetes 1.18 или Ubuntu 16.04 — пора задуматься.

🔹 CI/CD с кучей ручных шагов
Если ваш деплой требует 10 шагов в Confluence и ручного одобрения от трех человек, это не CI/CD, а боль. Автоматизируйте!

🚀 Что делать?
Пересмотрите свою инфраструктуру, уберите устаревшие практики и не допускайте этих ошибок. DevOps — про эффективность, а не про героизм в 3 часа ночи.

🔥 DevOps-антипаттерны, которые мешают вашей инфраструктуре

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

🔹 Хрупкая инфраструктура
Вы выкатываете изменения в прод без тестов, мониторинга и резервных копий? Поздравляю, у вас хрупкая инфраструктура, которая рухнет при первом же сбое.

🔹 Один DevOps-инженер на все задачи
"У нас есть DevOps, он все делает". Такой подход быстро приводит к выгоранию и техническому долгу. DevOps — это культура, а не человек.

🔹 Отсутствие IaC (Infrastructure as Code)
Если вы настраиваете серверы руками, вы уже проиграли. Terraform, Ansible, Pulumi — вот ваши лучшие друзья.

🔹 Логирование в "черную дыру"
Вы собираете логи, но никто их не смотрит? Или, что еще хуже, нет нормального логирования? Тогда успехов в поиске багов "на ощупь".

🔹 "Работает — не трогай"
Этот принцип может убить ваш прод. Обновления закрывают уязвимости, повышают стабильность и улучшают производительность. Если у вас все еще Kubernetes 1.18 или Ubuntu 16.04 — пора задуматься.

🔹 CI/CD с кучей ручных шагов
Если ваш деплой требует 10 шагов в Confluence и ручного одобрения от трех человек, это не CI/CD, а боль. Автоматизируйте!

🚀 Что делать?
Пересмотрите свою инфраструктуру, уберите устаревшие практики и не допускайте этих ошибок. DevOps — про эффективность, а не про героизм в 3 часа ночи.

📲 Мы в MAX

Подпишись 👉@devopslib
👍2