Skip to main content
Version: 1.12-grodno (current)

Transcoding services

Версия чарта

Версия чарта: 260521.213.3121 OCI-репозиторий: cr.yandex/crpt9c7igqasaqddbg0p/backend/transcoder/worker/charts/transcoder-worker

Введение

transcoder-worker — это основной сервис, который отвечает за обработку видео-чанков. Сервис считывает сообщения из двух очередей (обычная и низкий приоритет) и выполняет транскодирование чанков с помощью ffmpeg.

Важно: Ingress для этого сервиса не требуется (работает как background worker).

Необходимые Secret'ы

Для развертывания необходимы следующие Secret'ы:

ConfigMap'ы генерируются автоматически из шаблонов чарта:

  • medikt-transcoder-worker - appsettings.json
  • medikt-transcoder-common - appsettings.common.json (общая конфигурация)

Получение чарта из OCI-репозитория

helm pull oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/transcoder/worker/charts/transcoder-worker \
--version 260521.213.3121 \
--untar --untardir ./charts

Развертывание

Установка

helm install medikt-transcoder-worker ./charts/transcoder-worker \
--namespace prod \
--values ./values/transcoder-worker_prod.yaml \
--create-namespace

Обновление

helm upgrade medikt-transcoder-worker ./charts/transcoder-worker \
--namespace prod \
--values ./values/transcoder-worker_prod.yaml

Удаление

helm uninstall medikt-transcoder-worker --namespace prod

Конфигурация (values.yaml)

Основные параметры

ПараметрТипПо умолчаниюОписание
dotnet_environmentstringStagingДолжно быть Production
replicaCountint4Количество реплик
terminationGracePeriodSecondsint60Время на graceful shutdown
image.repositorystringcr.yandex/.../workerDocker образ
image.pullPolicystringIfNotPresentПолитика pull образа

Нагрузка и масштабирование

ПараметрТипПо умолчаниюОписание
resources.limits.cpustring8000mЛимит CPU (8 ядер)
resources.requests.cpustring4000mЗапрос CPU (4 ядра)
autoscaling.enabledbooltrueВключить autoscaling
autoscaling.minReplicasint4Минимум реплик
autoscaling.maxReplicasint30Максимум реплик

External Queue Metrics (autoscaling)

ПараметрТипПо умолчаниюОписание
externalQueueMetrics[].metricNamestringqueue_messages_stored_countИмя метрики
externalQueueMetrics[].queueNamestringmedikt-net-chunks-mqОсновная очередь
externalQueueMetrics[].queueTargetMessagesint5Целевое количество сообщений на под

Вторая очередь (низкий приоритет)

ПараметрТипПо умолчаниюОписание
externalQueueMetrics[].queueNamestringmedikt-net-chunks-low-priority-mqОчередь низкого приоритета
externalQueueMetrics[].queueTargetMessagesint15Целевое количество сообщений на под (x3 от обычной)

Volumes

Имя volumeТипMount pathОписание
appsettings-volumeconfigMap/app/appsettings.environment.jsonКонфигурация приложения
appsettings-commonconfigMap/app/appsettings.common.jsonОбщая конфигурация

Аффинность

Сервис размещается на нодах с label workers_affinity=true и требует preemptible ноды (yandex.cloud/preemptible=true).

Примеры значений

Производственная конфигурация (prod)

dotnet_environment: Production

resources:
limits:
cpu: 8000m
requests:
cpu: 4000m

autoscaling:
enabled: true
minReplicas: 4
maxReplicas: 30
externalQueueMetrics:
- metricName: "queue_messages_stored_count"
queueName: "medikt-net-chunks-mq"
queueTargetMessages: 5
- metricName: "queue_messages_stored_count"
queueName: "medikt-net-chunks-low-priority-mq"
queueTargetMessages: 15

Проверка развертывания

# Проверка статуса релиза
helm list -n prod

# Проверка подов
kubectl get pods -n prod -l app.kubernetes.io/name=transcoder-worker

# Логи пода
kubectl logs -n prod <pod-name> -f

Примечания

  1. Сервис использует exec-based probes для health check (проверка файла /tmp/healthy)
  2. Graceful shutdown - 60 секунд
  3. Autoscaling настроен по двум очередям:
    • medikt-net-chunks-mq - основная очередь (5 сообщений/под)
    • medikt-net-chunks-low-priority-mq - очередь низкого приоритета (15 сообщений/под)
  4. Нагрузка на CPU около 8000m при активной работе (8 ядер)
  5. Требуются preemptible ноды для экономии ресурсов
  6. Максимум 30 реплик для обработки пиковых нагрузок