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 отключите встроенную зависимость:

postgres:
  enabled: false

После этого укажите внешний хост 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:

minio:
  enabled: false

После этого задайте 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

Следующие шаги

После успешной установки:

  1. Создайте первый репозиторий
  2. Настройте политики очистки
  3. Создайте пользователей и назначьте роли
Страница была полезна?