GlitchTip Helm Chart
GlitchTip, open source error tracking that accepts events from Sentry SDKs. It runs as one Deployment, with the bundled PostgreSQL as its database.
Chart version: 1.0.0
App version: 7.0.0
Dependencies: postgresql
Changelog: CHANGELOG.mdWebsite: glitchtip.com
Releases: GitLab
Docs: glitchtip.com/documentation
Configuration
The chart is built on top of the Standard chart; see the values.yaml for all configuration options.
Everything under glitchtip: in values.yaml is a Standard chart value. That covers ingresses with TLS, persistent volumes, variables and secrets, sealed secrets, mounted files, jobs, cron jobs, init and sidecar containers, and autoscaling. The values reference lists every option.
Requirements
- Helm 3
- PostgreSQL 15 or newer, which the bundled
postgresqlchart provides (PostgreSQL 17)
Install
The default install brings up GlitchTip with a bundled PostgreSQL and no Valkey. Set the public URL, a secret key and the database password before you use it for anything but a test:
glitchtip:
variables:
GLITCHTIP_DOMAIN: https://errors.example.com
secrets:
SECRET_KEY: <output of openssl rand -base64 48>
DATABASE_PASSWORD: <password>
ingress:
enabled: true
hosts:
- errors.example.com
tls: true
postgresql:
postgresql:
secrets:
POSTGRES_PASSWORD: <the same password>Open the URL, register, create an organization and a project, and the project page shows the DSN for the Sentry SDK.
Registration is open to anyone who can reach the URL. After you have registered your own user, set ENABLE_USER_REGISTRATION: "false" in glitchtip.variables.
Configure
Processes
GlitchTip 7 serves HTTP, runs the task worker and runs the scheduler in one process, so the chart has one glitchtip Deployment and no worker. More replicas all consume the same task queue, but they need S3 storage first. By default the Deployment uses the Recreate strategy and one replica, because the uploads volume is ReadWriteOnce, so it is down during each rollout.
Database migrations
GlitchTip migrates its database when the container starts, under a PostgreSQL advisory lock, so the chart has no migration Job. Set SKIP_INIT: "true" and run manage.py init_database as your own Job to migrate separately.
Valkey
The chart sets VALKEY_URL to an empty string, so the cache and the task queue run on PostgreSQL. For a busy instance, run Valkey yourself (the valkey chart in this repository works) and set VALKEY_URL: redis://<release>-valkey:6379. Unset, GlitchTip looks for redis://redis:6379/0 and fails to connect.
Your own database
Turn the bundled PostgreSQL off and replace the env list, because Helm replaces a list instead of merging it. Keep POD_IP in the list, because the probes need it when ALLOWED_HOSTS lists only your hostname:
postgresql:
enabled: false
glitchtip:
variables:
DATABASE_NAME: glitchtip
DATABASE_USER: glitchtip
secrets:
DATABASE_PASSWORD: <password>
env:
- name: DATABASE_HOST
value: postgres.example.com
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIPGlitchTip creates partitioned tables, so give your PostgreSQL max_locks_per_transaction=512, as the bundled one has.
File storage
GlitchTip keeps uploaded source maps, debug files and attachments on the glitchtip-data volume at /code/uploads, which is ReadWriteOnce. Replicas on different nodes can't share it, so more than one replica needs S3 storage. S3 is opt-in, and a default install keeps the volume.
For AWS S3 or an S3-compatible store (DigitalOcean Spaces, Cloudflare R2, Backblaze B2, MinIO), set the storage backend, the bucket and, for anything but AWS, the endpoint URL. Set persistence: null to drop the volume, because a map in your values merges into the chart's persistence map instead of replacing it. The Recreate strategy is only needed for the volume, so switch it back:
glitchtip:
persistence: null
deploymentStrategy:
type: RollingUpdate
variables:
DEFAULT_FILE_STORAGE: storages.backends.s3boto3.S3Boto3Storage
AWS_STORAGE_BUCKET_NAME: glitchtip-uploads
AWS_S3_ENDPOINT_URL: https://ams3.digitaloceanspaces.comThe credentials are AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY. Keep them out of variables. Put them in glitchtip.secrets, glitchtip.sealedSecrets or glitchtip.externalSecrets like any other secret, or point envFrom at a Secret you created yourself, which must hold those two keys:
glitchtip:
envFrom:
- secretRef:
name: glitchtip-s3GlitchTip 7.0.0 reads these S3 settings:
| Variable | Use |
|---|---|
DEFAULT_FILE_STORAGE | storages.backends.s3boto3.S3Boto3Storage. GlitchTip also switches to S3 on its own when AWS_S3_ENDPOINT_URL is set. |
AWS_STORAGE_BUCKET_NAME | The bucket. |
AWS_S3_ENDPOINT_URL | The endpoint of an S3-compatible store; leave it unset for AWS S3. |
AWS_LOCATION | A key prefix inside the bucket, empty by default. |
AWS_S3_USE_SSL, AWS_S3_VERIFY | Turn TLS off, or set the CA bundle path, for a store inside the cluster. |
GlitchTip does not read a region or a custom domain setting, so the region belongs in the endpoint URL. Files already on the old volume are not copied to the bucket, so upload source maps again after the switch.
Cold storage (GLITCHTIP_ENABLE_DUCKDB=true) uses the same bucket when AWS_STORAGE_BUCKET_NAME is set, under a cold_storage/ prefix. GLITCHTIP_COLD_STORAGE_BUCKET selects another bucket.
Scaling
Raise glitchtip.replicaCount only with S3 storage. Each replica runs the web server, the task worker and the scheduler, so three settings apply per replica:
- Keep
GRANIAN_WORKERSat its default of 1. A higher value is only for scaling a single pod up, and the replicas already add the parallelism. - Set
VTASKS_CONCURRENCY(default 20, concurrent background tasks) andDATABASE_POOL_MAX_SIZE(default 20, connections in the pool) together, with the pool at least as large as the concurrency. - Keep replicas multiplied by
DATABASE_POOL_MAX_SIZEbelow PostgreSQL'smax_connections, with room for migrations and your own tools. Three replicas at the defaults can open 60 connections.
glitchtip:
replicaCount: 3
variables:
GRANIAN_WORKERS: "1"
VTASKS_CONCURRENCY: "10"
DATABASE_POOL_MAX_SIZE: "10"Email
EMAIL_URL is consolemail://, which writes emails to the log. Set it to smtp://user:password@host:port in glitchtip.secrets, and set DEFAULT_FROM_EMAIL in glitchtip.variables.
Upgrade
GlitchTip 7.0.0 needs a database that a 6.x release has migrated, and PostgreSQL 15 or newer. Read the GlitchTip changelog before you change glitchtip.version, because 7.0.0 renames several retention variables.
Links
- Website: glitchtip.com
- Releases: GitLab
- Docs: glitchtip.com/documentation