Централизуем использование ИИ при помощи Agentgateway. Agentgateway.. Agentgateway. DevOps.. Agentgateway. DevOps. docker.. Agentgateway. DevOps. docker. Kubernetes.. Agentgateway. DevOps. docker. Kubernetes. llm.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС. ИИ-шлюз.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС. ИИ-шлюз. Информационная безопасность.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС. ИИ-шлюз. Информационная безопасность. инфраструктура.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС. ИИ-шлюз. Информационная безопасность. инфраструктура. искусственный интеллект.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС. ИИ-шлюз. Информационная безопасность. инфраструктура. искусственный интеллект. Системное администрирование.. Agentgateway. DevOps. docker. Kubernetes. llm. mcp. безопасность. Блог компании МТС. ИИ-шлюз. Информационная безопасность. инфраструктура. искусственный интеллект. Системное администрирование. токены.

Всем привет! Меня зовут Ваня, по призванию системный архитектор в RED Security. Хочу познакомить вас с open-source-решением для контроля и централизации работы с ИИ — Agentgateway. 

Централизуем использование ИИ при помощи Agentgateway - 1

Мое знакомство с ним произошло не так давно. Был будний день, я спокойно сидел работал, как вдруг ко мне ворвался тимлид группы по ИИ: 

— Нам нужен шлюз!

— Шлюз? — спросил я? 

— Да, для ИИ! Через который пользователи бы подключались к LLM-провайдерам, различным MCP, можно было бы устанавливать лимиты на потребление токенов и ограничивать опасные MCP-команды!

Как вы уже можете догадаться — у нас все получилось. А о продукте, который мы использовали, я и расскажу далее. Надеюсь, вам понравится. Поехали!

Что это за покемон  

“First things first” — начнем с краткого обзора самого продукта. Agentgateway (буду сокращать до AGW) — мастер-оркестратор для ИИ. Написан на Rust компанией Solo.io и входит в Linux Foundation. Первый релиз был версии v0.0.2, появился на свет в марте 2025 года. Сейчас, спустя полтора года, проект дошел до тега v1.6.0. Одна из его, как я считаю, суперособенностей — открытый исходный код проекта на GitHub.

Схема использования AGW. Из официальной документации

AGW, как можно увидеть на схеме выше, выполняет следующие функции:

— шлюз до LLM-провайдеров;

— шлюз для MCP/A2A (Agent-to-Agent, агент к агенту);

— управление трафиком;

— направление инференса.

Что подразумевается под управлением трафиком:

— контроль количества потраченных токенов и создание лимитов;

— добавление или удаление заголовков в запросе;

— проверка содержимого запросов.

Способов развертывания данного продукта два: standalone и kubernetes.

Централизуем использование ИИ при помощи Agentgateway - 2

Почему именно AGW

У читателя может возникнуть резонный вопрос: «А другие продукты вы рассматривали?» — «Да», — отвечу я. И сейчас объясню, почему остановились на AGW. До того как мы добрались до проекта компании Solo.io, рассматривались еще lunar.dev и MCPJungle.

Централизуем использование ИИ при помощи Agentgateway - 3

После проведения исследования docker-образов этих продуктов, их разворачивании, тестирования основных функций, оценки простоты использования и наличия необходимых возможностей выяснилось, что либо настройка продуктов слишком сложная и непонятна из коробки, либо они не могут работать без доступа к интернету. Причем в одном из образов были прописаны переменные с кредами и внешним хостом для отправки на него логов (нам это, конечно же, не понравилось).

К использованию AGW мы пришли не сами — спасибо за рекомендацию коллегам из другого отдела. В дальнейшем мы с ними проводили встречи, чтобы перенять их best practices и не допускать дополнительных ошибок.

Как запустить

Думаю, теории достаточно — наступило время практики. Приведу пример настройки standalone-версии 1.5.0. Нам понадобится установленный Docker и docker-образ AGW.

1) Пуллим образ:

docker pull cr.agentgateway.dev/agentgateway:v1.5.0

2) Создаем директорию для маппинга в контейнер, в которой будут находиться конфигурация AGW (config.yaml) и файл базы данных SQLite:

mkdir agw-config

3) Запускаем AGW (в данной команде я специально указал 127.0.0.1, чтобы UI не был доступен всем из интернета, так как мы еще не настраивали на него авторизацию):

docker run -d 
  --name agentgateway 
  --user "$(id -u):$(id -g)" 
  -v "$PWD/agw-config:/config" 
  -p 127.0.0.1:4000:4000 
  cr.agentgateway.dev/agentgateway:v1.5.0

