UserReg.API
userreg-api — это веб-API сервис регистрации пользователей в системе Medikt. Развертывание производится с помощью Helm-чарта в Kubernetes-кластер.
Версия чарта: 240830.60.219
OCI-репозиторий: cr.yandex/crpt9c7igqasaqddbg0p/backend/userreg.api/charts/userreg-api
Ingress: reg.medikt.net (управляется через Terraform)
Важно: Управление Ingress для всех сервисов осуществляется через Terraform. Параметр ingress.enabled должен быть установлен в false в values.yaml.
Подготовка к развертыванию
Необходимые Secret'ы
Для развертывания необходимы следующие Secret'ы:
ConfigMap'ы генерируются автоматически из шаблонов чарта. Ingress управляется через Terraform модуль medikt-infra.
Конфигурация через ConfigMap
Конфигурация приложения (appsettings.json) формируется из шаблона в чарте:
- Шаблон:
charts/userreg-api/appsettings.json - Template: Использует Helm-шаблоны (tpl) для подстановки значений из values.yaml
- Пример подстановки:
{{ include "userreg-api.captchaSecret" . | b64dec | quote }} - Mount path:
/app/appsettings.Production.json(для Production environment, приdotnet_environment: Production)
Получение чарта из OCI-репозитория
Команда для скачивания чарта
helm pull oci://cr.yandex/crpt9c7igqasaqddbg0p/backend/userreg.api/charts/userreg-api \
--version 240830.60.219 \
--untar --untardir ./charts
Развертывание с помощью Helm
# Установка из OCI-репозитория (одной командой)
helm install medikt-userreg-api ./charts/userreg-api \
--version 240830.60.219 \
--namespace prod \
--create-namespace \
-f .values/userreg-api_prod.yaml
Обновление
# Обновление из OCI-репозитория
helm upgrade medikt-userreg-api ./charts/userreg-api \
--version 240830.60.219 \
--namespace prod \
-f .values/userreg-api_prod.yaml
Удаление
helm uninstall medikt-userreg-api --namespace prod
Конфигурация
Основные параметры конфигурации (values.yaml)
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
dotnet_environment | string | Staging | Должно быть Production |
environment | string | env | Важно! Должно быть prod |
CORS (Cross-Origin Resource Sharing)
| Параметр | Тип | Описание |
|---|---|---|
cors.origins | array | Список разрешенных CORS-origins |
Пример для продакшена:
cors:
origins:
- "https://medikt.net"
Строка подключения к базе данных
| Параметр | Тип | Описание |
|---|---|---|
connectionStrings.usersDatabaseSecretRef | string | Имя Secret'а с подключением к БД |
Secret должен содержать ключ connectionString с базой данных.
Ключ Yandex Captcha
| Параметр | Тип | Описание |
|---|---|---|
captchaKey.secretNameRef | string | Имя Secret'а с ключом Captcha |
Secret должен содержать ключ server_key.
Сервисы gRPC
| Параметр | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
userAuthApiGrpcAddress | string | http://medikt-userauth-api:8081 | Адрес сервиса авторизации |
notificationApiGrpcAddress | string | http://medikt-notification-api:8081 | Адрес сервиса уведомлений |
Параметры безопасности подов
| Параметр | Тип | Описание |
|---|---|---|
serviceAccount.create | bool | Создавать ли Service Account |
serviceAccount.name | string | Имя Service Account (по умолчанию генерируется) |
serviceAccount.automount | bool | Автоматическое монтирование API-учетных данных |
securityContext | object | Security Context для контейнера |
podSecurityContext | object | Security Context для пода |
Ресурсы
| Параметр | Тип | Описание |
|---|---|---|
resources.requests.memory | string | Запрос памяти (по умолчанию 300Mi) |
resources.limits.cpu/memory | string | Лимиты ресурсов (по умолчанию не заданы) |
Пробы (Probes)
| Параметр | Тип | Описание |
|---|---|---|
livenessProbe.httpGet.path | string | Путь к endpoints лайв-пробы (/healthz/live) |
readinessProbe.httpGet.path | string | Путь к endpoints readiness-пробы (/healthz/ready) |
Конфигруация Affinity
По умолчанию заданы правила affinity для размещения подов на нодах с меткой api_affinity=true и исключениями для preemption-нод.
Проверка развертывания
Проверка статуса релиза
helm status medikt-userreg-api -n prod
Проверка подов
kubectl get pods -n prod -l app.kubernetes.io/name=userreg-api
kubectl describe pod <pod-name> -n prod
Проверка логов
kubectl logs -f <pod-name> -n prod
Проверка сервиса
kubectl get svc -n prod -l app.kubernetes.io/name=userreg-api
Проверка конфигурации
# Проверка ConfigMap с appsettings
kubectl get configmap medikt-userreg-api -n prod -o yaml
# Проверка mounted конфигурации в поде
kubectl exec <pod-name> -n prod -- cat /app/appsettings.Production.json