Знаете ли вы?
SSH-сессии не исчезают, когда вы отключаетесь.
Пути:
Что могут увидеть специалисты по цифровой криминалистике:
- успешные логины;
- неудачные brute-force попытки;
- исходные IP-адреса;
- длительность сессий;
-какая учётная запись использовалась.
Вы отключились. Linux сохранил журнал посещений.
👉 DevOps Portal
SSH-сессии не исчезают, когда вы отключаетесь.
Пути:
/var/log/wtmp — история входов/var/log/btmp — неудачные попытки входа/var/log/lastlog — последний входЧто могут увидеть специалисты по цифровой криминалистике:
- успешные логины;
- неудачные brute-force попытки;
- исходные IP-адреса;
- длительность сессий;
-какая учётная запись использовалась.
Вы отключились. Linux сохранил журнал посещений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤10😁1🤝1
Учимся сетям на практике
Вот пример сложной сетевой топологии, которую можно развернуть в playground от iximiuz Labs, где узлы – это реальные виртуальные машины, соединённые с произвольным количеством сетевых бриджей.
Пора поработать руками:
https://labs.iximiuz.com/playgrounds/flexbox
👉 DevOps Portal
Вот пример сложной сетевой топологии, которую можно развернуть в playground от iximiuz Labs, где узлы – это реальные виртуальные машины, соединённые с произвольным количеством сетевых бриджей.
Пора поработать руками:
https://labs.iximiuz.com/playgrounds/flexbox
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
Когда-нибудь задумывались, как Kubernetes-сервисы обрабатывают балансировку нагрузки?
Вот как это работает.
По умолчанию компонент kube-proxy в Kubernetes использует iptables для маршрутизации запросов (также поддерживается IPVS).
В iptables есть функция, называемая statistic mode random probability.
Эта функция является частью iptables и используется для фильтрации пакетов и NAT. Она позволяет создавать правила, которые случайным образом матчят определённый процент пакетов.
Например, мы протестировали endpoint сервиса, указывающий на деплоймент из трёх подов.
Он показал значение statistic mode random probability = 0.33, что по сути распределяет трафик между тремя подами.
Это скорее вероятностное распределение трафика, а не полноценная балансировка нагрузки.
- Оно не учитывает фактическую нагрузку на серверы.
- Не гарантирует равномерное распределение трафика во времени.
- Не поддерживает session persistence (липкие сессии)
👉 DevOps Portal
Вот как это работает.
По умолчанию компонент kube-proxy в Kubernetes использует iptables для маршрутизации запросов (также поддерживается IPVS).
В iptables есть функция, называемая statistic mode random probability.
Эта функция является частью iptables и используется для фильтрации пакетов и NAT. Она позволяет создавать правила, которые случайным образом матчят определённый процент пакетов.
Например, мы протестировали endpoint сервиса, указывающий на деплоймент из трёх подов.
Он показал значение statistic mode random probability = 0.33, что по сути распределяет трафик между тремя подами.
Это скорее вероятностное распределение трафика, а не полноценная балансировка нагрузки.
- Оно не учитывает фактическую нагрузку на серверы.
- Не гарантирует равномерное распределение трафика во времени.
- Не поддерживает session persistence (липкие сессии)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3
Forwarded from IT Portal
This media is not supported in your browser
VIEW IN TELEGRAM
Нашёл максимально залипательный способ прокачать system design и облачную архитектуру – игра Server Survival
Это 3D tower defense, где вы играете за облачного архитектора: строите инфраструктуру, раскидываете файрволы, балансировщики, сторэджи, отбиваетесь от дудоса, следите за бюджетом и здоровьем сервисов.
По сути, интерактивный симулятор продакшн-нагрузки, только в формате игры🥳
И да, проект опенсорс, код на GitHub
@IT_Portal
Это 3D tower defense, где вы играете за облачного архитектора: строите инфраструктуру, раскидываете файрволы, балансировщики, сторэджи, отбиваетесь от дудоса, следите за бюджетом и здоровьем сервисов.
По сути, интерактивный симулятор продакшн-нагрузки, только в формате игры
И да, проект опенсорс, код на GitHub
@IT_Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4
Самый распространённый способ запустить контейнер — использовать Docker CLI. Но что именно делает команда
🔹
🔹
🔹
🔹
Мини-курс, чтобы научиться запускать контейнеры с разными рантаймами:
https://labs.iximiuz.com/skill-paths/run-containers-across-runtimes
👉 DevOps Portal
docker run? Чем она отличается от:podman runnerdctl runctr runrunc create/startМини-курс, чтобы научиться запускать контейнеры с разными рантаймами:
https://labs.iximiuz.com/skill-paths/run-containers-across-runtimes
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Репозиторий для изучения Prometheus и понимания, зачем и где его использовать
https://github.com/acend/prometheus-training
👉 DevOps Portal
https://github.com/acend/prometheus-training
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7
Тормозят Docker-сборки? Используй мощь build cache
Build cache переиспользует слои образа и метаданные, чтобы ускорить сборку. Когда ты пересобираешь образ без изменений или с минимальными изменениями, билдер повторно использует результаты предыдущей сборки.
На картиинке наглядный пример того, как build cache работает между сборками
Если хочешь ускорить сборки, в этом туториале разобраны ключевые концепции и практики, которые помогают выжать максимум из кэша:
https://depot.dev/blog/ultimate-guide-to-docker-build-cache
👉 DevOps Portal
Build cache переиспользует слои образа и метаданные, чтобы ускорить сборку. Когда ты пересобираешь образ без изменений или с минимальными изменениями, билдер повторно использует результаты предыдущей сборки.
На картиинке наглядный пример того, как build cache работает между сборками
Если хочешь ускорить сборки, в этом туториале разобраны ключевые концепции и практики, которые помогают выжать максимум из кэша:
https://depot.dev/blog/ultimate-guide-to-docker-build-cache
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2
Kubernetes совет
Удалить все поды в неймспейсе
При работе с тестовым кластером или в процессе обучения
могут возникнуть ситуации, когда нужно удалить все поды в конкретном неймспейсе.
Сделать это можно с помощью флага
👉 DevOps Portal
Удалить все поды в неймспейсе
При работе с тестовым кластером или в процессе обучения
могут возникнуть ситуации, когда нужно удалить все поды в конкретном неймспейсе.
Сделать это можно с помощью флага
--allPlease open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🥱3🔥2
Большинство людей сразу прыгают в Prometheus и Grafana, не понимая, какую именно задачу они на самом деле решают.
Я постоянно вижу это на собеседованиях. Человек говорит: «Мы используем Prometheus для мониторинга», но при этом не может объяснить, почему логи и метрики требуют разных пайплайнов, или что вообще происходит, когда CloudWatch перестаёт справляться на масштабе.
В observability вы решаете две принципиально разные проблемы.
Логи отвечают на вопрос "что произошло". Произошла ошибка. Пришёл запрос. Упал запрос к базе данных.
Это события - истории, которые рассказывает ваше приложение.
Метрики отвечают на вопрос "как система чувствует себя прямо сейчас". Латентность 200 мс. CPU 75%. 500 запросов в минуту. Это измерения.
Разные типы данных. Разные способы сбора. Разное хранение. И именно здесь большинство людей путается.
В прошлом месяце на моём DevOps-буткемпе мы собрали полноценную систему observability для микросервисов в Kubernetes.
Логи
Для логов мы использовали Fluentd sidecar-контейнеры, которые шарят volume с основным контейнером приложения:
- приложение пишет логи в volume;
- Fluentd читает их и отправляет дальше;
- чёткое разделение ответственности;
- на небольшом масштабе логи просто улетают напрямую в CloudWatch.
Но когда у вас тысячи строк логов в секунду, приходится добавлять слои:
- Lambda для форматирования.
- Kinesis для буферизации.
- OpenSearch для быстрых запросов по петабайтам данных.
- S3 для долгосрочного бэкапа.
Мы держали 7 дней в OpenSearch для активных расследований. 30 дней — в CloudWatch. Годы — в S3 для комплаенса. У каждого слоя разные характеристики по цене и производительности.
Метрики
Для метрик Prometheus скрейпит application endpoints каждые 30 секунд:
- разработчики инструментируют код клиентскими библиотеками Prometheus;
- экспонируют /metrics endpoint;
- Prometheus сам подтягивает данные.
Мы создали ServiceMonitor’ы, которые говорят Prometheus, какие pod’ы скрейпить на основе label’ов:
- Как только поднимаются новые pod’ы, Prometheus их обнаруживает и начинает скрейпить.
- Дальше Grafana визуализирует всё это.
- Мы импортировали готовые дашборды с grafana.com для мониторинга Kubernetes.
- И также собрали кастомные панели под метрики конкретного приложения.
Логи и метрики идут параллельно.
Когда что-то ломается, метрики показывают вам всплеск: error rate подпрыгнул в PM. Латентность выросла со 100 мс до 2 секунд.
Дальше вы идёте в логи: фильтруете по тому же окну времени, находите stack trace’ы и видите, что именно упало.
Нельзя нормально дебажить, имея только один тип данных. Нужны обе перспективы.
Мы всё это реализовали и оттраблшутали в лайв-созвоне: нагенерили метрики и логи и собрали дашборды в Grafana
Прочитать подробный пост можно здесь: https://open.substack.com/pub/akhileshmishra/p/youre-not-ready-for-kubernetes-observability
👉 DevOps Portal
Я постоянно вижу это на собеседованиях. Человек говорит: «Мы используем Prometheus для мониторинга», но при этом не может объяснить, почему логи и метрики требуют разных пайплайнов, или что вообще происходит, когда CloudWatch перестаёт справляться на масштабе.
В observability вы решаете две принципиально разные проблемы.
Логи отвечают на вопрос "что произошло". Произошла ошибка. Пришёл запрос. Упал запрос к базе данных.
Это события - истории, которые рассказывает ваше приложение.
Метрики отвечают на вопрос "как система чувствует себя прямо сейчас". Латентность 200 мс. CPU 75%. 500 запросов в минуту. Это измерения.
Разные типы данных. Разные способы сбора. Разное хранение. И именно здесь большинство людей путается.
В прошлом месяце на моём DevOps-буткемпе мы собрали полноценную систему observability для микросервисов в Kubernetes.
Логи
Для логов мы использовали Fluentd sidecar-контейнеры, которые шарят volume с основным контейнером приложения:
- приложение пишет логи в volume;
- Fluentd читает их и отправляет дальше;
- чёткое разделение ответственности;
- на небольшом масштабе логи просто улетают напрямую в CloudWatch.
Но когда у вас тысячи строк логов в секунду, приходится добавлять слои:
- Lambda для форматирования.
- Kinesis для буферизации.
- OpenSearch для быстрых запросов по петабайтам данных.
- S3 для долгосрочного бэкапа.
Мы держали 7 дней в OpenSearch для активных расследований. 30 дней — в CloudWatch. Годы — в S3 для комплаенса. У каждого слоя разные характеристики по цене и производительности.
Метрики
Для метрик Prometheus скрейпит application endpoints каждые 30 секунд:
- разработчики инструментируют код клиентскими библиотеками Prometheus;
- экспонируют /metrics endpoint;
- Prometheus сам подтягивает данные.
Мы создали ServiceMonitor’ы, которые говорят Prometheus, какие pod’ы скрейпить на основе label’ов:
- Как только поднимаются новые pod’ы, Prometheus их обнаруживает и начинает скрейпить.
- Дальше Grafana визуализирует всё это.
- Мы импортировали готовые дашборды с grafana.com для мониторинга Kubernetes.
- И также собрали кастомные панели под метрики конкретного приложения.
Логи и метрики идут параллельно.
Когда что-то ломается, метрики показывают вам всплеск: error rate подпрыгнул в PM. Латентность выросла со 100 мс до 2 секунд.
Дальше вы идёте в логи: фильтруете по тому же окну времени, находите stack trace’ы и видите, что именно упало.
Нельзя нормально дебажить, имея только один тип данных. Нужны обе перспективы.
Мы всё это реализовали и оттраблшутали в лайв-созвоне: нагенерили метрики и логи и собрали дашборды в Grafana
Прочитать подробный пост можно здесь: https://open.substack.com/pub/akhileshmishra/p/youre-not-ready-for-kubernetes-observability
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3
How-To: как собрать eBPF-фаервол, который фильтрует пакеты по диапазонам IP
В большинстве туториалов показывают, как заблокировать один конкретный IP-адрес. Но в реальном мире (Kubernetes, автоскейлинг нод, короткоживущие ворклоады, managed-сервисы и т. п.) IP-адреса постоянно меняются, поэтому на практике имеет смысл работать именно с CIDR-диапазонами.
В этой статье вы узнаете, как правильно блокировать целые подсети:
https://labs.iximiuz.com/tutorials/ebpf-firewall-ed03d648
👉 DevOps Portal
В большинстве туториалов показывают, как заблокировать один конкретный IP-адрес. Но в реальном мире (Kubernetes, автоскейлинг нод, короткоживущие ворклоады, managed-сервисы и т. п.) IP-адреса постоянно меняются, поэтому на практике имеет смысл работать именно с CIDR-диапазонами.
В этой статье вы узнаете, как правильно блокировать целые подсети:
https://labs.iximiuz.com/tutorials/ebpf-firewall-ed03d648
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5
Простой способ создавать свои DevOps-лабы
Примерно год iximiuz Labs поддерживает создание кастомных плейграундов: вы выбираете стандартную базу (Ubuntu-VM, Docker-хост, Kubernetes-кластер и т.д.) и донастраиваете её под свои задачи с помощью скриптов, похожих на cloud-init.
Подход хорошо себя зарекомендовал, таким образом было создано около 700 плейграундов. Но при всей "чистоте" скриптового провижининга у него есть и заметные минусы:
К счастью, с появлением "persistent playgrounds" в ноябре стало возможным сохранять остановленный плейграунд как кастомный. При этом результат ничем не отличается от любого другого плейграунда: вы получаете read-only шаблон, который можно перезапускать сколько угодно раз, делиться им с другими или встраивать в туториалы, челленджи и уроки курсов. Магия 🧙
Попробуйте сами: http://labs.iximiuz.com/playgrounds
👉 DevOps Portal
Примерно год iximiuz Labs поддерживает создание кастомных плейграундов: вы выбираете стандартную базу (Ubuntu-VM, Docker-хост, Kubernetes-кластер и т.д.) и донастраиваете её под свои задачи с помощью скриптов, похожих на cloud-init.
Подход хорошо себя зарекомендовал, таким образом было создано около 700 плейграундов. Но при всей "чистоте" скриптового провижининга у него есть и заметные минусы:
- Init-скрипты запускаются при каждом старте плейграундов, увеличивая time-to-prompt, иногда весьма существенно
- Некоторые задачи провижининга гораздо проще решать запуском shell-команд вручную (попутно чиня упавшие шаги)
- Некоторые "случайные" состояния VM имеет смысл сохранить как переиспользуемые кастомные плейграунды (но задним числом заскриптовать их уже нельзя)
К счастью, с появлением "persistent playgrounds" в ноябре стало возможным сохранять остановленный плейграунд как кастомный. При этом результат ничем не отличается от любого другого плейграунда: вы получаете read-only шаблон, который можно перезапускать сколько угодно раз, делиться им с другими или встраивать в туториалы, челленджи и уроки курсов. Магия 🧙
Попробуйте сами: http://labs.iximiuz.com/playgrounds
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5
Мини-курс по containerd обновлён и переведён на недавно вышедшую версию containerd 2.2.1. Если нужно глубже разобраться, как контейнеры управляются низкоуровневыми рантаймами (тем самым слоем под Docker или Kubernetes), это хорошая отправная точка
https://labs.iximiuz.com/courses/containerd-cli
👉 DevOps Portal
https://labs.iximiuz.com/courses/containerd-cli
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2
Встречайте новый формат инженерного диалога
T-Sync Conf — офлайн-конференция от Группы «Т-Технологии» для опытных инженеров. 7 февраля в Москве на площадке TAU соберутся платформенные, security- и дата-инженеры, аналитики, DevOps-, SRE-, CI/CD-, AI-, ML-, R&D- и DX -специалисты.
Как все устроено:
— Контуры — тематические зоны, каждая из которых раскрывает отдельный слой инженерной реальности: AI, Data, R&D, Security, Platform и другие направления.
— Вместо классических докладов — круглые столы, стенды, хакатон, воркшопы и мастер-классы.
— Инженерные решения изнутри — возможность посмотреть, как устроены технологии в Т-Банке и других компаниях, и пообщаться напрямую с теми, кто их создает.
А еще много практики, интересных знакомств и живых систем.
Успейте подать заявку
T-Sync Conf — офлайн-конференция от Группы «Т-Технологии» для опытных инженеров. 7 февраля в Москве на площадке TAU соберутся платформенные, security- и дата-инженеры, аналитики, DevOps-, SRE-, CI/CD-, AI-, ML-, R&D- и DX -специалисты.
Как все устроено:
— Контуры — тематические зоны, каждая из которых раскрывает отдельный слой инженерной реальности: AI, Data, R&D, Security, Platform и другие направления.
— Вместо классических докладов — круглые столы, стенды, хакатон, воркшопы и мастер-классы.
— Инженерные решения изнутри — возможность посмотреть, как устроены технологии в Т-Банке и других компаниях, и пообщаться напрямую с теми, кто их создает.
А еще много практики, интересных знакомств и живых систем.
Успейте подать заявку
❤3
Как установить и настроить kubectl на Linux
kubectl - это CLI-инструмент для взаимодействия с кластерами Kubernetes. Независимо от того, управляете ли вы контейнерами, деплоите приложения или устраняете проблемы в кластере, kubectl является вашим основным интерфейсом для работы с API-сервером K8s.
Читать тут
👉 DevOps Portal
kubectl - это CLI-инструмент для взаимодействия с кластерами Kubernetes. Независимо от того, управляете ли вы контейнерами, деплоите приложения или устраняете проблемы в кластере, kubectl является вашим основным интерфейсом для работы с API-сервером K8s.
Читать тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🥱6👍4🤝1
Это инструмент на Golang, который анализирует распределение и использование GPU-ресурсов в кластерах Kubernetes, снижая нагрузку на API-server примерно до ~75 %, при этом предоставляя наглядную статистику использования по каждому node и pod
GitHub: k8s-gpu-analyzer
👉 DevOps Portal
GitHub: k8s-gpu-analyzer
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3🔥2
Отладка контейнеров 101: как выполнять команды хоста внутри уже запущенного контейнера
Хорошие контейнерные образы должны содержать только те пакеты, которые необходимы приложению для работы в продакшене. Но что делать, если такой идеальный минималистичный контейнер начинает вести себя некорректно?
https://labs.iximiuz.com/challenges/docker-container-execute-commands-with-nsenter
👉 DevOps Portal
Хорошие контейнерные образы должны содержать только те пакеты, которые необходимы приложению для работы в продакшене. Но что делать, если такой идеальный минималистичный контейнер начинает вести себя некорректно?
https://labs.iximiuz.com/challenges/docker-container-execute-commands-with-nsenter
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Все знают, что балансировщики нагрузки на eBPF превосходят user-space LB, потому что они избегают копирования пакетов и переключений контекста.
Но вот малоизвестный факт: ты можешь написать собственный eBPF-балансировщик, с выбором бэкенда и session affinity, всего в 200 строках на C.
Теодор снова это доказывает:
https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74
👉 DevOps Portal
Но вот малоизвестный факт: ты можешь написать собственный eBPF-балансировщик, с выбором бэкенда и session affinity, всего в 200 строках на C.
Теодор снова это доказывает:
https://labs.iximiuz.com/tutorials/xdp-load-balancer-700a1d74
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍1
Kubernetes Gateway API постепенно вытесняет кастомные API маршрутизации, используемые в service mesh
В материале разобрано, что такое GAMMA и как он работает
Опубликован подробный практический гайд, в котором ключевые концепции объясняются на наглядных примерах и иллюстрациях.
Что рассматривается в гайде:
- что из себя представляет подход GAMMA
- как он отделяет логику маршрутизации от реализации mesh
- реализация canary-деплоев с использованием GAMMA
- использование HTTPRoute совместно с DestinationRule в Istio
- production-кейс применения подхода GAMMA
Полный гайд:
https://devopscube.com/gateway-api-for-service-mesh/
Несмотря на то, что API
GAMMA предлагает вендорно-независимый подход.
Это означает отсутствие жёсткой привязки к Istio-специфичным API, таким как
Внутренний трафик можно описывать через
👉 DevOps Portal
В материале разобрано, что такое GAMMA и как он работает
Опубликован подробный практический гайд, в котором ключевые концепции объясняются на наглядных примерах и иллюстрациях.
Что рассматривается в гайде:
- что из себя представляет подход GAMMA
- как он отделяет логику маршрутизации от реализации mesh
- реализация canary-деплоев с использованием GAMMA
- использование HTTPRoute совместно с DestinationRule в Istio
- production-кейс применения подхода GAMMA
Полный гайд:
https://devopscube.com/gateway-api-for-service-mesh/
Несмотря на то, что API
VirtualService и DestinationRule в Istio по-прежнему широко используются,GAMMA предлагает вендорно-независимый подход.
Это означает отсутствие жёсткой привязки к Istio-специфичным API, таким как
VirtualService и DestinationRule.Внутренний трафик можно описывать через
HTTPRoute, отделяя маршрутизацию от нижележащего mesh-слоя в Kubernetes.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Kargo — это платформа непрерывной доставки и оркестрации жизненного цикла приложений для Kubernetes.
Она основана на принципах GitOps и интегрируется с Argo CD, чтобы упростить и автоматизировать поэтапный (progressive) rollout изменений на протяжении всего жизненного цикла приложения
https://github.com/akuity/kargo
👉 DevOps Portal
Она основана на принципах GitOps и интегрируется с Argo CD, чтобы упростить и автоматизировать поэтапный (progressive) rollout изменений на протяжении всего жизненного цикла приложения
https://github.com/akuity/kargo
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
Используйте эту команду kubectl, чтобы мгновенно найти pod’ы с утечками ресурсов или чрезмерным потреблением по всему кластеру Kubernetes
👉 DevOps Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍13
Аннотации в 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