containerd — это контейнерный рантайм по умолчанию в Kubernetes. Однако на практике мы редко взаимодействуем с containerd напрямую и зачастую не до конца понимаем, из каких компонентов состоит система, отвечающая за эффективное управление контейнерами.
Вот курс «Kubernetes the Very Hard Way» на платформе iximiuz Labs, где подробно разбирается, как containerd позволяет Kubernetes управлять тысячами и тысячами контейнеров:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997
👉 DevOps Portal
Вот курс «Kubernetes the Very Hard Way» на платформе iximiuz Labs, где подробно разбирается, как containerd позволяет Kubernetes управлять тысячами и тысячами контейнеров:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤1👍1
Быстрый совет по Linux
Вы можете попросить
Файл
Пример содержимого файла
Каждая строка - это имя или шаблон. При сканировании
👉 DevOps Portal
Вы можете попросить
du пропускать определённые директории, указав их имена в текстовом файле, тогда они не будут попадать в отчёт по использованию диска. Это позволяет держать вывод чистым и не учитывать то, что вас не интересует.du -h -X excludes.txt
Файл
excludes.txt содержит имена или шаблоны путей, а не жёстко заданные расположения. du игнорирует всё, что совпадает с ними, во время сканирования. Также можно использовать wildcard-шаблоны, например *.log, чтобы пропускать все .log-файлы, найденные при обходе.Пример содержимого файла
exclude.txt:Downloads
.local
.config
.var
.ssh
*.png
.gnupg
Каждая строка - это имя или шаблон. При сканировании
du игнорирует всё, что совпадает с этими записями, благодаря чему вывод по использованию диска остаётся сфокусированным и читабельным.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5
Грэм Хелтон только что опубликовал раскрытие уязвимости Kubernetes, которая позволяет выполнять произвольные команды в любом pod’е в кластере, используя распространённое «read-only» RBAC-разрешение. И этой уязвимости не будет присвоен CVE, а значит, Kubernetes не получит фикс 🤷♂️ 🤷♂️ 🤷♂️
https://grahamhelton.com/blog/nodes-proxy-rce
Но есть и хорошая новость. Грэм подготовил короткий вспомогательный пост, целиком посвящённый воспроизведению уязвимости, и он оформлен как туториал в iximiuz Labs:
https://labs.iximiuz.com/tutorials/nodes-proxy-rce-c9e436a9
- Скрипт для анализа кластера на наличие таких прав у SA
👉 DevOps Portal
https://grahamhelton.com/blog/nodes-proxy-rce
Но есть и хорошая новость. Грэм подготовил короткий вспомогательный пост, целиком посвящённый воспроизведению уязвимости, и он оформлен как туториал в iximiuz Labs:
https://labs.iximiuz.com/tutorials/nodes-proxy-rce-c9e436a9
- Скрипт для анализа кластера на наличие таких прав у SA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5
Dockadvisor - быстрый, легковесный линтер Dockerfile написанный на Go, который помогает найти различные общие проблемы и анти-паттерны.
В его составе порядка 60 правил, все достаточно стандартно для подобных инструментов (Dockle*, Hadolint, KICS, Checkov, Semgrep). Из приятного есть наличие красивого web-интерфейса с подсветкой и при этом можно использовать как и чисто go библиотеку.
GitHub: dockadvisor
👉 DevOps Portal
В его составе порядка 60 правил, все достаточно стандартно для подобных инструментов (Dockle*, Hadolint, KICS, Checkov, Semgrep). Из приятного есть наличие красивого web-интерфейса с подсветкой и при этом можно использовать как и чисто go библиотеку.
GitHub: dockadvisor
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍3
Kubelet – это "руки и ноги" Kubernetes: компонент, который работает на каждом узле и приводит желаемое состояние к фактическому
Следующий урок курса «Kubernetes the Very Hard Way» даёт углублённое представление о kubelet
Доступно на iximiuz Labs: https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
👉 DevOps Portal
Следующий урок курса «Kubernetes the Very Hard Way» даёт углублённое представление о kubelet
Доступно на iximiuz Labs: https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Простой YAML для деплоя EKS-кластера
В этом туториале по Kubernetes вы научитесь за несколько минут создавать AWS EKS-кластер с помощью YAML-конфига eksctl.
Также будут рассмотрены ключевые концепции eksctl.
Так как же работает eksctl?
Когда вы применяете YAML-файл eksctl или выполняете команду создания кластера, под капотом деплоятся шаблоны CloudFormation.
По сути, именно шаблоны CloudFormation и разворачивают кластер.
eksctl – это всего лишь обёртка над CloudFormation.
Читайте подробнее:
https://devopscube.com/create-aws-eks-cluster-eksctl/
👉 DevOps Portal
В этом туториале по Kubernetes вы научитесь за несколько минут создавать AWS EKS-кластер с помощью YAML-конфига eksctl.
Также будут рассмотрены ключевые концепции eksctl.
Так как же работает eksctl?
Когда вы применяете YAML-файл eksctl или выполняете команду создания кластера, под капотом деплоятся шаблоны CloudFormation.
По сути, именно шаблоны CloudFormation и разворачивают кластер.
eksctl – это всего лишь обёртка над CloudFormation.
Читайте подробнее:
https://devopscube.com/create-aws-eks-cluster-eksctl/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7
А вы знали, что можно запускать поды на ноде Kubernetes без control plane?
Или что с kubelet можно общаться напрямую через его API?
Зацените следующий урок курса «Kubernetes the Very Hard Way». В нём подробно разбирается, как работает kubelet изнутри:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
👉 DevOps Portal
Или что с kubelet можно общаться напрямую через его API?
Зацените следующий урок курса «Kubernetes the Very Hard Way». В нём подробно разбирается, как работает kubelet изнутри:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/worker-node/kubelet
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍1
etcd — это высокодоступное и строго согласованное key-value хранилище, которое обеспечивает работу Kubernetes, храня в нём всё состояние кластера.
Следующий урок из серии «Kubernetes the Very Hard Way», посвящённый etcd, доступен на iximiuz Labs:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/control-plane/etcd
👉 DevOps Portal
Следующий урок из серии «Kubernetes the Very Hard Way», посвящённый etcd, доступен на iximiuz Labs:
https://labs.iximiuz.com/courses/kubernetes-the-very-hard-way-0cbfd997/control-plane/etcd
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍4
Forwarded from Между инцидентами
Тренировка для линуксоидов ⚔️ 👁 ⚔️
Всего 34 уровня. Ваша задача на каждом из них — найти ключ к следующему.
Примеры уровней:
🟢 Дан файл, внутри которого лежит hexdump несколько раз сжатого разными алгоритмами контента. Вам нужно, соответственно, реверснуть хекс и несколько раз правильными утилитами (gzip, bzip2, tar) разжать файл.
🟢 На локалхосте несколько процессов слушают порты в диапазоне от 31000 до 32000. Вам нужно найти правильный порт и отправить на него ключ от текущего уровня, используя SSL/TLS-шифрование.
Я залип на день в этой штуке. Всем советую☺️
https://overthewire.org/wargames/bandit/
P.S. Ссылка не открывается без VPN, хотя к самим тачкам-уровням по SSH без него подключиться можно.
Больше полезных материалов для девопсов/линуксоидов в канале @davydovpage
Всего 34 уровня. Ваша задача на каждом из них — найти ключ к следующему.
Примеры уровней:
Я залип на день в этой штуке. Всем советую
https://overthewire.org/wargames/bandit/
P.S. Ссылка не открывается без VPN, хотя к самим тачкам-уровням по SSH без него подключиться можно.
Больше полезных материалов для девопсов/линуксоидов в канале @davydovpage
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤6
Перестаньте вручную опрашивать Pod’ы на предмет их готовности
Используйте команду
👉 DevOps Portal
Используйте команду
kubectl wait в своих CI/CD пайплайнах или скриптах. В связке с нативными sidecar-контейнерами образца 2026 года это поможет гарантировать, что ваши logging/security агенты уже поднялись до старта основного приложенияPlease open Telegram to view this post
VIEW IN TELEGRAM
❤14👍3
Почему Zsh такой крутой 😍
В стандартных шеллах вроде bash, чтобы поработать со строками, обычно приходится пайпить переменные в
Да, это ломает переносимость скриптов из-за несовместимости с POSIX. Но для интерактивной работы и личных конфигов это на порядок быстрее и удобнее.
Самый полезный модификатор?
Синтаксис такой:
Допустим, нужно передать имя файла (
Используем
Запуск
Как только начинаешь активно использовать модификаторы, назад уже не хочется.
Ещё полезные модификаторы:
И да, снова: переносимость скриптов ограничена из-за несовместимости с POSIX.
👉 DevOps Portal
В стандартных шеллах вроде bash, чтобы поработать со строками, обычно приходится пайпить переменные в
sed, basename и прочие утилиты. В Zsh эта логика встроена прямо в синтаксис расширения переменных.Да, это ломает переносимость скриптов из-за несовместимости с POSIX. Но для интерактивной работы и личных конфигов это на порядок быстрее и удобнее.
Самый полезный модификатор?
:r (root) — отрезает расширение файла.Синтаксис такой:
${file:r}Допустим, нужно передать имя файла (
game.cpp) и чтобы итоговый бинарник назывался так же (game), не прописывая имя дважды.Используем
${1:r}, чтобы автоматически убрать расширение из аргумента. Пример функции в Zsh:function grun() {
# $1 это "game.cpp"
# ${1:r} станет "game"
g++ -Wall -std=c++17 "$1" -o "${1:r}" && ./"${1:r}"
}Запуск
grun main.cpp скомпилирует и сразу запустит main – одним махом.Как только начинаешь активно использовать модификаторы, назад уже не хочется.
Ещё полезные модификаторы:
:e — получить только расширение:a — получить абсолютный путь:h — получить имя родительской директории:t — получить basenameИ да, снова: переносимость скриптов ограничена из-за несовместимости с POSIX.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥4🌚3🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
Как превратить init-container в sidecar-container?
В Kubernetes 1.28 появилась нативная поддержка sidecar-контейнеров через механизм init-containers.
Это стало возможным благодаря новому полю
Фича основана на концепции "персистентного init-контейнера". Init-container стартует первым, а за счёт
Такой контейнер работает на протяжении всего жизненного цикла Pod’а.
Проще говоря, чтобы превратить init-container в sidecar, достаточно добавить в его спецификацию атрибут:
Это опциональная настройка. Если restartPolicy не указан, контейнер будет работать как обычный init-container.
Нативный sidecar поддерживает поля
Чтобы подробнее разобраться в init-контейнерах и нативных sidecar-контейнерах, читайте статью:
https://devopscube.com/kubernetes-init-containers/
👉 DevOps Portal
В Kubernetes 1.28 появилась нативная поддержка sidecar-контейнеров через механизм init-containers.
Это стало возможным благодаря новому полю
restartPolicy, которое устанавливается в значение "Always".Фича основана на концепции "персистентного init-контейнера". Init-container стартует первым, а за счёт
restartPolicy получает поведение sidecar-контейнера.Такой контейнер работает на протяжении всего жизненного цикла Pod’а.
Проще говоря, чтобы превратить init-container в sidecar, достаточно добавить в его спецификацию атрибут:
restartPolicy: Always
Это опциональная настройка. Если restartPolicy не указан, контейнер будет работать как обычный init-container.
Нативный sidecar поддерживает поля
livenessProbe, readinessProbe и startupProbe. Также можно добавить lifecycle-хуки PostStart и PreStop.Чтобы подробнее разобраться в init-контейнерах и нативных sidecar-контейнерах, читайте статью:
https://devopscube.com/kubernetes-init-containers/
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9
Kide — это платформа наблюдаемости (observability), которая в реальном времени принимает и индексирует логи и метрики, позволяя вам искать, анализировать данные кластеров и приложений и настраивать алерты без ожидания.
GitHub: kide
👉 DevOps Portal
GitHub: kide
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает NAT?
Несколько устройств внутри сети используют приватные IP-адреса.
Маршрутизатор применяет NAT, чтобы сопоставить их с одним публичным IP-адресом в интернете.
Исходящий трафик → NAT подменяет приватный IP на публичный IP
Входящий ответ → NAT подменяет публичный IP обратно на приватный IP
👉 DevOps Portal
Несколько устройств внутри сети используют приватные IP-адреса.
Маршрутизатор применяет NAT, чтобы сопоставить их с одним публичным IP-адресом в интернете.
Исходящий трафик → NAT подменяет приватный IP на публичный IP
Входящий ответ → NAT подменяет публичный IP обратно на приватный IP
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27❤10🔥4🌚3👍2
Можно ли защитить непреднамеренно открытый порт сервера с помощью файрвола?
Очевидно, что такого вообще не должно было произойти, но это уже случилось. Теперь у вас есть проблема, и при этом нет возможности перезапустить сервис с корректной конфигурацией.
Удачи: https://labs.iximiuz.com/challenges/linux-protect-ports
👉 DevOps Portal
Очевидно, что такого вообще не должно было произойти, но это уже случилось. Теперь у вас есть проблема, и при этом нет возможности перезапустить сервис с корректной конфигурацией.
Удачи: https://labs.iximiuz.com/challenges/linux-protect-ports
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁43🥱8👍5👀2🤯1
Небольшое, но интересное упражнение по отладке Kubernetes — сможете ли вы отредактировать файл в уже запущенном pod’е?
Если задача кажется слишком простой, попробуйте пройти её:
https://labs.iximiuz.com/challenges/edit-file-in-running-kubernetes-pod
Почему-то этот челлендж помечен как «hard»😉
👉 DevOps Portal
Если задача кажется слишком простой, попробуйте пройти её:
https://labs.iximiuz.com/challenges/edit-file-in-running-kubernetes-pod
Почему-то этот челлендж помечен как «hard»
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2
Кладезь практических материалов по изучению eBPF 🐝
Эта насыщенная иллюстрациями серия от Теодора Подобника поможет вам быстро войти в eBPF-разработку и начать писать собственные программы. Теодор стартует с самых основ и последовательно проводит вас путь от полного нуля в eBPF до написания сначала простых, а затем и гораздо более продвинутых программ:
Серия построена на реальных production-кейcах, а примеры из статей гарантированно компилируются и запускаются вне зависимости от вашего Linux-дистрибутива и версии ядра.
Happy hacking!🚀
👉 DevOps Portal
Эта насыщенная иллюстрациями серия от Теодора Подобника поможет вам быстро войти в eBPF-разработку и начать писать собственные программы. Теодор стартует с самых основ и последовательно проводит вас путь от полного нуля в eBPF до написания сначала простых, а затем и гораздо более продвинутых программ:
От нуля до первого eBPF-приложения
https://labs.iximiuz.com/tutorials/my-first-ebpf-program-5120140e
Хранение данных в eBPF: создаём первую eBPF map
https://labs.iximiuz.com/tutorials/ebpf-maps-tutorial-3efd4617
Инспекция и мониторинг eBPF-приложений
https://labs.iximiuz.com/tutorials/inspecting-ebpf-using-bpftool-43dfa319
eBPF Verifier: почему ядро может безопасно выполнять eBPF-программы
https://labs.iximiuz.com/tutorials/ebpf-verifier-3bd2e199
eBPF-челлендж для начинающих
https://labs.iximiuz.com/challenges/ebpf-beginner-challenge-89ffd924
eBPF Tracepoints, Kprobes или Fprobes: что выбрать?
https://labs.iximiuz.com/tutorials/ebpf-tracing-46a570d1
Почему eBPF-программа работает на одном ядре и падает на другом?
https://labs.iximiuz.com/tutorials/portable-ebpf-programs-46216e54
Разработка по-настоящему переносимых eBPF-программ и BTFHub
https://labs.iximiuz.com/tutorials/truly-portable-ebpf-a7554c66
Разные способы доставки событий ядра из eBPF в user space
https://labs.iximiuz.com/tutorials/user-space-event-delivery-2197d020
Rate limiting сетевого трафика с помощью eBPF/XDP
https://labs.iximiuz.com/tutorials/ebpf-ratelimiting-dbc12915
Практика с XDP: eBPF для высокопроизводительного сетевого стека
https://labs.iximiuz.com/tutorials/ebpf-xdp-fundamentals-6342d24e
Разработка firewall на базе eBPF с матчингом диапазонов IP через LPM trie
https://labs.iximiuz.com/tutorials/ebpf-firewall-ed03d648
С нуля: L4 load balancer на базе eBPF/XDP с использованием NAT
https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74
С нуля: L2 Direct Server Return load balancer на eBPF/XDP
https://labs.iximiuz.com/tutorials/xdp-dsr-layer2-lb-92b02f3e
С нуля: IP-in-IP Direct Server Return load balancer на eBPF/XDP
https://labs.iximiuz.com/tutorials/xdp-dsr-load-balancer-b701a95a
Серия построена на реальных production-кейcах, а примеры из статей гарантированно компилируются и запускаются вне зависимости от вашего Linux-дистрибутива и версии ядра.
Happy hacking!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍2