Kubernetes Deployment
Deploy the new Helm chart on a Kubernetes cluster using Helm.
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 use
--version
flag. E.g.,--version 1.0.0
. Starting from 3.5.0, the chart is available on the GitHub Container Registry (GHCR).
By default:
- PostgreSQL and Redis are deployed within the cluster.
- Secrets are dynamically generated and stored as Kubernetes Secrets.
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.
Modify values.yaml
:
Using External Secrets (AWS Secrets Manager, Vault, etc.)
To use an external secrets manager, enable externalSecret
in values.yaml
:
Ensure ExternalSecrets Operator is installed: https://external-secrets.io/latest/
Install with:
3. Configuring PostgreSQL and Redis
Using Managed PostgreSQL and Redis
For production, we recommend using managed database and cache services.
Modify values.yaml
:
Install with:
Using In-Cluster PostgreSQL and Redis (Default)
By default, PostgreSQL and Redis are deployed inside the cluster. To ensure in-cluster deployment, use:
Apply with:
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 |
Refer to the Helm chart repository for full configuration options.
6. Uninstalling the Deployment
To remove the deployment:
Removing Persistent Volumes (PVCs)
By default, PVCs are not deleted with Helm. To manually remove them:
To completely delete the namespace:
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.
Your Formbricks deployment is now ready!