Table of Contents

Настройка параметров МоиОтчеты Корпоративный Сервер

Продукты: МоиОтчеты Корпоративный Сервер

Данный раздел описывает процесс конфигурирования сервера отчётов. Здесь описана базовая информация. Для тонкой настройки сервера обратитесь к руководству admi_config. Конфигурация сохраняется в защищенном хранилище Kubernetes. Эту операцию оптимально выполнить до старта контейнеров, описанных в секции fr-corporate-server.

Базовые параметры сервера отчётов определены ниже. Для удобства они показаны в отдельной секции. Возможные варианты: поместить этот фрагмент в отдельный файл и с помощью операции точка внедрить их в конфигурационный скрипт. Или же скопировать этот фрагмент непосредственно в конфигурационный скрипт. Так возможно дописать export перед каждой переменной и экспортировать в переменные среды.

Значение переменной MONGO_HOST (или FERRET_HOST) можно проверить в Kubernetes Dashboard - оно соответствует имени сервиса и его пространству имён, разделённых точкой. Для успешного старта сервера отчётов необходима лицензия - специальная строка, описывающая права использования сервера отчётов. Получите её у компании ООО "Быстрые отчеты".

Значения параметров MONGO_USER и MONGO_PASS (или FERRET_USER и FERRET_PASS) должны соответствовать тем же самым параметрам, что указаны при установке MongoDB (FerretDB).

Вариант для MongoDB:

NAMESPACE=fr-corporate-server
CLOUD_ENV=prod

## Пароль и имя пользователя могут быть установлены любые, главное, чтобы совпадали с теми, что были заданы при установке MongoDB.
## MONGO_DB должна быть admin.
## Однако, есть правила установки имени хоста - оно образуется из имени сервиса и пространства имён, в котором зарегистрирована MongoDB.

MONGO_HOST=fr-mongo-mongodb.mongo
MONGO_USER=root
MONGO_PASS=mxzgrkGvvk
MONGO_DB=admin


## Следующие параметры лучше ЗДЕСЬ не изменять. Хост и имя пользователя устанавливаются автоматически, а 
## пароль для RabbitMQ генерируется автоматически на момент установки и сохраняется в хранилище секретов Kubernetes.
RABBITMQ_HOST=rabbitmq.rabbitmq.svc.cluster.local 
#  RABBITMQ_HOST=rabbitmq-0.rabbitmq-headless.rabbitmq
RABBITMQ_USER=user
RABBITMQ_PASS=$(kubectl get secret --namespace rabbitmq rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)


## Разработчики утверждают, что здесь может быть любая последовательность символов. И длина не опрелена. 
## Для теста были использованы следующие значения, и установка прошла успешно

DESIGNER_SECRET=yXgQDpNzohhN3dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHrXiepieQtOaLwdqfRijMaZwy5p27tho7XK4C
WORKER_SECRET=9bYuYu4cvt73oWD3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5Z6i6pRzkR8mKGL1pTRnns3P0cIxzTuVu
GATEWAY_SECRET=R0jEINg6OA4TssyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY46ZtsYowI7gB9yteZNMSvPoL6sGgiWC4
SCHEDULER_SECRET=fcfFZNWC3zyBmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5gD2MeexV3svLdy87qC6bX3bM2W6mZjRC


## В эту переменную должна быть вписана лицензия, полученная у компании ООО "Быстрые отчеты". Увы, без лицензии сервер отчётов работать не будет.
## Не используйте кавычки.

LICENSE=

## Строка подключения к MongoDB формируется автоматически на основе ранее определённых переменных. Тут лучше ничего не менять.

MONGO_ACCESS="mongodb://$MONGO_USER:$MONGO_PASS@$MONGO_HOST:27017/"
CONNECTION_STRING="$MONGO_ACCESS?authSource=$MONGO_DB&readPreference=primary&appname=MongoDB%20Compass&ssl=false&maxPoolSize=100&waitQueueMultiple=100"

Вариант для FerretDB:

NAMESPACE=fr-corporate-server
CLOUD_ENV=prod

## Пароль и имя пользователя могут быть установлены любые, главное, чтобы совпадали с теми, что были заданы при установке FerretDB.
## FERRET_DB должна быть admin.
## Однако, есть правила установки имени хоста - оно образуется из имени сервиса и пространства имён, в котором зарегистрирована FerretDB.

FERRET_HOST=fr-ferret.ferret
FERRET_USER=any_name
FERRET_PASS=ferret_password
FERRET_DB=admin


## Следующие параметры лучше ЗДЕСЬ не изменять. Хост и имя пользователя устанавливаются автоматически, а 
## пароль для RabbitMQ генерируется автоматически на момент установки и сохраняется в хранилище секретов Kubernetes.
RABBITMQ_HOST=rabbitmq.rabbitmq.svc.cluster.local 
#  RABBITMQ_HOST=rabbitmq-0.rabbitmq-headless.rabbitmq
RABBITMQ_USER=user
RABBITMQ_PASS=$(kubectl get secret --namespace rabbitmq rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)


## Разработчики утверждают, что здесь может быть любая последовательность символов. И длина не определена. 
## Для теста были использованы следующие значения, и установка прошла успешно

DESIGNER_SECRET=yXgQDpNzohhN3dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHrXiepieQtOaLwdqfRijMaZwy5p27tho7XK4C
WORKER_SECRET=9bYuYu4cvt73oWD3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5Z6i6pRzkR8mKGL1pTRnns3P0cIxzTuVu
GATEWAY_SECRET=R0jEINg6OA4TssyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY46ZtsYowI7gB9yteZNMSvPoL6sGgiWC4
SCHEDULER_SECRET=fcfFZNWC3zyBmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5gD2MeexV3svLdy87qC6bX3bM2W6mZjRC


