README
ΒΆ
Iter8: Kubernetes Release Optimizer
Iter8 is the Kubernetes release optimizer built for DevOps, MLOps, SRE and data science teams. Iter8 makes it easy to ensure that Kubernetes apps and ML models perform well and maximize business value.
Iter8 supports the following use-cases.
- Performance testing and SLO validation of HTTP services.
- Performance testing and SLO validation of gRPC services.
- SLO validation using custom metrics from any database(s) or REST API(s).
π Iter8 experiment
Iter8 introduces the notion of an experiment, which is a list of configurable tasks that are executed in a specific sequence.
Iter8 packs a number of powerful features that facilitate Kubernetes app testing and experimentation. They include the following.
- Generating load and collecting built-in metrics for HTTP and gRPC services. Simplifies performance testing by eliminating the need to setup and use metrics databases.
- Well-defined notion of service-level objectives (SLOs). Makes it simple to define and verify SLOs in experiments.
- Custom metrics. Enables the use of custom metrics from any database(s) or REST API(s) in experiments.
- Readiness check. The performance testing portion of the experiment begins only after the service is ready.
- HTML/text reports. Promotes human understanding of experiment results through visual insights.
- Assertions. Verifies whether the target app satisfies the specified SLOs or not after an experiment. Simplifies automation in CI/CD/GitOps pipelines: branch off into different paths depending upon whether the assertions are true or false.
- Multi-loop experiments. Experiment tasks can be executed periodically (multi-loop) instead of just once (single-loop). This enables Iter8 to refresh metric values and perform SLO validation using the latest metric values during each loop.
- Experiment anywhere. Iter8 experiments can be launched inside a Kubernetes cluster, in local environments, or inside a GitHub Actions pipeline.
Please see https://iter8.tools for the complete documentation.
π Issues
Iter8 issues are tracked here.
π Contributing
We welcome PRs!
See here for information about ways to contribute, Iter8 community meetings, finding an issue, asking for help, pull-request lifecycle, and more.
πΊ Credits
Iter8 is primarily written in Go
and builds on a few awesome open source projects including:
Documentation
ΒΆ
Overview ΒΆ
Package main is the entry point for the Iter8 CLI. Iter8 is the Kubernetes release optimizer built for DevOps, MLOps, SRE and data science teams. Iter8 makes it easy to ensure that Kubernetes apps and ML models perform well and maximize business value.
Directories
ΒΆ
Path | Synopsis |
---|---|
abn
|
|
application
Package application provides a runtime model of applications and their versions
|
Package application provides a runtime model of applications and their versions |
core
Package core provides a service that supports the Iter8 A/B/n SDK
|
Package core provides a service that supports the Iter8 A/B/n SDK |
k8sclient
Package k8sclient enables interaction with Kubernetes using both a typed client and a dynamic client
|
Package k8sclient enables interaction with Kubernetes using both a typed client and a dynamic client |
k8sclient/testing
Package testing provides a fake dynamic client that supports finalizers.
|
Package testing provides a fake dynamic client that supports finalizers. |
watcher
Package watcher provides methods to watch resources and build a runtime model of applications
|
Package watcher provides methods to watch resources and build a runtime model of applications |
Package action contains the logic for each action that Iter8 can perform.
|
Package action contains the logic for each action that Iter8 can perform. |
report
Package report contains primitives for reporting the results of an experiment.
|
Package report contains primitives for reporting the results of an experiment. |
Package autox is the entry point for the autoX controller.
|
Package autox is the entry point for the autoX controller. |
Package base defines Iter8's experiment, task and metric data structures.
|
Package base defines Iter8's experiment, task and metric data structures. |
log
Package log enables logging for Iter8.
|
Package log enables logging for Iter8. |
summarymetrics
Package summarymetrics provides a summary metric implementation
|
Package summarymetrics provides a summary metric implementation |
Package cmd defines the Iter8 CLI commands and their flags.
|
Package cmd defines the Iter8 CLI commands and their flags. |
Package driver enables interaction with experiment resources.
|
Package driver enables interaction with experiment resources. |