Skip to content
Main documentation for iter8. The documentation covers the two key components of the project: iter8-controller and iter8-analytics.
Branch: master
Clone or download

Latest commit


Type Name Latest commit message Commit time
Failed to load latest commit information.
doc_files Update tekton tutorial (#28) Feb 26, 2020
img Merge branch 'master' into metrics_extensibility_tutorial Nov 11, 2019
LICENSE Added license file Jun 11, 2019 I18 (#20) Dec 20, 2019

iter8: Analytics-driven canary releases and A/B testing


What is iter8 about?

Iter8 supports cloud-native, automated canary releases and A/B testing, driven by analytics based on robust statistical techniques. It comprises two components:

  • iter8-analytics: A service that assesses the behavior of different microservice versions by analyzing metrics associated with each version using robust statistical techniques to determine which version is the best one with respect to the metrics of interest and which versions pass a set of success criteria. Multiple success criteria can be defined by users; each criterion refers to a metric and specifies absolute or relative thresholds which define how much a candidate version can deviate from a baseline (stable) version. The iter8-analytics service exposes a REST API; each time it is called, the service returns the result of the data analysis along with a recommendation for how the traffic should be split across all microservice versions. The iter8-analytics' REST API is used by iter8-controller, which is described next.

  • iter8-controller: A Kubernetes controller that automates canary releases and A/B testing by adjusting the traffic across different versions of a microservice as recommended by iter8-analytics. For instance, what happens in the case of a canary release is that the controller will shift the traffic towards the canary version if it is performing as expected, until the canary replaces the baseline (previous) version. If the canary is found not to be satisfactory, the controller rolls back by shifting all the traffic to the baseline version. Traffic decisions are made by iter8-analytics and honored by iter8-controller.

The Experiment CRD

When iter8 is installed, a new Kubernetes CRD is added to your cluster. This CRD kind is Experiment and it is documented here.


To assess the behavior of microservice versions, iter8 supports a few metrics out-of-the-box without requiring users to do any extra work. In addition, users can define their own custom metrics. Iter8's out-of-the-box metrics as well as user-defined metrics can be referenced in the success criteria of an experiment. More details about metrics are documented here.

Supported environments

The iter8-controller currently supports the following Kubernetes-based environments, whose traffic-management capabilities are used:

Installing iter8

These instructions will guide you to install the two iter8 components (iter8-analytics and iter8-controller) on Kubernetes with Istio and/or Knative.


The following tutorials will help you get started with iter8:

Algorithms behind iter8

A key goal of this project is to introduce statistically robust algorithms for decision making during cloud-native canary releases and A/B testing experiments. We currently support two algorithms and plan to introduce other sophisticated algorithms based on Bayesian approaches. Stay tuned!


Iter8 is integrated with Tekton Pipelines for an end-to-end CI/CD experience, and with KUI, for a richer Kubernetes command-line experience. Initial integrations with these two technologies already exist, but we are actively improving them. Stay tuned!

You can’t perform that action at this time.