ко всем лонгридам
Лонгрид#PlatformEngineering#SRE

Kubernetes: кто его усложнил? Как сложность переехала в платформы и AI-агентов

Kubernetes стал стандартом и даже заслужил высшую инженерную похвалу — «скучный». Но простым он не стал. Часть сложности родилась внутри API, часть принесли наши требования, а затем почти вся она поднялась этажом выше: в сеть, платформенную команду, golden paths и governance агентов. Разберём, где сложность действительно необходима, где мы создали её сами и как не построить ещё один слой, который некому будет сопровождать.

21 июля 2026≈ 30 минут

Статусы проектов и изменчивые данные проверены 21 июля 2026 года. Опросы сообщества, вендорская телеметрия и мнения практиков в тексте разделены: ни один узкий benchmark или коммерческий отчёт не используется как универсальная истина. Финальный scorecard — авторская управленческая эвристика, а не отраслевой норматив.

01

Компонент для половины рынка — на двух добровольцах

В ноябре 2025 года SIG Network и Kubernetes Security Response Committee объявили о закрытии ingress-nginx. Поддержка закончилась в марте 2026-го: после этого нет новых релизов, исправлений ошибок и security-патчей. Существующие инсталляции продолжают работать — и именно поэтому риск легко не заметить. В январском заявлении Steering Committee ссылался на внутреннее исследование Datadog: ingress-nginx использовался примерно в половине cloud-native окружений.

Масштаб сам по себе впечатляет меньше, чем причина. Проект годами поддерживали один-два человека в свободное время после работы. Его гибкость — особенно возможность вставлять произвольные фрагменты NGINX через snippet-аннотации — постепенно превратилась из достоинства в технический долг, который сами авторы объявления назвали непреодолимым. В 2021 году уже было известно, что snippets способны открыть доступ к секретам кластера. В марте 2025-го цепочка IngressNightmare довела тот же класс риска до неаутентифицированного RCE.

Это не история про один неудачный контроллер. Это модель всей экосистемы: маленький API не покрывает реальную задачу, escape hatch превращается в неформальный язык программирования, популярность растёт быстрее ownership, а накопленную сложность замечают только тогда, когда убрать слой уже невозможно.

Поэтому вопрос «кто усложнил Kubernetes?» не имеет одного обвиняемого. Апстрим создавал API с ошибочными границами. Вендоры и пользователи расширяли их под production. Организации хотели централизованный compliance, multi-tenancy, mesh, собственные control plane и всё новые workload. А платформенные команды обещали, что ещё один слой скроет предыдущие. В результате сложность не исчезала — меняла владельца.

схема 01 · сложность поднимается вместе с уровнем абстракции
Сложность Kubernetes переехала вверхсложность не исчезла — её переместилиЯдро Kubernetesscheduler · API · reconciliationРасширенияCRD · операторы · политикиПлатформаgolden paths · порталы · guardrailsGovernance агентовidentity · полномочия · аудитрастутownership иcognitive load
02

Два бюджета сложности: задача и наши решения

Kubernetes управляет распределённой системой, в которой процессы падают, сеть разделяется, конфигурация меняется асинхронно, а желаемое состояние должно сходиться с фактическим. Эта сложность существенна: она существовала и в Borg, и в самописных scheduler, и в shell-скриптах. Удаление Kubernetes не отменяет service discovery, rollout, isolation, capacity planning или recovery. Оно лишь меняет место, где эти задачи решаются.

Но есть и случайная сложность. PodSecurityPolicy прожила несколько лет, была объявлена deprecated в 1.21 и удалена в 1.25. NetworkPolicy сознательно не получила deny-правил и кластерных дефолтов, поэтому для централизованного контроля понадобился отдельный AdminNetworkPolicy API. Policy-движки росли вне ядра, а затем Kubernetes вернул часть их функций в apiserver через ValidatingAdmissionPolicy на CEL. Это не «требования бизнеса». Это последовательность архитектурных решений, некоторые из которых пришлось пересматривать.

ПериодСдвигЧто изменилось
2014–2015Kubernetes открыт и достигает 1.0Общий API для оркестрации становится ставкой индустрии
2016–2019Operators и CRDПлатформа превращается в конструктор других платформ
2021–2024PSP уходит, CEL приходитЯдро исправляет собственные API и возвращает часть policy-логики
2025–2026Ingress NGINX закрыт, Gateway API 1.6Скрытая сложность аннотаций заменяется явной моделью ролей и политик

Тим Хокин, один из создателей Kubernetes, сформулировал это как конечный complexity budget: каждая фича тратит не только строки кода, но и способность проекта объяснять, тестировать и когда-нибудь менять своё поведение. Для расширяемой системы проблема особенно остра. CRD — её сильнейший механизм и одновременно способ превратить кластер в сборку из десятков независимых продуктов с разными циклами обновления.