## В эту переменную должна быть вписана лицензия, полученная у компании ООО "Быстрые отчеты". Увы, без лицензии сервер отчётов работать не будет.
## Не используйте кавычки.

LICENSE=

## Строка подключения к FerretDB формируется автоматически на основе ранее определённых переменных. Тут лучше ничего не менять.

FERRET_ACCESS="mongodb://$FERRET_USER:$FERRET_PASS@$FERRET_HOST:27017/"
CONNECTION_STRING="$FERRET_ACCESS?authSource=$FERRET_DB&readPreference=primary&appname=MongoDB%20Compass&ssl=false&maxPoolSize=100&waitQueueMultiple=100"

Регистрация пространства имён сервера отчётов в кластере:

kubectl create namespace $NAMESPACE

Создание минимальной конфигурации сервера отчётов:

cat <<EOF | kubectl apply -n $NAMESPACE -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: fast-report-config
data:
  appsettings.Production.json: |
    {
      "Auth": {
        "UseOpenId": false,
        "UseLocal": true
      },

      "MainConfig": {
        "InternalHeaders": {
          "$WORKER_SECRET": "000000000000000000000001",
          "$DESIGNER_SECRET": "000000000000000000000002",
          "$GATEWAY_SECRET": "000000000000000000000003",
          "$SCHEDULER_SECRET": "000000000000000000000004"
        },
      "License": "$LICENSE",
        "Server": {
         "Title": "<Заголовок в приложении>",
         "Copyright": "<Краткое описание авторского права>",
         "LogoLink" : "<путь к логотипу, отображаемому в панели пользователя>",
         "LastSlaUpdate": "2022-11-28",
         "CorporateServerMode": false,
         "SlaLink": "<Ссылка на пользовательское соглашение>",
         "FirstStepsVideoLink": "https://rutube.ru/play/embed/f64e80d2fa8e2d73b30c47483fa2b59e",
         "AboutLink": "https://быстрыеотчеты.рф/products/corporate-server",
         "HomePageLink": "быстрыеотчеты.рф",
         "AuthServerName": "ID Быстрые отчеты",
         "UsersPerWorkSpace": 0,
         "PublicPathBase": ""
      },
        "Rabbit": {
          "Host": "$RABBITMQ_HOST",
          "Port": 5672,
          "UserName": "$RABBITMQ_USER",
          "Password": "$RABBITMQ_PASS"
        },
        "Database": {
          "ConnectionString": "$CONNECTION_STRING",
          "DatabaseName": "$MONGO_DB"
        }
      },
      "Gateway": {
        "BackendUrl": "http://fr-backend.$NAMESPACE:80",
        "InternalKey": "$GATEWAY_SECRET",
        "SignInPagePath": "/account/signin?r={0}",
        "MaxConcurrentRequests": 200,
        "RequestQueueLimit": 5000
      },
      "Serilog": {
       "MinimumLevel": {
          "Default": "Debug"
       }
      },
      "Services": {
        "Items": {
          "OnlineDesigner": {
            "Namespace": "$NAMESPACE"
          },
          "Backend": {
            "Namespace": "$NAMESPACE"
          },
          "FrontendApp": {
            "Namespace": "$NAMESPACE"
          },
          "Fonts": {
            "Namespace": "$NAMESPACE"
          },
          "StaticPreviewApp": {
            "K8sServiceName": "fr-s-preview",
            "Namespace": "$NAMESPACE",
            "HostType": "WebApp",
            "PathBase": "/staticpreview",
            "Type": "K8s",
            "PingPath": "/staticpreview/",
            "IsSignInRequired": false,
            "Priority": 21
          },
          "Default": {
            "Namespace": "$NAMESPACE"
          },
          "AdminApp": {
            "Namespace": "$NAMESPACE",
            "WhiteListClaims": {
              "cloud_service_access": "super_user"
            }
          }
        }
      },
      "Designer": {
        "BackendUrl": "http://fr-backend.$NAMESPACE:80",
        "InternalKey": "$DESIGNER_SECRET"
      },
      "WorkerCore": {
        "BackendUrl": "http://fr-backend.$NAMESPACE:80",
        "InternalKey": "$WORKER_SECRET"
      },
      "Scheduler": {
        "BackendUrl": "http://fr-backend.$NAMESPACE:80",
        "InternalKey": "$SCHEDULER_SECRET"
      }
    }
EOF

Используя FerretDB замените

"Database": {
  "ConnectionString": "$CONNECTION_STRING",
  "DatabaseName": "$MONGO_DB"
}

на

"Database": {
  "ConnectionString": "$CONNECTION_STRING",
  "DatabaseName": "$FERRET_DB"
}

Ключ PublicPathBase в секции Server задаёт публичный базовый путь (префикс URL), под которым развёрнут продукт, например /reports. По умолчанию пуст — продукт занимает корень домена. Подробнее см. Развёртывание под базовым путём (PathBase).

Обратите внимание, вышеприведённый фрагмент shell-скрипта содержит базовые настройки, проверенные разработчиками. При первоначальном разворачивании сервера отчётов рекомендуется использовать их, чтобы убедиться в работоспособности сервера. Перед изменением настроек сохраните эту версию, таким образом вы сэкономите значительно время при тонкой настройке сервера, используя параметры, описанные в секции admin_config.