Трюки для ускорения Docker-образов на проде
Контейнеры — сердце современных приложений. Но тяжёлые образы = медленные деплои и высокие затраты. Как ускорить образы без боли?
Мультистейдж билды — must have
Используй multi-stage builds, чтобы собрать приложение в одном контейнере, а продакшн-образ сделать минимальным:
Минимизируй базовые образы
Выбирай облегчённые базовые образы:
• alpine вместо ubuntu
• distroless для максимальной безопасности и минимального веса
Оптимизируй порядок слоёв
Чем выше изменяемость — тем ниже слой:
• Сначала COPY go.mod, npm package.json, установка зависимостей
• Потом COPY . . с кодом проекта
Это позволяет кэшировать большую часть слоёв даже при частых изменениях кода.
Чисть за собой
Всегда удаляй временные файлы и зависимости для сборки:
Сжимай образы
Используй docker-slim — он автоматически оптимизирует образ, удаляя всё ненужное:
Как применять и чего избегать
• В продакшне старайся держать образы <100MB
• Не добавляй лишние пакеты “на всякий случай”
• Проверяй образы на уязвимости: trivy image your-app:tag
#devops #девопс
Подпишись 👉@i_DevOps
Контейнеры — сердце современных приложений. Но тяжёлые образы = медленные деплои и высокие затраты. Как ускорить образы без боли?
Мультистейдж билды — must have
Используй multi-stage builds, чтобы собрать приложение в одном контейнере, а продакшн-образ сделать минимальным:
# Сборка
FROM golang:1.22 as builder
WORKDIR /app
COPY . .
RUN go build -o app
# Продакшн
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]Минимизируй базовые образы
Выбирай облегчённые базовые образы:
• alpine вместо ubuntu
• distroless для максимальной безопасности и минимального веса
Оптимизируй порядок слоёв
Чем выше изменяемость — тем ниже слой:
• Сначала COPY go.mod, npm package.json, установка зависимостей
• Потом COPY . . с кодом проекта
Это позволяет кэшировать большую часть слоёв даже при частых изменениях кода.
Чисть за собой
Всегда удаляй временные файлы и зависимости для сборки:
RUN apt-get install -y build-essential && \
make build && \
apt-get remove --purge -y build-essential && \
apt-get autoremove -y && \
apt-get cleanСжимай образы
Используй docker-slim — он автоматически оптимизирует образ, удаляя всё ненужное:
docker-slim build --http-probe my-app:latestКак применять и чего избегать
• В продакшне старайся держать образы <100MB
• Не добавляй лишние пакеты “на всякий случай”
• Проверяй образы на уязвимости: trivy image your-app:tag
#devops #девопс
Подпишись 👉@i_DevOps
👍6❤2
Bruno — это новый, современный и удобный инструмент для работы с API. В отличие от Postman и аналогов, Bruno хранит все данные локально в виде обычных файлов и папок, что позволяет легко версионировать их с помощью Git.
Основные особенности:
- Локальное хранение данных без облака
- Полная совместимость с Git
- Высокая производительность и минималистичный интерфейс
- Открытый исходный код
https://github.com/usebruno/bruno
#devops #девопс
Подпишись 👉@i_DevOps
Основные особенности:
- Локальное хранение данных без облака
- Полная совместимость с Git
- Высокая производительность и минималистичный интерфейс
- Открытый исходный код
https://github.com/usebruno/bruno
#devops #девопс
Подпишись 👉@i_DevOps
👍8❤1💩1
Работа с хранилищами в Kubernetes: руководство для инженеров
Как DevOps-инженер я часто сталкиваюсь с необходимостью глубокого понимания тонких аспектов Kubernetes. Одним из таких ключевых элементов является управление хранилищем данных. Хотя этот элемент иногда остаётся в тени других задач, его важность для успешного развёртывания и поддержки приложений велика.
Накопленный мною опыт в этой области стал основой для этой статьи.
Я сфокусируюсь на трёх ключевых элементах управления хранилищем в Kubernetes:
PersistentVolumes (PV).
PersistentVolumeClaims (PVC).
Storage Classes.
https://habr.com/ru/companies/T1Holding/articles/781368/
#devops #девопс
Подпишись 👉@i_DevOps
Как DevOps-инженер я часто сталкиваюсь с необходимостью глубокого понимания тонких аспектов Kubernetes. Одним из таких ключевых элементов является управление хранилищем данных. Хотя этот элемент иногда остаётся в тени других задач, его важность для успешного развёртывания и поддержки приложений велика.
Накопленный мною опыт в этой области стал основой для этой статьи.
Я сфокусируюсь на трёх ключевых элементах управления хранилищем в Kubernetes:
PersistentVolumes (PV).
PersistentVolumeClaims (PVC).
Storage Classes.
https://habr.com/ru/companies/T1Holding/articles/781368/
#devops #девопс
Подпишись 👉@i_DevOps
👍5❤1
Вы CTO или хотите им стать?
Управление качеством — это не просто исправление ошибок. Это предотвращение проблем до их появления. На нашем бесплатном вебинаре мы расскажем, как именно CTO может проактивно управлять качеством в своих проектах и минимизировать риски.
🔑 Что узнаете на вебинаре:
· Как выявлять риски до внедрения, а не после провала
· Инструменты превентивного анализа: тест-дизайн, Code Review, метрики и автоматизация
· Почему ответственность за качество лежит не только на тестировщиках, а на всей команде
🚀 Кому будет полезно: CTO, руководителям разработки, QA-лидам и тех-менеджерам, которые хотят выстроить эффективную систему контроля качества и избежать ошибок на ранних этапах.
🎓 Понравится вебинар - приходите на курс «CTO / Технический директор» со скидкой по промокоду BIRDS_CTO.
🔗 Зарегистрироваться на вебинар: https://vk.cc/cLofpK
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Управление качеством — это не просто исправление ошибок. Это предотвращение проблем до их появления. На нашем бесплатном вебинаре мы расскажем, как именно CTO может проактивно управлять качеством в своих проектах и минимизировать риски.
🔑 Что узнаете на вебинаре:
· Как выявлять риски до внедрения, а не после провала
· Инструменты превентивного анализа: тест-дизайн, Code Review, метрики и автоматизация
· Почему ответственность за качество лежит не только на тестировщиках, а на всей команде
🚀 Кому будет полезно: CTO, руководителям разработки, QA-лидам и тех-менеджерам, которые хотят выстроить эффективную систему контроля качества и избежать ошибок на ранних этапах.
🎓 Понравится вебинар - приходите на курс «CTO / Технический директор» со скидкой по промокоду BIRDS_CTO.
🔗 Зарегистрироваться на вебинар: https://vk.cc/cLofpK
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔥1
CI/CD без боли: оптимизация пайплайнов на GitHub Actions 🚀
GitHub Actions — мощный инструмент, но без оптимизации ваш пайплайн легко превратится в тормозную мясорубку. Разбираемся, как выжать максимум из CI/CD на GitHub.
Почему это важно:
Быстрые и надёжные пайплайны — ключ к высокой скорости доставки. Медленные сборки = потеря времени, нервов и денег.
1. Кэшируй разумно
Используй
⚠️ Ключ должен быть завязан на lock-файлы, иначе можно словить конфликты версий.
2. Делай job-ы параллельными
Разделяй пайплайн на независимые шаги — unit-тесты, линтеры, сборка. Добавляй
3. Matrix strategy — must-have
Хочешь тестировать на разных версиях языка/ОС? Используй
Это масштабирует проверку без дублирования кода.
4. Отключи ненужные события
Не запускай воркфлоу на каждом чихе. Используй
Это поможет не перегружать runners.
5. Используй
Иногда надо протестить пайплайн руками — не бойся добавить ручной триггер:
6. Логи и таймауты — твои друзья
Добавляй
Вывод:
Грамотно настроенный GitHub Actions экономит время и снижает головную боль. Избегай монолитных пайплайнов, кэшируй умно и тестируй только то, что нужно. Автоматизация — это про контроль, а не хаос.
#devops #девопс
Подпишись 👉@i_DevOps
GitHub Actions — мощный инструмент, но без оптимизации ваш пайплайн легко превратится в тормозную мясорубку. Разбираемся, как выжать максимум из CI/CD на GitHub.
Почему это важно:
Быстрые и надёжные пайплайны — ключ к высокой скорости доставки. Медленные сборки = потеря времени, нервов и денег.
1. Кэшируй разумно
Используй
actions/cache для ускорения зависимостей, но не кэшируй всё подряд. Пример для Node.js:
- uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
⚠️ Ключ должен быть завязан на lock-файлы, иначе можно словить конфликты версий.
2. Делай job-ы параллельными
Разделяй пайплайн на независимые шаги — unit-тесты, линтеры, сборка. Добавляй
needs: там, где реально нужно, а не везде.3. Matrix strategy — must-have
Хочешь тестировать на разных версиях языка/ОС? Используй
matrix:
strategy:
matrix:
node-version: [16, 18, 20]
Это масштабирует проверку без дублирования кода.
4. Отключи ненужные события
Не запускай воркфлоу на каждом чихе. Используй
on: грамотно:
on:
push:
branches:
- main
pull_request:
paths:
- 'src/**'
Это поможет не перегружать runners.
5. Используй
workflow_dispatch для ручных запусков Иногда надо протестить пайплайн руками — не бойся добавить ручной триггер:
on:
workflow_dispatch:
6. Логи и таймауты — твои друзья
Добавляй
timeout-minutes к job-ам и выводи ключевые логи через ::group:: и ::endgroup::, чтобы не утонуть в консоли.Вывод:
Грамотно настроенный GitHub Actions экономит время и снижает головную боль. Избегай монолитных пайплайнов, кэшируй умно и тестируй только то, что нужно. Автоматизация — это про контроль, а не хаос.
#devops #девопс
Подпишись 👉@i_DevOps
👍9
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Docker
01- Основы. Принцип работы. Почему docker. Сравнение с виртульной машиной. Применение.
02- Установка Docker в Linux и Windows.
03- Основные команды. Управление портами. Port Mapping.
04- Переменные. Environment Variables.
05- Volumes. Постоянные данные. Persisting Data.
06- Сети в докер. Network: bridge, host, none, macvlan, ipvlan
07- Dockerfile. Создаем СВОИ контейнеры.
08- Docker-COMPOSE. Простой запуск контейнеров.
09- Portainer. Управлять Docker ПРОСТО. Обзор, установка, настройка.
10- Watchtower. Автоматизация: обновление Docker контейнеров.
источник
#devops #девопс
Подпишись 👉@i_DevOps
01- Основы. Принцип работы. Почему docker. Сравнение с виртульной машиной. Применение.
02- Установка Docker в Linux и Windows.
03- Основные команды. Управление портами. Port Mapping.
04- Переменные. Environment Variables.
05- Volumes. Постоянные данные. Persisting Data.
06- Сети в докер. Network: bridge, host, none, macvlan, ipvlan
07- Dockerfile. Создаем СВОИ контейнеры.
08- Docker-COMPOSE. Простой запуск контейнеров.
09- Portainer. Управлять Docker ПРОСТО. Обзор, установка, настройка.
10- Watchtower. Автоматизация: обновление Docker контейнеров.
источник
#devops #девопс
Подпишись 👉@i_DevOps
👍10
📕MySQL для администраторов, разработчиков, архитекторов и специалистов баз данных
Как грамотно оптимизировать производительность в MySQL и решить возникающие проблемы.
📗 На вебинаре 6 мая в 19:00 разберём:
1. Практические методы оптимизации производительности, диагностику нагрузки и анализ "узких мест" MySQL;
2. Оптимизацию запросов: от простых до сложных.
📘 В результате будете знать всё о настройке ключевых параметров конфигурации, уметь самостоятельно диагностировать и решать проблемы производительности MySQL.
👉 Регистрация и подробности о курсе Базы данных: https://vk.cc/cLzNes
Все участники открытого урока получат скидку на курс
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Как грамотно оптимизировать производительность в MySQL и решить возникающие проблемы.
📗 На вебинаре 6 мая в 19:00 разберём:
1. Практические методы оптимизации производительности, диагностику нагрузки и анализ "узких мест" MySQL;
2. Оптимизацию запросов: от простых до сложных.
📘 В результате будете знать всё о настройке ключевых параметров конфигурации, уметь самостоятельно диагностировать и решать проблемы производительности MySQL.
👉 Регистрация и подробности о курсе Базы данных: https://vk.cc/cLzNes
Все участники открытого урока получат скидку на курс
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Освоение журналов аудита Kubernetes
Kubernetes предоставляет мощный инструмент, позволяющий создавать журналы аудита для каждого действия, запрашиваемого и выполняемого через API Kubernetes.
Понимание того, как настраивать, управлять и интерпретировать эти журналы, критически важно для поддержания безопасности и соответствия требованиям в средах Kubernetes. Конкретно эта статья посвящена исследованию безопасности Kubernetes.
https://habr.com/ru/articles/815119/
#devops #девопс
Подпишись 👉@i_DevOps
Kubernetes предоставляет мощный инструмент, позволяющий создавать журналы аудита для каждого действия, запрашиваемого и выполняемого через API Kubernetes.
Понимание того, как настраивать, управлять и интерпретировать эти журналы, критически важно для поддержания безопасности и соответствия требованиям в средах Kubernetes. Конкретно эта статья посвящена исследованию безопасности Kubernetes.
https://habr.com/ru/articles/815119/
#devops #девопс
Подпишись 👉@i_DevOps
👍4
Как определить, какая версия Docker установлена: Docker Desktop или Docker Engine
Docker стал лидером в предоставлении решений для разработки программного обеспечения, предлагая инструменты, которые упрощают процесс разработки, тестирования, развертывания и запуска приложений с использованием контейнеров. Поэтому понимание различных продуктов Docker, таких как Docker Desktop, и компонентов, таких как Docker Engine, а также того, как они взаимодействуют, крайне важно для разработчиков, стремящихся к максимальной продуктивности и соблюдению условий лицензирования Docker.
В этой статье будут разъяснены различия и сходства между Docker Desktop и Docker Engine, а также приведены рекомендации по определению, какой из них используется в данный момент, чтобы вы могли максимально эффективно использовать возможности Docker.
https://www.docker.com/blog/how-to-check-docker-version/
#devops #девопс
Подпишись 👉@i_DevOps
Docker стал лидером в предоставлении решений для разработки программного обеспечения, предлагая инструменты, которые упрощают процесс разработки, тестирования, развертывания и запуска приложений с использованием контейнеров. Поэтому понимание различных продуктов Docker, таких как Docker Desktop, и компонентов, таких как Docker Engine, а также того, как они взаимодействуют, крайне важно для разработчиков, стремящихся к максимальной продуктивности и соблюдению условий лицензирования Docker.
В этой статье будут разъяснены различия и сходства между Docker Desktop и Docker Engine, а также приведены рекомендации по определению, какой из них используется в данный момент, чтобы вы могли максимально эффективно использовать возможности Docker.
https://www.docker.com/blog/how-to-check-docker-version/
#devops #девопс
Подпишись 👉@i_DevOps
👍5
🚀 Опубликована программа конференции «БеКон 2025». Глубина погружения в тему безопасности контейнеров в этом году продолжает держать планку прошлых «БеКонов».
Ключевые доклады:
☁️ Как безопасно организовать аутентификацию в облаке
🐳 Kubernetes: неочевидные подводные камни для экспертов
🌐 Cilium: расширение сетевых политик — зачем и как?
📦 Безопасная сборка образов контейнеров: инструменты и лучшие практики
🛡️ Kyverno — тонкости настройки
🖥️OS Talos: эффективная эксплуатация без головной боли
📝 Требования ФСТЭК для контейнеров и кластеров
🚫 Control Plane Kubernetes: как ограничить доступ пользователям
🐧 Настройки Linux, опасные для контейнеров
🤖 ML-кластеры: обеспечение безопасности
⚠️ Важно: Билеты подорожают после майских праздников. Бронируйте места сейчас, пока действует текущий тариф.
👉 Также будет полезно подписаться на канал конференции @bekon_conf, чтобы быть в курсе всех деталей и не пропустить розыгрыши призов.
Ключевые доклады:
☁️ Как безопасно организовать аутентификацию в облаке
🐳 Kubernetes: неочевидные подводные камни для экспертов
🌐 Cilium: расширение сетевых политик — зачем и как?
📦 Безопасная сборка образов контейнеров: инструменты и лучшие практики
🛡️ Kyverno — тонкости настройки
🖥️OS Talos: эффективная эксплуатация без головной боли
📝 Требования ФСТЭК для контейнеров и кластеров
🚫 Control Plane Kubernetes: как ограничить доступ пользователям
🐧 Настройки Linux, опасные для контейнеров
🤖 ML-кластеры: обеспечение безопасности
⚠️ Важно: Билеты подорожают после майских праздников. Бронируйте места сейчас, пока действует текущий тариф.
👉 Также будет полезно подписаться на канал конференции @bekon_conf, чтобы быть в курсе всех деталей и не пропустить розыгрыши призов.
🚨 Helm: как не сломать прод — 5 ошибок, которые делают все
Helm — must-have инструмент для деплоя в Kubernetes. Но даже опытные инженеры наступают на одни и те же грабли, особенно в проде. Разберём, какие ошибки чаще всего приводят к падениям и багам.
🔸 1.
Без
Решение: всегда используйте
🔸 2. Забытый
Нередко инженеры коммитят
Решение:
* Разделяй values по окружениям (
* Используй
* Применяй валидацию с helm-schema-gen
🔸 3. Не pinned зависимости в
Если чарты-зависимости подтягиваются без фиксации версий (
Решение:
Фиксируй зависимости чётко:
🔸 4. Отсутствие pre-upgrade и post-upgrade хуков
Если приложение требует миграций БД или прогрева кэша, а хуки не заданы — велика вероятность получить нерабочий релиз.
Решение:
Определи хуки в
🔸 5. Helm secrets хранятся в чистом виде в Git
Распакованный
Решение:
* Используй helm-secrets с
* Шифруй
✅ Вывод:
Helm — мощный, но не прощающий ошибок инструмент. Настрой atomic деплой, следи за values и зависимостями, автоматизируй pre/post-хуки и защищай секреты. Это минимальный чеклист для прод-готовности.
#devops #девопс
Подпишись 👉@i_DevOps
Helm — must-have инструмент для деплоя в Kubernetes. Но даже опытные инженеры наступают на одни и те же грабли, особенно в проде. Разберём, какие ошибки чаще всего приводят к падениям и багам.
🔸 1.
helm upgrade без флага --atomicБез
--atomic Helm не откатывает релиз при ошибке — в кластере остаётся полусломанное состояние.Решение: всегда используйте
--atomic на проде:
helm upgrade my-app ./chart --atomic --install
🔸 2. Забытый
values.yaml с тестовыми значениямиНередко инженеры коммитят
values.yaml с включёнными debug-логами, выключенным HPA и отключённым SSL.Решение:
* Разделяй values по окружениям (
values-prod.yaml, values-staging.yaml)* Используй
.gitignore для временных файлов* Применяй валидацию с helm-schema-gen
🔸 3. Не pinned зависимости в
Chart.yamlЕсли чарты-зависимости подтягиваются без фиксации версий (
version: ^1.2.3), то обновления могут неожиданно всё сломать.Решение:
Фиксируй зависимости чётко:
version: 1.2.3 и контролируй обновления вручную.🔸 4. Отсутствие pre-upgrade и post-upgrade хуков
Если приложение требует миграций БД или прогрева кэша, а хуки не заданы — велика вероятность получить нерабочий релиз.
Решение:
Определи хуки в
templates/hooks.yaml:
apiVersion: batch/v1
kind: Job
metadata:
annotations:
"helm.sh/hook": pre-upgrade
🔸 5. Helm secrets хранятся в чистом виде в Git
Распакованный
secrets.yaml в Git — это инцидент.Решение:
* Используй helm-secrets с
sops* Шифруй
secrets.yaml и расшифровывай только при деплое:
helm secrets upgrade my-app -f secrets.enc.yaml
✅ Вывод:
Helm — мощный, но не прощающий ошибок инструмент. Настрой atomic деплой, следи за values и зависимостями, автоматизируй pre/post-хуки и защищай секреты. Это минимальный чеклист для прод-готовности.
#devops #девопс
Подпишись 👉@i_DevOps
👍5
Netshoot — набор инструментов для устранения сетевых проблем с Docker и Kubernetes.
Отладка сетей Docker и Kubernetes может быть сложной. Однако при правильном понимании принципов работы сетей Docker и Kubernetes, а также наличии подходящих инструментов, вы сможете эффективно выявлять и устранять сетевые проблемы. Контейнер netshoot включает в себя мощный набор инструментов для диагностики сетевых проблем в Docker. Вместе с этими инструментами идут практические примеры, демонстрирующие, как netshoot можно использовать в реальных сценариях.
https://github.com/nicolaka/netshoot
#devops #девопс
Подпишись 👉@i_DevOps
Отладка сетей Docker и Kubernetes может быть сложной. Однако при правильном понимании принципов работы сетей Docker и Kubernetes, а также наличии подходящих инструментов, вы сможете эффективно выявлять и устранять сетевые проблемы. Контейнер netshoot включает в себя мощный набор инструментов для диагностики сетевых проблем в Docker. Вместе с этими инструментами идут практические примеры, демонстрирующие, как netshoot можно использовать в реальных сценариях.
https://github.com/nicolaka/netshoot
#devops #девопс
Подпишись 👉@i_DevOps
👍9❤1