Почему тогда Kubernetes называют boring?

CNCF Annual Survey 2025 сообщает, что 82% пользователей контейнеров запускают Kubernetes в production, а complexity называют препятствием 34% респондентов. Выше оказались культурные изменения, обучение и безопасность. Это сильный контраргумент катастрофическому нарративу: API стабилизировались, managed-сервисы стали обычными, операционные паттерны известны, а технология перестала быть экспериментом.

Но опрос adoption и стоимость эксплуатации отвечают на разные вопросы. «Нам не страшно внедрять Kubernetes» не означает «нам дёшево и просто его сопровождать». Когда сложность становится работой отдельной platform function, продуктовая команда действительно перестаёт видеть большую её часть. Система стала скучнее для пользователя — и толще для владельца.

03

Ingress → Gateway API: сложность стала явной

Оригинальный Ingress API был намеренно маленьким: host, path, backend и TLS. В нём не было общего языка для таймаутов, ретраев, canary, внешней авторизации, переписывания заголовков или WAF. Контроллеры закрыли разрыв аннотациями. К июлю 2026 года документация ingress-nginx содержала около 130 уникальных ключей, а snippets позволяли вставлять сырой NGINX config. Локальная простота API породила глобальный, непереносимый DSL.

Gateway API отвечает не сокращением YAML, а явной моделью. GatewayClass принадлежит инфраструктурному провайдеру, Gateway — оператору кластера, Route — приложению. ReferenceGrant ограничивает межнеймспейсные ссылки, status сообщает, что реально принято контроллером, а политики получают формальное место вместо случайной строки в metadata. На дату статьи актуальна ветка 1.6.x; TCPRoute и UDPRoute достигли GA.

схема 02 · аннотационный escape hatch сменяется явной моделью
От скрытой сложности Ingress к явному Gateway APIпростой синтаксис не сделал систему простойМаленький Ingress APIhost · path · backendEscape hatch аннотаций~130 ключей + snippetsSecurity debt2021 warning → 2025 RCEGateway API 1.6роли · routes · политикиGateway API многословнее — зато ownership, attachment и status становятся видимыми

Цена тоже стала явной. Один маршрут теперь связан с несколькими ресурсами, а policy attachment должен решать наследование, конфликты, discoverability и fanout статусов. Авторы GEP-713 сами признают, что механизм сложнее желаемого. Но это другой класс сложности: её можно валидировать, наблюдать и распределять между ролями. Аннотация выглядела проще только до первого расследования.

eBPF не отменяет этот вывод

eBPF дал Cilium сильный dataplane и решил задачи гиперскейла, но не является универсальным ответом на сетевую сложность. nftables-режим kube-proxy достиг GA в Kubernetes 1.33 и устранил линейный поиск по iptables-цепочкам без замены всего CNI. Istio ambient убрал sidecar из каждого pod через Rust-компонент ztunnel, а не через обязательный eBPF. Громкие ускорения из миллионов контейнеров нельзя автоматически переносить на кластер из пятидесяти нод. Новый dataplane полезен, если решает измеренную проблему, а не потому, что предыдущий слой выглядит старым.

04

Много кластеров — не то же самое, что много границ отказа

Разделение на кластеры полезно: разные blast radius, версии, регионы, tenants и требования к обновлениям. Но само число control plane ничего не гарантирует. В марте 2023 года Datadog потерял сеть более чем на 60% инстансов в пяти регионах и трёх облаках. Security-патч systemd приехал через общий механизм автообновлений и удалил маршруты Cilium. Флот был распределён географически и провайдерски, но оставался коррелирован через образ ОС и policy обновления.

схема 03 · коррелированные слои пересекают границы кластеров
Число кластеров не определяет blast radiusчетыре кластера могут разделить один отказкластер 1кластер 2кластер 3кластер 4Коррелированные общие слоиобраз ОС · CNI · GitOps hub · supply chain · update policyнезависимость — свойство архитектуры, а не количество объектов

Та же ловушка встречается в hub-and-spoke GitOps, едином registry, глобальном identity provider, общем admission webhook и одном шаблоне Cluster API. Сотня кластеров, обновляемых одной политикой за час, — это один failure domain с сотней control plane. Настоящая независимость требует разнести не только runtime, но и пути доставки изменений, доверие, артефакты и полномочия.

У количества кластеров есть и прямая цена. В EKS обычная поддержка control plane тарифицируется по $0,10 в час, extended support старой версии — по $0,60. На флоте из пятидесяти кластеров отложенные upgrade превращаются из неудобства в отдельную бюджетную строку. Multi-cluster имеет смысл как осознанная модель изоляции, а не как рефлекс «поднимем ещё один».

