Skip to content

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.

  1. Performance testing and SLO validation of HTTP services.
  2. Performance testing and SLO validation of gRPC services.
  3. 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.

  1. 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.
  2. Well-defined notion of service-level objectives (SLOs). Makes it simple to define and verify SLOs in experiments.
  3. Custom metrics. Enables the use of custom metrics from any database(s) or REST API(s) in experiments.
  4. Readiness check. The performance testing portion of the experiment begins only after the service is ready.
  5. HTML/text reports. Promotes human understanding of experiment results through visual insights.
  6. 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.
  7. 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.
  8. Experiment anywhere. Iter8 experiments can be launched inside a Kubernetes cluster, in local environments, or inside a GitHub Actions pipeline.

Kubernetes experiments

Experiments that are executed inside Kubernetes clusters are referred to as Kubernetes experiments. All other experiments are referred to as local experiments.

Runner

A single-loop Kubernetes experiment uses the Kubernetes job workload as its runner. A multi-loop Kubernetes experiment uses the Kubernetes cronjob workload as its runner.

Specifying an experiment

Specifying an Iter8 experiment involves specifying the list of tasks executed during the experiment and their parameters. Additionally, Kubernetes experiments involve specifying the runner.

Service-level objectives

Service-level objectives (SLOs) are acceptable limits for an app's metric values. Both upper and lower limits on metric values can be specified as SLOs in Iter8 experiments.

Implementation

Iter8 is written in go and builds on a few awesome open source projects including:

Back to top