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

Content.API

Введение

Версия чарта: 260717.173.1600 OCI-репозиторий: cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api Ingress: content.medikt.net (управляется через Terraform) Важно: Управление Ingress для всех сервисов осуществляется через Terraform. Параметр ingress.enabled должен быть установлен в false в values.yaml.

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

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

ConfigMap'ы генерируются автоматически из шаблонов чарта. Ingress управляется через Terraform модуль medikt-infra.

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

Установка чарта (одной командой)

helm install medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--values .values/content-api_prod.yaml

Скачивание и распаковка чарта

helm pull oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--untar --untardir ./charts

Обновление чарта

helm upgrade medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--values .values/content-api_prod.yaml

Развертывание с помощью Helm

Установка (new release)

helm install medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--values .values/content-api_prod.yaml

Обновление существующего релиза

helm upgrade medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--values .values/content-api_prod.yaml

Удаление релиза

helm uninstall medikt-content-api --namespace prod

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

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

ПараметрПо умолчаниюОписание
dotnet_environmentStagingОкружение .NET (Dev, Staging, Production)
replicaCount2Количество реплик приложения
image.repositorycr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/apiRegistry и имя образа
image.pullPolicyIfNotPresentПолитика pull образа
ingress.enabledfalseВключить/отключить Ingress

Конфигурация приложения (Production)

# Основной хост Medikt
mediktHost: "https://medikt.net"

# CORS
cors:
origins:
- "https://medikt.net"
- "https://my.medikt.net"

# CDN настройки
cdn:
imageHost: "https://cdn.medikt.net"
videoHost: "https://cdn.medikt.net"

# Feature Flags
featureFlags:
eventUri: "https://els-featuremgr.medikt.net"
streamUri: "wss://els-featuremgr.medikt.net"
apiKey: "<env_specific>"

# gRPC адреса соседних сервисов
uploadApiGrpcAddress: "http://medikt-upload-api:8081"
userApiGrpcAddress: "http://medikt-user-api:8081"
transcoderApiGrpcAddress: "dns:///medikt-transcoder-api:8081"
notificationApiGrpcAddress: "http://medikt-notification-api:8081"

Настройки OpenSearch

oss:
secretNameRef: "content-searcher-creds"
indexes:
publicationsVersion: "20260205"
channelsVersion: "20250807"
personasVersion: "20250830_1"
businessProfilesVersion: "20250807"
eventsVersion: "20250808"

Лимиты и ограничения (Production)

contentLimits:
publications:
maximumPerPeriod: 5
periodHours: 24
delayBetweenSeconds: 300
comments:
maximumPerPeriod: 100
periodHours: 24
delayBetweenSeconds: 5
updateTimeLimitHours: 24
search:
periodDays: 365
subscriptions:
maxUserSubscriptions: 1000
maxChannelSubscribers: 100000
channels:
maxUserChannels: 10
bookmarks:
maxCount: 1000

Аffinity и ресурсы

# Аffinity для размещения на определенных нодах
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: api_affinity
operator: In
values:
- "true"
- key: yandex.cloud/preemptible
operator: In
values:
- "false"

# Лимиты ресурсов
resources:
requests:
memory: 300Mi

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

Проверка статуса релиза

helm status medikt-content-api --namespace prod

Проверка подов

kubectl get pods -n prod -l app.kubernetes.io/name=content-api

Проверка логов

kubectl logs -n prod -l app.kubernetes.io/name=content-api --tail=100 -f

Health Checks

kubectl port-forward -n prod svc/medikt-content-api 8080:8080 &
curl http://localhost:8080/healthz/live
curl http://localhost:8080/healthz/ready

Проверка доступности через Ingress

После настройки Ingress через Terraform, доступ к приложению должен быть доступен по доменному имени (например: content.medikt.net).


Примеры команд

Установка в environment prod

helm install medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--values .values/content-api_prod.yaml

Обновление с сохранением значений

helm upgrade medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--reuse-values

Проверка конфигурации (dry-run)

helm upgrade medikt-content-api \
oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/content.api/charts/content-api \
--version 260717.173.1600 \
--namespace prod \
--values .values/content-api_prod.yaml \
--dry-run