Практический вопрос для архитектурного ревью: какие пять общих слоёв всё ещё способны изменить все кластеры одновременно? Этот список полезнее диаграммы с количеством регионов.
05

IDP поглотила сложность — и стала отдельной системой

Platform engineering появилась не потому, что разработчики захотели ещё один портал. Kubernetes стандартизировал runtime, но оставил продуктовой команде слишком много решений: chart, policy, сеть, observability, секреты, rollout, ownership. Internal developer platform собрала эти решения в golden path и предложила self-service вместо тикетов. Team Topologies дала для этого правильную цель — снижать когнитивную нагрузку — и полезное ограничение: Thinnest Viable Platform может быть не порталом, а курированным набором договорённостей.

Backstage показал продуктовую форму: каталог, templates, документация, plugins. В больших организациях она естественна. У Авито платформа обслуживает тысячи сервисов и прячет Kubernetes за app.tomlи CLI. У Ozon единообразие важнее локальной идеальности. Т-Банк строит собственную платформу с конца 2020 года командой примерно из пятидесяти инженеров. Эти кейсы доказывают не то, что IDP нужна всем, а то, сколько масштаба и устойчивого ownership требуется для настоящего внутреннего PaaS.

Разработчику лучше, системе — не обязательно

DORA 2024 зафиксировала парадокс: использование внутренней платформы связано с ростом индивидуальной продуктивности на 8% и командной на 10%, но одновременно со снижением change throughput на 8% и change stability на 14%. Авторы предлагают осторожную интерпретацию через J-curve: незрелая платформа сначала добавляет переходные издержки. Возможны и менее удобные объяснения — дополнительная очередь, слишком толстая абстракция или платформа, оптимизированная по satisfaction вместо потока.

схема 04 · локальный DevEx и системный delivery могут расходиться
Парадокс внутренней платформыразработчику быстрее, а delivery может стать хужеЛокальный опыт+8% individual productivity+10% team performanceDelivery-система−8% change throughput−14% change stabilityGolden path легитимен, пока измеряет результат,сохраняет escape hatch и заслуживает adoption

Здесь проходит граница между golden path и golden cage. Сэм Ньюман предупреждает: обязательная платформа теряет стимул быть удобной, потому что пользователь не может уйти. С другой стороны, security, compliance и аудит не работают как факультативная рекомендация. Разрешить всё — не продуктовый подход. Запретить любой выход — тоже. Легитимный мандат ограничивается проверяемыми инвариантами, а не конкретной реализацией каждого шага.

  • обязательны identity, audit trail, encryption и policy evidence;
  • предпочтительны, но заменяемы шаблон сервиса, CI/CD и интерфейс self-service;
  • исключения имеют владельца, срок жизни и цену сопровождения;
  • платформа измеряет не число созданных компонентов, а lead time, reliability и долю безопасно завершённых сценариев.
06

Новый цикл: GPU и агенты вместо kubectl

AI-нагрузки снова показали границу исходной модели Kubernetes. Device plugin framework появился в 1.8, но долго видел GPU только как целое число. MIG, time-slicing, отдельные scheduler и GPU Operator закрывали разрыв каждый своим способом. Dynamic Resource Allocation достиг GA в 1.34 после редизайна API, а fractional capacity всё ещё развивалась отдельно. Это тот же цикл: маленький примитив, растущие требования, экосистема костылей и более явная модель в ядре.

CNCF называет Kubernetes де-факто операционной системой для AI, но vendor-отчёты одновременно показывают низкую утилизацию дорогих GPU. Такие цифры нельзя смешивать: первая описывает adoption среди контейнерных пользователей, вторая — телеметрию конкретного оптимизатора с собственной выборкой. Вместе они формулируют хороший вопрос: помогает ли стандарт управлять workload или лишь делает знакомым интерфейс к новой неэффективности?

Убрать человека от kubectl хотели до LLM

Ещё в 2017 году Келси Хайтауэр сравнивал kubectl с новым SSH: прямое управление production человеком — симптом отсутствующего более высокого интерфейса. Сегодня эту роль примеряют K8sGPT, kubectl-ai, HolmesGPT, kagent и MCP-серверы. Но ассистирование нельзя выдавать за автономность.ITBench от IBM Research содержит 94 воспроизводимых SRE, CISO и FinOps сценария; лучшие агенты в исходной работе решили 13,8% SRE-задач, 25,2% security-задач и ни одной FinOps-задачи. Это далеко от права свободно менять production.

Полезный агент начинается с read-only диагностики, наследует identity и RBAC пользователя, показывает evidence и умеет передать расследование человеку. Де-факто популярный Kubernetes MCP Server из организации containers идёт напрямую в API server и имеет режимы--read-only и --disable-destructive. Наличие флага — ещё не governance, но оно правильно обозначает границу: право читать кластер и право менять его — разные продукты с разными evals.

