--- id: helm title: Helm --- # Deploying ToolJet with Helm Chart This repository contains Helm charts for deploying [ToolJet](https://github.com/ToolJet/helm-charts) on a Kubernetes Cluster using Helm v3. The charts include an integrated PostgreSQL server that is enabled by default. However, you have the option to disable it and configure a different PostgreSQL server by updating the `values.yml` file. ## Installation ### From Helm repo ```bash helm repo add tooljet https://github.com/ToolJet/helm-charts.git helm install tooljet tooljet/tooljet ``` ### From the Source 1. Clone the repository and navigate to this directory 2. Run `helm dependency update` 3. It is recommended but optional to modify the values in the `values.yaml` file, such as usernames, passwords, persistence settings, etc. 4. Run `helm install -n $NAMESPACE --create-namespace $RELEASE .` Remember to replace the variables with your specific configuration values. :::warning To use ToolJet AI features in your deployment, make sure to whitelist `https://api-gateway.tooljet.ai` and `https://python-server.tooljet.ai` in your network settings. ::: ## ToolJet Database ToolJet offers a hosted database solution that allows you to build applications quickly and manage your data effortlessly. The ToolJet database requires no setup and provides a user-friendly interface for data management. For more information about the ToolJet database, you can visit [here](/docs/tooljet-db/tooljet-database). ## Redis Configuration For a multi-service or multi-pod setup, it is recommended to use an external Redis instance. **Default Behavior:** - Redis is included in the Helm chart but **disabled by default**. **When to Enable Redis?** - If **ReplicaSet > 1**, Redis **must be enabled** inside `values.yaml` for session management. Enabling or Disabling Redis in `values.yaml` To **enable Redis**, modify the following section in `values.yaml`: ```yaml redis: enabled: true # Set to true if ReplicaSet > 1 fullnameOverride: redis auth: enabled: true password: "tooljet" master: service: port: 6379 ``` **Using an External Redis Instance:** - To configure an external Redis, update the `values.yaml` with the following variables: ```yaml REDIS_HOST= REDIS_PORT= REDIS_USER= REDIS_PASSWORD= ``` ## Workflows ToolJet Workflows allows users to design and execute complex, data-centric automations using a visual, node-based interface. This feature enhances ToolJet's functionality beyond building secure internal tools, enabling developers to automate complex business processes. :::info For users migrating from Temporal-based workflows, please refer to the [Workflow Migration Guide](/docs/setup/workflow-temporal-to-bullmq-migration). ::: ### Enabling Workflow Scheduling To enable workflow scheduling in your Helm deployment, you need to configure the following environment variables: | Variable | Description | Default | |----------|-------------|---------| | **WORKER** | Enable job processing for workflows. Set to `true` to process workflow jobs | `true` | | **TOOLJET_WORKFLOW_CONCURRENCY** | Maximum number of concurrent workflows that can be executed | `10` | :::warning **External Redis for Multiple Workflow Workers**: When running multiple workers for workflows, an external stateful Redis instance is recommended for better performance and reliability. The built-in Redis is suitable for single-worker workflow setups. ::: ### Configuring Multiple Workers with External Redis
Helm values.yaml Configuration for Multiple Workers The ToolJet Helm chart includes a dedicated worker deployment template (**worker.yml**) that can be used to run multiple workflow workers. Here's how to configure it: **Step 1: Enable Redis in values.yaml** ```yaml redis: enabled: true # Enable Redis for multiple workers architecture: standalone fullnameOverride: redis auth: enabled: true password: "your-secure-password" master: service: port: 6379 persistence: enabled: true size: 8Gi ``` **Step 2: Configure Redis Connection** ```yaml redis_pod: REDIS_HOST: "redis-master" # Redis service name REDIS_PORT: "6379" REDIS_USER: "default" ``` **Step 3: Add Workflow Environment Variables** Add these to the `env:` section in values.yaml: ```yaml env: TOOLJET_HOST: "https://your-tooljet-domain.com" DEPLOYMENT_PLATFORM: "k8s:helm" TOOLJET_WORKFLOW_CONCURRENCY: "10" # ... other environment variables ``` **Step 4: Configure Worker Settings** ```yaml workflow_env: WORKER: "true" # Already set by default apps: tooljet: replicaCount: 1 # Main application server ``` **Step 5: Install or Upgrade with Helm** ```bash helm upgrade --install tooljet tooljet/tooljet -f values.yaml ``` ### Architecture The Helm chart deploys: - **Main ToolJet deployment** (`deployment.yaml`): Web server with `WORKER=true`, handles HTTP requests and processes workflow jobs - **Worker deployment** (`worker.yml`): Additional dedicated workers with `WORKER=true`, scale independently for more processing capacity - **External Redis**: Stateful service for job queue and persistence ### Redis Configuration Requirements **Critical**: Redis must be configured with: - **AOF (Append Only File)** persistence enabled - **maxmemory-policy** set to `noeviction` To configure these settings, you can use Redis configuration: ```yaml redis: enabled: true master: persistence: enabled: true extraFlags: - --appendonly yes - --maxmemory-policy noeviction ``` ### Redis Environment Variables (Optional) If you need to configure additional Redis settings, you can add these to the `env:` section: ```yaml env: REDIS_HOST: "redis-master" # Default: redis-master REDIS_PORT: "6379" # Default: 6379 REDIS_USERNAME: "" # Optional: Redis username (ACL) REDIS_PASSWORD: "" # Optional: Set via secret REDIS_DB: "0" # Optional: Redis database number REDIS_TLS: "false" # Optional: Enable TLS/SSL ``` **Note:** Only `REDIS_HOST` and `REDIS_PORT` are required. Authentication and TLS are optional based on your Redis setup.
## Upgrading to the Latest LTS Version New LTS versions are released every 3-5 months with an end-of-life of atleast 18 months. To check the latest LTS version, visit the [ToolJet Docker Hub](https://hub.docker.com/r/tooljet/tooljet/tags) page. The LTS tags follow a naming convention with the prefix `LTS-` followed by the version number, for example `tooljet/tooljet:ee-lts-latest`. If this is a new installation of the application, you may start directly with the latest version. This guide is not required for new installations. #### Prerequisites for Upgrading to the Latest LTS Version: - It is crucial to perform a **comprehensive backup of your database** before starting the upgrade process to prevent data loss. - Users on versions earlier than **v2.23.0-ee2.10.2** must first upgrade to this version before proceeding to the LTS version. _If you have any questions feel free to join our [Slack Community](https://join.slack.com/t/tooljet/shared_invite/zt-2rk4w42t0-ZV_KJcWU9VL1BBEjnSHLCA) or send us an email at support@tooljet.com._