How we diagnosed and resolved Redis latency spikes with BPF and other tools
https://about.gitlab.com/blog/2022/11/28/how-we-diagnosed-and-resolved-redis-latency-spikes/
#devops #девопс
Подпишись 👉@i_DevOps
https://about.gitlab.com/blog/2022/11/28/how-we-diagnosed-and-resolved-redis-latency-spikes/
#devops #девопс
Подпишись 👉@i_DevOps
13 распространенных задач в Kubernetes и способы их решения
Занимательная статья от команды VK Cloud, которая рассказывает о задачах в Kubernetes, с которыми часто сталкиваются инженеры-разработчики при запуске новых масштабируемых отказоустойчивых веб-сервисов. Здесь вы найдете не только их описание, но и подробное руководство к действию и несколько полезных советов.
#devops #девопс
Подпишись 👉@i_DevOps
Занимательная статья от команды VK Cloud, которая рассказывает о задачах в Kubernetes, с которыми часто сталкиваются инженеры-разработчики при запуске новых масштабируемых отказоустойчивых веб-сервисов. Здесь вы найдете не только их описание, но и подробное руководство к действию и несколько полезных советов.
#devops #девопс
Подпишись 👉@i_DevOps
👍5
5 приемов оптимизации сборки Docker-образов
Прием 1 — уменьшаем количество слоев в образе
Уменьшить количество слоев в образе можно сворачиванием нескольких однородных инструкций в одну. Например, несколько логически связанных инструкций RUN можно объединить в одну инструкцию с помощью конвейера Linux:
Прием 2 — удаляем ненужный кэш apt-get
Пакетный менеджер apt-get, обновляя репозиторий, сохраняет кэш, который в большинстве случаев не нужен, и его можно удалить, уменьшив тем самым собираемый образ на 100+ Мбайт. Сделать это совсем несложно, достаточно в инструкции RUN последней командой указать: && rm -f /var/lib/apt/lists/*.
Соединим оба приёма в одну инструкцию:
Такая конструкция работает именно в одной инструкции RUN, если вы вынесете rm -f /var/lib/apt/lists/* в отдельный RUN — ничего не сработает, так как кеш будет очищаться в другом слое, а его обновление будет оставаться в предыдущем слое.
Прием 3 — копируем только нужные файлы проекта в образ с помощью .dockerignore-файла
Обычно для копирования проекта в образ используется инструкция COPY с указанием места расположения проекта, как «.», что указывает на текущею директорию. Такой подход имеет один недостаток — будут скопированы все вложенные подкаталоги и файлы, что может значительно увеличить размер образа.
Исправить ситуацию призван .dockerignore-файл, который работает так же как и .gitignore-файл. В этих файлах указываются те папки и файлы, которые «не надо трогать». Gitignore-файл располагается в корневом каталоге копируемого в образ проекта. Обратите внимание на точку в начале названия файла — «.gitignore», так и должно быть.
Рассмотрим пример работы .gitignore-файла. Например, мы работаем с GIT, и в нашем проекте есть GIT-репозиторий. В образе он нам не нужен, поэтому его можно не копировать, а ещё в образе нам не нужен Dockerfile. Укажем эти файлы в .gitignore-файле:
При сборке образа Docker прочтет .dockerignore-файл и не включит в образ указанные в нем папки и файлы.
Приём 4 — используем минималистические Linux-образа Alpine
Как правило, для сборки образов применяются дистрибутивы Debian, Ubuntu, CentOS. Но это оправдано в том случае, если ваш проект будет использовать всё обилие возможностей ядра и пакетов, которые предоставляет выбранный дистрибутив. Если же вам нужно просто создать контейнер с Nginx или иной другой программой — используйте Alpine-сборки.
Alpine-образ весит считанные мегабайты, а не сотни Мбайт как Debian или Ubuntu, при этом в нём есть всё необходимое для запуска большинства приложений. Например, так выглядит dockerfile Nginx-образа на Alpine-сборке, который занимает 7 Мбайт:
Еще один бесспорный плюс Alpine — скорость сборки образа. Она разительно отличается в лучшую сторону по сравнению со скоростью сборки на любом другом дистрибутиве Linux.
Прием 5 — часто изменяемые слои ставим в конец dockerfile
Слоистая структура Docker-образов имеет одно неприятное свойство — при внесении изменения в один из слоев, это слой и все последующие слои будут пересобраны. Поэтому, чтобы сэкономить время на сборке образа — старайтесь ставить инструкции копирования кода проекта и конфигов в конец dockerfile до команды CMD или ENTRYPOINT.
#devops #девопс
Подпишись 👉@i_DevOps
Прием 1 — уменьшаем количество слоев в образе
Уменьшить количество слоев в образе можно сворачиванием нескольких однородных инструкций в одну. Например, несколько логически связанных инструкций RUN можно объединить в одну инструкцию с помощью конвейера Linux:
RUN apt-get update && apt-get install -y nginxПрием 2 — удаляем ненужный кэш apt-get
Пакетный менеджер apt-get, обновляя репозиторий, сохраняет кэш, который в большинстве случаев не нужен, и его можно удалить, уменьшив тем самым собираемый образ на 100+ Мбайт. Сделать это совсем несложно, достаточно в инструкции RUN последней командой указать: && rm -f /var/lib/apt/lists/*.
Соединим оба приёма в одну инструкцию:
RUN apt-get update && apt-get install -y nginx && rm -f /var/lib/apt/lists/*Такая конструкция работает именно в одной инструкции RUN, если вы вынесете rm -f /var/lib/apt/lists/* в отдельный RUN — ничего не сработает, так как кеш будет очищаться в другом слое, а его обновление будет оставаться в предыдущем слое.
Прием 3 — копируем только нужные файлы проекта в образ с помощью .dockerignore-файла
Обычно для копирования проекта в образ используется инструкция COPY с указанием места расположения проекта, как «.», что указывает на текущею директорию. Такой подход имеет один недостаток — будут скопированы все вложенные подкаталоги и файлы, что может значительно увеличить размер образа.
Исправить ситуацию призван .dockerignore-файл, который работает так же как и .gitignore-файл. В этих файлах указываются те папки и файлы, которые «не надо трогать». Gitignore-файл располагается в корневом каталоге копируемого в образ проекта. Обратите внимание на точку в начале названия файла — «.gitignore», так и должно быть.
Рассмотрим пример работы .gitignore-файла. Например, мы работаем с GIT, и в нашем проекте есть GIT-репозиторий. В образе он нам не нужен, поэтому его можно не копировать, а ещё в образе нам не нужен Dockerfile. Укажем эти файлы в .gitignore-файле:
.GIT
DockerfileПри сборке образа Docker прочтет .dockerignore-файл и не включит в образ указанные в нем папки и файлы.
Приём 4 — используем минималистические Linux-образа Alpine
Как правило, для сборки образов применяются дистрибутивы Debian, Ubuntu, CentOS. Но это оправдано в том случае, если ваш проект будет использовать всё обилие возможностей ядра и пакетов, которые предоставляет выбранный дистрибутив. Если же вам нужно просто создать контейнер с Nginx или иной другой программой — используйте Alpine-сборки.
Alpine-образ весит считанные мегабайты, а не сотни Мбайт как Debian или Ubuntu, при этом в нём есть всё необходимое для запуска большинства приложений. Например, так выглядит dockerfile Nginx-образа на Alpine-сборке, который занимает 7 Мбайт:
FROM alpine
RUN apk add --no-cache nginx && mkdir -p /run/nginx
EXPOSE 80
COPY custom.conf /etc/nginx/conf.d
dockerCOPY . /opt/
CMD ["nginx”,”-g”,”daemon off;”]Еще один бесспорный плюс Alpine — скорость сборки образа. Она разительно отличается в лучшую сторону по сравнению со скоростью сборки на любом другом дистрибутиве Linux.
Прием 5 — часто изменяемые слои ставим в конец dockerfile
Слоистая структура Docker-образов имеет одно неприятное свойство — при внесении изменения в один из слоев, это слой и все последующие слои будут пересобраны. Поэтому, чтобы сэкономить время на сборке образа — старайтесь ставить инструкции копирования кода проекта и конфигов в конец dockerfile до команды CMD или ENTRYPOINT.
#devops #девопс
Подпишись 👉@i_DevOps
👍15🔥3❤1
Двадцать бабушек – уже рубль. Как GraalVM Native Image позволяет экономить джавистам и девопсам деньги на облако
https://habr.com/ru/company/bar/blog/704494/
#devops #девопс
Подпишись 👉@i_DevOps
https://habr.com/ru/company/bar/blog/704494/
#devops #девопс
Подпишись 👉@i_DevOps
DevSecOps
DevSecOps. Общее погружение
DevOps на пальцах
SecOps. Защита кластера
DevSec. Встраивание ИБ в конвейер разработки
DevSecOps. Process edition
Что такое Audit Policy? Вебинар из цикла DevSecOps 2-й сезон
Зачем GitOps в Enterprise? Вебинар из цикла DevSecOps 2-й сезон
Управление секретами: основы
Persistent данные и резервное копирование в кластере
8 Bad Pods: атаки на Kubernetes
Kubernetes в Enterprise: VMware Tanzu
Kubernetes в Enterprise. Обзор, проблематика, решения
DevOps – начало работы в кластере Kubernetes
DevOps в Enterprise. Tech Talks Юрий Семенюков на High Load ++ 2021
Как пережить сертификацию по Kubernetes. Личный опыт
Все видео доступны на youtube
#devops #девопс
Подпишись 👉@i_DevOps
DevSecOps. Общее погружение
DevOps на пальцах
SecOps. Защита кластера
DevSec. Встраивание ИБ в конвейер разработки
DevSecOps. Process edition
Что такое Audit Policy? Вебинар из цикла DevSecOps 2-й сезон
Зачем GitOps в Enterprise? Вебинар из цикла DevSecOps 2-й сезон
Управление секретами: основы
Persistent данные и резервное копирование в кластере
8 Bad Pods: атаки на Kubernetes
Kubernetes в Enterprise: VMware Tanzu
Kubernetes в Enterprise. Обзор, проблематика, решения
DevOps – начало работы в кластере Kubernetes
DevOps в Enterprise. Tech Talks Юрий Семенюков на High Load ++ 2021
Как пережить сертификацию по Kubernetes. Личный опыт
Все видео доступны на youtube
#devops #девопс
Подпишись 👉@i_DevOps
👍9
❓Хотите узнать о новой платформе для контейнерной оркестрации?
2 февраля подключайтесь к вебинару о «Штурвале» — российской enterprise-платформе по управлению кластерами Kubernetes.
👉На вебинаре вы узнаете:
▪️об архитектуре решения и ее ключевых компонентах
▪️о функционале «из коробки» и преимуществах использования для инженера эксплуатации и ИБ
▪️о сервисной поддержке и политике лицензирования
‼️ И, конечно, вы увидите live-demo решения.
Подробности и регистрация здесь
2 февраля подключайтесь к вебинару о «Штурвале» — российской enterprise-платформе по управлению кластерами Kubernetes.
👉На вебинаре вы узнаете:
▪️об архитектуре решения и ее ключевых компонентах
▪️о функционале «из коробки» и преимуществах использования для инженера эксплуатации и ИБ
▪️о сервисной поддержке и политике лицензирования
‼️ И, конечно, вы увидите live-demo решения.
Подробности и регистрация здесь
Update Istio the GitOps way
https://medium.com/blablacar/update-istio-the-gitops-way-15d74204fa05
#devops #девопс
Подпишись 👉@i_DevOps
https://medium.com/blablacar/update-istio-the-gitops-way-15d74204fa05
#devops #девопс
Подпишись 👉@i_DevOps
Мониторинг контейнеров Docker с помощью Zabbix
https://blog.zabbix.com/docker-container-monitoring-with-zabbix/20175/
👉 @i_devops
https://blog.zabbix.com/docker-container-monitoring-with-zabbix/20175/
👉 @i_devops
👍2😁1
Инженерия данных != инженерия ПО
В последние годы мы видим, как инженерия данных всё больше сливается с индустрией DevOps. В обоих этих направлениях для доставки надёжных цифровых продуктов клиентам используется облачная инфраструктура, контейнеризация, CI/CD и GitOps. Это схождение в плане использования одного набора инструментов заставило многих думать, что инженерия данных не имеет значительных отличий от инженерии программного обеспечения. Как следствие, первая оказывается «несовершенной», поскольку дата-инженеры отстают с внедрением эффективных практик разработки ПО.
Rus https://habr.com/ru/company/ruvds/blog/701366/
Eng https://betterprogramming.pub/data-engineering-is-not-software-engineering-af81eb8d3949
#devops #девопс
Подпишись 👉@i_DevOps
В последние годы мы видим, как инженерия данных всё больше сливается с индустрией DevOps. В обоих этих направлениях для доставки надёжных цифровых продуктов клиентам используется облачная инфраструктура, контейнеризация, CI/CD и GitOps. Это схождение в плане использования одного набора инструментов заставило многих думать, что инженерия данных не имеет значительных отличий от инженерии программного обеспечения. Как следствие, первая оказывается «несовершенной», поскольку дата-инженеры отстают с внедрением эффективных практик разработки ПО.
Rus https://habr.com/ru/company/ruvds/blog/701366/
Eng https://betterprogramming.pub/data-engineering-is-not-software-engineering-af81eb8d3949
#devops #девопс
Подпишись 👉@i_DevOps
👍2
Solving a Murder Mystery
https://www.honeycomb.io/blog/solving-murder-mystery-columnar-datastore
#devops #девопс
Подпишись 👉@i_DevOps
https://www.honeycomb.io/blog/solving-murder-mystery-columnar-datastore
#devops #девопс
Подпишись 👉@i_DevOps
This media is not supported in your browser
VIEW IN TELEGRAM
KubeStalk обнаруживает Kubernetes и связанную с ним инфраструктуру на основе поверхности атаки с точки зрения "черного ящика".
Установка
KubeStalk написан на языке Python и требует наличия библиотеки requests.
Чтобы установить инструмент, вы можете клонировать репозиторий в любую директорию:
https://github.com/redhuntlabs/KubeStalk
#devops #девопс
Подпишись 👉@i_DevOps
Установка
KubeStalk написан на языке Python и требует наличия библиотеки requests.
Чтобы установить инструмент, вы можете клонировать репозиторий в любую директорию:
git clone https://github.com/redhuntlabs/kubestalkhttps://github.com/redhuntlabs/KubeStalk
#devops #девопс
Подпишись 👉@i_DevOps
Логи Ubuntu: Как проверить и настроить файлы журналов
https://sematext.com/blog/ubuntu-logs/
#devops #девопс
Подпишись 👉@i_DevOps
https://sematext.com/blog/ubuntu-logs/
#devops #девопс
Подпишись 👉@i_DevOps
Как создать cloud-init шаблон ОС Astra Linux в Proxmox
Что такое cloud-init образы и зачем они нужны
Вы когда-нибудь задумывались над тем, как вы создаете виртуальные машины?
Классический и самый банальный способ создания виртуальной машины (VM):
Создать VM в гипервизоре
Сконфигурировать параметры VM
Примонтировать ISO-образ ОС, которую нужно установить на VM
Запустить VM и установить ОС с ISO-образа
Для упрощения будущей жизни, можно создать из данной VM шаблон (template)
https://habr.com/ru/post/706434/
#devops #девопс
Подпишись 👉@i_DevOps
Что такое cloud-init образы и зачем они нужны
Вы когда-нибудь задумывались над тем, как вы создаете виртуальные машины?
Классический и самый банальный способ создания виртуальной машины (VM):
Создать VM в гипервизоре
Сконфигурировать параметры VM
Примонтировать ISO-образ ОС, которую нужно установить на VM
Запустить VM и установить ОС с ISO-образа
Для упрощения будущей жизни, можно создать из данной VM шаблон (template)
https://habr.com/ru/post/706434/
#devops #девопс
Подпишись 👉@i_DevOps
👍3
Distroless контейнеры
Distroless контейнеры — это контейнеры, содержащие только нужные для работы приложения файлы. Из контейнера убираются не используемые программой файлы дистрибутива с целью уменьшить его размер и снизить площадь атаки. Вместо сотен или тысяч ненужных файлов дистрибутива остаются лишь файлы, требуемые для работы. Этот подход изначально был предложен Google.
https://habr.com/ru/post/710968/
#devops #девопс
Подпишись 👉@i_DevOps
Distroless контейнеры — это контейнеры, содержащие только нужные для работы приложения файлы. Из контейнера убираются не используемые программой файлы дистрибутива с целью уменьшить его размер и снизить площадь атаки. Вместо сотен или тысяч ненужных файлов дистрибутива остаются лишь файлы, требуемые для работы. Этот подход изначально был предложен Google.
https://habr.com/ru/post/710968/
#devops #девопс
Подпишись 👉@i_DevOps
Хабр
Distroless контейнеры
Distroless контейнеры — это контейнеры, содержащие только нужные для работы приложения файлы. Из контейнера убираются не используемые программой файлы дистрибутива с целью уменьшить его размер и...
👍2
Vertical Pod Autoscaling: The Definitive Guide
https://povilasv.me/vertical-pod-autoscaling-the-definitive-guide/
#devops #девопс
Подпишись 👉@i_DevOps
https://povilasv.me/vertical-pod-autoscaling-the-definitive-guide/
#devops #девопс
Подпишись 👉@i_DevOps
Povilas Versockas
Vertical Pod Autoscaling: The Definitive Guide - Povilas Versockas
The definite guide to Vertical Pod Autoscaling. Automate your Kubernetes CPU and memory resource requirements.
5 лучших плагинов kubectl по звездам github
Kubernetes - это мощный контейнерный оркестратор. Однако настоящая сила Kubernetes заключается в возможности расширения его основных функций. Одним из таких расширений является инструмент командной строки kubectl. Kubectl может быть расширен за счет использования различных плагинов, доступных сообществу разработчиков с открытым исходным кодом.
https://home.robusta.dev/blog/top-kubectl-plugin-list
#devops #девопс
Подпишись 👉@i_DevOps
Kubernetes - это мощный контейнерный оркестратор. Однако настоящая сила Kubernetes заключается в возможности расширения его основных функций. Одним из таких расширений является инструмент командной строки kubectl. Kubectl может быть расширен за счет использования различных плагинов, доступных сообществу разработчиков с открытым исходным кодом.
https://home.robusta.dev/blog/top-kubectl-plugin-list
#devops #девопс
Подпишись 👉@i_DevOps
home.robusta.dev
The Top 5 kubectl Plugins by GitHub Stars | Robusta
Kubernetes is a powerful container orchestrator. However, the real power of Kubernetes is the ability to expand it's core functionality.