Prerequisites
- Kubernetes cluster (v1.19+)
- Helm 3.x installed
- kubectl configured to access your cluster
helm install or helm upgrade talks to a cluster without Argo Rollouts, the chart deploys a StatefulSet; otherwise it deploys an Argo Rollout. A release that already runs as a Rollout stays one. Rendering without a cluster (helm template, Kustomize) produces a Rollout, so set workloadType: statefulset there, or pass the cluster’s API versions as Argo CD does. The StatefulSet volume uses the local-path storage class unless you set persistence.storageClassName.
Database and Redis
The chart reads PostgreSQL and Redis settings from the secrets listed underactivepiecesEnvVariables in values.yaml. Create them before installing:
Put the settings in env files, so passwords stay out of your shell history and process list. Run umask 077 first so only you can read them:
db.env
redis.env
postgresql.enabled: true / redis.enabled: true. The hosts are <release>-postgresql and <release>-redis-master.
AP_JWT_SECRET and AP_ENCRYPTION_KEY are generated on first install. To bring your own, put them in activepieces-auth-secrets; that secret takes precedence.
Quick Start
1. Clone the Repository
2. Install Dependencies
3. Create a Values File
Create amy-values.yaml file with your configuration. You can use the example values file as a reference.
The Helm chart has sensible defaults for required values while leaving the optional ones empty, but you should customize these core values for production.
Set the core settings in the activepieces-config-secrets secret the chart already reads. AP_EDITION and AP_EXECUTION_MODE let you activate a license key later:
AP_FRONTEND_URL is required, and it must also be reachable from inside the pod: the worker downloads pieces through it.
4. Install Activepieces
5. Verify Installation
Production Checklist
- Set
AP_FRONTEND_URLto your actual domain - Set strong passwords for PostgreSQL and Redis (or keep auto-generated)
- Configure proper ingress with TLS
- Set appropriate resource limits
- Configure persistent storage
- Choose appropriate execution mode for your security requirements
- Review environment variables for advanced configuration
- Consider using a separate workers setup for better availability and security
Upgrading
workloadType: rollout, add --force-conflicts to helm upgrade. Argo Rollouts owns the Service selectors, and Helm 4’s server-side apply stops on that conflict otherwise.
The bundled secret generator creates cluster-wide RBAC named after the release, so give each release in a cluster its own name. A second release can also set kubernetes-secret-generator.enabled: false, because the first release’s generator already serves every namespace.
Migrating from chart 0.3.x
Chart 0.4.0 replaced theactivepieces: block and keys such as postgresql.host and redis.host with the secrets listed under activepiecesEnvVariables. helm install and helm upgrade print a warning that names every old key they ignore. Run these steps before upgrading, with RELEASE set to your release name.
1. Keep your database. Chart 0.3.x ran PostgreSQL and Redis inside the cluster by default. If you used them, keep them enabled in your values:
activepiecesEnvVariables (for example AP_POSTGRES_URL or AP_REDIS_SENTINEL_HOSTS), add it to that list in your values.
2. Move your settings. Each activepieces.<name> value becomes an AP_* variable in the activepieces-config-secrets secret, for example frontendUrl → AP_FRONTEND_URL, edition → AP_EDITION and executionMode → AP_EXECUTION_MODE. Set persistence.storageClassName to a StorageClass your cluster has (kubectl get storageclass); chart 0.3.x used the cluster default, and persistence.storageClass is no longer read.
helm template, Argo CD or Kustomize, the chart cannot see them, so copy the ones your running app uses into activepieces-auth-secrets first:
image.tag to the version you run today, upgrade the chart, then move to a newer image in a separate step. The app now runs as a StatefulSet (or an Argo Rollout) instead of a Deployment, and its piece cache volume is recreated.
If you already upgraded with the old values and the new pod is stuck in Pending (for example storageclass "local-path" not found), Kubernetes will not let the chart change the volume. Delete the StatefulSet and its empty cache volume, then upgrade again. The pod never started, so nothing is lost:
Troubleshooting
Common Issues
- Pod won’t start: Check logs with
kubectl logs -l app.kubernetes.io/instance=activepieces,app.kubernetes.io/name=activepieces - Database connection: Verify PostgreSQL credentials and connectivity
- Frontend URL: Ensure
AP_FRONTEND_URLis accessible from external sources - Webhooks not working: Check ingress configuration and DNS resolution
Useful Commands
Environment Variables
For a complete list of configuration options, see the Environment Variables documentation. Most environment variables can be configured through the Helm values file, either as plain values underactivepiecesConfig or injected from your own secrets under activepiecesEnvVariables.