GlitchTip Instances¶
A GlitchTip CR (short name gt) deploys a full GlitchTip install: web and
worker Deployments, a per-revision migration Job, a one-shot bootstrap
Job, PostgreSQL via pgop, an optional Valkey
Deployment, a web Service, and an optional Gateway API HTTPRoute.
apiVersion: glitchtip.ruck.io/v1alpha1
kind: GlitchTip
metadata:
name: glitchtip
namespace: glitchtip
spec:
version: 6.2.2
domain: https://glitchtip.example.com
fromEmail: glitchtip@example.com
web:
replicas: 1
worker:
replicas: 1
database:
storageSize: 10Gi
valkey:
enabled: false
route:
enabled: true
parentRefs:
- name: main-gateway
namespace: gateways
sectionName: https
Spec fields¶
| Field | Type | Default | Notes |
|---|---|---|---|
version |
string | 6.2.2 |
GlitchTip image tag. Ignored when image is set. |
image |
string | — | Full image override, e.g. glitchtip/glitchtip:6.2.2. |
domain |
string | — | Required. Public URL including scheme (GLITCHTIP_DOMAIN). |
fromEmail |
string | glitchtip@<domain host> |
DEFAULT_FROM_EMAIL. |
emailUrl |
string | consolemail:// |
SMTP/email backend URL. |
web.replicas / worker.replicas |
int | 1 |
Deployment replica counts. |
web.resources / worker.resources |
ResourceRequirements | — | Passed straight through. |
worker.command |
[]string | version-derived | Escape hatch — see worker entrypoint. |
database |
object | — | See PostgreSQL below. |
valkey.enabled |
bool | false |
See Valkey / task broker. |
route |
object | — | See Exposing the UI. |
env / envFrom |
[]EnvVar / []EnvFromSource | — | Extra env vars/sources appended to web and worker containers, applied last so they can override operator-provided defaults. |
secretKeySecretRef |
SecretKeyRef | — | Use an existing Secret key for SECRET_KEY instead of generating one. |
apiTokenSecretRef |
SecretKeyRef | — | Use an existing API token instead of running the bootstrap Job. |
PostgreSQL¶
| Field | Type | Default | Notes |
|---|---|---|---|
database.clusterRef |
ObjectRef | — | Use an existing pgop Cluster (same namespace) instead of creating one per instance. |
database.storageSize |
string | — | PVC size for the operator-created pgop Cluster. |
database.storageClassName |
string | — | |
database.image |
string | — | PostgreSQL image passthrough for the pgop Cluster. |
database.resources |
ResourceRequirements | — | |
database.deletionPolicy |
Delete | Retain |
Retain |
Deleting the GlitchTip CR keeps your data by default. |
The operator composes DATABASE_URL from pgop's
<database>-<owner>-credentials Secret once pgop reports the chain (Cluster
→ Role → Database) ready.
Valkey / task broker¶
GlitchTip needs a Celery-compatible task broker for background work (alerts, email, event ingestion). Two ways to provide one:
- Valkey (
valkey.enabled: true): the operator deploys a ValkeyDeployment/Serviceand setsVALKEY_URLto point at it. - PostgreSQL (
valkey.enabled: false, the default): GlitchTip v5.2+ can use Postgres itself as the cache/celery/session backend. The operator activates this by settingVALKEY_URL=""— explicitly empty, not merely unset, since GlitchTip only falls back to a hardcodedredis://redis:6379/0default when the env var is absent entirely. Versions before v5.2 have no such fallback and require Valkey.
Worker entrypoint¶
worker.command defaults based on the image tag's major version:
- v6+:
./bin/run-worker.sh(GlitchTip'sdjango-vtasksworker). - older tags, including v5.x:
./bin/run-celery-with-beat.sh.
Override with spec.worker.command if you're running a custom image or a
version where this heuristic guesses wrong.
Exposing the UI¶
Set route.enabled: true to attach the web Service to a Gateway API
HTTPRoute. If the Gateway API CRDs aren't installed, the instance reports
Ready=False with reason GatewayAPIUnavailable instead of crashing —
install the CRDs or leave route.enabled: false and front the Service with
whatever ingress mechanism you already use.
| Field | Type | Default | Notes |
|---|---|---|---|
route.hostname |
string | host parsed from spec.domain |
|
route.parentRefs |
[]RouteParentRef | — | Gateway(s) to attach to. |
route.labels / route.annotations |
map | — | Applied to the generated HTTPRoute. |
Status conditions¶
| Type | Meaning |
|---|---|
DatabaseReady |
pgop has produced a usable DATABASE_URL. |
MigrationsComplete |
The per-revision migration Job succeeded. |
BootstrapComplete |
The bootstrap Job ran and the operator's live API ping with the resulting token succeeded. |
Ready |
Web and worker Deployments are available, the API token is validated, and (if enabled) the route was created. |
Drift healing¶
Every CR re-reconciles on a cadence (30s while not ready, 5 minutes once
Ready), so out-of-band changes or deletions to managed Deployments, Jobs,
Secrets, the pgop CRs, organizations, teams, projects and keys are
recreated/rewritten.