Iter8¶
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. An experiment is simply a list of tasks that are executed in a specific sequence.
Iter8 provides a variety of configurable tasks. Authoring an experiment is as simple as specifying the names of the tasks and specifying their parameter values. The following are some examples of tasks provided by Iter8.
- Tasks for generating load and collecting built-in metrics for HTTP and gRPC services.
- A task for verifying service-level objectives (SLOs) for apps or app versions.
- A task for fetching custom metrics from any database(s) or REST API(s).
- A task for checking if an object exists in the Kubernetes cluster and is ready.
In addition to pre-defined tasks, Iter8 packs a number of powerful features that facilitate experimentation. They include the following.
- HTML/text reports that promote end-user understanding of experiment results through visual insights.
- Assertions that verify whether the target app satisfies the specified SLOs or not during/after an experiment.
- Multi-loop experiments that can be executed periodically instead of just once (single-loop).
- Local experiments that enable you to run experiments in your local environment.
- Iter8 GitHub Action that enables you to invoke the Iter8 CLI within a GitHub Actions workflow.
Under the covers¶
In order to execute an experiment inside Kubernetes, Iter8 uses a Kubernetes job (single-loop) or a Kubernetes cronjob (multi-loop) workload, along with a Kubernetes secret. Iter8 instantiates all experiments using a Helm chart, that is also pre-defined and provided by Iter8.
Implementation¶
Iter8 is written in go
and builds on a few awesome open source projects including: