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

Связь: @devmangx

РКН: https://clck.ru/3P8kFH
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрый совет по Linux

Вместо tail смотри лог-файлы в реальном времени с флагом +F:

less +F hello.txt


В чём плюс? Когда выходишь из просмотра лога, экран не заливается кучей строк.

Нажмите Ctrl+C, чтобы остановить просмотр в реальном времени и перейти в обычный режим навигации less (скроллинг, поиск и т.д.).

Нажмите Shift+F, чтобы снова начать следить за файлом в реальном времени.

Нажмите q, чтобы полностью выйти из less.

Это даёт возможность гибко переключаться между статическим просмотром и live-мониторингом

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥195
This media is not supported in your browser
VIEW IN TELEGRAM
Откопал живой интерактивный тренажёр для прокачки практических навыков по DevOps, облачным техам и не только – Killercoda.

Это браузерная платформа с реальными интерактивными средами, где ты можешь запускать:

• Linux/Ubuntu терминал
• Kubernetes‑кластеры (включая контрольную плоскость)
• инструменты типа Docker, bash, Git и др.
• готовые учебные сценарии и playground‑среды прямо в браузере без локальной настройки окружения

Платформа подходит как для новичков (практика базовых команд), так и для прокачки в Kubernetes/DevOps, подготовки к CKA/CKAD/CKS и другим кейсам – можно запускать сценарии, выполнять задачи и экспериментировать с реальными системами

Плюс можно создавать и делиться своими сценариями с сообществом .

Ссылка: killercoda.com

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍8🔥4
Изучаем Kubernetes через практические челленджи

В вашем кластере есть Pod с ошибкой. Он пытается запуститься, но не может пройти инициализацию. Судя по всему, недавно в его спецификацию добавили новый контейнер, и с этого момента Pod перестал нормально работать. Сможете починить?

https://labs.iximiuz.com/challenges/kubernetes-pod-with-faulty-init-sequence

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🔥1
NAT-based балансировщики нагрузки (LB) вроде HAProxy или Nginx обычно являются выбором по умолчанию. Но у них есть проблема: все ответы тоже проходят обратно через LB. А если запросы чаще всего короткие, то ответы могут быть в 10–100 раз «тяжелее».

Это означает больший расход пропускной способности на балансировщике и то, что самый большой трафик проходит через компонент, который меньше всего хотелось бы превращать в бутылочное горлышко.

Direct Server Return (DSR) решает эту проблему: запросы идут через LB, а ответы – напрямую, минуя его.

Сборка DSR-балансировщика на базе eBPF – отличный способ реально разобраться и в eBPF, и в том, как DSR работает на уровне L2. Посмотрите свежий практический туториал от Teodor Podobnik, где он шаг за шагом проводит вас через весь процесс:
https://labs.iximiuz.com/tutorials/xdp-dsr-layer2-lb-92b02f3e

👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127🔥1
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