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_environment | Production | ASP.NET Core environment |
yc.uploadsBucketName | private.medikt.net | приватный S3 bucket для пользовательских файлов |
cors.origins | https://my.medikt.net | Доступ только через ЛК пользователя |
ingress.enabled | false | Ingress управляется через 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.