loop-onprem-charts/loop-enterprise-edition
..
2025-07-22 09:25:50 +03:00
2025-07-22 09:25:50 +03:00
2025-07-22 09:25:50 +03:00
2025-07-22 09:25:50 +03:00
2025-07-22 09:25:50 +03:00

Loop Enterprise Edition Helm Chart

This is the Helm chart for the Loop Enterprise Edition. It is subject to changes. To learn more about Helm charts, see the Helm docs.

1. Prerequisites

1.1 Kubernetes Cluster

You need a running Kubernetes cluster v1.8+. If you do not have one, find options and installation instructions here:

https://kubernetes.io/docs/setup/pick-right-solution/

1.2 Helm

See: https://docs.helm.sh/using_helm/#quickstart

We recommend installing Helm v2.13.1 or later.

Once Helm is installed and initialized, run the following:

helm repo add loop https://artifacts.wilix.dev/repository/helm-loop 
helm repo add incubator https://charts.helm.sh/incubator

1.3 Ingress

To expose the application outside of your network, configure an ingress if your Kubernetes cluster doesn't already have one.

We suggest using nginx-ingress, which we use internally at Loop.

To install nginx-ingress in your Kubernetes cluster, follow the official installation documentation. You may also use the helm charts directly.

To get the nginx cache to work, adjust the ConfigMap and Deployment from the above instructions.

1.4 Certificate Manager

If you do not want to manually add SSL/TLS certificates, install cert-manager. You can follow this documentation or install the helm charts.

To run with HTTPS you will need to add a Kubernetes secret for your SSL/TLS certificate, whether you use cert-manager or not.

1.5 Database

A Postgresql server and database is required for this chart. The loop-enterpise-stack chart provides and all-in-one solution.

1.6 Object Storage

A Minio server or ay S3 compatible object storage is required for this chart. The loop-enterpise-stack chart provides and all-in-one solution.

2. Configuration

2.1 Required Settings

At minimum the following settings must be updated:

  • global.siteURL - set this to the URL your users will use to access Loop, e.g. https://loop.example.com
  • global.loopLicense - set this to the contents of your license file or provide an existing secret. global.existingLicenseSecret.name global.existingLicenseSecret.key
  • 2.4.1 Database Configuration
  • 2.6.1 Object Storage Configuration

Without these settings, Loop will not run correctly.

2.2 Application Version

To set the Loop application version, update:

  • loopApp.image.tag - set this to the Loop server version you wish to install (e.g. 7.10.2)

2.3 Ingress

If you are using nginx-ingress, set the following under loopApp:

ingress:
  enabled: true
  hosts:
    - loop.example.com

where loop.example.com is your domain name and matches global.siteURL.

2.3.1 HTTPS

To run with HTTPS, add an SSL/TLS certificate as a secret to your Kubernetes cluster, either manually or using cert-manager.

Set the following under loopApp to enable HTTPS:

ingress:
  enabled: true
  hosts:
    - loop.example.com
  tls:
    - secretName: your-tls-secret-name
      hosts:
        - loop.example.com

2.3.2 DNS

To route users from your domain name to your Loop installation, point your domain name at the external IP or domain that your ingress exposes.

Depending on the DNS service and Ingress you're using, the steps can vary. If you are using nginx-ingress, you would do something like this:

  1. Run kubectl describe svc your-nginx-ingress-controller
    • Replace your-nginx-ingress-controller with the name of your ingress controller service
  2. Copy the domain name beside LoadBalancer Ingress:
  3. On your DNS service, create a CNAME record pointing from the domain you'd like to use to the domain name you just copied
  4. Save, and wait 10-15 minutes for the DNS change to propagate

2.4 Database

For database configuration, use an external database not managed by the Loop Helm chart.

2.4.1 Database Configuration

  • Set global.features.database.external.driver to postgres
  • Set global.features.database.external.dataSource to your master DB connection string
  • (Optional) Set global.features.database.external.dataSourceReplicas to an array of read replica connection strings
  • (Optional) use an external provided secret. global.features.database.external.existingDatabaseSecret.name global.features.database.external.existingDatabaseSecret.key.

2.5 Push Notifications

By default push notifications are enabled using HPNS.

2.5.1

Settings for pushproxy

2.6 Object Storage

S3 or any S3 compatible object storage like minio.

2.6.1 Object Storage Configuration

    • name: MM_FILESETTINGS_AMAZONS3ACCESSKEYID value: "" # Access key для S3
    • name: MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY value: "" # Secret key для S3
    • name: MM_FILESETTINGS_AMAZONS3BUCKET value: "" # Название бакета S3
    • name: MM_FILESETTINGS_AMAZONS3ENDPOINT value: "" # Endpoint для доступа к S3

3. Install

After adding the Loop repo (see section 1.2) you can install a version of the preferred chart by running:

