Version 2.0.0

This commit is contained in:
2026-01-14 12:34:00 +03:00
parent 93f7f1da98
commit 727b2210af
53 changed files with 2631 additions and 994 deletions

View File

@@ -1,12 +0,0 @@
dependencies:
- name: loop-enterprise-edition
repository: https://artifacts.wilix.dev/repository/helm-loop
version: 1.0.2
- name: postgres
repository: https://groundhog2k.github.io/helm-charts/
version: 1.5.12
- name: minio
repository: https://charts.min.io/
version: 5.4.0
digest: sha256:aa9830a9fe0325bfe8459044044d15679367390a06b5995d0d2c651ffe0bcc12
generated: "2025-11-28T11:42:14.203623767+03:00"

View File

@@ -3,8 +3,7 @@ appVersion: 9.11.1
dependencies:
- name: loop-enterprise-edition
repository: https://artifacts.wilix.dev/repository/helm-loop
version: 1.0.2
alias: loop-enterprise-edition
version: 2.0.0
- condition: postgresql.enabled
name: postgres
version: "1.5.12"
@@ -14,7 +13,6 @@ dependencies:
name: minio
version: "5.4.0"
repository: https://charts.min.io/
alias: minio
description: LOOP Enterprise server with high availability.
home: https://loop.ru
icon: https://artifacts.wilix.dev/repository/loop-files/assets/loop-icon.png

View File

@@ -1,15 +1,12 @@
Loop Enterprise Stack
====================================================
====================================================
## ⚠️ **Version 2.0.0 of the loop-enterprise-stack chart, removes Bitnami Postgresql and Minio Helm charts and Bitnami image dependencies. The old chart can still be used.
---
## ⚠️ **Version 2.0.0 of the loop-enterprise-editon chart, removes all Bitnami Helm chart and Bitnami image dependencies. The old chart can still be used, but Bitnami related charts and images must be provided by you. There is no direct migration path, so database and minio data backups need to be created, before deploying this chart.
---
## ⚠️ **This chart is not compatible with the previous loop chart and should not be used to upgrade the previous chart. All data can be lost**
## ⚠️ **This chart is not compatible with the previous loop chart 1.x.x and should not be used to upgrade the previous chart. All data can be lost. The migration procedure will provided in due course.**
## ⚠️ **The default values for minio and postgres are specified in the chart, they must be changed by you.
## ⚠️ **Этот chart несовместим с предыдущим loop chart, и не должн использоваться для обновления предыдущей версии loop chart. Все данные могут быть потеряны
## ⚠️ **Этот chart несовместим с предыдущим loop chart 1.x.x, и не должн использоваться для обновления предыдущей версии loop chart. Все данные могут быть потеряны
## ⚠️ **В chart указаны значения для minio и postgres по умолчанию, они должны быть изменены вами
---
@@ -342,4 +339,4 @@ $ helm upgrade -f config.yaml <your-release-name> loop/loop-enterprise-stack
## 3.1 Удаление Helm-чарта Loop Enterprise
Если вы завершили работу с loop и хотите удалить инстанс, выполните `helm delete <your-release-name>`. Если вы не знаете имя релиза, используйте `helm ls` для его поиска.
Если вы завершили работу с loop и хотите удалить инстанс, выполните `helm delete <your-release-name>`. Если вы не знаете имя релиза, используйте `helm ls` для его поиска.

View File

