MashaOps
207 subscribers
11 photos
3 files
88 links
Download Telegram
Разгребаю свои закладки и наткнулась на доклад про Least Privelege Containers.

Ребята из DevSecOps Talks уже сделали пост-разбор - рекомендую к прочтению и просмотру 👀
Forwarded from DevSecOps Talks
Run containers as non-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. Получился отличный, простой и очень полезный доклад, рекомендуем к просмотру!
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.
Exposing Custom Host Metrics Using the Prometheus Node Exporter | "textfile" Collector Module

У Prometheus node-exporter есть специальный модуль textfile, который позволяет собирать метрики из файлов на диске. Может быть удобно для добавления собственной информации об инстансе - устанновленных пакетов с версиями, результаты работы скриптов и тд.

Подробный туториал по ссылке, а также коллекция уже готовых скриптов в репозитории node-exporter-textfile-collector-scripts.
How Canva saves millions annually in Amazon S3 costs

Инженеры 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 компоненты)
Quality-of-Service for Memory Resources

В блоге 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, потому что их память должна быть гарантирована.
Docker Networking Model: Introduction

Подробная статья про сетевую модель в докере. Автор подробно рассказывает про ключевые режимы - None, Host, Bridge, Container. В основе сетевого взаимодействия в Kubernetes заложены те же самые концепции с дополнительной магией 🪄

Также есть следующие продолжения, детально рассматривающие:
- Bridge Mode
- Container Network Access
- External Network Access

В каждой статье приведены подробные схемы и команды для практики. Рекоменданьсен 🧑‍🍳
Reflections on 10,000 Hours of DevOps

Приведу пункты, которые понравились:

Воспроизводимость важна.
Ценность CI/CD пайплайнов обратно пропорциональна времени их выполнения.
Код лучше YAMLа.
Линейная git история облегчает роллбеки.
Не разделяйте преждевременно монорепозитории.
Вертикальное масштабирование сильно проще, чем горизонтальное.
Не игнорируйте флапающие тесты - пофиксите их или удалите.
Правило 80/20 для декларативной конфигурации. Оставшиеся 20% обычно не стоят того.
Bash-скрипты не так плохи, как их репутация. Просто не делайте ничего сложного и всегда выставляйте set -ex и -o pipefail.
Троттлите и rate-limit-те внешние API


Оригинальный пост доступен по ссылке.
Подписалась на рассылку с комиксами от Julia Evans. (для меня имейлы оказались самым эффективным способом регулярно что-то читать и изучать)

Сегодня пришли классные маленькие чит-коды для работы с башем.

Про stack для cd я рассказывала в треде, это очень интересная и полезная фича.

На вооружение обязательно возьму себе fc.
Собеседуемся в 2023 году

Этим летом у меня случился опыт активного поиска работы. Я решила обобщить полученный опыт и подготовила пост, в нем можно найти:
😎 как я готовилась к активному поиску
💭 какие вопросы задавать HR, будущим тиммейтам и менеджеру
🤓 какие ресурсы использовать, для подготовки к техническому собеседованию на DevOps/SRE
💸 что с деньгами?

Помимо прочего, у меня еще лежит неопубликованный список основных вопросов с собеседований и выполненное тестовое задание, которое я хочу разобрать в текстовом/видео форматах. Если интересно что-то из этого списка, голосуй в опросе 👇
На этой неделе проходил 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
Putting the "You" in CPU

Большая коллекция статей о том, как работает цпу (и много других связанных вещей). Автор последовательно с картинками и пояснениями рассказывает, что на самом деле происходит внутри операционной системы.

https://cpu.land/
Connecting the Dots: Understanding How Pods Talk in Kubernetes Networks

Очень подробная статья про то, как работает DNS в Kubernetes. Автор затрагивает вопросы сервис дискавери, флоу днс запросов внутри кластера, способы конфигурации и принцип работы NodeLocalDNS.

В конце статьи также есть список полезных ссылок, если хочется углубиться в тему.
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)
How did I get here?

Интерактивный сайт, на котором можно посмотреть какой путь проделывают пакеты с вашего компьютера до бекенда. Часть сайта генерируется налету, другая часть рассказывает про то, что происходит "под капотом" - 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: git history & git graph.

Мой gitconfig можно посмотреть вот тут. Самая любимая команда - конечно же git squash N 🌚