SLA Portal
PAID PLUGIN — SLAPublic-facing status page for your clients. Standalone Go + SQLite service, no login, shareable URL. Requires the SLA Plugin to be active in the main ITOps platform — the Portal pulls daily reports + uptime numbers from the Plugin via push webhook; without the Plugin the page would have nothing to display.
What it is
A separate tiny service (itops/sla-portal chart, ~20 MB image) that serves a single HTML page with your current uptime numbers, open incidents, and maintenance windows. Deploy it on its own subdomain (status.yourcompany.com) and share the link with clients — no dashboard login required.
Install
helm install sla-portal itops/sla-portal -n sla-portal --create-namespace \
--set ingress.host=status.yourdomain.com \
--set ingress.tls.secretName=status-tls
Declare SLA targets
Per-SLA-group uptime targets drive the error-budget calculation. Only groups with a declared target appear on the public page.
slaTargets:
- slaGroup: "payment-system"
displayName: "Payment Processing"
uptimeTarget: 99.95
- slaGroup: "web-frontend"
displayName: "Website"
uptimeTarget: 99.9
Everything else (real-time uptime, incident list, maintenance windows) is pushed by the main platform every 5 minutes via the operator-internal SLA_PORTAL_URL + API key settings.
Wire the main platform to push
On the main ITOps install:
env:
ITOPS_SLA_PORTAL_URL: "http://sla-portal.sla-portal.svc.cluster.local"
secretEnv:
ITOPS_SLA_PORTAL_API_KEY: "<matching sla-portal API key>"
The same key must be set on the portal's secretEnv.SLA_PORTAL_API_KEY. Wrong / missing key → portal rejects pushes with 401 and shows stale data.
What clients see
- Current uptime % for each declared SLA group, colour-coded vs target.
- Error budget remaining this period (e.g. “3h 12m left of the 4h 23m budget”).
- Open incidents with start time + impact description.
- Upcoming / active maintenance windows.
- Nothing else. No service list, no hierarchy, no admin dashboard — it's a status page, not a tool.
Branding
Override the logo + accent colour via Helm values:
branding:
companyName: "Acme Corp"
logoUrl: "https://acme.corp/logo.svg"
accentColor: "#0066cc"
Data retention
The portal stores 90 days of 5-minute snapshots in its bundled SQLite. Older data is rolled up to hourly buckets and kept for 1 year. Tune with retention.rawDays and retention.aggregateDays.
Full values reference
helm show values itops/sla-portal