Быстрый совет по Bash: массовое переименование файлов с помощью
Команда
👉 DevOps Portal
renameКоманда
rename позволяет заменить один шаблон на другой сразу в нескольких именах файлов. В этом примере все расширения файлов .html в текущем каталоге преобразуются в .php.Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤5
This media is not supported in your browser
VIEW IN TELEGRAM
Nerdlog — tui-инструмент для работы с логами на локальных и удалённых хостах.
🔹 Не требует централизованного сервера — взаимодействие с удалёнными машинами происходит через SSH
🔹 Логи не скачиваются целиком — обработка выполняется на удалённой стороне, в интерфейс передаётся уже результат
🔹 Для удобства просмотра реализованы таймлайн и гистограмма
Статья с подробностями: dmitryfrank.com/projects/nerdlog/article
Репозиторий: github.com/dimonomid/nerdlog
👉 DevOps Portal
Статья с подробностями: dmitryfrank.com/projects/nerdlog/article
Репозиторий: github.com/dimonomid/nerdlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤2🤯1
Быстрый совет по Linux
Если у вас возникают проблемы с чтением каталогов в переменной
👉 DevOps Portal
Если у вас возникают проблемы с чтением каталогов в переменной
$PATH, используйте команду tr, чтобы заменить двоеточия (":") на символы новой строки ("\n"), чтобы отобразить их построчно:$ echo $PATH | tr ":" "\n"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30❤11
Быстрый совет по Docker Compose
Обновление версии образа у запущенного контейнера
Да, это возможно в Docker и практически без простоев.
В блоке
Эта конфигурация лучше всего работает в сочетании с опцией
Примечание: наилучший результат достигается при использовании семантического версионирования образов.
👉 DevOps Portal
Обновление версии образа у запущенного контейнера
Да, это возможно в Docker и практически без простоев.
В блоке
services необходимо определить параметры deploy (как на изображении выше). Важным параметром здесь является order. Он указывает Docker сначала создать и запустить новый контейнер с обновлённой версией образа. После запуска нового контейнера трафик будет перенаправлен на него, а старый контейнер будет остановлен и удалён.Эта конфигурация лучше всего работает в сочетании с опцией
replicas, чтобы развернуть несколько экземпляров одного и того же контейнера и обеспечить высокую доступность.Примечание: наилучший результат достигается при использовании семантического версионирования образов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤4
Основы сетевых пространств имён в Linux
Прежде чем переходить к Docker и Kubernetes, стоит разобраться в базовых технологиях:
🔹 Создание сетевого пространства имён в Linux: https://labs.iximiuz.com/challenges/linux-network-namespace
🔹 Соединение двух сетевых пространств имён: https://labs.iximiuz.com/challenges/connect-two-network-namespaces
🔹 Соединение нескольких сетевых пространств имён: https://labs.iximiuz.com/challenges/connect-multiple-network-namespaces
👉 DevOps Portal
Прежде чем переходить к Docker и Kubernetes, стоит разобраться в базовых технологиях:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤3
Ошибка в безопасности Docker, которую упускают даже сеньоры:
Не добавлять файл
Если не исключить
Совет: всегда добавляйте
👉 DevOps Portal
Не добавлять файл
.dockerignore с исключением .env — огромный риск.Если не исключить
.env из процесса сборки Docker, переменные окружения, включая API-ключи, учетные данные к БД и другие секреты, попадают прямо в образ.Совет: всегда добавляйте
.env и другие чувствительные файлы в .dockerignore.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥12
Быстрый совет по Linux
Хватит управлять SSH-подключениями вручную!
Используй блоки
С конфигом, как ниже, достаточно просто:
👉 DevOps Portal
Хватит управлять SSH-подключениями вручную!
Используй блоки
Host в ~/.ssh/config.С конфигом, как ниже, достаточно просто:
$ ssh dev-server
Please open Telegram to view this post
VIEW IN TELEGRAM
❤26👍12🔥3🤯2
Недавно Docker добавил новую функциональность под названием Docker Bake, которая предназначена для управления сложными сборками
Если у вас есть разные сборки для различных стадий CI, таких как lint, test и другие, этот инструмент поможет вам управлять сборками в более декларативной и упрощённой форме.
Также он подходит для проектов, использующих monorepo-архитектуру, но с разнообразными сборками.
Отлично совместим с docker-compose.
Docker Bake теперь официально доступен в Docker Desktop 4.38!
Подробнее в блоге Docker: https://www.docker.com/blog/ga-launch-docker-bake/
👉 DevOps Portal
Если у вас есть разные сборки для различных стадий CI, таких как lint, test и другие, этот инструмент поможет вам управлять сборками в более декларативной и упрощённой форме.
Также он подходит для проектов, использующих monorepo-архитектуру, но с разнообразными сборками.
Отлично совместим с docker-compose.
Docker Bake теперь официально доступен в Docker Desktop 4.38!
Подробнее в блоге Docker: https://www.docker.com/blog/ga-launch-docker-bake/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥5🤔1
Не позволяйте одному контейнеру съедать всю память сервера
Устанавливайте ограничения по памяти в Docker с помощью флага
👉 DevOps Portal
Устанавливайте ограничения по памяти в Docker с помощью флага
--memory или в файле Compose.Please open Telegram to view this post
VIEW IN TELEGRAM
❤21👍10🔥4
Многие DevOps-инженеры не до конца понимают структуру директории Ansible и то, как всё связано между собой.
Вот шпаргалка, которая поможет лучше разобраться
👉 DevOps Portal
Вот шпаргалка, которая поможет лучше разобраться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍15🔥2🥱2
Когда-нибудь хотелось просто «запрыгнуть» в работающий Docker-контейнер?
Именно для этого и существует
Нужно отладить что-то или посмотреть логи?
На фото краткая шпаргалка, которая точно пригодится
👉 DevOps Portal
Именно для этого и существует
docker execНужно отладить что-то или посмотреть логи?
exec позволяет запускать любые команды внутри контейнера без его перезапуска.На фото краткая шпаргалка, которая точно пригодится
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥6❤2😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Утилита для мониторинга передачи данных
Недавно я занимался миграцией веб-сайта, в рамках которой нужно было вручную перенести данные из SQL-файла на ноутбуке в новую базу данных MySQL (RDS). Размер файла составлял примерно 450 МБ.
Мне нужно было отслеживать прогресс импорта, и я узнал об утилите Pipe Viewer (pv).
Pipe Viewer, или просто pv, — это инструмент командной строки, позволяющий отслеживать прогресс передачи данных.
Вот команду, которую я использовал:
Пример вывода:
Утилиту можно встроить в любой стандартный конвейер (pipeline) между двумя процессами, чтобы наглядно отображать скорость передачи данных, затраченное время, степень завершённости и примерное оставшееся время до окончания операции.
Возможности:
🔹 Визуальный индикатор прогресса
🔹 Оценка оставшегося времени
🔹 Задержка
Утилиту необходимо установить через соответствующий пакетный менеджер.
Инструмент: https://ivarch.com/programs/pv.shtml
👉 DevOps Portal
Недавно я занимался миграцией веб-сайта, в рамках которой нужно было вручную перенести данные из SQL-файла на ноутбуке в новую базу данных MySQL (RDS). Размер файла составлял примерно 450 МБ.
Мне нужно было отслеживать прогресс импорта, и я узнал об утилите Pipe Viewer (pv).
Pipe Viewer, или просто pv, — это инструмент командной строки, позволяющий отслеживать прогресс передачи данных.
Вот команду, которую я использовал:
pv backup.sql | mysql -h rds.amazonaws.com -u bibinwilson -p my_db
Пример вывода:
80.0MiB 0:08:36 [ 158KiB/s]
[==================================>] 100%
Утилиту можно встроить в любой стандартный конвейер (pipeline) между двумя процессами, чтобы наглядно отображать скорость передачи данных, затраченное время, степень завершённости и примерное оставшееся время до окончания операции.
Возможности:
Утилиту необходимо установить через соответствующий пакетный менеджер.
Инструмент: https://ivarch.com/programs/pv.shtml
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤6
This media is not supported in your browser
VIEW IN TELEGRAM
Если вы инженер DevOps и ещё не слышали о метриках DORA — пора это исправить.
DORA расшифровывается как DevOps Research and Assessment (исследование и оценка практик DevOps).
Эта команда стоит за отчётом State of DevOps — ключевым источником информации о том, что действительно отличает высокоэффективные инженерные команды.
Но как метрики DORA применяются в реальных командах?
Вот как их можно отслеживать и даже создавать дашборды для визуализации:
🔹 Частота деплоев (Deployment Frequency):
Отслеживайте количество деплоев через вашу CI/CD-платформу (GitHub Actions, GitLab, Jenkins и т.д.). Отправляйте данные о деплоях в систему метрик, такую как Prometheus, Datadog или даже Google Sheets через webhook.
🔹 Время выполнения изменений (Lead Time for Changes):
Используйте временные метки Git-коммитов и событий деплоя в прод. Интегрируйте инструменты вроде Jira с GitHub или GitLab. Данные можно визуализировать в Grafana или Looker.
🔹 Процент неудачных изменений (Change Failure Rate):
Интегрируйте инструменты управления инцидентами (PagerDuty, Opsgenie и т.д.) с логами деплоя. Коррелируйте инциденты с последними релизами. Это можно отслеживать в Grafana, Datadog или даже в Excel (для небольших команд).
🔹 Время восстановления сервиса (Time to Restore Service):
Используйте системы алёртов, такие как Prometheus Alertmanager, Splunk или New Relic. Измеряйте время от срабатывания алёрта до полного устранения инцидента. Визуализируйте тренды на дашборде для контроля MTTR (среднего времени восстановления).
🔹 Надёжность (Reliability):
Определите SLO (например, аптайм 99.9%) и отслеживайте их с помощью мониторинга SLI/SLO в Prometheus, Datadog или Nobl9. Визуализируйте бюджеты ошибок и аптайм во времени.
Инструменты вроде Grafana, Looker, Power BI или Tableau отлично подходят для создания кастомных дашбордов.
Не обязательно внедрять всё сразу.
Выберите одну метрику. Постройте простой дашборд. И постепенно улучшайте подход.
👉 DevOps Portal
DORA расшифровывается как DevOps Research and Assessment (исследование и оценка практик DevOps).
Эта команда стоит за отчётом State of DevOps — ключевым источником информации о том, что действительно отличает высокоэффективные инженерные команды.
Но как метрики DORA применяются в реальных командах?
Вот как их можно отслеживать и даже создавать дашборды для визуализации:
Отслеживайте количество деплоев через вашу CI/CD-платформу (GitHub Actions, GitLab, Jenkins и т.д.). Отправляйте данные о деплоях в систему метрик, такую как Prometheus, Datadog или даже Google Sheets через webhook.
Используйте временные метки Git-коммитов и событий деплоя в прод. Интегрируйте инструменты вроде Jira с GitHub или GitLab. Данные можно визуализировать в Grafana или Looker.
Интегрируйте инструменты управления инцидентами (PagerDuty, Opsgenie и т.д.) с логами деплоя. Коррелируйте инциденты с последними релизами. Это можно отслеживать в Grafana, Datadog или даже в Excel (для небольших команд).
Используйте системы алёртов, такие как Prometheus Alertmanager, Splunk или New Relic. Измеряйте время от срабатывания алёрта до полного устранения инцидента. Визуализируйте тренды на дашборде для контроля MTTR (среднего времени восстановления).
Определите SLO (например, аптайм 99.9%) и отслеживайте их с помощью мониторинга SLI/SLO в Prometheus, Datadog или Nobl9. Визуализируйте бюджеты ошибок и аптайм во времени.
Инструменты вроде Grafana, Looker, Power BI или Tableau отлично подходят для создания кастомных дашбордов.
Не обязательно внедрять всё сразу.
Выберите одну метрику. Постройте простой дашборд. И постепенно улучшайте подход.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Освойте деплойменты в Kubernetes
Нашел практическое задание, которое поможет разобраться, как работают Deployment'ы — от их создания до масштабирования, обновления образов, проверки состояния Pod'ов и отката изменений.
Отлично подходит для практики реальных операций, стоящих за
Попробуйте здесь
👉 DevOps Portal
Нашел практическое задание, которое поможет разобраться, как работают Deployment'ы — от их создания до масштабирования, обновления образов, проверки состояния Pod'ов и отката изменений.
Отлично подходит для практики реальных операций, стоящих за
kubectl apply/create и kubectl rollout.Попробуйте здесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥3❤2
Kubernetes 1.33 (кодовое имя Octarine) был выпущен чуть более двух недель назад
В релиз вошли 64 улучшения (!!), поэтому полезно иметь краткий и наглядный обзор.
Визуальный разбор Kubernetes 1.33:
https://dev.to/aurelievache/understanding-kubernetes-part-55-kubernetes-133-changelog-1k5l
Подробности о релизе доступны в официальных примечаниях к релизу Kubernetes 1.33 и релиз-нотах GKE 1.33.
👉 DevOps Portal
В релиз вошли 64 улучшения (!!), поэтому полезно иметь краткий и наглядный обзор.
Визуальный разбор Kubernetes 1.33:
https://dev.to/aurelievache/understanding-kubernetes-part-55-kubernetes-133-changelog-1k5l
Подробности о релизе доступны в официальных примечаниях к релизу Kubernetes 1.33 и релиз-нотах GKE 1.33.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2
Паттерны проброса портов в Kubernetes
Вы находитесь внутри dev-кластера, доступ к сети ограничен, и только что задеплоенный сервис ведёт себя некорректно.
Нет ни LoadBalancer'а, ни ingress-контроллера, а открыть порт — не вариант, потому что сетевая команда либо медлит, либо отказывает.
В этом случае вас выручает
Здесь представлена упрощённая схема для наглядного понимания.
👉 DevOps Portal
Вы находитесь внутри dev-кластера, доступ к сети ограничен, и только что задеплоенный сервис ведёт себя некорректно.
Нет ни LoadBalancer'а, ни ingress-контроллера, а открыть порт — не вариант, потому что сетевая команда либо медлит, либо отказывает.
В этом случае вас выручает
kubectl port-forward.Здесь представлена упрощённая схема для наглядного понимания.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🥱2
Совет дня по Linux
Большинство людей используют
Но в многих случаях его также можно использовать, чтобы избежать ошибок
👉 DevOps Portal
Большинство людей используют
echo для вывода информацииНо в многих случаях его также можно использовать, чтобы избежать ошибок
echo позволяет развернуть подстановочные знаки и понять, что произойдёт, ещё до выполнения команды.Please open Telegram to view this post
VIEW IN TELEGRAM
👍45🔥13❤5
Почему
Несмотря на то, что эта команда используется почти в каждом Dockerfile, включая некоторые «рекомендованные» Dockerfile, сгенерированные такими инструментами, как
Я нашел практическое задание, иллюстрирующее эту проблему:
https://labs.iximiuz.com/challenges/graceful-termination-for-nodejs-container
Попробуйте его пройти, если хотите быстро научиться распознавать или избегать эту скрытую проблему в продакшене
👉 DevOps Portal
["npm", "start"] — плохой выбор для инструкции CMD в Dockerfile 👇Несмотря на то, что эта команда используется почти в каждом Dockerfile, включая некоторые «рекомендованные» Dockerfile, сгенерированные такими инструментами, как
create-react-app, использование ["npm", "start"] в CMD приводит к появлению лишней оболочки в дереве процессов контейнера. Это, в частности, может вызывать проблемы с распространением сигналов (signal propagation), что, в свою очередь, нарушает корректное завершение работы контейнеризированного приложения.Я нашел практическое задание, иллюстрирующее эту проблему:
https://labs.iximiuz.com/challenges/graceful-termination-for-nodejs-container
Попробуйте его пройти, если хотите быстро научиться распознавать или избегать эту скрытую проблему в продакшене
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🤯2
Удалённый доступ к Docker-демону с другой машины
Иногда может потребоваться выполнять команды Docker с отдельной машины, на которой установлен только Docker CLI, но не полный движок Docker. Например, Docker работает на вашем домашнем сервере, а вы хотите управлять им с ноутбука или рабочей машины разработчика.
Чтобы это стало возможным, вы можете открыть Docker-демон по протоколу TCP, обновив файл
👉 DevOps Portal
Иногда может потребоваться выполнять команды Docker с отдельной машины, на которой установлен только Docker CLI, но не полный движок Docker. Например, Docker работает на вашем домашнем сервере, а вы хотите управлять им с ноутбука или рабочей машины разработчика.
Чтобы это стало возможным, вы можете открыть Docker-демон по протоколу TCP, обновив файл
daemon.json на сервереPlease open Telegram to view this post
VIEW IN TELEGRAM
👍16❤5
Совет по Linux для DevOps-инженеров
Как получить публичный IP-адрес сервера с помощью команды?
Вы можете использовать
Для AWS и GCP всегда используйте соответствующий сервис метаданных для получения публичного IP-адреса.
Примечание: пожалуйста, не используйте общедоступные сервисы в реальных проектах или в продуктивной среде. Всегда консультируйтесь с командой по информационной безопасности по поводу возможных вариантов.
👉 DevOps Portal
Как получить публичный IP-адрес сервера с помощью команды?
Вы можете использовать
curl и общедоступные сервисы для получения публичного IP-адреса, как показано на изображении.Для AWS и GCP всегда используйте соответствующий сервис метаданных для получения публичного IP-адреса.
Примечание: пожалуйста, не используйте общедоступные сервисы в реальных проектах или в продуктивной среде. Всегда консультируйтесь с командой по информационной безопасности по поводу возможных вариантов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤6