DevOps Portal | Linux
13.4K subscribers
844 photos
103 videos
10 files
856 links
Присоединяйтесь к нашему каналу и погрузитесь в мир DevOps

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
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
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥71👍1
Быстрый совет по Linux

Вы можете попросить du пропускать определённые директории, указав их имена в текстовом файле, тогда они не будут попадать в отчёт по использованию диска. Это позволяет держать вывод чистым и не учитывать то, что вас не интересует.

du -h -X excludes.txt


Файл excludes.txt содержит имена или шаблоны путей, а не жёстко заданные расположения. du игнорирует всё, что совпадает с ними, во время сканирования. Также можно использовать wildcard-шаблоны, например *.log, чтобы пропускать все .log-файлы, найденные при обходе.

Пример содержимого файла exclude.txt:
Downloads
.local
.config
.var
.ssh
*.png
.gnupg


Каждая строка - это имя или шаблон. При сканировании du игнорирует всё, что совпадает с этими записями, благодаря чему вывод по использованию диска остаётся сфокусированным и читабельным.

👉 DevOps Portal
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
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
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
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
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
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
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍4
Тренировка для линуксоидов ⚔️👁⚔️

Всего 34 уровня. Ваша задача на каждом из них — найти ключ к следующему.

Примеры уровней:

🟢 Дан файл, внутри которого лежит hexdump несколько раз сжатого разными алгоритмами контента. Вам нужно, соответственно, реверснуть хекс и несколько раз правильными утилитами (gzip, bzip2, tar) разжать файл.
🟢 На локалхосте несколько процессов слушают порты в диапазоне от 31000 до 32000. Вам нужно найти правильный порт и отправить на него ключ от текущего уровня, используя SSL/TLS-шифрование.

Я залип на день в этой штуке. Всем советую ☺️

https://overthewire.org/wargames/bandit/

P.S. Ссылка не открывается без VPN, хотя к самим тачкам-уровням по SSH без него подключиться можно.

Больше полезных материалов для девопсов/линуксоидов в канале @davydovpage
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥166
Перестаньте вручную опрашивать Pod’ы на предмет их готовности

Используйте команду kubectl wait в своих CI/CD пайплайнах или скриптах. В связке с нативными sidecar-контейнерами образца 2026 года это поможет гарантировать, что ваши logging/security агенты уже поднялись до старта основного приложения

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍3
Почему Zsh такой крутой 😍

В стандартных шеллах вроде 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.

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥4🌚3🌭1
This media is not supported in your browser
VIEW IN TELEGRAM
Как превратить init-container в sidecar-container?

В 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/

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Kide — это платформа наблюдаемости (observability), которая в реальном времени принимает и индексирует логи и метрики, позволяя вам искать, анализировать данные кластеров и приложений и настраивать алерты без ожидания.

GitHub: kide

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74
This media is not supported in your browser
VIEW IN TELEGRAM
Как работает NAT?

Несколько устройств внутри сети используют приватные IP-адреса.
Маршрутизатор применяет NAT, чтобы сопоставить их с одним публичным IP-адресом в интернете.

Исходящий трафик → NAT подменяет приватный IP на публичный IP

Входящий ответ → NAT подменяет публичный IP обратно на приватный IP

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁2710🔥4🌚3👍2
Можно ли защитить непреднамеренно открытый порт сервера с помощью файрвола?

Очевидно, что такого вообще не должно было произойти, но это уже случилось. Теперь у вас есть проблема, и при этом нет возможности перезапустить сервис с корректной конфигурацией.

Удачи: https://labs.iximiuz.com/challenges/linux-protect-ports

👉 DevOps Portal
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
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍2
Кладезь практических материалов по изучению eBPF 🐝

Эта насыщенная иллюстрациями серия от Теодора Подобника поможет вам быстро войти в 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! 🚀

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2