This is a big one 😆 (check #664)
Highlights
Changed
- Split image registry and repository in Helm chart
- ⚠️(BREAKING) Internally Sloth (not k8s) prometheusServiceLevel uses k8s
k8s.io/apimachinery/pkg/util/yaml
lib for unmarshaling YAML instead ofgopkg.in/yaml.v2
. - Core SLO validation and SLO rules generation migrated to SLO plugins.
- ⚠️(BREAKING)
--sli-plugins-path
,--slo-plugins-path
,-m
args and it's env varsSLOTH_SLI_PLUGINS_PATH
andSLOTH_SLO_PLUGINS_PATH
have been removed in favor or--plugins-path
,-p
and it's env varSLOTH_PLUGINS_PATH
that discovers and loads SLI and SLO plugins with a single flag. - Simplify validation and improve validation message by using custom logic instead of
go-playground/validator
. - ⚠️(BREAKING)
--disable-optimized-rules
flag and associated env var has been removed.** - (BREAKING) Helm chart has removed the option for disabling optimized rules.
- Update to Kubernetes v1.34.
- Update to Go v1.25.
Added
- Sloth domain models can be imported in Go apps using
github.com/slok/sloth/pkg/common/model
. - Sloth conventions can be imported in Go apps using
github.com/slok/sloth/pkg/common/conventions
. - Sloth SLO validation logic can be imported in Go apps using
github.com/slok/sloth/pkg/common/validation
. - A new SLO rule generation plugin system has been added to be able to change/extend the SLO rule generation process.
- SLO plugins can be loaded from FS directories recursively using
--plugins-path
in the commands. - SLO plugins have a
priority
value to be able to order in the execution chain. - Sloth regular (non-k8s)
prometheus/v1
API support for SLO plugins at SLO group level and per SLO level. - Sloth K8s CRD
sloth.slok.dev/v1/PrometheusServiceLevel
API support for SLO plugins at SLO group level and per SLO level. - Allow overriding previous declared SLO plugins (includes defaults) at SLO group and SLO level.
- SLO plugins can access env vars and use OS/exec by default.
- Allow
github.com/caarlos0/env/v11
module in SLO plugins. - Add
--slo-plugins
and-s
flag (generate
andk8s controller
) to be able to declare SLO plugins at cmd level, these plugins will be applied to all SLOs. - Add
--disable-default-slo-plugins
flag (generate
andk8s controller
) to be able to disable default Sloth SLO plugins. - Helm chart supports node selector.
Details (Per PR and autogenerated)
What's Changed
- Prepare deployoment manifests release for v0.12.0 by @slok in #556
- Add Stale CI to autoclose issues and PRs by @slok in #559
- Start moving models to an importable own package by @slok in #561
- Move more to conventions and utils to be importable by @slok in #562
- Move sli plugins loader and reader to independent packages by @slok in #563
- Move prom SLO IO writer to storage package by @slok in #564
- Move merge label to utils by @slok in #565
- Move sloth prom spec loader to storage package by @slok in #566
- Move open SLO spec loader to storage package by @slok in #567
- build(deps): bump github.com/go-playground/validator/v10 from 10.25.0 to 10.26.0 by @dependabot[bot] in #568
- Split image registry and repository from Helm chart by @QuantumEnigmaa in #491
- Move K8s YAML and CR loaders to storage package by @slok in #569
- Add a middle domain model for prom rules by @slok in #570
- Move apiserver storage to storage package by @slok in #571
- Move kubernetes logic to their own packages in storage by @slok in #572
- Add SLO generation as a chain of processors by @slok in #573
- build(deps): bump golang from 1.24.1-alpine to 1.24.2-alpine in /docker/prod by @dependabot[bot] in #574
- Add SLO rule generation plugin system by @slok in #575
- Add intervals to prom rule models by @slok in #576
- Add SLO plugin and SLO plugin repository on domain layer by @slok in #577
- Add missing SLO plugin unit test usage on domain app by @slok in #578
- Add priority to have SLO plugins execution order in the chain by @slok in #579
- Update project status on readme by @slok in #580
- Add debug core SLO plugin by @slok in #581
- build(deps): bump github.com/prometheus/client_golang from 1.21.1 to 1.22.0 by @dependabot[bot] in #583
- Add support for SLO plugins on default (non-k8s) sloth prometheus service level spec by @slok in #584
- Move SLO validation to an SLO plugin by @slok in #585
- Add the original SLO group source information to the plugin request by @slok in #586
- fix: update go version go.mod by @wbollock in #588
- Aggregate SLO and SLI plugin file loader into a single repo that discovers both and change flags to improve usage by @slok in #589
- Migrate to mockery v3 by @slok in #590
- build(deps): bump sigs.k8s.io/structured-merge-diff/v4 from 4.6.0 to 4.7.0 by @dependabot[bot] in #592
- Add support for SLO plugins on Kubernetes API by @slok in #591
- Fix naming on k8s plugin example by @slok in #593
- Add overridePrevious as a way of resetting the declared previous chain by @slok in #595
- build(deps): bump github.com/prometheus-operator/prometheus-operator/pkg/client from 0.81.0 to 0.82.0 by @dependabot[bot] in #597
- Simplify and improve validator by @slok in #600
- Remove not optimized SLI rule generation flag by @slok in #601
- Pass default plugins as a chain by @slok in #603
- Support env vars on SLO plugins by @slok in #604
- Allow SLO plugins at application level using cmd flags by @slok in #605
- Add SLO plugin readmes by @slok in #606
- Fix readme on validate plugin by @slok in #609
- build(deps): bump golang from 1.24.2-alpine to 1.24.3-alpine in /docker/prod by @dependabot[bot] in #612
- [FEAT] add helm chart nodeselector property by @pgmrey in #613
- Allow disabling default plugins using a cmd flag on CLI and k8s controller modes by @slok in #614
- Update Prometheus dep to v3.4.0 by @slok in #619
- build(deps): bump github.com/prometheus/common from 0.63.0 to 0.64.0 by @dependabot[bot] in #617
- Update to Kubernetes v1.33 by @slok in #620
- Update prom operator dependencies by @slok in #622
- build(deps): bump github.com/prometheus/prometheus from 0.304.0 to 0.304.1 by @dependabot[bot] in #625
- build(deps): bump golang from 1.24.3-alpine to 1.24.4-alpine in /docker/prod by @dependabot[bot] in #627
- build(deps): bump github.com/prometheus/common from 0.64.0 to 0.65.0 by @dependabot[bot] in #632
- build(deps): bump github.com/oklog/run from 1.1.0 to 1.2.0 by @dependabot[bot] in #636
- Update deps and add support for go 1.25 and k8s 1.34 by @slok in #662
- Prepare for v0.13.0 by @slok in #663
New Contributors
- @QuantumEnigmaa made their first contribution in #491
- @wbollock made their first contribution in #588
- @pgmrey made their first contribution in #613
Full Changelog: v0.12.0...v0.13.0