Deploying ToolJet with Helm Chart
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.
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.
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:
| 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 |
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
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.
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 or send us an email at [email protected].