После успешного запуска можно увидеть следующие логи:

2026-09-27T13:48:59.369007Z	info	state_manager	loaded config from File("/config/config.yaml")
2026-09-27T13:48:59.371219Z	info	state_manager	Watching config file: /config/config.yaml
2026-09-27T13:48:59.374769Z	info	agent_core::readiness	Task 'state manager' complete (39.383334ms), still awaiting 1 tasks
2026-09-27T13:48:59.375171Z	info	app	serving UI at http://localhost:4000/ui
2026-09-27T13:48:59.375186Z	info	agent_core::readiness	Task 'agentgateway' complete (39.800792ms), marking server ready
2026-09-27T13:48:59.375190Z	info	management::hyper_helpers	listener established	address=127.0.0.1:15000 component="admin"
2026-09-27T13:48:59.375195Z	info	management::hyper_helpers	listener established	address=[::1]:15000 component="admin"
2026-09-27T13:48:59.375204Z	info	management::hyper_helpers	listener established	address=[::]:15020 component="stats"
2026-09-27T13:48:59.375297Z	info	proxy::gateway	started bind	bind="bind/4000"

Теперь можно открыть UI, перейдя в браузере на http://localhost:4000/ui

Включаем настройки для LLM и MCP, кликнув на них:

Централизуем использование ИИ при помощи Agentgateway - 4

Прямоугольники должны изменить цвет:

Централизуем использование ИИ при помощи Agentgateway - 5

После нажатия Continue будет такая страница:

Централизуем использование ИИ при помощи Agentgateway - 6

Мы запустились и включили все настройки для дальнейшей работы. Отлично!

Ненадолго вернемся к теории. 

Основные понятия AGW

Gateways (ворота)

Ворота — это сущность, которая отвечает за вход в наш шлюз. Она представляет собой именованный порт и эндпоинты, через которые проходит трафик. Кроме порта можно также выбрать протокол (HTTP, HTTPS, TCP, TLS) и подключить сертификаты.

Централизуем использование ИИ при помощи Agentgateway - 7

У каждого объекта gateway есть один или более listeners (слушателей). Несколько слушателей может понадобиться, когда у AGW имеется несколько хостнеймов. 

Listeners (слушатели)

Слушатели могут «разделять» ворота. Как было написано выше, они нужны, когда за шлюзом закреплено несколько хостнеймов и, следовательно, используются разные TLS-сертификаты. У шлюза под капотом всегда один слушатель. 

Routes (дороги)

Дороги занимаются обработкой и перенаправлением поступающего в шлюз трафика. Они определяются на верхнем уровне и привязываются к воротам по имени (одна дорога может использоваться несколькими воротами).

Централизуем использование ИИ при помощи Agentgateway - 8

Вот схема того, как связаны между собой эти три понятия:

Централизуем использование ИИ при помощи Agentgateway - 9

Backends (бэкенды)

Отвечают за перенаправление трафика IP-адресу, хостнейму, LLM-провайдеру или MCP-серверу.

Централизуем использование ИИ при помощи Agentgateway - 10

Policies (политики)

Политики используются для управления трафиком, настройки мониторинга и установки правил безопасности.

Централизуем использование ИИ при помощи Agentgateway - 11

Для разных объектов есть разные политики:

№

Объект

Доступные политики

Момент запуска

1

Ворота или слушатель

JWT

внешняя авторизация

обработка на стороне

трансформация

Basic Authentication

авторизация по API-ключам

Запускается до выбора дороги

2

Дорога

Все

Запускается после определения дороги, но до выбора бэкенда

3

Бэкенд

бэкенд TLS

бэкенд-авторизация

бэкенд HTTP

бэкенд TCP

AI/LLM

MCP-авторизация

внешняя авторизация

изменение заголовков запросов

Запускается после определения бэкенда

Посмотрим, как там дела с поставщиками LLM.

Подключение и настройка LLM-провайдера

Довольно просто добавить нового провайдера. Для этого нужно перейти в раздел Providers и нажать Add provider:

Централизуем использование ИИ при помощи Agentgateway - 12

После нажатия на кнопку откроется следующее окно:

Централизуем использование ИИ при помощи Agentgateway - 13

Можно увидеть множество различных провайдеров:

Централизуем использование ИИ при помощи Agentgateway - 14

После этого добавить модели (раздел Models):

Централизуем использование ИИ при помощи Agentgateway - 15

В пункте Provider я выберу провайдера, которого создал на прошлом шаге:

Централизуем использование ИИ при помощи Agentgateway - 16

Подключение и настройка MCP

