Аннотации в Kubernetes часто объясняют просто как метаданные
Большинство знают, что аннотации используются такими инструментами, как Prometheus или Ingress-контроллеры.
Но многие не осознают, какая мощь в них скрыта.
Аннотации не имеют фиксированной структуры – Kubernetes их не валидирует и не пытается интерпретировать. И именно поэтому они настолько мощные.
Они работают как механизм расширения Kubernetes.
Каждый контроллер, оператор и внешний инструмент использует аннотации для передачи информации, не меняя core API.
Именно так Kubernetes эволюционирует, не ломая старые конфигурации.
Аннотации не предназначены для селекции или фильтрации – для этого есть labels.
Аннотации существуют для описания поведения и контекста, а не идентичности.
Поэтому они могут быть большими, описательными и разными для каждого инструмента.
Аннотации не бесконечны – у них есть лимит в 256 КБ, с которым многие из вас наверняка сталкивались.
Аннотации не обязаны жить только на Pod’ах.
Одни инструменты читают их из Service, другие – из Namespace, а некоторые даже используют аннотации на Node. Механизм один и тот же, меняется только область применения.
Хороший реальный пример – Argo CD Image Updater.
Вместо того чтобы напрямую менять манифесты, он использует аннотации на Application, чтобы управлять тем, какие образы отслеживать, стратегией обновления и правилами тегов.
Вся логика работы управляется через аннотации.
Никаких новых CRD.
Никаких кастомных конфигов.
Просто метаданные, которые управляют автоматизацией.
Вот разбор этого на практическом примере.
Читайте здесь: https://devopscube.com/setup-argocd-image-updater
Примечание: аннотации – это не конфигурация, это средство коммуникации.
Когда начинаешь смотреть на них именно так, многие архитектурные решения Kubernetes внезапно становятся понятными
👉 DevOps Portal
Большинство знают, что аннотации используются такими инструментами, как Prometheus или Ingress-контроллеры.
Но многие не осознают, какая мощь в них скрыта.
Аннотации не имеют фиксированной структуры – Kubernetes их не валидирует и не пытается интерпретировать. И именно поэтому они настолько мощные.
Они работают как механизм расширения Kubernetes.
Каждый контроллер, оператор и внешний инструмент использует аннотации для передачи информации, не меняя core API.
Именно так Kubernetes эволюционирует, не ломая старые конфигурации.
Аннотации не предназначены для селекции или фильтрации – для этого есть labels.
Аннотации существуют для описания поведения и контекста, а не идентичности.
Поэтому они могут быть большими, описательными и разными для каждого инструмента.
Аннотации не бесконечны – у них есть лимит в 256 КБ, с которым многие из вас наверняка сталкивались.
Аннотации не обязаны жить только на Pod’ах.
Одни инструменты читают их из Service, другие – из Namespace, а некоторые даже используют аннотации на Node. Механизм один и тот же, меняется только область применения.
Хороший реальный пример – Argo CD Image Updater.
Вместо того чтобы напрямую менять манифесты, он использует аннотации на Application, чтобы управлять тем, какие образы отслеживать, стратегией обновления и правилами тегов.
Вся логика работы управляется через аннотации.
Никаких новых CRD.
Никаких кастомных конфигов.
Просто метаданные, которые управляют автоматизацией.
Вот разбор этого на практическом примере.
Читайте здесь: https://devopscube.com/setup-argocd-image-updater
Примечание: аннотации – это не конфигурация, это средство коммуникации.
Когда начинаешь смотреть на них именно так, многие архитектурные решения Kubernetes внезапно становятся понятными
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4🤔1
Этот туториал показывает, как задеплоить полноценный LGTM observability-стек (Loki, Grafana, Tempo, Mimir) с использованием OpenTelemetry в Kubernetes для единого сбора метрик, логов и трейсов
Читайте тут
👉 DevOps Portal
Читайте тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥4
Linux-совет для DevOps-инженеров
Как получить публичный IP сервера с помощью команды?
Можно использовать curl и публично доступные сервисы, чтобы получить внешний адрес, как показано на изображении.
Для AWS и GCP всегда используйте соответствующий metadata-сервис, чтобы получать публичный IP.
Примечание: не используйте публично доступные сервисы в реальном проекте или продакшн-коде. Всегда консультируйтесь с вашей командой по безопасности по доступным вариантам
👉 DevOps Portal
Как получить публичный IP сервера с помощью команды?
Можно использовать curl и публично доступные сервисы, чтобы получить внешний адрес, как показано на изображении.
Для AWS и GCP всегда используйте соответствующий metadata-сервис, чтобы получать публичный IP.
Примечание: не используйте публично доступные сервисы в реальном проекте или продакшн-коде. Всегда консультируйтесь с вашей командой по безопасности по доступным вариантам
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Откопал полезную базу по Linux / Unix от Tutorialspoint – простые и понятные объяснения без лишней воды
Там разбирают всё, с чем сталкиваешься в линуксе каждый день:
— как работают процессы и сигналы
— что происходит с памятью
— как устроена файловая система
— как читать и настраивать права доступа
Каждая тема с примерами команд и лаконичными пояснениями
Забирайте тут
👉 DevOps Portal
Там разбирают всё, с чем сталкиваешься в линуксе каждый день:
— как работают процессы и сигналы
— что происходит с памятью
— как устроена файловая система
— как читать и настраивать права доступа
Каждая тема с примерами команд и лаконичными пояснениями
Забирайте тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥1
Что на самом деле происходит, когда вы запускаете контейнер самой типичной командой
На первый взгляд кажется, что Nginx становится вашим foreground-процессом в терминале – он перехватывает stdio-потоки и реагирует на сигналы, когда вы нажимаете Ctrl+C или меняете размер окна терминала.
Но в реальности терминалом управляет процесс Docker-клиента, а сам Nginx работает в фоне или вообще на удалённой машине. При этом между docker CLI, dockerd (основным Docker-демоном) и containerd (низкоуровневым container runtime) происходит довольно сложная проксировка данных и сигналов — из-за чего всё ощущается как простой локальный запуск.
Почему это важно? Понимание того, как работает docker run под капотом — ключ к пониманию Kubernetes и других продакшн-рантаймов. В продакшене контейнеризованные приложения обычно работают в фоне, но Kubernetes и похожие системы позволяют стримить логи приложений и даже переподключаться к процессам в контейнерах, используя те же самые трюки, что и Docker.
Подробнее о магии за командой
https://labs.iximiuz.com/tutorials/docker-run-vs-attach-vs-exec
👉 DevOps Portal
docker run nginx? На первый взгляд кажется, что Nginx становится вашим foreground-процессом в терминале – он перехватывает stdio-потоки и реагирует на сигналы, когда вы нажимаете Ctrl+C или меняете размер окна терминала.
Но в реальности терминалом управляет процесс Docker-клиента, а сам Nginx работает в фоне или вообще на удалённой машине. При этом между docker CLI, dockerd (основным Docker-демоном) и containerd (низкоуровневым container runtime) происходит довольно сложная проксировка данных и сигналов — из-за чего всё ощущается как простой локальный запуск.
Почему это важно? Понимание того, как работает docker run под капотом — ключ к пониманию Kubernetes и других продакшн-рантаймов. В продакшене контейнеризованные приложения обычно работают в фоне, но Kubernetes и похожие системы позволяют стримить логи приложений и даже переподключаться к процессам в контейнерах, используя те же самые трюки, что и Docker.
Подробнее о магии за командой
docker run — в подробном разборе (с кучей практических упражнений):https://labs.iximiuz.com/tutorials/docker-run-vs-attach-vs-exec
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5
Forwarded from Мир Linux
Let’s Encrypt начал выдавать TLS-сертификаты для IP-адресов и запустил короткоживущие 6-дневные сертификаты
Теперь можно поднимать HTTPS напрямую на IPv4/IPv6 без доменного имени – удобно для homelab, тестовых стендов, временных сервисов, внутренних бэкендов и начальной настройки серверов. Сертификаты для IP выдаются только в short-lived формате и живут 160 часов (чуть больше 6 дней)
Параллельно стали доступны опциональные 6-дневные сертификаты и для доменов – как дополнительный уровень защиты: при компрометации ключа ущерб ограничен самим сроком жизни сертификата, а не отзывом.
Для получения нужен ACME-клиент с поддержкой профиля shortlived (например, свежий Certbot). Для IP валидация только через http-01 или tls-alpn-01 – dns-01 не поддерживается
@linuxos_tg
Теперь можно поднимать HTTPS напрямую на IPv4/IPv6 без доменного имени – удобно для homelab, тестовых стендов, временных сервисов, внутренних бэкендов и начальной настройки серверов. Сертификаты для IP выдаются только в short-lived формате и живут 160 часов (чуть больше 6 дней)
Параллельно стали доступны опциональные 6-дневные сертификаты и для доменов – как дополнительный уровень защиты: при компрометации ключа ущерб ограничен самим сроком жизни сертификата, а не отзывом.
Для получения нужен ACME-клиент с поддержкой профиля shortlived (например, свежий Certbot). Для IP валидация только через http-01 или tls-alpn-01 – dns-01 не поддерживается
@linuxos_tg
❤19🔥10👍2
Бывали ли у вас ситуации, когда использовать Kubernetes — это уже перебор, но деплоить на пачку VM с самописными скриптами или Ansible-плейбуками тоже не особо хочется?
Docker Swarm может быть жив или мёртв — вопрос спорный, но сама ниша никуда не делась. И такие проекты, как Kamal (от 37signals) и Uncloud (от Паши Свидерского), пытаются её закрыть.
Если вы ещё не слышали про последний, Uncloud — это лёгкий (по сравнению с Kubernetes) инструмент для деплоя и управления контейнеризованными приложениями в сети Docker-хостов.
Антон Овчинников недавно опубликовал пошаговый гайд на iximiuz Labs, в котором показано, как развернуть кластер Uncloud на нескольких VM. Рекомендуем посмотреть:
https://labs.iximiuz.com/tutorials/uncloud-create-cluster-ebebf72b
Традиционно, все команды из туториала можно прогнать прямо в приложенной песочнице✌️
👉 DevOps Portal
Docker Swarm может быть жив или мёртв — вопрос спорный, но сама ниша никуда не делась. И такие проекты, как Kamal (от 37signals) и Uncloud (от Паши Свидерского), пытаются её закрыть.
Если вы ещё не слышали про последний, Uncloud — это лёгкий (по сравнению с Kubernetes) инструмент для деплоя и управления контейнеризованными приложениями в сети Docker-хостов.
Антон Овчинников недавно опубликовал пошаговый гайд на iximiuz Labs, в котором показано, как развернуть кластер Uncloud на нескольких VM. Рекомендуем посмотреть:
https://labs.iximiuz.com/tutorials/uncloud-create-cluster-ebebf72b
Традиционно, все команды из туториала можно прогнать прямо в приложенной песочнице
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрый совет по Linux
Вместо
В чём плюс? Когда выходишь из просмотра лога, экран не заливается кучей строк.
Нажмите Ctrl+C, чтобы остановить просмотр в реальном времени и перейти в обычный режим навигации less (скроллинг, поиск и т.д.).
Нажмите
Нажмите
Это даёт возможность гибко переключаться между статическим просмотром и live-мониторингом
👉 DevOps Portal
Вместо
tail смотри лог-файлы в реальном времени с флагом +F:less +F hello.txt
В чём плюс? Когда выходишь из просмотра лога, экран не заливается кучей строк.
Нажмите Ctrl+C, чтобы остановить просмотр в реальном времени и перейти в обычный режим навигации less (скроллинг, поиск и т.д.).
Нажмите
Shift+F, чтобы снова начать следить за файлом в реальном времени.Нажмите
q, чтобы полностью выйти из less.Это даёт возможность гибко переключаться между статическим просмотром и live-мониторингом
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤5
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
Это браузерная платформа с реальными интерактивными средами, где ты можешь запускать:
• Linux/Ubuntu терминал
• Kubernetes‑кластеры (включая контрольную плоскость)
• инструменты типа Docker, bash, Git и др.
• готовые учебные сценарии и playground‑среды прямо в браузере без локальной настройки окружения
Платформа подходит как для новичков (практика базовых команд), так и для прокачки в Kubernetes/DevOps, подготовки к CKA/CKAD/CKS и другим кейсам – можно запускать сценарии, выполнять задачи и экспериментировать с реальными системами
Плюс можно создавать и делиться своими сценариями с сообществом .
Ссылка: killercoda.com
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
В вашем кластере есть Pod с ошибкой. Он пытается запуститься, но не может пройти инициализацию. Судя по всему, недавно в его спецификацию добавили новый контейнер, и с этого момента Pod перестал нормально работать. Сможете починить?
https://labs.iximiuz.com/challenges/kubernetes-pod-with-faulty-init-sequence
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤6
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
Это означает больший расход пропускной способности на балансировщике и то, что самый большой трафик проходит через компонент, который меньше всего хотелось бы превращать в бутылочное горлышко.
Direct Server Return (DSR) решает эту проблему: запросы идут через LB, а ответы – напрямую, минуя его.
Сборка DSR-балансировщика на базе eBPF – отличный способ реально разобраться и в eBPF, и в том, как DSR работает на уровне L2. Посмотрите свежий практический туториал от Teodor Podobnik, где он шаг за шагом проводит вас через весь процесс:
https://labs.iximiuz.com/tutorials/xdp-dsr-layer2-lb-92b02f3e
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤7
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
🔥6❤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👍2
⚡ Повысить производительность СУБД или сократить расходы на IT-инфраструктуру?
Не нужно выбирать. Selectel расскажет и покажет, как найти баланс на примере собственного сервиса.
Подключайтесь к бесплатному вебинару для тех, кто работает с базами данных
🗓 5 февраля, 12:00
📍 Онлайн
Вы узнаете:
- как работают базы данных на выделенном облачном сервере,
- какие особенности архитектуры позволяют повысить производительность сервиса в 10 раз и получить до 1,5 млн IOPS и 7000 Мб/c в облаке,
- как клиентам Selectel удается экономить до 47% на IT-инфраструктуре.
Регистрируйтесь по ссылке: https://slc.tl/60r6y
👉 Чтобы не пропустить новые мероприятия, воркшопы и бесплатные курсы Selectel, подписывайтесь на @selectel_events
Реклама. АО "Селектел". erid:2W5zFJvxwXN
Не нужно выбирать. Selectel расскажет и покажет, как найти баланс на примере собственного сервиса.
Подключайтесь к бесплатному вебинару для тех, кто работает с базами данных
🗓 5 февраля, 12:00
📍 Онлайн
Вы узнаете:
- как работают базы данных на выделенном облачном сервере,
- какие особенности архитектуры позволяют повысить производительность сервиса в 10 раз и получить до 1,5 млн IOPS и 7000 Мб/c в облаке,
- как клиентам Selectel удается экономить до 47% на IT-инфраструктуре.
Регистрируйтесь по ссылке: https://slc.tl/60r6y
👉 Чтобы не пропустить новые мероприятия, воркшопы и бесплатные курсы Selectel, подписывайтесь на @selectel_events
Реклама. АО "Селектел". erid:2W5zFJvxwXN
🥱2
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
❤4
Простой 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
❤5
А вы знали, что можно запускать поды на ноде 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
❤6👍1