PostgreSQL-инсталляция CodeScoring.Save¶
PostgreSQL-инсталляция предназначена для продуктивного использования, больших команд, высоких требований к доступности, масштабируемости и производительности.
Подготовка инфраструктуры¶
PostgreSQL¶
По умолчанию PostgreSQL разворачивается как зависимость Helm-чарта. Для этого в values.yaml включите postgres.enabled=true и задайте параметры подключения:
postgres:
enabled: true
fullnameOverride: postgres
auth:
database: save_db
username: save_user
password: <STRONG_PASSWORD>
При использовании встроенного PostgreSQL backend и auth должны подключаться к хосту postgres.
Для внешней PostgreSQL отключите встроенную зависимость:
После этого укажите внешний хост PostgreSQL в параметрах DATABASE_HOST для backend и auth.
Подготовьте базу данных и пользователя во внешней PostgreSQL:
CREATE DATABASE save_db;
CREATE USER save_user WITH PASSWORD '<STRONG_PASSWORD>';
GRANT ALL PRIVILEGES ON DATABASE save_db TO save_user;
Объектное хранилище¶
По умолчанию MinIO разворачивается как зависимость Helm-чарта. Для этого в values.yaml включите minio.enabled=true. Сервис будет доступен как save-minio.
minio:
enabled: true
fullnameOverride: save-minio
auth:
rootUser: <ACCESS_KEY>
rootPassword: <SECRET_KEY>
provisioning:
enabled: true
buckets:
- save
Для встроенного MinIO в app.envs используйте endpoint http://minio.example.com:9000, а S3_BUCKET должен совпадать с бакетом из minio.provisioning.buckets.
Для внешнего S3-совместимого хранилища отключите встроенный MinIO:
После этого задайте S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY и S3_SECRET_KEY в app.envs.
Конфигурация CodeScoring.Save¶
Используйте базовый values.yaml из Helm-чарта и измените нужные параметры.
Переопределение контейнера auth
Не создавайте отдельный минимальный файл переопределений только с app.deployments.auth.containers, так как containers — это список, и Helm может заменить весь блок контейнера.
Для встроенных PostgreSQL и MinIO используйте такие значения:
app:
envs:
DATABASE_DRIVER: postgres
DATABASE_HOST: postgres
DATABASE_PORT: "5432"
DATABASE_NAME: save_db
DATABASE_USER: save_user
DATABASE_PASSWORD: <STRONG_PASSWORD>
STORAGE_TYPE: s3
S3_ENDPOINT: http://minio.example.com:9000
S3_BUCKET: save
S3_ACCESS_KEY: <ACCESS_KEY>
S3_SECRET_KEY: <SECRET_KEY>
AUTH_SERVICE_URL: http://cs-auth.example.com:9100
AUTH_JWKS_URL: http://cs-auth.example.com:9100/internal/v1/jwks
AUTH_INTERNAL_SECRET: <STRONG_SECRET>
postgres:
enabled: true
fullnameOverride: postgres
auth:
database: save_db
username: save_user
password: <STRONG_PASSWORD>
minio:
enabled: true
fullnameOverride: save-minio
auth:
rootUser: <ACCESS_KEY>
rootPassword: <SECRET_KEY>
provisioning:
enabled: true
buckets:
- save
Для auth-сервиса измените значения в существующем блоке app.deployments.auth.containers[0].env. Переменные окружения задаются списком name/value:
app:
deployments:
auth:
containers:
- name: auth
env:
- name: ENVIRONMENT
value: production
- name: LOG_LEVEL
value: info
- name: LOG_FORMAT
value: json
- name: LOG_OUTPUT
value: stdout
- name: DATABASE_DRIVER
value: postgres
- name: DATABASE_HOST
value: postgres
- name: DATABASE_PORT
value: "5432"
- name: DATABASE_NAME
value: save_db
- name: DATABASE_USER
value: save_user
- name: DATABASE_PASSWORD
value: <STRONG_PASSWORD>
- name: DATABASE_SSL_MODE
value: disable
- name: AUTH_PORT
value: "9100"
- name: AUTH_ADMIN_PASSWORD
value: <STRONG_PASSWORD>
- name: AUTH_JWT_EXPIRY
value: "900"
- name: AUTH_REFRESH_TOKEN_TTL
value: "604800"
- name: AUTH_REFRESH_ABSOLUTE_TTL
value: "2592000"
- name: AUTH_REFRESH_SLIDING
value: "true"
- name: AUTH_DOCKER_TOKEN_EXPIRY
value: "300"
- name: AUTH_INTERNAL_SECRET
value: <STRONG_SECRET>
Значение AUTH_INTERNAL_SECRET должно совпадать у backend и auth.
Установка¶
helm install codescoring-save codescoring/save \
--namespace codescoring-save \
--create-namespace \
--values values.yaml
Проверка установки¶
# Проверка статуса подов
kubectl get pods -n codescoring-save -w
# Проверка всех ресурсов
kubectl get all -n codescoring-save
# Проверка логов backend
kubectl logs -n codescoring-save -l app=backend --tail=100
# Проверка логов auth
kubectl logs -n codescoring-save -l app=auth --tail=100
# Проверка логов frontend
kubectl logs -n codescoring-save -l app=frontend --tail=100
# Проверка готовности
kubectl get pods -n codescoring-save -o wide
Следующие шаги¶
После успешной установки: