Sentry is an open-source error-tracking and performance-monitoring platform. It captures exceptions and events from your applications and gives you a web UI to search, analyze, and fix issues. Running Sentry in Kubernetes with Helm lets you manage configuration as code and scale the web, workers, and dependencies (PostgreSQL, Redis, etc.) in one place. This guide walks you through adding the Sentry Helm repo, creating a custom values file (ingress, mail, Slack, external PostgreSQL), installing with Helm or Helmfile, and verifying the deployment.
In this guide you’ll:
- Add the official Sentry Helm repository and pull the latest chart
- Create a custom values file for admin user, ingress (e.g. Traefik + cert-manager), SMTP (e.g. Resend), Slack, and external PostgreSQL
- Install Sentry into a dedicated namespace and optionally use Helmfile for declarative releases
- Verify pods and access Sentry via ingress, LoadBalancer, or port-forward
Prerequisites
- A Kubernetes cluster (e.g. Minikube, EKS, AKS, GKE) with kubectl configured.
- Helm 3 installed (
helm version). - Persistent storage available (for PostgreSQL if you use the in-chart DB, or use an external PostgreSQL instance).
- (Optional) An Ingress controller (e.g. Traefik, NGINX) and cert-manager if you want TLS and a custom hostname.
Table of contents
- Prerequisites
- Table of contents
- 1. Add the Sentry Helm repository
- 2. Create a custom values file
- 3. Deploy Sentry with Helm
- 4. Optional: Use Helmfile
- 5. Verify the deployment
- 6. Access Sentry
- 7. Post-deployment setup
- Frequently Asked Questions (FAQ)
- Conclusion
1. Add the Sentry Helm repository
The official Sentry charts are maintained at sentry-kubernetes/charts. Add the repo and update it:
| |
Confirm the chart is available:
| |
2. Create a custom values file
Download the default values to use as a base:
| |
Then create a custom values file (e.g. sentry-values.yaml) and override only what you need. Do not commit real passwords or secrets to Git—use placeholders and inject them via --set, --set-file, or a secrets manager.
Example overrides (replace placeholders and hostnames with your own):
| |
Summary of what these do:
- user: Initial admin user (email and password) created on first install.
- ingress: Expose Sentry via Traefik (or another Ingress class) with TLS (e.g. cert-manager).
- system: Public URL and admin email; required for links in emails and the UI.
- mail: SMTP for outgoing email (e.g. Resend, SendGrid, or your own server).
- slack: Slack app credentials for alert notifications (optional).
- externalPostgresql: Use an existing PostgreSQL instance instead of the chart’s built-in Postgres.
3. Deploy Sentry with Helm
Create the namespace and install the chart (use the same values filename you created):
| |
Use a specific chart version (e.g. 26.11.0) for reproducible installs. To pass a secret at install time instead of storing it in the values file: --set user.password="YourPassword" or --set-file user.password=./secret.txt.
4. Optional: Use Helmfile
Helmfile lets you manage Helm releases as code. Create helmfile.yaml:
| |
Preview rendered manifests, then sync:
| |
5. Verify the deployment
Check that pods are running:
| |
You should see pods for the Sentry web frontend, workers, and (if enabled) PostgreSQL, Redis, and cron jobs. Wait until they are Running and ready. If any stay in Pending or CrashLoopBackOff, check kubectl describe pod <name> -n sentry and the chart’s requirements (e.g. external PostgreSQL reachable, correct credentials).
6. Access Sentry
- If you configured Ingress: Open the URL you set in
system.url/ingress.hostname(e.g.https://sentry.example.com) and log in with theuser.emailanduser.passwordfrom your values. - If using a LoadBalancer: Run
kubectl get svc -n sentryand use the external IP of the Sentry service on port 9000. - For local testing: Use port-forwarding:
| |
Then open http://localhost:9000 and log in.
7. Post-deployment setup
- Complete the setup wizard in the Sentry UI (organization name, etc.).
- Confirm email (SMTP) works from Sentry settings if you use notifications or password reset.
- Create projects and install the Sentry SDK in your applications (e.g. Python, Node, Go) using the DSN provided by Sentry.
- Optionally add team members and configure Slack (or other integrations) for alerts.
Frequently Asked Questions (FAQ)
What is Sentry?
Sentry is an error-tracking and performance-monitoring platform. It captures exceptions, errors, and performance data from your applications and surfaces them in a web UI so you can debug and fix issues quickly. It supports many languages and frameworks and can be self-hosted (as in this guide) or used as a hosted service.
Can I use the built-in PostgreSQL instead of external?
Yes. Set postgresql.enabled: true in your values and remove or leave empty the externalPostgresql block. The chart will deploy PostgreSQL and Redis in the cluster. Ensure your cluster has a default StorageClass for persistent volumes.
How do I upgrade Sentry after deployment?
Back up your database, then run helm upgrade sentry sentry/sentry -n sentry -f ./sentry-values.yaml --version <new-version>. If the chart requires a new system.secretKey, the upgrade notes will describe how to set it without invalidating existing sessions.
Where can I find the Sentry Helm chart values reference?
Run helm show values sentry/sentry for the full default values. The chart source and documentation are in sentry-kubernetes/charts.
Conclusion
You deployed Sentry on Kubernetes using the official Helm chart: added the Sentry repo, created a custom values file (admin user, Ingress, mail, Slack, external PostgreSQL), installed with helm install or Helmfile, and verified pods and access. Use strong passwords and avoid committing secrets to Git; prefer --set or a secrets manager for sensitive values. For more on Kubernetes and observability, see other guides on monitoring and Kubernetes on this site.