State of DevOps 2023
В начале года мы писали о масштабном исследовании состояния DevOps в России — State of DevOps Report 2023. Потом приглашали на вебинар по итогам этого исследования. Теперь — появилась публичная статистика!
Кратко:
☁️ 72% опрошенных компаний используют облака;
☁️ Самая популярная модель — гибридное облако. Гибридное облако применяет 31% опрошенных, у 28% респондентов часть данных хранится на облаках, часть — на собственной инфраструктуре, у 22% данные хранятся на собственной инфраструктуре, и только у 19% все данные хранятся в контуре одного облачного провайдера.
☁️ Самые популярные PaaS-продукты — это управляемые SQL и оркестраторы: их использует 47% респондентов, 45% — управляемые оркестраторы Kubernetes, OpenShift, 26% — CI/CD-сервисы GitLab. Меньше всего популярны облачные сервисы для ML-разработки (6%) и для распознавания речи (3%).
☁️ 30% опрошенных выделили соответствие провайдеров требованиям регулятора в сфере управления персональными данными, а 23% выделили сокращение расходов на персонал, 21% респондентов отметил повышение прозрачности бизнес-процессов, 20% — повышение прозрачности работы с данными.
Исследование State of DevOps Report 2023 провели Экспресс 42, совместно с облачной платформой Yandex Cloud и др. В опросе приняли участие более 2000 ИТ-специалистов из российских компаний.
#интересное
В начале года мы писали о масштабном исследовании состояния DevOps в России — State of DevOps Report 2023. Потом приглашали на вебинар по итогам этого исследования. Теперь — появилась публичная статистика!
Кратко:
☁️ 72% опрошенных компаний используют облака;
☁️ Самая популярная модель — гибридное облако. Гибридное облако применяет 31% опрошенных, у 28% респондентов часть данных хранится на облаках, часть — на собственной инфраструктуре, у 22% данные хранятся на собственной инфраструктуре, и только у 19% все данные хранятся в контуре одного облачного провайдера.
☁️ Самые популярные PaaS-продукты — это управляемые SQL и оркестраторы: их использует 47% респондентов, 45% — управляемые оркестраторы Kubernetes, OpenShift, 26% — CI/CD-сервисы GitLab. Меньше всего популярны облачные сервисы для ML-разработки (6%) и для распознавания речи (3%).
☁️ 30% опрошенных выделили соответствие провайдеров требованиям регулятора в сфере управления персональными данными, а 23% выделили сокращение расходов на персонал, 21% респондентов отметил повышение прозрачности бизнес-процессов, 20% — повышение прозрачности работы с данными.
Исследование State of DevOps Report 2023 провели Экспресс 42, совместно с облачной платформой Yandex Cloud и др. В опросе приняли участие более 2000 ИТ-специалистов из российских компаний.
#интересное
👍12❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Барабанная дробь... 🥁 Подвели итоги розыгрыша! 🎉
Условия были не самые простые, большое спасибо всем, кто ответил на вопросы и поделился мнением о нашем канале.
Это не последний конкурс, обязательно придумаем что-нибудь еще, ну а пока — будем делать DevOps FM лучше😎
И, разумеется, поздравляем победителя!
@Mik9524, вы выиграли футболку «Злой DevOps» 🥳! Носите с удовольствием! :) В ближайшее время вам напишет администратор канала.
Условия были не самые простые, большое спасибо всем, кто ответил на вопросы и поделился мнением о нашем канале.
Это не последний конкурс, обязательно придумаем что-нибудь еще, ну а пока — будем делать DevOps FM лучше
И, разумеется, поздравляем победителя!
@Mik9524, вы выиграли футболку «Злой DevOps» 🥳! Носите с удовольствием! :) В ближайшее время вам напишет администратор канала.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉13👏1
Давненько не было подборок статей, исправляемся! 🫡
Сегодня предлагаем почитать:
▪️Статья «10 Anti-Patterns for Kubernetes Deployments» — текст о том, как делать НЕ стоит и почему это так. Почему тот или иной anti-pattern попал в перечень неплохо расписано в самой статье и с примерами (время прочтения ~ 22 минуты).
▪️Статья «Application architecture: A quick guide for startups» — действительно неплохой гайд для проверки вашей инфраструктуры.
▪️Туториал «How to create efficient DevSecOps workflows with rules for conditional CI/CD pipelines» — о различных типах CI/CD пайплайнов, rules, а также о вариантах их использования.
▪️Статья «Kafka за 20 минут» — даже за 19 минут :) Рассказывается как устроен Apache Kafka, какая архитектура и т.д. Есть репозиторий с небольшой практикой!
▪️Статья «Infrastructure as a Code: ожидания и реальность» — как можно организовать инфраструктурный код в Terraform-проекте.
Всем DevOps! 🖖
#статьи
Сегодня предлагаем почитать:
▪️Статья «10 Anti-Patterns for Kubernetes Deployments» — текст о том, как делать НЕ стоит и почему это так. Почему тот или иной anti-pattern попал в перечень неплохо расписано в самой статье и с примерами (время прочтения ~ 22 минуты).
▪️Статья «Application architecture: A quick guide for startups» — действительно неплохой гайд для проверки вашей инфраструктуры.
▪️Туториал «How to create efficient DevSecOps workflows with rules for conditional CI/CD pipelines» — о различных типах CI/CD пайплайнов, rules, а также о вариантах их использования.
▪️Статья «Kafka за 20 минут» — даже за 19 минут :) Рассказывается как устроен Apache Kafka, какая архитектура и т.д. Есть репозиторий с небольшой практикой!
▪️Статья «Infrastructure as a Code: ожидания и реальность» — как можно организовать инфраструктурный код в Terraform-проекте.
Всем DevOps! 🖖
#статьи
👍10❤4🔥1👏1
Всем DevOps! 🖖
Мы любим читать истории фанатов технологий и сегодня хотим поделиться рассказом «Why and how I use k8s for my personal stuff (and love it)».
🗣️ Я один из тех чокнутых, которые любят Kubernetes. Мне он так нравится, что в настоящее время он поддерживает множество моих личных штук и хобби-проектов. Итак, вместо привычных «k8s раздут», «k8s — это излишество» или «почему вам не нужен k8s», давайте поговорим о том, почему k8s на самом деле отлично подходит для личных целей, и почему вам, возможно, также стоит подумать об его использовании.
Может быть, вы тоже пользуетесь k8s для личных проектов? Расскажите :)
#статьи
Мы любим читать истории фанатов технологий и сегодня хотим поделиться рассказом «Why and how I use k8s for my personal stuff (and love it)».
Может быть, вы тоже пользуетесь k8s для личных проектов? Расскажите :)
#статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2
Бесплатный видеокурс по SRE
Как раз можно на выходных посмотреть (хотя, конечно, на выходных лучше отдыхать🏖 )
Курс выпустили Тинькофф Образование буквально на днях. 14 видео, +- по часу. Рассказываются основные темы, начиная от "Что такое SRE" до "Как тестировать в продакшен". Хороший способ прокачать экспертизу, тем более всё на русском языке.
Желаем отличной пятницы и классных выходных!🔥
#видео
Как раз можно на выходных посмотреть (хотя, конечно, на выходных лучше отдыхать
Курс выпустили Тинькофф Образование буквально на днях. 14 видео, +- по часу. Рассказываются основные темы, начиная от "Что такое SRE" до "Как тестировать в продакшен". Хороший способ прокачать экспертизу, тем более всё на русском языке.
Желаем отличной пятницы и классных выходных!
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍1
Всем DevOps! 🖖
Начинаем эту неделю с нетипичной для нас рекомендации — книги «Ansible for DevOps». Никто не будет утверждать, что можно изучить инструмент или технологию только по книгам, но книги точно могут помочь.
❓Ansible — это инструмент Infrastructure as a Code для автоматизации задач по подготовке и конфигурированию инфраструктуры.
📚 Kнига «Ansible for DevOps» начинается с основ: установки Ansible, создания базового файла инвентаризации и базовых концепций, а затем рассказывает о многочисленных возможностях использования Ansible, включая специальные команды, базовые и расширенные плейбуки, развертывание приложений, предоставление сервера нескольким провайдерам и даже оркестровку Docker.
P.S. Об этой книге нам рассказал подписчик, спасибо :) Если вы знаете какой-то классный материал, инструмент и т.д. и хотите поделиться им с сообществом — пишите!
#книги
Начинаем эту неделю с нетипичной для нас рекомендации — книги «Ansible for DevOps». Никто не будет утверждать, что можно изучить инструмент или технологию только по книгам, но книги точно могут помочь.
❓Ansible — это инструмент Infrastructure as a Code для автоматизации задач по подготовке и конфигурированию инфраструктуры.
📚 Kнига «Ansible for DevOps» начинается с основ: установки Ansible, создания базового файла инвентаризации и базовых концепций, а затем рассказывает о многочисленных возможностях использования Ansible, включая специальные команды, базовые и расширенные плейбуки, развертывание приложений, предоставление сервера нескольким провайдерам и даже оркестровку Docker.
P.S. Об этой книге нам рассказал подписчик, спасибо :) Если вы знаете какой-то классный материал, инструмент и т.д. и хотите поделиться им с сообществом — пишите!
#книги
👍10🔥9👏1
Рассказываем про два open-source инструмента с похожими названиями 😎
▪️Kube-Scan — open-source утилита для оценки риска кластера среды оркестрации, в основе которого лежит Kubernetes.
Для расчета уровня риска используется модель Octarine Kubernetes Common Configuration Scoring System (KCCSS). Она похожа на Common Vulnerability Scoring System (CVSS), стандарт для расчета уровня риска по уязвимостям, только вместо акцента на уязвимости делается акцент на конфигурацию и параметры безопасности в ней.
▪️KubiScan — open-source утилита, которая собирает информацию о том, где и какие расширенные привилегии используются на уровне кластера Kubernetes, если в основе контроля доступа лежит RBAC.
Инструмент был опубликован в рамках исследования «Защита кластеров Kubernetes путем устранения рискованных разрешений»
#open_source
▪️Kube-Scan — open-source утилита для оценки риска кластера среды оркестрации, в основе которого лежит Kubernetes.
Для расчета уровня риска используется модель Octarine Kubernetes Common Configuration Scoring System (KCCSS). Она похожа на Common Vulnerability Scoring System (CVSS), стандарт для расчета уровня риска по уязвимостям, только вместо акцента на уязвимости делается акцент на конфигурацию и параметры безопасности в ней.
▪️KubiScan — open-source утилита, которая собирает информацию о том, где и какие расширенные привилегии используются на уровне кластера Kubernetes, если в основе контроля доступа лежит RBAC.
Инструмент был опубликован в рамках исследования «Защита кластеров Kubernetes путем устранения рискованных разрешений»
#open_source
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Sber OPS Meetup: удобство, функциональность, надежность
Бесплатный митап — отличная возможность пообщаться с единомышленниками и обсудить актуальные темы ИТ-сопровождения: Kubernetes Governance as a Code, dev/staging/testing-ветки, рабочее пространство администратора и техподдержку для сотрудников.
🗓 Когда? 10 июля 18:00 (МСК, GMT+3)
🌐 Онлайн — трансляция на сайте
📍 Офлайн — офис Сбера по адресу: Москва, Кутузовский проспект, 32, корпус Г
Что в программе? Доклады!
▪️«Kubernetes Governance as a Code, или Как содержать кластеры в чистоте и порядке»
▪️«Разделение на dev/master-ветки при деплое на стенды: паттерн или антипаттерн?»
▪️«Единое рабочее пространство администратора, или Когда закончилось место на панели вкладок»
▪️«Как мы в Сбере предоставляем техническую поддержку сотрудникам»
➡️ Для участия в онлайне или офлайне нужно зарегистрироваться.
Бесплатный митап — отличная возможность пообщаться с единомышленниками и обсудить актуальные темы ИТ-сопровождения: Kubernetes Governance as a Code, dev/staging/testing-ветки, рабочее пространство администратора и техподдержку для сотрудников.
🗓 Когда? 10 июля 18:00 (МСК, GMT+3)
🌐 Онлайн — трансляция на сайте
📍 Офлайн — офис Сбера по адресу: Москва, Кутузовский проспект, 32, корпус Г
Что в программе? Доклады!
▪️«Kubernetes Governance as a Code, или Как содержать кластеры в чистоте и порядке»
▪️«Разделение на dev/master-ветки при деплое на стенды: паттерн или антипаттерн?»
▪️«Единое рабочее пространство администратора, или Когда закончилось место на панели вкладок»
▪️«Как мы в Сбере предоставляем техническую поддержку сотрудникам»
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Сегодня целых два повода, чтобы немного расслабиться: маленькая пятница 🥳 и день трудоголика 😭
Поэтому предлагаем посмотреть познавательную документалку «Kubernetes: The Documentary». Фильм в двух частях (раз, два), на английском, но есть русские субтитры.
Как создавался Kubernetes? Почему он стал open-source и что сделало его, по сути, стандартом оркестрации? Об этом фильм :) Особенно интересно, что всю историю рассказывают люди, принимавшие непосредственное участие в разработке Kubernetes: инженеры из Google, Red Hat, Twitter и других компаний.
Всем DevOps! 🖖
#видео
Поэтому предлагаем посмотреть познавательную документалку «Kubernetes: The Documentary». Фильм в двух частях (раз, два), на английском, но есть русские субтитры.
Как создавался Kubernetes? Почему он стал open-source и что сделало его, по сути, стандартом оркестрации? Об этом фильм :) Особенно интересно, что всю историю рассказывают люди, принимавшие непосредственное участие в разработке Kubernetes: инженеры из Google, Red Hat, Twitter и других компаний.
Всем DevOps! 🖖
#видео
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4
GitHub опубликовали отличную статью «Introduction to SELinux»
❓SELinux — самый популярный модуль безопасности Linux, используемый для изоляции и защиты системных компонентов друг от друга.
В статье рассказывается про различия между MAC (Mandatory Access Control) и DAC (Discretionary Access Control), объясняются основы системы типов SELinux и то, как SELinux работает в ядре Linux, предлагаются полезные инструменты и примеры взаимодействия с SELinux.
Бонус: На русском есть еще такая статья, тоже очень подробная :)
#статьи
❓SELinux — самый популярный модуль безопасности Linux, используемый для изоляции и защиты системных компонентов друг от друга.
В статье рассказывается про различия между MAC (Mandatory Access Control) и DAC (Discretionary Access Control), объясняются основы системы типов SELinux и то, как SELinux работает в ядре Linux, предлагаются полезные инструменты и примеры взаимодействия с SELinux.
Бонус: На русском есть еще такая статья, тоже очень подробная :)
#статьи
👍13
Первый общедоступный релиз Flux v2
❓Flux — это инструмент для синхронизации кластеров Kubernetes с источниками конфигурации (такими как репозитории Git и артефакты OCI) и автоматизации обновлений конфигурации при появлении нового кода для развертывания.
Подробнее о релизе можно почитать здесь, а документация проекта — вот тут.
#новости #open_source
❓Flux — это инструмент для синхронизации кластеров Kubernetes с источниками конфигурации (такими как репозитории Git и артефакты OCI) и автоматизации обновлений конфигурации при появлении нового кода для развертывания.
Подробнее о релизе можно почитать здесь, а документация проекта — вот тут.
#новости #open_source
👍11❤1
Kubernetes Examples 🗒
Нередко бывает, что нужен фрагмент YAML с демонстрацией чего-то конкретного: пода, простого деплоя или чего-нибудь подобного. Например, для базового тестирования окружения или в качестве примера, с которым можно поработать.
В общем, можно поискать нужный YAML в этом репозитории — в нем собраны примеры стандартных функций и шаблонов Kubernetes. Есть и сайт, вдруг кому-то удобнее :)
Всем DevOps и отличных выходных! 🖖
#open_source
Нередко бывает, что нужен фрагмент YAML с демонстрацией чего-то конкретного: пода, простого деплоя или чего-нибудь подобного. Например, для базового тестирования окружения или в качестве примера, с которым можно поработать.
В общем, можно поискать нужный YAML в этом репозитории — в нем собраны примеры стандартных функций и шаблонов Kubernetes. Есть и сайт, вдруг кому-то удобнее :)
Всем DevOps и отличных выходных! 🖖
#open_source
👍20🔥7🙏1
Ииии.... Об этой книге нам тоже рассказал подписчик, большое-большое спасибо :) Разумеется, делимся!
📝 Есть такой специалист, Джин Ким, основатель и ex-CTO компании Tripwire и автор книг по IT. Пожалуй, самая известная его работа — «Проект "Феникс". Роман о том, как DevOps меняет бизнес к лучшему». Но мы хотим порекомендовать другую книгу: «Руководство по DevOps».
📚 Цель этой книги — подробная кодификация принципов и методик DevOps. В книге описаны основные шаги и принципы построения производственного взаимодействия, автоматизации процессов и развития культуры разработки ПО. Теория щедро сдобрена историями реальных людей и компаний, прошедших непростой, но интересный путь к DevOps.
P.S. Если вы знаете какой-то классный материал, инструмент, увидели интересную новость и т.д. и хотите поделиться ими с сообществом — пишите!
#книги
📝 Есть такой специалист, Джин Ким, основатель и ex-CTO компании Tripwire и автор книг по IT. Пожалуй, самая известная его работа — «Проект "Феникс". Роман о том, как DevOps меняет бизнес к лучшему». Но мы хотим порекомендовать другую книгу: «Руководство по DevOps».
📚 Цель этой книги — подробная кодификация принципов и методик DevOps. В книге описаны основные шаги и принципы построения производственного взаимодействия, автоматизации процессов и развития культуры разработки ПО. Теория щедро сдобрена историями реальных людей и компаний, прошедших непростой, но интересный путь к DevOps.
P.S. Если вы знаете какой-то классный материал, инструмент, увидели интересную новость и т.д. и хотите поделиться ими с сообществом — пишите!
#книги
🔥13👍4❤1
It's Wednesday, my friends! 🆘
Пособирали разных статей, делимся подборкой.
▪️Гайд «GitHub to GitLab migration the easy way» — как перейти с GitHub на GitLab, используя функцию импорта проектов. Рассматривается и ручная миграция GitHub Actions в GitLab pipelines. Есть видео :)
▪️Статья «How to delegate tasks as a senior/lead engineer?» — как эффективно делегировать задачи членам команды. Забавные аналогии и жизненные ситуации прилагаются.
▪️Статья «Как я стал девопсом в городе, в котором есть только завод» — всегда интересно почитать про путь в профессию, особенно, когда у автора в моногороде два пути: на завод или в IT.
▪️Статья «Монолит или микросервисы — это не вопрос технологических предпочтений, это про time-to-market» — из названия все понятно, автор рассматривает вопрос монолит vs микросервисы через призму команд, их взаимодействия и интересов бизнеса.
(кстати, делали подборку всякого интересного на эту тему — вот здесь)
Всем DevOps! 🖖
#статьи
Пособирали разных статей, делимся подборкой.
▪️Гайд «GitHub to GitLab migration the easy way» — как перейти с GitHub на GitLab, используя функцию импорта проектов. Рассматривается и ручная миграция GitHub Actions в GitLab pipelines. Есть видео :)
▪️Статья «How to delegate tasks as a senior/lead engineer?» — как эффективно делегировать задачи членам команды. Забавные аналогии и жизненные ситуации прилагаются.
▪️Статья «Как я стал девопсом в городе, в котором есть только завод» — всегда интересно почитать про путь в профессию, особенно, когда у автора в моногороде два пути: на завод или в IT.
▪️Статья «Монолит или микросервисы — это не вопрос технологических предпочтений, это про time-to-market» — из названия все понятно, автор рассматривает вопрос монолит vs микросервисы через призму команд, их взаимодействия и интересов бизнеса.
(кстати, делали подборку всякого интересного на эту тему — вот здесь)
Всем DevOps! 🖖
#статьи
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
В эфире — новости!
▪️На 15 августа 2023 года запланирован релиз Kubernetes 1.28. Ожидается 59 новых улучшений , из которых 33 — alpha, 19 — beta и 15 — stable. Подробное описание доступно в release notes (пока черновик).
▪️Состоялся релиз KubeVirt 1.0.0. Подробности — в release notes.
❓KubeVirt — это надстройка по управлению ВМ для K8s. Его цель — обеспечить общую основу для решений виртуализации поверх K8s. С помощью KubeVirt можно управлять ВМ как ресурсом K8s, подобно подам.
▪️В пятницу, 7 июля 2023 года, в инфраструктуре Jenkins произошел серьезный сбой с 11:05 UTC до 15:25 UTC, Jenkins выпустили Postmortem об этом инциденте.
*️⃣ Писали про Postmortem здесь :)
▪️Компания Yandex Cloud проинформировала пользователей об ограничении доступности Managed service for Elasticsearch.
Действующие пользователи смогут работать с существующими кластерами и создавать новые до апреля 2024 года. Пользователи, которые пока не работали с Elasticsearch в облаке, не смогут создать кластеры сервиса с 20 июля 2023 года.
▪️Istio получили статус CNCF Graduated project. Первоначально Istio был разработан Google и IBM и построен на основе проекта Envoy от Lyft. В настоящее время в проекте участвуют более 16 компаний, в том числе многие крупнейшие поставщики сетевых услуг и облачные организации по всему миру. Istio — третий по активности проект CNCF по количеству открытых и смерженных PR.
❓Istio — инструмент конфигурации service mesh
#новости
▪️На 15 августа 2023 года запланирован релиз Kubernetes 1.28. Ожидается 59 новых улучшений , из которых 33 — alpha, 19 — beta и 15 — stable. Подробное описание доступно в release notes (пока черновик).
▪️Состоялся релиз KubeVirt 1.0.0. Подробности — в release notes.
❓KubeVirt — это надстройка по управлению ВМ для K8s. Его цель — обеспечить общую основу для решений виртуализации поверх K8s. С помощью KubeVirt можно управлять ВМ как ресурсом K8s, подобно подам.
▪️В пятницу, 7 июля 2023 года, в инфраструктуре Jenkins произошел серьезный сбой с 11:05 UTC до 15:25 UTC, Jenkins выпустили Postmortem об этом инциденте.
▪️Компания Yandex Cloud проинформировала пользователей об ограничении доступности Managed service for Elasticsearch.
Действующие пользователи смогут работать с существующими кластерами и создавать новые до апреля 2024 года. Пользователи, которые пока не работали с Elasticsearch в облаке, не смогут создать кластеры сервиса с 20 июля 2023 года.
▪️Istio получили статус CNCF Graduated project. Первоначально Istio был разработан Google и IBM и построен на основе проекта Envoy от Lyft. В настоящее время в проекте участвуют более 16 компаний, в том числе многие крупнейшие поставщики сетевых услуг и облачные организации по всему миру. Istio — третий по активности проект CNCF по количеству открытых и смерженных PR.
❓Istio — инструмент конфигурации service mesh
#новости
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Всем DevOps! 🖖
Полезное про CI/CD components в GitLab
В релизе GitLab 16.1 была представлена экспериментальная фича — CI/CD components. Это «строительные блоки», которые упрощают построение пайплайна. Компоненты можно переиспользовать, они поддерживают входные параметры и позволяют настраивать их в зависимости от контекста пайплайна.
В ближайшее время появится еще и CI/CD каталог — централизованное хранилище компонентов.
В статье можно подробнее узнать обо всех преимуществах компонентов и посмотреть, как с ними работать.
#статьи
Полезное про CI/CD components в GitLab
В релизе GitLab 16.1 была представлена экспериментальная фича — CI/CD components. Это «строительные блоки», которые упрощают построение пайплайна. Компоненты можно переиспользовать, они поддерживают входные параметры и позволяют настраивать их в зависимости от контекста пайплайна.
В ближайшее время появится еще и CI/CD каталог — централизованное хранилище компонентов.
В статье можно подробнее узнать обо всех преимуществах компонентов и посмотреть, как с ними работать.
#статьи
👍13
Всем DevOps! 🖖
Начнем неделю с полезных советов: Три простых приема для уменьшения Docker-образов💻
Образы, которые используют одни и те же слои и весят меньше — быстрее переносятся и деплоятся.
Но как контролировать размер, когда каждое выполнение оператора RUN создает новый слой? Плюс, еще нужны промежуточные артефакты до создания самого образа...
1️⃣ Объединяем несколько слоев в один с помощью поэтапной сборки Docker-образов
Когда Git-репозиторий разрастается, можно просто свести всю историю изменений в один commit и забыть о нем. Оказалось, что нечто подобное можно реализовать и в Docker — посредством поэтапной сборки.
Давайте создадим контейнер Node.js.
Начнем с index.js:
В Dockerfile теперь у нас есть операторы COPY и RUN, так что фиксируем увеличение как минимум на два слоя, по сравнению с исходным образом:
$ docker history node-vanilla
Как видим, итоговый образ возрос на пять новых слоев: по одному для каждого оператора в нашем Dockerfile. Давайте теперь опробуем поэтапную Docker-сборку. Используем тот же самый Dockerfile, состоящий из двух частей:
Давайте пробовать. Сначала создаем контейнер:
*️⃣ 2 и 3 приемы будут чуть позже :)
#лонгрид
Начнем неделю с полезных советов: Три простых приема для уменьшения Docker-образов
Образы, которые используют одни и те же слои и весят меньше — быстрее переносятся и деплоятся.
Но как контролировать размер, когда каждое выполнение оператора RUN создает новый слой? Плюс, еще нужны промежуточные артефакты до создания самого образа...
Когда Git-репозиторий разрастается, можно просто свести всю историю изменений в один commit и забыть о нем. Оказалось, что нечто подобное можно реализовать и в Docker — посредством поэтапной сборки.
Давайте создадим контейнер Node.js.
Начнем с index.js:
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(3000, () => {
console.log(Example app listening on port 3000!)
})
и package.json:{
"name": "hello-world",
"version": "1.0.0",
"main": "index.js",
"dependencies": {
"express": "^4.16.2"
},
"noscripts": {
"start": "node index.js"
}
}
Упакуем приложение со следующим Dockerfile:FROM node:8Создадим образ:
EXPOSE 3000
WORKDIR /app
COPY package.json index.js ./
RUN npm install
CMD ["npm", "start"]
$ docker build -t node-vanilla .Проверим, что все работает:
$ docker run -p 3000:3000 -ti --rm --init node-vanillaТеперь можно пройти по ссылке: http://localhost:3000 и увидеть там «Hello World!».
В Dockerfile теперь у нас есть операторы COPY и RUN, так что фиксируем увеличение как минимум на два слоя, по сравнению с исходным образом:
$ docker history node-vanilla
Как видим, итоговый образ возрос на пять новых слоев: по одному для каждого оператора в нашем Dockerfile. Давайте теперь опробуем поэтапную Docker-сборку. Используем тот же самый Dockerfile, состоящий из двух частей:
FROM node:8 as buildПервая часть Dockerfile создает три слоя. Затем слои объединяются и копируются на второй и заключительный этапы. Сверху в образ добавляются еще два слоя. В итоге имеем три слоя.
WORKDIR /app
COPY package.json index.js ./
RUN npm install
FROM node:8
COPY --from=build /app /
EXPOSE 3000
CMD ["index.js"]
Давайте пробовать. Сначала создаем контейнер:
$ docker build -t node-multi-stage .Проверяем историю:
$ docker history node-multi-stageСмотрим, изменился ли размер файла:
$ docker images | grep node-Да, он стал меньше, но пока не значительно. Есть способы уменьшить его сильнее.
node-multi-stage 331b81a245b1 678MB
node-vanilla 075d229d3f48 679MB
#лонгрид
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤩3❤1
Текущий образ предоставляет нам Node.js, yarn, npm, bash и много других полезных бинарников. Также, он создан на базе Ubuntu. Таким образом, развернув его, мы получаем полноценную операционную систему со множеством полезных бинарников и утилит.
При этом они не нужны нам для запуска контейнера. Единственная нужная зависимость — это Node.js.
Docker-контейнеры должны обеспечивать работу одного процесса и содержать минимально необходимый набор инструментов для его запуска. Целая операционная система для этого не требуется.
Таким образом, мы можем вынести из него все, кроме Node.js.
Но как?
В Google уже пришли к подобному решению — GoogleCloudPlatform/distroless.
Описание к репозиторию гласит:
Distroless-образы содержат только приложение и зависимости для его работы. Там нет менеджеров пакетов, shell'ов и других программ, которые обычно есть в стандартном дистрибутиве Linux.
Это то, что нужно!
Запускаем Dockerfile, чтобы получить новый образ:
FROM node:8 as buildСобираем образ как обычно:
WORKDIR /app
COPY package.json index.js ./
RUN npm install
FROM gcr.io/distroless/nodejs
COPY --from=build /app /
EXPOSE 3000
CMD ["index.js"]
$ docker build -t node-distroless .Приложение должно нормально заработать. Чтобы проверить, запускаем контейнер:
$ docker run -p 3000:3000 -ti --rm --init node-distrolessИ идем на http://localhost:3000. Стал ли образ легче без лишних бинарников?
$ docker images | grep node-distrolessЕще как! Теперь он весит всего 76,7 МБ, на целых 600 Мб меньше!
node-distroless 7b4db3b7f1e5 76.7MB
Все круто, но есть один важный момент. Когда контейнер запущен, и надо его проверить, подключиться можно с помощью:
$ docker exec -ti <insert_docker_id> bashПодключение к работающему контейнеру и запуск bash очень похоже на создание SSH-сессии.
Но поскольку distroless — это урезанная версия исходной операционной системы, там нет ни дополнительных бинарников, ни, собственно, shell!
Как подключиться к запущенному контейнеру, если нет shell?
Самое интересное, что никак.
Это не очень хорошо, так как исполнять в контейнере можно только бинарники. И единственный, который можно запустить — это Node.js:
$ docker exec -ti <insert_docker_id> nodeНа самом деле в этом есть и плюс, ведь если вдруг какой-то злоумышленник сможет получить доступ к контейнеру, он причинит намного меньше вреда, чем если бы у него был доступ к shell. Иными словами, меньше бинарников — меньше вес и выше безопасность. Но, правда, ценой более сложной отладки.
Тут надо бы оговориться, что подключать и отлаживать контейнеры на prod-окружении не стоит. Лучше положиться на правильно настроенные системы логирования и мониторинга.
Но что, если нам-таки нужен дебаггинг, и при этом мы хотим, чтобы docker-образ имел наименьший размер?
#лонгрид
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤1
Можно заменить distroless на Alpine-образ.
Alpine Linux — это ориентированный на безопасность, легкий дистрибутив на основе musl libc и busybox. Но не будем верить на слово, а лучше проверим.
Запускаем Dockerfile с использованием node:8-alpine:
FROM node:8 as buildСоздаем образ:
WORKDIR /app
COPY package.json index.js ./
RUN npm install
FROM node:8-alpine
COPY --from=build /app /
EXPOSE 3000
CMD ["npm", "start"]
$ docker build -t node-alpine .Проверяем размер:
$ docker images | grep node-alpineНа выходе имеем 69.7MB — это даже меньше, чем distroless-образ.
node-alpine aa1f85f8e724 69.7MB
Проверим, можно ли подключиться к работающему контейнеру (в случае с distrolles-образом мы не могли этого сделать).
Запускаем контейнер:
$ docker run -p 3000:3000 -ti --rm --init node-alpineИ подключаемся:
Example app listening on port 3000!
$ docker exec -ti 9d8e97e307d7 bashНеудачно. Но, возможно, у контейнера есть sh'ell…:
OCI runtime exec failed: exec failed: container_linux.go:296:
starting container process caused "exec: \"bash\":
executable file not found in $PATH": unknown
$ docker exec -ti 9d8e97e307d7 sh / #Отлично! У нас получилось подключиться к контейнеру, и при этом его образ имеет ещё и меньший размер. Но и тут не обошлось без нюансов.
Alpine-образы основаны на muslc — альтернативной стандартной библиотеке для C. В то время, как большинство Linux-дистрибутивов, таких как Ubuntu, Debian и CentOS, основаны на glibc. Считается, что обе эти библиотеки предоставляют одинаковый интерфейс для работы с ядром.
Однако у них разные цели: glibc является наиболее распространенной и быстрой, muslc же занимает меньше места и написана с уклоном в безопасность. Когда приложение компилируется, как правило, оно компилируется под какую-то определенную библиотеку C. Если потребуется использовать его с другой библиотекой, придется перекомпилировать.
Другими словами, сборка контейнеров на Alpine-образах может привести к неожиданному развитию событий, поскольку используемая в ней стандартная библиотека C отличается. Разница будет заметна при работе с прекомпилируемыми бинарниками, такими как расширения Node.js для C++.
Например, готовый пакет PhantomJS не работает на Alpine.
Так какой же базовый образ выбрать?
Alpine, distroless или ванильный образ — решать, конечно, лучше по ситуации.
Если имеем дело с prod-ом и важна безопасность, возможно, наиболее уместным будет distroless.
Каждый бинарник, добавленный к Docker-образу, добавляет определенный риск к стабильности всего приложения. Этот риск можно уменьшить, имея только один бинарник, установленный в контейнере.
Например, если злоумышленник смог найти уязвимость в приложении, запущенном на базе distroless-образа, он не сможет запустить в контейнере shell, потому что его там нет!
Если же по каким-то причинам размер docker-образа для вас крайне важен, определенно стоит присмотреться к образам на основе Alpine.
Они реально маленькие, но, правда, ценой совместимости. Alpine использует немного другую стандартную библиотеку C — muslc, так что иногда будут всплывать какие-то проблемы. С примерами можно ознакомиться по ссылкам: https://github.com/grpc/grpc/issues/8528 и https://github.com/grpc/grpc/issues/6126.
Ванильные же образы идеально подойдут для тестирования и разработки.
Да, они большие, но зато максимально похожи на полноценную машину с установленной Ubuntu. Кроме того, доступны все бинарники в ОС.
#лонгрид
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤩1
This media is not supported in your browser
VIEW IN TELEGRAM
Всем DevOps! 🖖
Сегодня — делимся небольшой подборкой про деплой.
▪️Самая полезная ссылка. Можно получить ответ на вопрос «Когда лучше деплоить в продакшен» (спойлер: сегодня это могут делать Рыбы, Стрельцы и Овны 🤝)
▪️Ладно, сейчас будет и правда полезная ссылка. В этом репозитории подробно рассказывается про разные стратегии деплоя в Kubernetes: ramped, recreate, blue/green, canary, A/B-тестирование и т.д. Можно визуализировать с помощью Prometheus и Grafana. Есть и в формате статьи с наглядными схемами.
▪️Серия статей про канареечный деплой в k8s с использованием разных инструментов: часть 1 (Gitlab CI), часть 2 (Argo Rollouts), часть 3 (Istio), часть 4 (Jenkins-X, Istio и Flagger). На русском языке.
P.S. Если вы знаете какой-то классный материал, инструмент, увидели интересную новость, хотите задать вопрос, рассказать интересный случай из практики — и поделиться этим с сообществом — пишите! Ну или в комменты :)
#статьи #интересное #memes
Сегодня — делимся небольшой подборкой про деплой.
▪️Самая полезная ссылка. Можно получить ответ на вопрос «Когда лучше деплоить в продакшен» (спойлер: сегодня это могут делать Рыбы, Стрельцы и Овны 🤝)
▪️Ладно, сейчас будет и правда полезная ссылка. В этом репозитории подробно рассказывается про разные стратегии деплоя в Kubernetes: ramped, recreate, blue/green, canary, A/B-тестирование и т.д. Можно визуализировать с помощью Prometheus и Grafana. Есть и в формате статьи с наглядными схемами.
▪️Серия статей про канареечный деплой в k8s с использованием разных инструментов: часть 1 (Gitlab CI), часть 2 (Argo Rollouts), часть 3 (Istio), часть 4 (Jenkins-X, Istio и Flagger). На русском языке.
P.S. Если вы знаете какой-то классный материал, инструмент, увидели интересную новость, хотите задать вопрос, рассказать интересный случай из практики — и поделиться этим с сообществом — пишите! Ну или в комменты :)
#статьи #интересное #memes
👍12😁5
Станислав Тибекин, CVO компании Nixys, рассказал про разные формы DevOps-подряда.
Сможете больше узнать о потребностях бизнеса и продуктовой разработки, о том, как найти подход к каждому проекту, и о том, как сильно DevOps-инженеры влияют на успех продукта в целом.
➡️ Приятного чтения!
#статья_Nixys
Сможете больше узнать о потребностях бизнеса и продуктовой разработки, о том, как найти подход к каждому проекту, и о том, как сильно DevOps-инженеры влияют на успех продукта в целом.
➡️ Приятного чтения!
#статья_Nixys
👍8🔥3❤2