@@ -0,0 +1,9 @@
loop-enterprise-edition:
secrets:
secrets:
stringData:
MM_SQLSETTINGS_DATASOURCE: "postgres://loopuser:looppassword@loop-database.lpent2.svc.cluster.local:5432/loopdb?sslmode=disable" #Data source for connecting to the PostgreSQL database
#MM_SQLSETTINGS_DATASOURCEREPLICAS: ""
MM_FILESETTINGS_AMAZONS3ACCESSKEYID: "accesskey-minio" #Access Key ID to access s3 storage
MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY: "secretkey-minio" #The secret key for accessing S3 storage
MM_LICENSE: "" #ewogICJpZCI6ICIxNmpkdWtmaGlwOGU5cXQ5aWg4aTF0dXkzYSIsCiAgImlzc3VlZF9hdCI6IDE2ODcxMzI4MDAwMDAsCiAgInN0YXJ0c19hdCI6IDE2ODcxODMyMDAwMDAsCiAgImV4cGlyZXNfYXQiOiAxNjkyNDUzNjAwMDAwLAogICJjdXN0b21lciI6IHsKICAgICJpZCI6ICIxNmpkdWtmaGlwOGU5cXQ5aWg4aTF0dXkzYSIsCiAgICAibmFtZSI6ICJMT09QIiwKICAgICJlbWFpbCI6ICJzdXBwb3J0QGxvb3AucnUiLAogICAgImNvbXBhbnkiOiAiTk1MSyIsCiAgICAicGhvbmVfbnVtYmVyIjogbnVsbAogIH0sCiAgImZlYXR1cmVzIjogewogICAgInVzZXJzIjogMjAwLAogICAgImxkYXAiOiB0cnVlLAogICAgImxkYXBfZ3JvdXBzIjogdHJ1ZSwKICAgICJtZmEiOiBmYWxzZSwKICAgICJnb29nbGVfb2F1dGgiOiB0cnVlLAogICAgIm9mZmljZTM2NV9vYXV0aCI6IGZhbHNlLAogICAgIk9mZmljZTM2NU9BdXRoIjogZmFsc2UsCiAgICAib3BlbmlkIjogdHJ1ZSwKICAgICJjb21wbGlhbmNlIjogZmFsc2UsCiAgICAiY2x1c3RlciI6IGZhbHNlLAogICAgIm1ldHJpY3MiOiB0cnVlLAogICAgIm1ocG5zIjogdHJ1ZSwKICAgICJzYW1sIjogZmFsc2UsCiAgICAiZWxhc3RpY19zZWFyY2giOiB0cnVlLAogICAgImFubm91bmNlbWVudCI6IHRydWUsCiAgICAidGhlbWVfbWFuYWdlbWVudCI6IHRydWUsCiAgICAiZW1haWxfbm90aWZpY2F0aW9uX2NvbnRlbnRzIjogdHJ1ZSwKICAgICJkYXRhX3JldGVudGlvbiI6IHRydWUsCiAgICAibWVzc2FnZV9leHBvcnQiOiBmYWxzZSwKICAgICJjdXN0b21fcGVybWlzc2lvbnNfc2NoZW1lcyI6IHRydWUsCiAgICAiY3VzdG9tX3Rlcm1zX29mX3NlcnZpY2UiOiB0cnVlLAogICAgImd1ZXN0X2FjY291bnRzIjogdHJ1ZSwKICAgICJndWVzdF9hY2NvdW50c19wZXJtaXNzaW9ucyI6IHRydWUsCiAgICAiaWRfbG9hZGVkIjogdHJ1ZSwKICAgICJsb2NrX3RlYW1tYXRlX25hbWVfZGlzcGxheSI6IHRydWUsCiAgICAiZW50ZXJwcmlzZV9wbHVnaW5zIjogdHJ1ZSwKICAgICJhZHZhbmNlZF9sb2dnaW5nIjogdHJ1ZSwKICAgICJjbG91ZCI6IGZhbHNlLAogICAgInNoYXJlZF9jaGFubmVscyI6IGZhbHNlLAogICAgInJlbW90ZV9jbHVzdGVyX3NlcnZpY2UiOiBmYWxzZSwKICAgICJmdXR1cmVfZmVhdHVyZXMiOiB0cnVlCiAgfSwKICAic2t1X25hbWUiOiAiZW50ZXJwcmlzZSIsCiAgInNrdV9zaG9ydF9uYW1lIjogImVudGVycHJpc2UiCn0KLYbL8WZeGa81qrVkiAsSWg8j6

View File

