KEDA с поддержкой Yandex Monitoring
Данный продукт содержит внешний скейлер KEDA, который интегрирует автомасштабирование Kubernetes с Yandex Cloud Monitoring. Скейлер позволяет масштабировать Kubernetes приложения на основе метрик из Yandex Monitoring, например: метрик Application Load Balancer или Managed Database. Скейлер поддерживает функционал настройки временных окон, агрегирования и обработки NaN-значений.
-
Создайте сервисный аккаунт, необходимый для работы KEDA External Scaler.
-
Назначьте сервисному аккаунту роль
monitoring.viewer. -
Задайте настройки KEDA:
- Пространство имен — создайте новое пространство имен (например,
keda-system). - Название приложения — укажите название приложения.
- Ключ сервисного аккаунта — вставьте содержимое существующего файла
key.jsonили создайте новый.
- Пространство имен — создайте новое пространство имен (например,
-
Нажмите кнопку Установить.
-
Дождитесь перехода приложения в статус
Deployed. -
Создайте ресурс `ScaledObject.
Пример ScaledObject:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: my-yandex-scaler
spec:
scaleTargetRef:
name: my-app
pollingInterval: 30 # seconds
cooldownPeriod: 300
minReplicaCount: 1
maxReplicaCount: 10
triggers:
- type: external
metadata:
# Убедитесь, что указан верный namespace
scalerAddress: keda-external-scaler-yc.keda-system.svc.cluster.local:8080
# Запрос из Yandex Monitoring
query: |
alias(replace_nan(series_sum("load_balancer.requests_count_per_second"{service="application-load-balancer", load_balancer="xxx", http_router="*", virtual_host="*", route="route-xxx", backend_group="*", backend="*", zone="*", code="total"}), 0), "Total requests count")
# Каталог, где необходимо искать метрики
folderId: "xxxxxxxxxxxxxxx"
# Целевое значение
targetValue: "100" # Масштабируем, если RPS > 100
# Параметры Downsampling из Yandex Monitoring
downsampling.gridAggregation: "AVG" # `MAX`, `MIN`, `SUM`, `AVG`, `LAST`, `COUNT`
downsampling.gridInterval: "120000" # Integer > 0 (mutually exclusive)
# downsampling.maxPoints: 20 # Integer >= 10 (mutually exclusive)
# downsampling.disabled: true # `true`, `false` (mutually exclusive)
# downsampling.gapFilling: "NONE" # `NULL`, `NONE`, `PREVIOUS`
# Опции на стороне скейлера (не рекомендуется, лучше получать метрики в нужном виде из Yandex Monitoring)
nanStrategy: "error" # `skip`, `zero`, `error`, `lastValid` (default `error`)
aggregationMethod: "max" # `sum`, `avg`, `max`, `min`, `last` (default `max`)
timeSeriesAggregation: "avg" # `sum`, `avg`, `max`, `min`, `last` (default None)
# Временное окно
timeWindow: "2m" # Query last 2 minutes (default 5m)
timeWindowOffset: "30s" # Offset the time windows to 30 seconds back (to remove trailing zeros) (default 30s)
# Logging configuration
logLevel: "debug" # `debug`, `info`, `warn", `error", `none` (default `info`)
logMetrics: "true" # Log raw metric responses (default `false`)
logAggregation: "true" # Log aggregation details (default `false`)
- Автоматическое масштабирование приложений в Kubernetes на базе метрик Yandex Monitoring
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.
| Helm-чарт | Версия | Pull-команда | Документация |
|---|---|---|---|
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/keda/chart/keda-external-scaler-yc | 1.1.3 | Открыть |
| Docker-образ | Версия | Pull-команда |
|---|---|---|
| cr.yandexcloud.kz/yc-marketplace/yandex-cloud/keda/keda-external-scaler-yc1763061415439676371315616708120497290432740585027 | v1.2.19 |