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
Install with Default Configuration
Note: To specify specific version useBy default:--versionflag. 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. 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: trueinvalues.yaml. - Environment Variables: Pass custom environment variables via
envFrominvalues.yaml. - Backup Strategy: Ensure you have a backup policy for PostgreSQL if running in-cluster.