Prerequisites
Ensure you have the following before proceeding:- A running Kubernetes cluster (EKS, GKE, AKS, Minikube, etc.)
- An Ingress Controller (e.g., Traefik, Nginx)
- Helm installed on your local machine
- Production setup requires managed PostgreSQL and Redis services
Note: Redis is required for session handling when deploying multiple pods.
1. Installation Steps
1
Install with Default Configuration
Note: To specify specific version useBy default:--version
flag. E.g.,--version 1.0.0
. Starting from 3.5.0, the chart is available on the GitHub Container Registry (GHCR).
- PostgreSQL and Redis are deployed within the cluster.
- Secrets are dynamically generated and stored as Kubernetes Secrets.
2
Install with an Enterprise License
2. Configuring Secrets
Using Kubernetes Secrets (Default)
By default, secrets are stored as Kubernetes Secrets. The chart automatically generates random values for required secrets. Modifyvalues.yaml
:
Using External Secrets (AWS Secrets Manager, Vault, etc.)
To use an external secrets manager, enableexternalSecret
in values.yaml
:
3. Configuring PostgreSQL and Redis
Using Managed PostgreSQL and Redis
For production, we recommend using managed database and cache services. Modifyvalues.yaml
:
Using In-Cluster PostgreSQL and Redis (Default)
By default, PostgreSQL and Redis are deployed inside the cluster. To ensure in-cluster deployment, use:4. Upgrading the Deployment
To apply changes:Scaling Resources
Enabling Autoscaling
5. Key Configuration Values
Field | Description | Default Value |
---|---|---|
deployment.replicas | Number of application replicas | 1 |
deployment.image.repository | Docker image repository | "ghcr.io/formbricks/formbricks" |
deployment.image.tag | Docker image tag | "latest" |
autoscaling.enabled | Enable autoscaling | false |
postgresql.enabled | Deploy PostgreSQL in cluster | true |
postgresql.externalDatabaseUrl | External PostgreSQL URL | "" |
redis.enabled | Deploy Redis in cluster | true |
redis.externalRedisUrl | External Redis URL | "" |
externalSecret.enabled | Enable external secrets manager | false |
6. Uninstalling the Deployment
To remove the deployment:Removing Persistent Volumes (PVCs)
By default, PVCs are not deleted with Helm. To manually remove them:Additional Notes
- Ingress Setup: If using an ingress controller, make sure to configure
ingress.enabled: true
invalues.yaml
. - Environment Variables: Pass custom environment variables via
envFrom
invalues.yaml
. - Backup Strategy: Ensure you have a backup policy for PostgreSQL if running in-cluster.