Шаг 4. Схемы-шпаргалки по всему обучению

Собрали здесь схемы и краткие выжимки из обучения, чтобы вы могли быстро найти нужную информацию во время работы с ADC. Приятного использования!

Схема обработки HTTP-запросов
Схема обработки TCP/UDP-трафика
Виды плагинов
Группа Что делают Примеры

Аутентификация и авторизация

Проверяют, кто отправил запрос и разрешён ли ему доступ

key-auth — проверяет API-ключ; jwt-auth — JWT; openid-connect — OIDC; opa — авторизация через Open Policy Agent

Ограничение и управление трафиком

Ограничивают нагрузку, распределяют трафик и меняют правила его прохождения

limit-req — ограничивает частоту запросов; limit-conn — число одновременных запросов/соединений; traffic-split — распределяет трафик между группами бэкенд-нод; api-breaker — circuit breaker

Проверка и защита трафика

Проверяют входящий трафик и блокируют нежелательный или некорректный

ip-restriction — ограничения по IP; uri-blocker — блокировка URI; oas-validator — проверка по OpenAPI; chaitin-waf — проверка через WAF

Изменение запросов и ответов

Переписывают URI, заголовки, тело и другие части HTTP-запроса или ответа

proxy-rewrite — изменяет запрос перед проксированием; response-rewrite — ответ; body-transformer — преобразует тело

Преобразование протоколов и интерфейсов

Позволяют клиенту и бэкенду использовать разные протоколы или API

grpc-transcode — HTTP ↔ gRPC; grpc-web — gRPC-Web → gRPC; degraphql — GraphQL → REST; http-dubbo — HTTP → Dubbo

Дополнительная обработка и доставка трафика

Делают с трафиком действия помимо обычной передачи на бэкенд

proxy-mirror — отправляет копию запроса другому сервису; proxy-cache — кэширует ответы; mocking — самостоятельно формирует mock-ответ; redirect — возвращает перенаправление

Логи, метрики и трассировка

Собирают данные о работе ADC и передают их в системы наблюдаемости

http-logger / kafka-logger — отправляют логи; prometheus — метрики; opentelemetry / zipkin — трассировка

Выполнение пользовательской и serverless-логики

Позволяют запускать собственную логику или обращаться к serverless-функциям во время обработки трафика

serverless-pre-function / serverless-post-function — Lua-функции; aws-lambda — AWS Lambda; azure-functions — Azure Functions

Работа со специальными протоколами

Добавляют механику, специфичную для протоколов помимо обычного HTTP

mqtt-proxy — MQTT в Stream; kafka-proxy — параметры проксирования Kafka; dubbo-proxy — Dubbo

AI/LLM

Управляют трафиком к LLM: проксируют его, ограничивают токены, проверяют и преобразуют промпты

ai-proxy — прокси к LLM-провайдерам; ai-rate-limiting — лимиты по токенам; ai-prompt-guard — проверка промптов; ai-rag — RAG

Порядок выполнения плагинов

HTTP/HTTPS:

rewrite — подготовить запрос и определить клиента
↓
access — решить, можно ли пропустить запрос
↓
before_proxy — выполнить последние действия перед бэкендом
↓
header_filter / body_filter — обработать ответ
↓
log — зафиксировать результат

TCP/UDP:

preread — проверить сессию и принять основные решения
↓
before_proxy — выполнить последние действия перед бэкендом
↓
log — зафиксировать результат
Виды объектов конфигурации
  • Основные — объекты, в которых вы задаёте конфигурацию ADC: параметры принимаемого трафика, плагины для него, клиенты API и так далее.

  • Вспомогательные — объекты, в которые вы выносите повторяющиеся настройки или общие параметры, чтобы затем переиспользовать их в основных объектах.

Основные:

Объект конфигурации Что вы указываете в нём

SSL-сертификаты

TLS-сертификат, закрытый ключ и SNI

Глобальное правило

Плагины, которые нужно применять ко всем HTTP/HTTPS-запросам

Маршрут

Параметры конкретного типа HTTP-запросов, плагины для обработки этих запросов и ответов на них, адреса бэкенда и правила балансировки

Потоковый маршрут

