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:
helm repo add sentry https://sentry-kubernetes.github.io/charts
helm repo update
Confirm the chart is available:
$ helm search repo sentry
NAME CHART VERSION APP VERSION DESCRIPTION
sentry/sentry 26.11.0 24.11.2 A Helm chart for Kubernetes
sentry/sentry-db 0.9.4 10.0.0 A Helm chart for Kubernetes
sentry/sentry-kubernetes 0.4.0 latest A Helm chart for sentry-kubernetes (https://git...
sentry/clickhouse 3.14.0 23.8.16.16 ClickHouse is an open source column-oriented da...
2. Create a custom values file
Download the default values to use as a base:
helm show values sentry/sentry > values.yaml
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):
user:
create: true
email: [email protected]
password: "CHANGE_ME_STRONG_PASSWORD" # or use --set user.password=... at install time
ingress:
enabled: true
regexPathStyle: traefik
ingressClassName: traefik
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod-issuer
hostname: sentry.example.com
tls:
- hosts:
- sentry.example.com
secretName: sentry-tls
sentry:
singleOrganization: false
worker:
replicas: 1
system:
url: "https://sentry.example.com"
adminEmail: "[email protected]"
public: true
# secretKey: "..." # set when upgrading to preserve sessions
mail:
backend: smtp
useTls: true
username: "your-smtp-user"
password: "your-smtp-password"
port: 587
host: "smtp.example.com"
from: "[email protected]"
# Optional: Slack integration — create a Slack app for credentials
# https://develop.sentry.dev/integrations/slack/
slack:
clientId: "xxxx.xxxx"
clientSecret: "xxxx"
signingSecret: "xxxx"
postgresql:
enabled: false
# Required when postgresql.enabled is false
externalPostgresql:
host: postgres.database.svc.cluster.local
port: 5432
username: sentry
password: "your-db-password"
database: sentry
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):
kubectl create namespace sentry
helm install sentry sentry/sentry \
--namespace sentry \
--version 26.11.0 \
-f ./sentry-values.yaml
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:
helmDefaults:
createNamespace: true
timeout: 1000
wait: true
repositories:
- name: sentry
url: https://sentry-kubernetes.github.io/charts
releases:
- name: sentry
namespace: sentry
chart: sentry/sentry
version: "26.11.0"
values:
- ./sentry-values.yaml
Preview rendered manifests, then sync:
helmfile template
helmfile sync
5. Verify the deployment
Check that pods are running:
kubectl get pods -n sentry
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:
kubectl port-forward -n sentry svc/sentry 9000:9000
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.