$ helm repo add loop https://artifacts.wilix.dev/repository/helm-loop 
$ helm install <name> loop/loop-enterprise-edition --version <version_number>

For example:

$ helm repo add loop https://artifacts.wilix.dev/repository/helm-loop
$ helm install <name> loop/loop-enterprise-edition --version v0.8.2

If no Helm Chart version is specified the latest version will be installed.

To run with your custom config.yaml, install using:

$ helm install -f config.yaml loop/loop-enterprise-edition

To upgrade an existing release, modify the config.yaml with your desired changes and then use:

$ helm upgrade -f config.yaml <your-release-name> loop/loop-enterprise-edition

3.1 Uninstalling Loop Enterprise Helm Chart

If you are done with your deployment and want to delete it, use helm delete <your-release-name>. If you don't know the name of your release, use helm ls to find it.

4. Upgrading to Loop Chart Version 1.0.0

This chart version uses the configuration in the database and environment variables for non-changing configuration.

To upgrade from a previous chart version to 1.0.0 you need to follow theses steps before applying the new chart:

  • Get the existing configuration from your Loop instance. For that you can use the CLI command. You need to connect to the running pod and run the Loop CLI to get the existing config
$ kubectl exec -it -n <YOUR_loop_NAMESPACE> <loop_APP_POD> -- /bin/sh

in the pod:
$ ./bin/loop config show --json
  • Save this config in your local file system
  • Perform the Helm Chart upgrade
  • Copy the config you saved before to the new pod
  • Perform the config migration
$ ./bin/loop config migrate <CONFIG_THAT_YOU_COPY_TO_THE_POD.json> $MM_CONFIG
...
{"level":"info","msg":"Successfully migrated config."}
  • Kill the pods to apply the configs

[RU Русская версия]

Helm-чарт Loop Enterprise Edition

Это Helm-чарт для Loop Enterprise Edition. Структура чарта может изменяться. Подробнее о Helm-чартах см. в официальной документации Helm.

1. Предварительные требования

1.1 Кластер Kubernetes

Требуется работающий кластер Kubernetes версии 1.8 или выше. Если кластер отсутствует, варианты развёртывания и инструкции доступны здесь:

https://kubernetes.io/ru/docs/setup/production-environment/

1.2 Установка Helm

Официальная инструкция: Quickstart Guide

Рекомендуемая версия Helm: v3.8.0 или новее (актуально на момент написания).

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

helm repo add loop https://artifacts.wilix.dev/repository/helm-loop 
helm repo add incubator https://charts.helm.sh/incubator

1.3 Настройка Ingress

Для внешнего доступа к приложению требуется контроллер Ingress.

Рекомендуемое решение: ingress-nginx.

Установка через Helm:

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace

Важно:

  • Для активации кеширования NGINX отредактируйте ConfigMap и Deployment контроллера.
  • Полная инструкция: Официальный гайд.

1.4 Управление TLS-сертификатами

