Skip to content

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 Valkey Deployment/Service and sets VALKEY_URL to 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 setting VALKEY_URL="" — explicitly empty, not merely unset, since GlitchTip only falls back to a hardcoded redis://redis:6379/0 default 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's django-vtasks worker).
  • 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.