Ambassador построен на высокопроизводительном прокси-сервере Envoy, созданном в Lyft. Его ключевая философия — самообслуживание разработчиков. Вместо того чтобы править общие конфигурационные файлы или беспокоить команду платформы, разработчик может определить настройки маршрутизации, аутентификации, скорости ограничения запросов (rate limiting) прямо в аннотациях к своему Kubernetes Deployment или через отдельный CRD (Custom Resource Definition) `Mapping`. Ambassador, отслеживая эти изменения в реальном времени, динамически переконфигурирует Envoy без перезагрузок и потерь соединений.
Первым шагом является установка. Рекомендуемый способ — через Helm chart в ваш Kubernetes-кластер. После установки создается базовое `Listener` (прослушиватель на портах 80/443) и `Host` ресурс для определения домена. Основная сущность — `Mapping`. Именно он связывает путь (префикс) входящего запроса с соответствующим Kubernetes-сервисом. Эксперты подчеркивают важность правильного именования `Mappings` и использования неймспейсов для логического разделения правил, принадлежащих разным командам.
Но на простой маршрутизации сила Ambassador не заканчивается. Где раскрывается его истинный потенциал, так это в встроенных модулях (Filters), которые реализуют сквозные функции (cross-cutting concerns):
- **Аутентификация и авторизация:** Ambassador может делегировать проверку токенов JWT внешнему сервису (например, Auth0, Keycloak) с помощью `AuthService`, или использовать встроенную базовую аутентификацию. Это избавляет каждый микросервис от необходимости реализовывать эту логику заново.
- **Скорость ограничения запросов (Rate Limiting):** Интеграция с сервисом rate limit (может быть развернут как отдельный микросервис) позволяет глобально ограничивать вызовы API по IP, ключу API или другим параметрам, защищая backend от перегрузок и DDoS-атак.
- **Мониторинг и трассировка:** Ambassador по умолчанию экспортирует богатые метрики в формате Prometheus, детализируя запросы по домену, путем и кодом ответа. Интеграция с распределенной трассировкой (Zipkin, Jaeger) позволяет отслеживать полный путь запроса через все сервисы.
- **Канареечные релизы и A/B-тестирование:** С помощью `Mapping` и весов (`weight`) можно направлять определенный процент трафика на новую версию сервиса. Более тонкий контроль, включая разделение трафика по заголовкам или cookies, позволяет проводить сложные эксперименты.
Отладка — сильная сторона Ambassador. Включив режим отладки в `Module` ресурсе, можно получить детальные логи Envoy. Кроме того, Ambassador Admin UI (обычно на порту 8877) предоставляет удобный веб-интерфейс для просмотра текущей конфигурации, состояния кластера и диагностики проблем с подключением к upstream-сервисам.
Эволюция проекта привела к его переименованию в Emissary-ingress под эгидой CNCF, что подчеркивает его зрелость и открытость. Сегодня это полноценный, production-готовый API-шлюз, который идеально подходит для организаций, стремящихся реализовать GitOps-подход. Вся конфигурация хранится в виде YAML-манифестов в Git, что обеспечивает версионирование, аудит и возможность отката. Ambassador/Emissary-ingress стирает грань между инфраструктурой и разработкой, давая командам скорость и автономность, не жертвуя контролем и безопасностью.
Комментарии (15)