Deploying ToolJet with Helm Chart
You should setup a PostgreSQL database manually to be used by ToolJet. You can find the system requirements here.
ToolJet runs with built-in Redis for multiplayer editing and background jobs. When running separate worker containers or multi-pod setup, an external Redis instance is required for job queue coordination.
To use ToolJet AI features in your deployment, make sure to whitelist https://api-gateway.tooljet.com and https://python-server.tooljet.com in your network settings.
This repository contains Helm charts for deploying ToolJet 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
helm repo add tooljet https://github.com/ToolJet/helm-charts.git
helm install tooljet tooljet/tooljet
From the Source
- Clone the repository and navigate to this directory
- Run
helm dependency update - It is recommended but optional to modify the values in the
values.yamlfile, such as usernames, passwords, persistence settings, etc. - Run
helm install -n $NAMESPACE --create-namespace $RELEASE .
Remember to replace the variables with your specific configuration values.
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.
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.yamlfor session management.
Enabling or Disabling Redis in values.yaml
To enable Redis, modify the following section in values.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.yamlwith the following variables:REDIS_HOST=<external_redis_host>
REDIS_PORT=<external_redis_port>
REDIS_USER=<external_redis_user>
REDIS_PASSWORD=<external_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.
For users migrating from Temporal-based workflows, please refer to the Workflow Migration Guide.
Enabling Workflow Scheduling
To enable workflow scheduling in your Helm deployment, you need to configure the following environment variables:
env:
WORKER: "true"
TOOLJET_WORKFLOW_CONCURRENCY: "10"
Environment Variable Details:
- WORKER (default:
true): Enable job processing for workflows. Set totrueto process workflow jobs - TOOLJET_WORKFLOW_CONCURRENCY (default:
10): Maximum number of concurrent workflows that can be executed
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
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
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:
env:
TOOLJET_HOST: "https://your-tooljet-domain.com"
DEPLOYMENT_PLATFORM: "k8s:helm"
TOOLJET_WORKFLOW_CONCURRENCY: "10"
# ... other environment variables
Step 4: Configure Worker Settings
workflow_env:
WORKER: "true" # Already set by default
apps:
tooljet:
replicaCount: 1 # Main application server
Step 5: Install or Upgrade with Helm
helm upgrade --install tooljet tooljet/tooljet -f values.yaml
Architecture
The Helm chart deploys:
- Main ToolJet deployment (
deployment.yaml): Web server withWORKER=true, handles HTTP requests and processes workflow jobs - Worker deployment (
worker.yml): Additional dedicated workers withWORKER=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:
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:
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
If this is a new installation of the application, you may start directly with the latest version. This upgrade guide is only for existing installations.
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 page. The LTS tags follow a naming convention with the prefix LTS- followed by the version number, for example tooljet/tooljet:ee-lts-latest.
Prerequisites for Upgrading
Before starting the upgrade process, perform a comprehensive backup of your PostgreSQL instance to prevent data loss. Your backup must include both required databases:
- PG_DB (Application Database) - Contains users, apps, and configurations
- TOOLJET_DB (Internal Database) - Contains ToolJet Database feature data
Ensure both databases are included in your backup before proceeding with the upgrade.
- Users on versions earlier than v2.23.0-ee2.10.2 must first upgrade to this version before proceeding to the latest LTS version.
- ToolJet 3.0+ Requirement: Deploying ToolJet Database is mandatory from ToolJet 3.0 onwards. For information about breaking changes, see the ToolJet 3.0 Migration Guide.
Need Help?
- Reach out via our Slack Community
- Or email us at [email protected]
- Found a bug? Please report it via GitHub Issues