Перейти к содержанию

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 в параметрах 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:

minio:
  enabled: false

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

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

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

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