Параметры TCP/UDP-трафика, плагины для обработки этого трафика, адреса бэкенда и правила балансировки

Потребитель

Учётные данные конкретного клиента и плагины для обработки запросов от этого клиента

Секрет

Адрес внешнего хранилища секретов и параметры доступа к нему

Proto

Описание вашего gRPC-сервиса, его методов и структуры сообщений

Вспомогательные:

Вспомогательный объект Что вы указываете в нём Из каких объектов его можно использовать и как

Upstream

Адреса бэкенд-нод / настройки service discovery, параметры подключения, балансировка, проверки здоровья

Маршрут, потоковый маршрут, сервис — в их настройках укажите ID нужного upstream

Конфигурация плагинов

Набор настроенных плагинов

Маршрут, потоковый маршрут — в их настройках укажите ID нужной конфигурации плагинов

Сервис

Набор настроенных плагинов, адреса бэкенд-нод / настройки service discovery, параметры подключения, балансировка, проверки здоровья

Маршрут, потоковый маршрут — в их настройках укажите ID нужного сервиса

Группа потребителей

Набор настроенных плагинов

Потребитель — в его настройках укажите ID нужной группы потребителей

Метаданные плагина

Общие параметры для всех экземпляров конкретного плагина

Любые объекты конфигурации — метаданные плагинов применяются автоматически при подключении к объекту нужного плагина.

Исключение: если внутри объекта прописать для плагина параметры, конфликтующие с параметрами из метаданных плагина, то все конфликты разрешатся в пользу параметров из объекта.

Схема: как вспомогательные объекты конфигурации относятся друг к другу
Краткое описание каждого объекта конфигурации
Маршрут
  = условия совпадения HTTP-запроса
  + WebSocket
  + плагины² ³
  + бэкенд¹ ²
  + таймауты

¹ альтернатива: ID upstream;
² альтернатива/дополнение: ID сервиса;
³ альтернатива/дополнение: ID конфигурации плагинов.


Потоковый маршрут
  = условия совпадения TCP/UDP-трафика
  + плагины² ³
  + бэкенд¹ ²
  + протокол

¹ альтернатива: ID upstream;
² альтернатива/дополнение: ID сервиса;
³ альтернатива/дополнение: ID конфигурации плагинов.


Сервис
  = плагины
  + бэкенд¹
  + настройки сервиса (WebSocket, скрипт, хосты)

¹ альтернатива: ID upstream.


Upstream
  = адреса нод или настройки service discovery
  + параметры подключения (схема, Pass Host, повторные попытки, таймауты, keepalive)
  + правила балансировки
  + health checks


Потребитель
  = имя пользователя
  + плагины¹

¹ альтернатива/дополнение: ID группы потребителей.


Группа потребителей
  = плагины


SSL-сертификат
  = TLS-сертификат и приватный ключ
  + тип: серверный или клиентский
  + SNI¹
  + версии TLS

¹ только для серверного сертификата.


Секрет
  = менеджер секретов
  + конфигурация менеджера (URI, префикс, токен, namespace)


Глобальное правило
  = плагины


Метаданные плагина
  = плагин¹ + конфигурация (JSON)

¹ только для плагинов, поддерживающих метаданные.


Конфигурация плагинов
  = плагины


Proto-файл
  = содержимое .proto
Разрешение конфликтов между объектами конфигурации
Ситуация Какой объект/настройка будет использована

Один HTTP-запрос подходит под несколько маршрутов с одинаковым URI

Маршрут с более высоким приоритетом.

Upstream указан и в маршруте, и в сервисе

Upstream из маршрута.

Один и тот же плагин настроен в сервисе, конфигурации плагинов, маршруте, группе потребителей и потребителе

ADC проверит ваши объекты конфигурации в таком порядке: потребитель → группа потребителей → маршрут → конфигурация плагинов → сервис. Будут применены настройки плагина из первого объекта, где этот плагин встретился.

Один и тот же плагин настроен в глобальном правиле и в другом объекте

Обе конфигурации плагина в таком порядке: сначала из глобального правила, затем из другого объекта. Для отдельных плагинов возможны исключения.

Один и тот же параметр задан и в метаданных плагина, и в настройках этого плагина в объекте конфигурации

Значение параметра из объекта конфигурации.