Шаг 4. Схемы-шпаргалки по всему обучению
Собрали здесь схемы и краткие выжимки из обучения, чтобы вы могли быстро найти нужную информацию во время работы с ADC. Приятного использования!
Схема обработки HTTP-запросов
Схема обработки TCP/UDP-трафика
Виды плагинов
| Группа | Что делают | Примеры |
|---|---|---|
Аутентификация и авторизация |
Проверяют, кто отправил запрос и разрешён ли ему доступ |
|
Ограничение и управление трафиком |
Ограничивают нагрузку, распределяют трафик и меняют правила его прохождения |
|
Проверка и защита трафика |
Проверяют входящий трафик и блокируют нежелательный или некорректный |
|
Изменение запросов и ответов |
Переписывают URI, заголовки, тело и другие части HTTP-запроса или ответа |
|
Преобразование протоколов и интерфейсов |
Позволяют клиенту и бэкенду использовать разные протоколы или API |
|
Дополнительная обработка и доставка трафика |
Делают с трафиком действия помимо обычной передачи на бэкенд |
|
Логи, метрики и трассировка |
Собирают данные о работе ADC и передают их в системы наблюдаемости |
|
Выполнение пользовательской и serverless-логики |
Позволяют запускать собственную логику или обращаться к serverless-функциям во время обработки трафика |
|
Работа со специальными протоколами |
Добавляют механику, специфичную для протоколов помимо обычного HTTP |
|
AI/LLM |
Управляют трафиком к LLM: проксируют его, ограничивают токены, проверяют и преобразуют промпты |
|
Источник: Шаг 2. Настройка ADC: плагины
Порядок выполнения плагинов
HTTP/HTTPS:
rewrite — подготовить запрос и определить клиента
↓
access — решить, можно ли пропустить запрос
↓
before_proxy — выполнить последние действия перед бэкендом
↓
header_filter / body_filter — обработать ответ
↓
log — зафиксировать результат
TCP/UDP:
preread — проверить сессию и принять основные решения
↓
before_proxy — выполнить последние действия перед бэкендом
↓
log — зафиксировать результат
Источник: Шаг 2. Настройка ADC: плагины
Виды объектов конфигурации
-
Основные — объекты, в которых вы задаёте конфигурацию 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 проверит ваши объекты конфигурации в таком порядке: потребитель → группа потребителей → маршрут → конфигурация плагинов → сервис. Будут применены настройки плагина из первого объекта, где этот плагин встретился. |
Один и тот же плагин настроен в глобальном правиле и в другом объекте |
Обе конфигурации плагина в таком порядке: сначала из глобального правила, затем из другого объекта. Для отдельных плагинов возможны исключения. |
Один и тот же параметр задан и в метаданных плагина, и в настройках этого плагина в объекте конфигурации |
Значение параметра из объекта конфигурации. |