Автоматизация: Используйте cert-manager для автоматической выдачи сертификатов (Let's Encrypt).

Установка через Helm:

helm upgrade --install cert-manager cert-manager \
  --repo https://charts.jetstack.io \
  --namespace cert-manager --create-namespace \
  --set installCRDs=true

Ручная настройка: Если cert-manager не используется, создайте Kubernetes Secret с вашим TLS-сертификатом:

kubectl create secret tls your-tls-secret --cert=path/to/cert.crt --key=path/to/cert.key

1.5 База данных

Для работы этого Helm-чарта требуется сервер и база данных PostgreSQL. Чарт loop-enterprise-stack предоставляет комплексное решение, включая базу данных.

1.6 Объектное хранилище

Для работы этого Helm-чарта требуется сервер MinIO или любое другое S3-совместимое объектное хранилище. Чарт loop-enterprise-stack также предоставляет объектное хранилище.

2. Конфигурация

2.1 Обязательные параметры

Минимально необходимые настройки:

  • global.siteURL — установите в адрес, по которому пользователи будут получать доступ к Loop, например: https://loop.example.com

  • global.loopLicense — укажите содержимое лицензионного файла или задайте существующий Kubernetes-секрет с ключом: global.existingLicenseSecret.name и global.existingLicenseSecret.key

  • Конфигурация базы данных (раздел 2.4.1) — необходимо настроить подключение к PostgreSQL. Это может быть внешний сервер или встроенный через Helm-чарт.

  • Конфигурация объектного хранилища (раздел 2.6.1) — нужно подключить MinIO или другое совместимое S3-хранилище.

Без этих параметров Loop не будет работать корректно — сервис не сможет ни загрузить данные, ни сохранить файлы.

2.2 Версия приложения

Укажите тег образа Loop:

loopApp:
  image:
    tag: "7.10.2"  # Например, 7.10.2

2.3 Настройка Ingress

2.3.1 Ingress с nginx ingress controller

Если вы используете nginx-ingress-controller, добавьте следующее в секцию loopApp:

ingress:
  enabled: true
  hosts:
    - loop.example.com

Здесь loop.example.com — это ваш домен, и он должен совпадать с global.siteURL (например, https://loop.example.com).

2.3.2 HTTPS (SSL/TLS)

Чтобы использовать HTTPS:

  1. Создайте TLS-секрет в Kubernetes вручную или с помощью cert-manager.
  2. Укажите его в values.yaml Helm-чарта:
ingress:
  enabled: true
  hosts:
    - loop.example.com
  tls:
    - secretName: your-tls-secret-name
      hosts:
        - loop.example.com

secretName — это имя созданного TLS-секрета с ключом и сертификатом (например, от Let's Encrypt или корпоративного CA).

2.3.3 DNS

Чтобы пользователи с вашего доменного имени могли получить доступ к Loop, сделайте запись в вашем DNS-сервисе на внешний IP-адрес или домен, который предоставляет ваш ingress.

В зависимости от используемого DNS-сервиса и Ingress-контроллера шаги могут отличаться. Если вы используете nginx-ingress, выполните следующее:

  • Выполните команду kubectl describe svc your-nginx-ingress-controller
  • Замените your-nginx-ingress-controller на имя сервиса вашего ingress-контроллера
  • Скопируйте доменное имя, указанное рядом с LoadBalancer Ingress
  • В вашем DNS-сервисе создайте CNAME-запись, указывающую с нужного доменного имени на только что скопированное доменное имя
  • Сохраните изменения и подождите 1015 минут, чтобы изменения DNS вступили в силу

2.4 Внешняя база данных

2.4.1 Конфигурация базы данных

Используйте внешнюю базу данных

Обязательные параметры:

  • global.features.database.external.driverустановите в "postgres" Это означает, что будет использоваться PostgreSQL как драйвер СУБД.

  • global.features.database.external.dataSourceукажите строку подключения к мастер-базе Пример строки подключения:

    postgres://username:password@hostname:5432/database_name?sslmode=require
    

Необязательные параметры:

  • global.features.database.external.dataSourceReplicas Список строк подключения к репликам БД (если они используются для масштабирования чтения).

  • global.features.database.external.existingDatabaseSecret.name global.features.database.external.existingDatabaseSecret.key Если вы не хотите хранить логины/пароли в открытом виде, можно использовать Kubernetes Secret, где будут зашиты данные подключения.

2.5 Push-уведомления

По умолчанию: Используется встроенная служба HPNS (High-Performance Notification Service).

2.6 Объектное хранилище

S3 или любое другое хранилище объектов, совместимое с S3, например minio.

2.6.1 Конфигурация объектного хранилища

  • name: MM_FILESETTINGS_AMAZONS3ACCESSKEYID value: "" # Access key для S3
  • name: MM_FILESETTINGS_AMAZONS3SECRETACCESSKEY value: "" # Secret key для S3
  • name: MM_FILESETTINGS_AMAZONS3BUCKET value: "" # Название бакета S3
  • name: MM_FILESETTINGS_AMAZONS3ENDPOINT value: "" # Endpoint для доступа к S3

3. Установка и управление

Установка последней версии:

helm upgrade --install loop-ee loop/loop-enterprise-edition \
  --namespace loop --create-namespace

Установка конкретной версии:

helm upgrade --install loop-ee loop/loop-enterprise-edition \
  --version 0.8.2 \
  --namespace loop --create-namespace

Применение конфигурации из файла:

helm upgrade --install loop-ee loop/loop-enterprise-edition \
  --namespace loop -f config.yaml

Обновление релиза:

helm upgrade loop-ee loop/loop-enterprise-edition \
  --namespace loop -f updated-config.yaml

Удаление:

helm uninstall loop-ee --namespace loop

4. Миграция на версию чарта 1.0.0+

Критические изменения:

  • Конфигурация теперь хранится в базе данных.
  • Настройки через переменные окружения устарели.

Шаги миграции:

  1. Экспорт текущей конфигурации:

    kubectl exec -n loop loop-app-pod -- ./bin/loop config export --json > loop-config.json
    
  2. Обновление чарта:

    helm upgrade loop-ee loop/loop-enterprise-edition --version 1.0.0
    
  3. Импорт конфигурации:

    kubectl cp loop-config.json loop/loop-app-pod:/tmp/config.json
    kubectl exec -n loop loop-app-pod -- ./bin/loop config migrate /tmp/config.json $MM_CONFIG
    
  4. Рестарт пода:

    kubectl rollout restart deployment/loop-app -n loop
    

Примечания:

  • Все команды предполагают, что namespace для Loop — loop. Замените при необходимости.
  • Для production-среды используйте отдельные секреты (не храните пароли в values.yaml).