схема 05 · полномочия агента растут только вместе с доказательствами
Лестница governance для Kubernetes-агентовполномочия должны расти медленнее возможностей01читать02рекомендовать03согласовать04действовать05откатитьна каждом шаге нужны identity · policy · evidence · передача человеку

Лестница read → recommend → approve → act → rollback должна быть привязана не к «умности модели», а к конкретной capability. Для restart pod, rollout undo и drain node нужны разные политики, sandbox, blast radius и критерии остановки. На каждом уровне сохраняются identity, policy decision, trace, human handoff и проверенный rollback. Иначе агент становится новым snippet: удобным escape hatch, который однажды превратится в неуправляемый API.

07

Как не добавить следующий слой слишком рано

Вопрос «нужен ли Kubernetes?» слишком грубый. Нужно выбрать толщину операционной модели. Команде из десяти человек может хватить Docker и managed deployment. Десяткам команд может быть нужен общий Kubernetes API, но не собственный портал. Full IDP оправдана, когда повторяемый спрос, compliance и стоимость координации действительно больше стоимости отдельного платформенного продукта.

схема 06 · масштаб полезен только вместе со зрелостью платформы
Когда Kubernetes уместен
Количество сервисов и командЗрелость платформыПока не нужноСильный кандидатРаноОпасная зонаЕсть зрелый PaaS и мало вариативностиМного сервисов и есть платформенная командаСложность выше реальной пользыМасштаб уже есть, зрелости еще нет
МодельКогда уместнаЧто даётГлавный риск
Простой deploymentНебольшое число сервисов, одна команда, предсказуемый трафикМинимальная поверхность отказаРучные операции и предел роста
Managed KubernetesНужны orchestration API и экосистема, но не свой control planeСтандарт и управляемая базаЭксплуатационный слой всё равно остаётся у вас
Thin platformНесколько команд повторяют один delivery pathШаблоны, policy и self-service без собственного SaaSНужно жёстко ограничивать толщину
Полноценная IDPМного команд, высокий compliance и отдельная platform product functionЕдиный интерфейс и управляемые golden pathsМонополия, leaky abstractions и отдельный продукт в эксплуатации

Scorecard перед новым слоем

Это не benchmark зрелости и не универсальный порог по числу разработчиков. Это шесть вопросов, которые заставляют посчитать цену ownership до того, как появится ещё один обязательный API.

ПроверкаВопросДостаточное свидетельство
ПроблемаКакую наблюдаемую боль снимает новый слой?Не «нужен портал», а, например, медиана lead time и доля ручных согласований
ВладелецКто дежурит и обновляет слой через три года?Команда, бюджет, SLO, on-call и путь эскалации
ГраницаЧто остаётся общим и коррелированным?ОС, CNI, GitOps hub, registry, identity, policy engine
ВыходМожно ли обойти абстракцию безопасно?Документированный escape hatch и понятная цена исключения
МетрикаЧто должно улучшиться у всей системы?Throughput и stability вместе с DevEx, а не только satisfaction
УдалениеКак слой будет выключен, если не окупится?Критерий закрытия, экспорт состояния и обратимая миграция

Если нет измеримой проблемы, постоянного владельца и плана удаления, безопаснее не строить слой. Если проблема существует, но пользователей мало, начинайте с TVP: документации, шаблона и одной хорошо наблюдаемой capability. Портал, control plane и агент появляются только после того, как доказан повторяемый спрос.

Выводы

Что стоит унести с собой

  1. 01У Kubernetes есть и существенная сложность распределённых систем, и случайная сложность собственных API. Списывать всё на требования пользователей так же неверно, как винить только YAML.
  2. 02Зрелость сделала Kubernetes привычным, но не бесплатным: значительная часть сложности переехала в эксплуатацию, платформенную команду и общий набор guardrails.
  3. 03Gateway API не обязательно короче Ingress. Его преимущество в другом: роли, связи, статусы и политики становятся явными и поэтому управляемыми.
  4. 04Много кластеров не означает много независимых failure domains. Blast radius задают общие коррелированные слои и одинаковые механизмы обновления.
  5. 05IDP и AI-агенты полезны не тогда, когда скрывают Kubernetes любой ценой, а когда ограничивают полномочия, сохраняют путь отладки и улучшают системные метрики delivery.
Источники

Первичные материалы, исследования и позиции практиков

Эволюция Kubernetes

Исследования рынка

Сеть и маршрутизация

Надёжность флота

Платформенная инженерия

Российские кейсы

AI-нагрузки и агенты

Поделиться
TelegramLinkedIn