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 в envs.DATABASE_HOST.
Подготовьте базу данных и пользователя во внешней 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
Для установки с сохранением данных включите persistence у PostgreSQL и MinIO:
postgres:
persistence:
enabled: true
storageClassName: default
mountPath: /var/lib/postgresql/data
size: 5Gi
minio:
persistence:
enabled: true
storageClassName: default
mountPath: /data
size: 20Gi
Общий блок pvcs не должен использоваться для PostgreSQL и MinIO в поставляемом чарте. Если postgres.persistence.enabled или minio.persistence.enabled выключены, данные соответствующего сервиса не сохраняются после пересоздания Pod.
Для встроенного MinIO в envs используйте endpoint http://save-minio:9000. Секция minio.provisioning создает бакет при установке чарта, поэтому S3_BUCKET должен совпадать с одним из значений minio.provisioning.buckets.
Для внешнего S3-совместимого хранилища отключите встроенный MinIO:
После этого задайте S3_ENDPOINT, S3_BUCKET, S3_ACCESS_KEY и S3_SECRET_KEY в envs.
Конфигурация CodeScoring.Save
Используйте базовый values.yaml из Helm-чарта и измените нужные параметры.
Для встроенных PostgreSQL и MinIO используйте такие значения:
image:
registry: <REGISTRY_HOST>
tag: <SAVE_VERSION>
pullSecrets:
- name: codescoring-pvt-regcred
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://save-minio: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_ADMIN_PASSWORD: <STRONG_PASSWORD>
AUTH_INTERNAL_SECRET: <STRONG_SECRET>
configMaps:
envs:
enabled: true
deploymentsGeneral:
envConfigmaps:
- envs
postgres:
enabled: true
fullnameOverride: postgres
auth:
database: save_db
username: save_user
password: <STRONG_PASSWORD>
persistence:
enabled: true
storageClassName: default
mountPath: /var/lib/postgresql/data
size: 5Gi
minio:
enabled: true
fullnameOverride: save-minio
auth:
rootUser: <ACCESS_KEY>
rootPassword: <SECRET_KEY>
provisioning:
enabled: true
buckets:
- save
persistence:
enabled: true
storageClassName: default
mountPath: /data
size: 20Gi
Значение AUTH_INTERNAL_SECRET используется для внутреннего взаимодействия сервисов Save. Секция minio.provisioning создает бакет для встроенного MinIO, а S3_BUCKET должен совпадать с одним из значений minio.provisioning.buckets.
Значения DATABASE_PASSWORD, S3_ACCESS_KEY и S3_SECRET_KEY, а также параметры postgres.auth.password и minio.auth должны совпадать с соответствующими значениями, указанными в Helm-чарте.
Дополнительные настройки для Argo CD
При развертывании через Argo CD необходимо добавить следующие параметры в конфигурационный файл:
minio:
enabled: true
fullnameOverride: save-minio
annotations:
minioResources:
argocd.argoproj.io/sync-wave: "-2"
provisioningJob:
argocd.argoproj.io/sync-wave: "-1"
Установка
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
Следующие шаги
После успешной установки:
- Создайте первый репозиторий
- Настройте политики очистки
- Создайте пользователей и назначьте роли