@@ -1,215 +1,170 @@
global:
siteUrl: "http://loop.example.com" # REQUIRED SETTING, PLEASE UPDATE: "https://loop.example.com"
# Use an existing secret for License credential (see secret-loop-license.yaml for required fields)
existingLicenseSecret: {}
# name: ""
# key: ""
# REQUIRED SETTING, if no existing secret is provided.
loopLicense: ""
# Settings for configuration of LOOP
# For more details: https://docs.loop.ru/administration/config-settings
siteName: ""
enableTeamCreation: true
enableUserCreation: true
enableOpenServer: true
enableLinkPreviews: true
enableCustomEmoji: true
# Settings to enable email notifications
sendEmailNotifications: false
requireEmailVerification: false
feedbackName: ""
feedbackEmail: ""
feedbackOrganization: ""
smtpUsername: ""
smtpPassword: ""
smtpServer: ""
smtpPort: ""
connectionSecurity: "" # empty, TLS, or STARTTLS
features:
database:
external:
driver: "postgres"
dataSource: "loopuser:looppassword@loop-database.loop-onprem.svc.cluster.local:5432/loopdb?sslmode=disable" # <username>:<password>@@loop-database.<namespace>.svc.cluster.local:5432/<dbname>?connect_timeout=10&sslmode=disable
existingDatabaseSecret: {}
jobserver:
name: jobserver
enabled: true
replicaCount: 1
strategy:
type: Recreate
rollingUpdate: null
revisionHistoryLimit: 2
service:
name: loop-app-jobserver
type: ClusterIP
nodeSelector: {}
affinity: {}
tolerations: []
extraEnv: {}
notifications:
# Push proxy must be configured or useHPNS must be true for push noticiations to work.
push:
enabled: true
useHPNS: true
initContainerImage:
repository: appropriate/curl
tag: latest
imagePullPolicy: IfNotPresent
# LOOP deployment section.
# Use to configure the deploymento the LOOP servers.
loop-enterprise-edition:
loopApp:
replicaCount: 1
image:
repository: registry.loop.ru/loop/server
tag: "2025-11-20-1"
pullPolicy: IfNotPresent
image:
registry: registry.loop.ru
repository: loop/server
tag: 2025-06-10-1
pullPolicy: IfNotPresent
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
revisionHistoryLimit: 2
name: loop-server
service:
name: loop-app
type: ClusterIP
externalPort: 8065
internalPort: 8065
metricsPort: 8067
clusterPort: 8075
gossipPort: 8074
metricsName: loop-app-metrics
appKind: Deployment
ingress:
# Used to create Ingress record (should be used with service.type: ClusterIP).
enabled: true
hosts:
- loop.example.com
tls:
# Secrets must be manually created in the namespace.
# - secretName: chart-example-tls
# hosts:
# - loop.example.com
annotations: {}
ingressClassName: nginx
containerPorts:
- name: api
containerPort: 8065
protocol: TCP
- name: metrics
containerPort: 8067
protocol: TCP
- name: cluster
containerPort: 8075
protocol: TCP
- name: gossip
containerPort: 8074
protocol: TCP
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 1
targetMemoryUtilizationPercentage: 50
targetCPUUtilizationPercentage: 50
service:
type: ClusterIP
port: 8065
targetPort: api
nodeSelector: {}
annotations: {}
labels: {}
affinity: {}
ports:
#- name: api
# port: 8065
# targetPort: api
- name: metrics
port: 8067
targetPort: metrics
tolerations: []
updateStrategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 0
maxUnavailable: 1
resources: {}
# limits:
# cpu: 100m
# memory: 300Mi
# requests:
# cpu: 100m
# memory: 300Mi
ingress:
enabled: true
certManager: false
apiVersion:
ingressClassName: traefik
hostname: loop.modo.local
path: /
pathType: ImplementationSpecific
annotations: {}
extraInitContainers: []
tls: false
resources: {}
## resources:
## limits:
## cpu: 100m
## memory: 128Mi
## requests:
## cpu: 100m
## memory: 128Mi
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 10
# targetCPU: 50
# targetMemory: 50
envFrom:
- configMapRef:
name: '{{ template "app.fullname" . }}-configs'
- secretRef:
name: '{{ template "app.fullname" . }}-secrets'
checksums:
- secrets.yaml
- configmaps.yaml
livenessProbe:
enabled: true
initialDelaySeconds: 90
periodSeconds: 15
timeoutSeconds: 5
failureThreshold: 6
successThreshold: 1
httpGet:
path: /api/v4/system/ping
port: 8065
readinessProbe:
enabled: true
initialDelaySeconds: 15
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 6
successThreshold: 1
httpGet:
path: /api/v4/system/ping
port: 8065
configMaps:
configs:
data:
MM_EMAILSETTINGS_PUSHNOTIFICATIONSERVER: "https://push.loop.ru" #Этот параметр указывает сервер, который отправляет push-уведомления
MM_EMAILSETTINGS_SENDPUSHNOTIFICATIONS: "true" # Включить email-уведомления
MM_EXPERIMENTALSETTINGS_ENABLEAPPBAR: "true" #Этот параметр указывает, включена ли панель приложения
MM_FEATUREFLAGS_AppsEnabled: "true" #Указывает на доступность и возможность использования определенных приложений или функций, например, доступ к галерее для загрузки изображений
MM_FILESETTINGS_AMAZONS3BUCKET: "looponprem-bucket" #Имя корзины S3, где хранятся файлы
MM_FILESETTINGS_AMAZONS3ENDPOINT: "loop-minio:9000" #URL конечной точки хранилища S3
MM_FILESETTINGS_AMAZONS3PATHPREFIX: "loop" #Эта опция позволяет указать путь к файлам на S3
MM_FILESETTINGS_AMAZONS3SSE: "false" #Параметр указывает, включено ли шифрование на стороне сервера (SSL) для S3
MM_FILESETTINGS_AMAZONS3SSL: "false" #Параметр указывает, должно ли подключение к Amazon S3 осуществляться через SSL
MM_FILESETTINGS_DRIVERNAME: "amazons3" #Имя драйвера для работы с файлами
MM_FILESETTINGS_MAXFILESIZE: "1048576000" #Максимальный размер файла для загрузки, указан в байтах
MM_JOBSETTINGS_RUNJOBS: "false" #Указывает, должны ли выполняться задания
MM_JOBSETTINGS_RUNSCHEDULER: "false" #Флаг указывает, должен ли быть запущен планировщик задач
MM_LOGSETTINGS_CONSOLEJSON: "false" #Флаг указывает, должен ли вывод в консоль быть в формате JSON
MM_LOGSETTINGS_CONSOLELEVEL: "DEBUG" #Уровень логирования для вывода в консоль
MM_LOGSETTINGS_FILELEVEL: "DEBUG" #Уровень логирования для записи в файл
MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS: "true" #Флаг указывает, разрешена ли автоматическая загрузка предустановленных плагинов
MM_PLUGINSETTINGS_ENABLEUPLOADS: "true" #Флаг указывает, разрешена ли загрузка плагинов
MM_SERVICEENVIRONMENT: "production" #Среда, в которой работает приложение (например, "production")
MM_SERVICESETTINGS_ENABLEBOTACCOUNTCREATION: "true" #Флаг указывает, разрешено ли создание аккаунтов ботов
MM_SERVICESETTINGS_ENABLETEAMCREATION: "true" # Разрешить создание команд
MM_SERVICESETTINGS_ENABLEUSERCREATION: "true" # Разрешить создание пользователей
MM_SERVICESETTINGS_ENABLEOPENSERVER: "true" # Открытый доступ к серверу
MM_SERVICESETTINGS_ENABLECUSTOMEMOJI: "true" # Поддержка пользовательских эмодзи
MM_SERVICESETTINGS_ENABLELINKPREVIEWS: "true" # Предпросмотр ссылок
MM_SERVICESETTINGS_ENABLEOAUTHSERVICEPROVIDER: "true" #Используется для определения, разрешено ли использование сторонних провайдеров OAuth-сервисов
MM_SERVICESETTINGS_ENABLETESTING: "true" #Флаг указывает, разрешены ли тесты
MM_SERVICESETTINGS_ENABLEUSERACCESSTOKENS: "true" #Флаг указывает, разрешены ли токены доступа пользователей
MM_SERVICESETTINGS_GIPHYSDKKEY: "<GiphySDKkey>" #Ключ Giphy SDK для интеграции с Giphy
MM_SERVICESETTINGS_LISTENADDRESS: ":8065" #Адрес и порт, на котором служба прослушивает
MM_SERVICESETTINGS_SITEURL: "https://loop.modo.local" #Публичный URL службы
MM_SQLSETTINGS_DRIVERNAME: "postgres" #Имя драйвера базы данных
MM_TEAMSETTINGS_MAXUSERSPERTEAM: "500" #Максимальное количество пользователей в команде
MM_EMAILSETTINGS_REQUIREMAILVERIFICATION: "true" # Требовать подтверждение email
MM_EMAILSETTINGS_FEEDBACKEMAIL: "" # Email-адрес для сбора отзывов и обратной связи от пользователей
MM_EMAILSETTINGS_FEEDBACKNAME: "" # Имя отправителя, которое будет отображаться в письмах с отзывами
MM_EMAILSETTINGS_FEEDBACKORGANIZATION: "" # Название организации/компании, от имени которой отправляются письма с отзывами
MM_EMAILSETTINGS_SMTPUSERNAME: "" # SMTP логин
MM_EMAILSETTINGS_CONNECTIONSECURITY: "" # тип подключения: пусто, TLS или STARTTLS
MM_EMAILSETTINGS_SMTPPASSWORD: "" # SMTP пароль для аутентификации
MM_EMAILSETTINGS_ENABLESMTPAUTH: "" # Включить SMTP-аутентификацию (true/false)
MM_EMAILSETTINGS_SMTPPORT: "" # SMTP порт для подключения (например, 25, 465, 587)
MM_EMAILSETTINGS_REPLYTOADDRESS: "" # Адрес для ответа (куда будут приходить ответы на письма)
MM_EMAILSETTINGS_SMTPSERVER: "" # SMTP сервер для отправки писем (например, smtp.gmail.com)
## The following environment variables are required to use Elasticsearch for searching in loop.
# MM_ELASTICSEARCHSETTINGS_CONNECTIONURL: ""
# MM_ELASTICSEARCHSETTINGS_ENABLEINDEXING: "false"
# MM_ELASTICSEARCHSETTINGS_ENABLESEARCHING: "false"
# Add additional volumes and mounts, for example to add SAML keys in the app or other files the app server may need to access
extraVolumes: []
# - hostPath:
# path: /var/log
# name: varlog
extraVolumeMounts: []
# - name: varlog
# mountPath: /host/var/log
# readOnly: true
## Allows the specification of additional environment variables for LOOP
extraEnv:
- name: MM_ELASTICSEARCHSETTINGS_USERNAME
value: "" # Username Elasticsearch
- name: MM_ELASTICSEARCHSETTINGS_PASSWORD
value: "" # Password Elasticsearch
- name: MM_ELASTICSEARCHSETTINGS_CONNECTIONURL
value: "" # Elasticsearch URL
- name: MM_ELASTICSEARCHSETTINGS_ENABLEINDEXING
value: "false" # Use Elasticsearch indexing
- name: MM_ELASTICSEARCHSETTINGS_ENABLESEARCHING
value: "false" # Use Elasticsearch for searching
- name: MM_FILESETTINGS_AMAZONS3SSE
value: "false" #Env indicates whether SSL (Server-Side Encryption) is enabled for S3
- name: MM_FILESETTINGS_AMAZONS3SSL
value: "false" #Env indicates whether the connection to Amazon S3 should take place over SSL
- name: MM_FILESETTINGS_DRIVERNAME
value: "amazons3" #The name of the driver for working with files
- name: MM_FILESETTINGS_AMAZONS3ACCESSKEYID
value: "accesskey-minio" # S3 access key
- name: MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY
value: "secretkey-minio" # S3 secretaccess key
- name: MM_FILESETTINGS_AMAZONS3BUCKET
value: "loop-bucket" # S3 bucket name
- name: MM_FILESETTINGS_AMAZONS3ENDPOINT
value: "loop-minio:9000" # S3 endpoint url
- name: MM_FILESETTINGS_MAXFILESIZE
value: "1048576000" #The maximum file size to download, specified in bytes.
- name: MM_LOGSETTINGS_CONSOLEJSON
value: "false" #The flag indicates whether the output to the console should be in JSON format
- name: MM_LOGSETTINGS_CONSOLELEVEL
value: "DEBUG" #Logging level for console output
- name: MM_LOGSETTINGS_FILELEVEL
value: "DEBUG" #The logging level for writing to a file
- name: MM_PLUGINSETTINGS_AUTOMATICPREPACKAGEDPLUGINS
value: "true" #The flag indicates whether automatic loading of pre-packaged plugins is allowed
- name: MM_PLUGINSETTINGS_ENABLEUPLOADS
value: "true" #The flag indicates whether plugin downloads are allowed
- name: MM_SERVICEENVIRONMENT
value: "production" #The environment in which the application is running (for example, "production")
- name: MM_SERVICESETTINGS_ENABLEBOTACCOUNTCREATION
value: "true" #The flag indicates whether the creation of bot accounts is allowed
- name: MM_SERVICESETTINGS_ENABLEOAUTHSERVICEPROVIDER
value: "true" #It is used to determine whether the use of third-party OAuth service providers is allowed
- name: MM_SERVICESETTINGS_ENABLETESTING
value: "true" #The flag indicates whether testing is allowed
- name: MM_SERVICESETTINGS_ENABLEUSERACCESSTOKENS
value: "true" #The flag indicates whether user access tokens are allowed
- name: MM_SERVICESETTINGS_GIPHYSDKKEY
value: "" #Giphy SDK key for integration with Giphy
- name: MM_SQLSETTINGS_DATASOURCE
value: "postgres://loopuser:looppassword@loop-database.loop-onprem.svc.cluster.local:5432/loopdb?sslmode=disable"
- name: MM_SQLSETTINGS_DATASOURCEREPLICAS
value: "postgres://loopuser:looppassword@loop-database-1.loop-onprem.svc.cluster.local:5432/loopdb?sslmode=disable"
- name: MM_SQLSETTINGS_MAXIDLECONNS
value: "10"
- name: MM_SQLSETTINGS_DISABLEDATABASESEARCH
value: "true"
- name: MM_SQLSETTINGS_MAXOPENCONNS
value: "80"
- name: MM_SQLSETTINGS_QUERYTIMEOUT
value: "300"
## The following environment variables are required to run loop in clustered mode.
# - name: MM_CLUSTERSETTINGS_ENABLE
# value: "true"
# - name: MM_CLUSTERSETTINGS_CLUSTERNAME
# value: "loop-example-cluster"
# - name: MM_CLUSTERSETTINGS_ENABLEEXPERIMENTALGOSSIPENCRYPTION
# value: "true"
# - name: MM_CLUSTERSETTINGS_ENABLEGOSSIPCOMPRESSION
# value: "false"
# - name: MM_CLUSTERSETTINGS_READONLYCONFIG
# value: "false"
## Additional pod annotations
extraPodAnnotations: {}
# MM_CLUSTERSETTINGS_ENABLE: "true"
# MM_CLUSTERSETTINGS_CLUSTERNAME: "loop-example-cluster"
# MM_CLUSTERSETTINGS_ENABLEEXPERIMENTALGOSSIPENCRYPTION: "true"
# MM_CLUSTERSETTINGS_ENABLEGOSSIPCOMPRESSION: "false"
# MM_CLUSTERSETTINGS_READONLYCONFIG: "false"
# Postgresql Section. Use this to configure postgresql.
# If you want to use an external database, disable this.
@@ -233,7 +188,7 @@ postgresql:
storage:
requestedSize: 5Gi
className: ""
className: "microk8s-hostpath"
resources:
limits:
@@ -268,13 +223,8 @@ minio:
persistence:
enabled: true
storageClass: ""
size: 10Gi
storageClass: "microk8s-hostpath"
size: 1Gi
mcJob:
enabled: true
serviceAccount:
create: false
name:
annotations: {}