Разгребаю свои закладки и наткнулась на доклад про Least Privelege Containers.
Ребята из DevSecOps Talks уже сделали пост-разбор - рекомендую к прочтению и просмотру 👀
Ребята из DevSecOps Talks уже сделали пост-разбор - рекомендую к прочтению и просмотру 👀
Forwarded from DevSecOps Talks
Run containers as non-root: работает ли?
Всем привет!
Одна из самых базовых рекомендаций, что можно встретить при знакомстве с безопасностью контейнеров и Kubernetes – «не запускайте контейнеры из-под root».
Логично. Но много ли кто реализовал это на самом деле? Именно таким вопросом задаются Greg Castle и Vinayak Goyal в своем докладе. Согласно статистике – нет. Но как быть? Да, можно понять как работает образ, сделать необходимые
Как быть в такой ситуации? Команда определила следующий подход:
🍭 Все попытки запуска новых
🍭 У существующих контейнеров «отнимали» права root
🍭 Те, что остались работать – не требовали вмешательства
🍭 Если контейнер «сломался» - команда обращалась к владельцу для решения проблем
С точки зрения контроля было принято решение анализировать как Dockerfile (при наличии), так и модифицировать манифесты (добавлять
Особенно интересно, что в своем докладе ребята рассказали про сложности, с которыми им пришлось столкнуться. Например, особенности работы
Завершает рассказ упоминание Linux User Namespaces, которые недавно появились в Kubernetes (1.25, но пока Alpha) и как их (потенциально) можно будет использовать для решения задачи с root. Получился отличный, простой и очень полезный доклад, рекомендуем к просмотру!
Всем привет!
Одна из самых базовых рекомендаций, что можно встретить при знакомстве с безопасностью контейнеров и Kubernetes – «не запускайте контейнеры из-под root».
Логично. Но много ли кто реализовал это на самом деле? Именно таким вопросом задаются Greg Castle и Vinayak Goyal в своем докладе. Согласно статистике – нет. Но как быть? Да, можно понять как работает образ, сделать необходимые
chown
, chmod
, настроить права, вписать USER
и т.д. Но это затратно по ресурсам, особенно на большом объеме контейнеров.Как быть в такой ситуации? Команда определила следующий подход:
🍭 Все попытки запуска новых
root
контейнеров блокируются🍭 У существующих контейнеров «отнимали» права root
🍭 Те, что остались работать – не требовали вмешательства
🍭 Если контейнер «сломался» - команда обращалась к владельцу для решения проблем
С точки зрения контроля было принято решение анализировать как Dockerfile (при наличии), так и модифицировать манифесты (добавлять
runAsUser
, runAsGroup
, privileged: false
и т.д.).Особенно интересно, что в своем докладе ребята рассказали про сложности, с которыми им пришлось столкнуться. Например, особенности работы
fsMount
и hostPath
, интересное использование supplementalGroups
или нюансы, связанные с управлением capabilities
.Завершает рассказ упоминание Linux User Namespaces, которые недавно появились в Kubernetes (1.25, но пока Alpha) и как их (потенциально) можно будет использовать для решения задачи с root. Получился отличный, простой и очень полезный доклад, рекомендуем к просмотру!
YouTube
Least Privilege Containers: Keeping a Bad Day from Getting Worse - Greg Castle & Vinayak Goyal
Least Privilege Containers: Keeping a Bad Day from Getting Worse - Greg Castle & Vinayak Goyal, Google
“Don’t run containers as root”. The K8s security community has been saying this for years. There’s tools that can detect these types of misconfigurations.…
“Don’t run containers as root”. The K8s security community has been saying this for years. There’s tools that can detect these types of misconfigurations.…
The internals and the latest trends of container runtimes (2023)
Интересное и подробное ревью текущего состояния рантаймов для контейнеров от Akihiro Suda - одного из ментейнеров containerd, Lima, dockerd и других проектов.
В статье дается хорошее погружение в принципы работы контейнеров, внутреннее устройство(архитектура, используемые технологии, безопасность) и описание основных трендов.
Из трендов автор отметил следующее:
👀Появление альтернатив для Docker (в качестве рантаймов в Kubernetes)
👀Появление альтернатив для Docker (в качестве CLI)
👀Работа с контейнерами на Mac (появление OSS инструментов)
👀Рефакторинг Docker
👀Lazy-pulling (техника для ускорения запуска контейнеров, путем частичного скачивания образов по требованию)
👀Расширение поддержки User namespaces
👀Rootless контейнеры
👀Больше LSMs(=Linux Security Modules), например Kata Containers, gVisor, WebAssembly
Одно можно сказать, что контейнеры продолжают развиваться как и их VM-like версии. Будет интересно понаблюдать, как проприетарные решения типа Docker будут конкурировать с OSS.
Интересное и подробное ревью текущего состояния рантаймов для контейнеров от Akihiro Suda - одного из ментейнеров containerd, Lima, dockerd и других проектов.
В статье дается хорошее погружение в принципы работы контейнеров, внутреннее устройство(архитектура, используемые технологии, безопасность) и описание основных трендов.
Из трендов автор отметил следующее:
👀Появление альтернатив для Docker (в качестве рантаймов в Kubernetes)
👀Появление альтернатив для Docker (в качестве CLI)
👀Работа с контейнерами на Mac (появление OSS инструментов)
👀Рефакторинг Docker
👀Lazy-pulling (техника для ускорения запуска контейнеров, путем частичного скачивания образов по требованию)
👀Расширение поддержки User namespaces
👀Rootless контейнеры
👀Больше LSMs(=Linux Security Modules), например Kata Containers, gVisor, WebAssembly
Одно можно сказать, что контейнеры продолжают развиваться как и их VM-like версии. Будет интересно понаблюдать, как проприетарные решения типа Docker будут конкурировать с OSS.
Medium
The internals and the latest trends of container runtimes (2023)
Last week I had an opportunity to give an online lecture about containers to students at Kyoto University.
Exposing Custom Host Metrics Using the Prometheus Node Exporter | "textfile" Collector Module
У Prometheus node-exporter есть специальный модуль textfile, который позволяет собирать метрики из файлов на диске. Может быть удобно для добавления собственной информации об инстансе - устанновленных пакетов с версиями, результаты работы скриптов и тд.
Подробный туториал по ссылке, а также коллекция уже готовых скриптов в репозитории node-exporter-textfile-collector-scripts.
У Prometheus node-exporter есть специальный модуль textfile, который позволяет собирать метрики из файлов на диске. Может быть удобно для добавления собственной информации об инстансе - устанновленных пакетов с версиями, результаты работы скриптов и тд.
Подробный туториал по ссылке, а также коллекция уже готовых скриптов в репозитории node-exporter-textfile-collector-scripts.
YouTube
Exposing Custom Host Metrics Using the Prometheus Node Exporter | "textfile" Collector Module
In this video, I explain how to use the Node Exporter's "textfile" collector module to expose custom host metrics.
The textfile collector example scripts repository mentioned in the video:
https://github.com/prometheus-community/node-exporter-textfile…
The textfile collector example scripts repository mentioned in the video:
https://github.com/prometheus-community/node-exporter-textfile…
How Canva saves millions annually in Amazon S3 costs
Инженеры Canva поделились, как они используют различные Storage Classes в AWS S3 и они оптимизировали стоимость, комбинируя их.
Каждый Storage Class имеет свое соотношение стоимости данных и их получения. Так например, данные, которые получаются часто имеет смысл оставить в стандартном SC, а бекапы/логи долгого хранения переместить в один из более дешевых по хранению SC.
Также AWS позволяет создавать S3 Lifecycle configuration, в которой можно описать правила, по которым перемещать объекты из одного SC в другой или удалять по прошествии определенного времени.
Инженеры Canva поделились, как они используют различные Storage Classes в AWS S3 и они оптимизировали стоимость, комбинируя их.
Каждый Storage Class имеет свое соотношение стоимости данных и их получения. Так например, данные, которые получаются часто имеет смысл оставить в стандартном SC, а бекапы/логи долгого хранения переместить в один из более дешевых по хранению SC.
Также AWS позволяет создавать S3 Lifecycle configuration, в которой можно описать правила, по которым перемещать объекты из одного SC в другой или удалять по прошествии определенного времени.
В поисках туториалов по Cluster API наткнулась на частично бесплатную образовательную платформу от VMWare - KubeAcademy.
На платформе есть много общих курсов и часть специфичных для VMWare стека, например довольно подробное введение в Cluster API - как работает, его архитектура и примеры использования в AWS, VMWare, Azure.
Список бесплатных курсов, которые показались интересными:
📚 Kubernetes in Depth (основные объекты для деплоя приложений)
📚 Introduction To Building Application Platforms with Kubernetes (как строить платформу на базе Kubernetes)
📚 The Kubernetes Machine (погружение в controlplane компоненты)
На платформе есть много общих курсов и часть специфичных для VMWare стека, например довольно подробное введение в Cluster API - как работает, его архитектура и примеры использования в AWS, VMWare, Azure.
Список бесплатных курсов, которые показались интересными:
📚 Kubernetes in Depth (основные объекты для деплоя приложений)
📚 Introduction To Building Application Platforms with Kubernetes (как строить платформу на базе Kubernetes)
📚 The Kubernetes Machine (погружение в controlplane компоненты)
Quality-of-Service for Memory Resources
В блоге Kubernetes есть статья, посвященная улучшению по управлению памяти в Kubernetes 1.27. В ней описано использование реквестов и лимитов по памяти в
☝️tl;dr: в зависимости от класса пода - Burstable, Guaranteed, BestEffort будут(или не будут) установлены
Непосредственно только поды Burstable и BestEffort QoS будут иметь параметр
В блоге Kubernetes есть статья, посвященная улучшению по управлению памяти в Kubernetes 1.27. В ней описано использование реквестов и лимитов по памяти в
cgroupsv1
и в cgroupsv2
. ☝️tl;dr: в зависимости от класса пода - Burstable, Guaranteed, BestEffort будут(или не будут) установлены
memory.min
, memory.high
, memory.max
.Непосредственно только поды Burstable и BestEffort QoS будут иметь параметр
memory.high
. Guaranteed QoS поды не будут иметь параметр memory.high
, потому что их память должна быть гарантирована.Kubernetes
Kubernetes 1.27: Quality-of-Service for Memory Resources (alpha)
Kubernetes v1.27, released in April 2023, introduced changes to Memory QoS (alpha) to improve memory management capabilites in Linux nodes.
Support for Memory QoS was initially added in Kubernetes v1.22, and later some limitations around the formula for calculating…
Support for Memory QoS was initially added in Kubernetes v1.22, and later some limitations around the formula for calculating…
Docker Networking Model: Introduction
Подробная статья про сетевую модель в докере. Автор подробно рассказывает про ключевые режимы - None, Host, Bridge, Container. В основе сетевого взаимодействия в Kubernetes заложены те же самые концепции с дополнительной магией 🪄
Также есть следующие продолжения, детально рассматривающие:
- Bridge Mode
- Container Network Access
- External Network Access
В каждой статье приведены подробные схемы и команды для практики. Рекоменданьсен 🧑🍳
Подробная статья про сетевую модель в докере. Автор подробно рассказывает про ключевые режимы - None, Host, Bridge, Container. В основе сетевого взаимодействия в Kubernetes заложены те же самые концепции с дополнительной магией 🪄
Также есть следующие продолжения, детально рассматривающие:
- Bridge Mode
- Container Network Access
- External Network Access
В каждой статье приведены подробные схемы и команды для практики. Рекоменданьсен 🧑🍳
Medium
Docker Networking Model — Introduction
Reflections on 10,000 Hours of DevOps
Приведу пункты, которые понравились:
✅ Воспроизводимость важна.
✅ Ценность CI/CD пайплайнов обратно пропорциональна времени их выполнения.
✅ Код лучше YAMLа.
✅ Линейная git история облегчает роллбеки.
✅ Не разделяйте преждевременно монорепозитории.
✅ Вертикальное масштабирование сильно проще, чем горизонтальное.
✅ Не игнорируйте флапающие тесты - пофиксите их или удалите.
✅ Правило 80/20 для декларативной конфигурации. Оставшиеся 20% обычно не стоят того.
✅ Bash-скрипты не так плохи, как их репутация. Просто не делайте ничего сложного и всегда выставляйте
✅ Троттлите и rate-limit-те внешние API
Оригинальный пост доступен по ссылке.
Приведу пункты, которые понравились:
✅ Воспроизводимость важна.
✅ Ценность CI/CD пайплайнов обратно пропорциональна времени их выполнения.
✅ Код лучше YAMLа.
✅ Линейная git история облегчает роллбеки.
✅ Не разделяйте преждевременно монорепозитории.
✅ Вертикальное масштабирование сильно проще, чем горизонтальное.
✅ Не игнорируйте флапающие тесты - пофиксите их или удалите.
✅ Правило 80/20 для декларативной конфигурации. Оставшиеся 20% обычно не стоят того.
✅ Bash-скрипты не так плохи, как их репутация. Просто не делайте ничего сложного и всегда выставляйте
set -ex
и -o pipefail
.✅ Троттлите и rate-limit-те внешние API
Оригинальный пост доступен по ссылке.
Matt-Rickard
Reflections on 10,000 Hours of DevOps
Some reflections after putting 10,000 hours into DevOps engineering.
Подписалась на рассылку с комиксами от Julia Evans. (для меня имейлы оказались самым эффективным способом регулярно что-то читать и изучать)
Сегодня пришли классные маленькие чит-коды для работы с башем.
Про stack для
На вооружение обязательно возьму себе
Сегодня пришли классные маленькие чит-коды для работы с башем.
Про stack для
cd
я рассказывала в треде, это очень интересная и полезная фича. На вооружение обязательно возьму себе
fc
.X (formerly Twitter)
🔎Julia Evans🔍 (@b0rk) on X
almost 10,000 people are subscribed to get comics from me every saturday! who wants to help us get over 10,000?
you can sign up here: https://t.co/WCTz77iLLC
you can sign up here: https://t.co/WCTz77iLLC
Собеседуемся в 2023 году
Этим летом у меня случился опыт активного поиска работы. Я решила обобщить полученный опыт и подготовила пост, в нем можно найти:
😎 как я готовилась к активному поиску
💭 какие вопросы задавать HR, будущим тиммейтам и менеджеру
🤓 какие ресурсы использовать, для подготовки к техническому собеседованию на DevOps/SRE
💸 что с деньгами?
Помимо прочего, у меня еще лежит неопубликованный список основных вопросов с собеседований и выполненное тестовое задание, которое я хочу разобрать в текстовом/видео форматах. Если интересно что-то из этого списка, голосуй в опросе 👇
Этим летом у меня случился опыт активного поиска работы. Я решила обобщить полученный опыт и подготовила пост, в нем можно найти:
😎 как я готовилась к активному поиску
💭 какие вопросы задавать HR, будущим тиммейтам и менеджеру
🤓 какие ресурсы использовать, для подготовки к техническому собеседованию на DevOps/SRE
💸 что с деньгами?
Помимо прочего, у меня еще лежит неопубликованный список основных вопросов с собеседований и выполненное тестовое задание, которое я хочу разобрать в текстовом/видео форматах. Если интересно что-то из этого списка, голосуй в опросе 👇
MariaOps
Собеседуемся в 2023 году
Мой опыт собеседований в 2023 году и ресурсы, которые помогли мне подготовиться
На этой неделе проходил Kubecon NA, видео с которого как обычно будут залиты позже. Но уже сейчас можно посмотреть записи докладов со смежных конференций.
Меня заинтересовал доклад How Prometheus Halved Its Memory Usage - Bryan Boreham, Grafana Labs. Очень рекомендую его тем, кто работает с Prometheus и задавался вопросом куда уходит память (наверно каждый 🙈)
Докладчик затрагивает следующие моменты:
✅ метрики для мониторинга памяти
✅ как их интерпретировать
✅ какие оптимизации были сделаны, чтобы уменьшить потребление памяти вдвое(!!!)
Ссылки на плейлисты с остальными докладами:
- Observability Day NA 2023
- ArgoCon NA 2023
- Data on Kubernetes Day NA 2023
- EnvoyCon NA 2023
- CiliumCon NA 2023
- BackstageCon NA 2023
- Cloud Native Telco Day NA 2023
Меня заинтересовал доклад How Prometheus Halved Its Memory Usage - Bryan Boreham, Grafana Labs. Очень рекомендую его тем, кто работает с Prometheus и задавался вопросом куда уходит память (наверно каждый 🙈)
Докладчик затрагивает следующие моменты:
✅ метрики для мониторинга памяти
✅ как их интерпретировать
✅ какие оптимизации были сделаны, чтобы уменьшить потребление памяти вдвое(!!!)
Ссылки на плейлисты с остальными докладами:
- Observability Day NA 2023
- ArgoCon NA 2023
- Data on Kubernetes Day NA 2023
- EnvoyCon NA 2023
- CiliumCon NA 2023
- BackstageCon NA 2023
- Cloud Native Telco Day NA 2023
YouTube
How Prometheus Halved Its Memory Usage - Bryan Boreham, Grafana Labs
How Prometheus Halved Its Memory Usage - Bryan Boreham, Grafana Labs
Prometheus is the most popular CNCF project for monitoring, but if you have millions of metrics it needs gigabytes of memory.
And, Prometheus runs as a single process: it’s sometimes a…
Prometheus is the most popular CNCF project for monitoring, but if you have millions of metrics it needs gigabytes of memory.
And, Prometheus runs as a single process: it’s sometimes a…
Putting the "You" in CPU
Большая коллекция статей о том, как работает цпу (и много других связанных вещей). Автор последовательно с картинками и пояснениями рассказывает, что на самом деле происходит внутри операционной системы.
https://cpu.land/
Большая коллекция статей о том, как работает цпу (и много других связанных вещей). Автор последовательно с картинками и пояснениями рассказывает, что на самом деле происходит внутри операционной системы.
https://cpu.land/
Putting the "You" in CPU
Curious exactly what happens when you run a program on your computer? Learn how multiprocessing works, what system calls really are, how computers manage memory with hardware interrupts, and how Linux loads executables.
Connecting the Dots: Understanding How Pods Talk in Kubernetes Networks
Очень подробная статья про то, как работает DNS в Kubernetes. Автор затрагивает вопросы сервис дискавери, флоу днс запросов внутри кластера, способы конфигурации и принцип работы NodeLocalDNS.
В конце статьи также есть список полезных ссылок, если хочется углубиться в тему.
Очень подробная статья про то, как работает DNS в Kubernetes. Автор затрагивает вопросы сервис дискавери, флоу днс запросов внутри кластера, способы конфигурации и принцип работы NodeLocalDNS.
В конце статьи также есть список полезных ссылок, если хочется углубиться в тему.
Medium
Connecting the Dots: Understanding How Pods Talk in Kubernetes Networks
Kubernetes DNS Expedition
Handling Pods When Nodes Fail
Интересная статья, в которой автор подробно рассказывает о том, что именно происходит в тот момент, когда одна из нод Kubernetes кластера выходит из строя.
Затрагиваются следующие аспекты:
💭 NodeStatus - что это такое и как именно он обновляется
💭 Lease - какую проблему решает и как именно используется кубелетом и контроллер-менеджером
💭 Роль controller manager в управлении нодами
💭 Pod Evict - как происходит процесса перемещения под с плохой ноды на здоровую, как им можно управлять
Также нашла у автора еще пару занятных статей по теме Kubernetes:
- Preventing Container Image Deletion by Kubelet GC
- Kubernetes 101: Assigning Pod to Nodes (I)
- Kubernetes 101: Assigning Pod to Nodes (II)
Интересная статья, в которой автор подробно рассказывает о том, что именно происходит в тот момент, когда одна из нод Kubernetes кластера выходит из строя.
Затрагиваются следующие аспекты:
💭 NodeStatus - что это такое и как именно он обновляется
💭 Lease - какую проблему решает и как именно используется кубелетом и контроллер-менеджером
💭 Роль controller manager в управлении нодами
💭 Pod Evict - как происходит процесса перемещения под с плохой ноды на здоровую, как им можно управлять
Также нашла у автора еще пару занятных статей по теме Kubernetes:
- Preventing Container Image Deletion by Kubelet GC
- Kubernetes 101: Assigning Pod to Nodes (I)
- Kubernetes 101: Assigning Pod to Nodes (II)
Medium
Handling Pods When Nodes Fail
How Kubernetes detects node failures and how can we handle this as quick as possible.
How did I get here?
Интерактивный сайт, на котором можно посмотреть какой путь проделывают пакеты с вашего компьютера до бекенда. Часть сайта генерируется налету, другая часть рассказывает про то, что происходит "под капотом" - traceroute, протокол WHOIS и немного про BGP.
Выглядит интересно и в качестве пет-проекта 🤔
ps. по теме еще есть старый блог пост от Julia Evans - Tools to explore BGP
Интерактивный сайт, на котором можно посмотреть какой путь проделывают пакеты с вашего компьютера до бекенда. Часть сайта генерируется налету, другая часть рассказывает про то, что происходит "под капотом" - traceroute, протокол WHOIS и немного про BGP.
Выглядит интересно и в качестве пет-проекта 🤔
ps. по теме еще есть старый блог пост от Julia Evans - Tools to explore BGP
Давно хотела докинуть новых опций для gitconfig и наконец-то дошли руки.
Чем вдохновлялась:
- Блог-пост: Julia Evans: Popular git config options. Подробный разбор наиболее популярных опций по следам обсуждений на Mastodon.
- Доклад со свежего FOSDEM 2024: So you think you know Git от создателя Github. Затрагиваются как старые, так и новые возможности. Для любителей энтерпрайза и монорепозиториев есть отдельная секция по оптимизации работы с ними.
В довесок к CLI у меня еще есть пара стандартных расширений для VSCode:
Мой gitconfig можно посмотреть вот тут. Самая любимая команда - конечно же git squash N 🌚
Чем вдохновлялась:
- Блог-пост: Julia Evans: Popular git config options. Подробный разбор наиболее популярных опций по следам обсуждений на Mastodon.
- Доклад со свежего FOSDEM 2024: So you think you know Git от создателя Github. Затрагиваются как старые, так и новые возможности. Для любителей энтерпрайза и монорепозиториев есть отдельная секция по оптимизации работы с ними.
В довесок к CLI у меня еще есть пара стандартных расширений для VSCode:
git history
& git graph
. Мой gitconfig можно посмотреть вот тут. Самая любимая команда - конечно же git squash N 🌚