К шлюзу можно добавить MCP. Поддерживаются три транспортных протокола: Streamable HTTP, SSE (считается легаси) и Command Line.

Централизуем использование ИИ при помощи Agentgateway - 17

Best practices

В завершение этого обзорного материала хотелось бы рассказать о лучших (или продовых) практиках, о которых мы с командой узнали, когда занимались изучением AGW.

Авторизация в админке с помощью OIDC 

По-хорошему авторизация в UI AGW должна быть доступна только администраторам шлюза. Почему? Потому что для пользователей есть ручка подключения и MCP, большее им скорее всего не понадобится. Это еще и обезопасит от доступа пользователей к настройкам. 

Если у вас есть система GitLab или что-то похожее, вы можете настроить авторизацию при помощи протокола OIDC. Данная настройка в AGW находится в разделе Settings → OIDC.

Централизуем использование ИИ при помощи Agentgateway - 18

В политиках шлюза можно указать каким конкретно пользователям доступна авторизация Settings → Authorization:

Централизуем использование ИИ при помощи Agentgateway - 19

Так мы разделяем зоны доступа и повышаем уровень спокойствия.

Неизменяемый конфиг

При работе в UI системы AGW и изменении каких-либо настроек — редактируется конфиг (config.yaml). Он доступен в разделе Tools → Raw configuration:

Централизуем использование ИИ при помощи Agentgateway - 20
Централизуем использование ИИ при помощи Agentgateway - 21

Однако для кого-то это может быть неудобно. В таком случае можно изменить права на файл (сделать read-only), чтобы AGW не мог его редактировать.

HTTPS

Шлюз позволяет настроить подключение HTTPS и подключить сертификаты. Так будет безопаснее, чем через HTTP. Рекомендую.

Централизуем использование ИИ при помощи Agentgateway - 22

Sensitive headers

В процессе обработки шлюзом различных запросов HTTP-заголовки с конфиденциальными данными могут попасть в логи. Шлюз умеет замазывать необходимые заголовки, но для этого их необходимо указать в поле sensitiveHeaders:

# yaml-language-server: $schema=https://agentgateway.dev/schema/config
config:
  sensitiveHeaders:
  - x-api-key
  - cookie
  - x-tenant-secret

Поле находится в конфиге (config.yaml), поэтому шлюз читает значения в нем только при запуске. Необходимо перезапустить AGW после изменения поля sensitiveHeaders.

AGW замазывает указанные заголовки при поступлении запроса и повторно делает то же самое после выполнения преобразований запроса и бэкенда CEL (Common Expression Language, используется в политиках, трансформациях и правилах мониторинга).  

Таким образом, редактируется не только заголовок, отправленный клиентом, но и заголовок, созданный в результате преобразования. 

Редактирование затрагивает только вывод трассировки и дебага.  Шлюз по-прежнему передает реальное значение заголовка на бэкенд, и это значение все так же доступно для чтения в выражении CEL, поэтому политика или пользовательское поле журнала логирования, считывающее заголовок, продолжают работать.

Подключение по API-ключам

В AGW доступна авторизация по API-ключам. То есть, если пользователь хочет воспользоваться шлюзом, он обращается к админу AGW, который, в свою очередь, выпускает ключ. На каждый ключ можно задать лимиты по потреблению токенов, а также указать разрешенные для вызова модели:

Централизуем использование ИИ при помощи Agentgateway - 23

Настройка цен за токены

Для каждой модели можно настроить свой прайсинг (в USD) за токены (input, output, cache read, cache write), отредактировав конфиг либо переопределив значения в UI:

Централизуем использование ИИ при помощи Agentgateway - 24

Зачем это нужно?

Во-первых, чтобы полностью воспользоваться преимуществом API-ключей. Настройка цен позволяет шлюзу понимать стоимость потраченных токенов и корректно работать с устанавливаемыми на ключи лимитами.

Во-вторых, можно будет построить графики потребления токенов в самом AGW (да, даже такое там есть!):

 

Централизуем использование ИИ при помощи Agentgateway - 25

Вот и все. Спасибо, что дочитали до конца! Хочу поблагодарить своих коллег Никиту Полосухина и Анатолия Зотова, благодаря которым я познакомился с Agentgateway и в итоге смог рассказать про него вам.

Мы разобрались с основными понятиями шлюза и его возможностями. Были рассмотрены и лучшие практики. Надеюсь, что вам было интересно! Поделитесь, какое впечатление вызывает продукт и работали ли вы с ним. Может, есть аналог, который вы бы порекомендовали?

Автор: iglebov

Источник