This repository implements a GitOps-based SRE platform that governs application releases using Service Level Objectives (SLOs) and error budgets instead of raw infrastructure metrics.
The platform is designed as a production-grade observability and release-governance example, demonstrating how modern SRE teams can safely deliver microservices using automated, explainable decisions.
End-to-end lifecycle:
Build → Deploy → Observe → Evaluate SLO → Decide → Promote or Rollback
Traditional deployments answer questions like "Is CPU high?" or "Is memory above a threshold?".
This platform instead focuses on:
- "Are users experiencing degraded service quality?"
- "How fast are we burning the error budget?"
Release decisions are based on:
- Latency SLO
- Availability SLO
- Multi-window burn rate
- Remaining error budget
This produces delivery behavior that is aligned with user experience, not just infrastructure noise.
This platform demonstrates SLO-driven observability using real traffic and controlled error injection.
- Healthy baseline (no errors, zero burn)
- Error injection (
/break→ HTTP 500) - SLO impact (
error_ratioand burn-rate spike) - Multi-window behavior (fast vs long burn windows)
- Fast alert lifecycle (pending → firing → recovery)
- Clean-slate gating due to long-window burn persistence
-
Full visual evidence:
docs/observability/screenshots/ -
Grafana dashboard:
observability/grafana/global-slo-dashboard.json -
Full validation report:
docs/slo_validation_dev_environment.md
Validated outcomes in online-shop-dev:
- SLO-driven rollout decisions at both canary gates (10% and 50%)
- Automatic abort when burn-rate/error-ratio breach thresholds
- Multi-stage healthy-path promotion to 100% when signals stay healthy
- Operational recovery from
Degradedback toHealthyafter abort
Artifacts:
- Case Study:
docs/case-study/slo_rollout_demo.md - Evidence:
docs/evidence/slo_gated_rollout_evidence_dev.md - CLI Evidence:
docs/evidence/slo_gated_rollout_cli_excerpts_dev.md
k6 is used to run deterministic, repeatable traffic scenarios that directly validate SLO-driven rollout decisions in online-shop-dev.
Validated usage:
- baseline traffic maintains a healthy denominator for SLO evaluation
- failure-10 and failure-50 scenarios simulate controlled error conditions
- each scenario maps directly to a rollout promotion gate (10% and 50%)
- SLO breaches trigger automated abort decisions during canary rollout
- run evidence is captured under
docs/evidence/load-runs/
Scenarios are deterministic and aligned with rollout analysis windows to ensure reproducible SLO evaluation.
Scenario mapping:
baseline→ healthy steady-state traffic (no SLO impact)failure-10→ early-stage SLO breach at 10% canary gatefailure-50→ mid-rollout SLO breach at 50% canary gate
Operator guide:
flowchart LR
K6[k6 Load / Failure Jobs] --> Ingress[Ingress]
Ingress --> App[online-shop frontend]
App --> Metrics[Ingress / App Metrics]
Metrics --> Prometheus[Prometheus SLO Rules]
Prometheus --> Analysis[Argo Rollouts AnalysisRun]
Analysis --> Decision{SLO Gate Decision}
Decision -->|Healthy| Promote[Promote Canary]
Decision -->|SLO Breach| Abort[Abort Rollout]
- ArgoCD-style GitOps workflow for Kubernetes state
- Helm-based reusable charts
- Clear separation of configuration and runtime state
- Canary-style rollout strategy
- Gradual traffic shifting
- Automatic rollback when SLOs regress
- kube-prometheus-stack for metrics, alerting, and dashboards
- Prometheus recording rules for SLI/SLO computation
- Grafana dashboards focused on SLOs and error budgets
Key SLIs:
- Latency SLI
- Error-rate SLI
- Error-budget tracking over time
Release health is evaluated using multiple time windows, for example:
- Short window – fast detection of sharp regressions
- Long window – noise protection and resilience to small spikes
This avoids noisy rollbacks while reacting quickly to real incidents.
Release decisions can be codified as policies, for example using OPA/Rego, to:
- Gate promotions when SLO risk is detected
- Block merges when error-budget burn is unsafe
- Keep release behavior auditable and reviewable as code
Each deployment is intended to surface:
- Current SLO state at release time
- Burn-rate evaluation
- Clear decision: promote or rollback
- Human-readable explanation for the outcome
Dashboards emphasize:
- Error budget remaining
- Live burn rate
- Canary health
- Release decision flag (GREEN / RED)
- Rollout progress
- Developer opens a PR
- CI builds and pushes container images
- GitOps layer syncs desired state to the cluster
- Canary rollout begins
- Prometheus evaluates SLOs and burn rate
- Policy engine evaluates release risk
- The system either promotes or rolls back the release
The platform is designed for deterministic, repeatable failure tests. A typical scenario:
- Deploy a healthy version of the service
- Start synthetic load using k6
- Inject latency and/or errors
- Observe burn-rate spikes and error-budget consumption
- Watch the rollout automatically abort
- See merge or promotion blocked when risk is too high
-
Progressive delivery manifests are packaged in Helm under
charts/platform/templates/. -
docs/architecture.md– Architecture doc guide for the SLO-driven platformdocs/load-to-slo-timeline.md
- GitOps-first operations
- Immutable artifacts
- SLOs instead of static thresholds
- Progressive-delivery safety mechanisms
- Policy-as-Code governance
- Observability-driven automation
- Explainable platform decisions
This repository is intended to showcase practical experience with:
- DevOps and platform architecture
- Site Reliability Engineering practices
- Kubernetes production delivery patterns
- Observability and SLO design
- Release-risk management with error budgets
The platform is considered successful when:
- Canary rollouts execute automatically
- SLO violations trigger rollback without manual intervention
- Error-budget metrics reflect real user-impacting degradation
- Git or CI-based gates block risky releases
- Dashboards clearly explain why a release was promoted or rolled back
Deliberately excluded to keep the example focused:
- Service mesh integration
- Multi-cluster or multi-region federation
- ML-based anomaly detection
- Custom Kubernetes operators
This SRE platform consumes immutable container images built and published by separate platforms:
- CI Build Platform – builds and tags container images
- Container Platform – immutable image registry (for example, Docker Hub)
- SRE Platform (this repository) – GitOps deployment + SLO governance
Images are built once and then treated as immutable artifacts that flow through the ecosystem:
CI Build Platform → Container Platform → SRE Platform (GKE)
The full platform consists of three main components:
flowchart LR
CI[CI Build Platform] -->|Build and Tag Images| DockerHub[Container Platform]
DockerHub -->|Provide Images to Deploy| SRE[SRE Platform on GKE]
subgraph Platforms Ecosystem
CI
DockerHub
SRE
end
style CI fill:#E5F2FF,stroke:#1E70BF,stroke-width:2px
style DockerHub fill:#FFF2E5,stroke:#BF5E1E,stroke-width:2px
style SRE fill:#E5FFE5,stroke:#1EBF2F,stroke-width:2px

