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

Upload.API

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

Подготовка к развертыванию

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

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

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


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

Скачивание чарта

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

Результат: Чарт будет скачан в папку ./charts/upload-api/


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

Установка

Для развертывания в продакшне с использованием конфигурации из .values/upload-api_prod.yaml:

helm install medikt-upload-api ./charts/upload-api \
--namespace prod \
--create-namespace \
-f ./charts/upload-api/values.yaml \
-f .values/upload-api_prod.yaml

Обновление

helm upgrade medikt-upload-api ./charts/upload-api \
--namespace prod \
-f ./charts/upload-api/values.yaml \
-f .values/upload-api_prod.yaml

Удаление

helm uninstall medikt-upload-api --namespace prod

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

ПараметрЗначениеОписание
dotnet_environmentProductionASP.NET Core environment
yc.uploadsBucketNameprivate.medikt.netприватный S3 bucket для пользовательских файлов
cors.originshttps://my.medikt.netДоступ только через ЛК пользователя
ingress.enabledfalseIngress управляется через Terraform

Параметры CORS

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

Параметры Yandex S3

yc:
uploadsBucketName: "uploads"

Параметры Content API (gRPC)

contentApiGrpcAddress: "http://medikt-content-api:8081"

В случае, если имя релиза для развертывания content-api отличается от medikt-content-api, название сервиса должно отличаться соотвественно.

Параметры загрузки файлов

upload:
totalAvailableSpace: 54000000000 # 50GB в байтах

Health checks

livenessProbe:
httpGet:
path: /healthz/live
port: uploadapi-http
readinessProbe:
httpGet:
path: /healthz/ready
port: uploadapi-http

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

Установка чарта

helm install medikt-upload-api ./charts/upload-api \
--namespace prod \
--create-namespace \
-f ./values/upload-api_prod.yaml

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

helm upgrade medikt-upload-api ./charts/upload-api \
--namespace prod \
-f ./values/upload-api_prod.yaml

Проверка релиза

helm list -n prod
helm status medikt-upload-api -n prod

Логи подов

# Список подов
kubectl get pods -n prod -l app.kubernetes.io/name=upload-api

# Логи
kubectl logs -n prod <pod-name>

Проверка сервиса

# Проверка сервиса
kubectl get svc -n prod medikt-upload-api

# Проверка ConfigMap
kubectl get configmap -n prod medikt-upload-api -o yaml

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

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

helm list -n prod | grep upload-api

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

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

Ожидаемый вывод: все поды в статусе Running.

3. Проверка сервиса

kubectl get svc -n prod medikt-upload-api

4. Проверка ConfigMap

kubectl get configmap -n prod medikt-upload-api -o yaml

5. Проверка через curl (внутри кластера)

kubectl run -n prod curl-test --rm -i --restart=Never --image=curlimages/curl \
-- curl -s http://medikt-upload-api:8080/healthz/live

Troubleshooting

Ошибки подключения к БД

Убедиться, что Secret userdb-connection-string содержит правильную строку подключения к MongoDB.

Ошибки доступа к S3

Убедиться, что Secret upload-sa-creds содержит валидные AWS credentials.