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 of HTTP services.
- Performance testing of gRPC services.
- A/B/n testing of applications and ML models
- Reliable and automated routing: blue-green and canary
π Iter8 performance test
Iter8 introduces a set of tasks which which can be composed in order to conduct a variety of performance tests.
Iter8 packs a number of powerful features that facilitate Kubernetes app testing. 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.
- Readiness check. The performance testing portion can be configured to start only after the service is ready.
- Test anywhere. Iter8 performance tests can be launched inside a Kubernetes cluster, in local environments, or inside a GitHub Actions pipeline.
- Traffic controller. Automatically and dynamically reconfigures routing resources based on the state of Kubernetes apps/ML models.
- Client-side SDK. Facilitates routing and metrics collection task associated with distributed (i.e., client-server architecture-based) A/B/n testing in Kubernetes.
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, 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 |
---|---|
Package abn contains the implementation of the A/B/n service (via gRPC)
|
Package abn contains the implementation of the A/B/n service (via gRPC) |
Package action contains the logic for each action that Iter8 can perform.
|
Package action contains the logic for each action that Iter8 can perform. |
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. |
Package cmd defines the Iter8 CLI commands and their flags.
|
Package cmd defines the Iter8 CLI commands and their flags. |
Package controllers provides Iter8 controller for reconciling Iter8 routemap resources
|
Package controllers provides Iter8 controller for reconciling Iter8 routemap resources |
k8sclient
Package k8sclient provides the Kubernetes client for the controllers package
|
Package k8sclient provides the Kubernetes client for the controllers package |
k8sclient/fake
Package fake provides fake Kuberntes clients for testing
|
Package fake provides fake Kuberntes clients for testing |
Package driver enables interaction with experiment resources.
|
Package driver enables interaction with experiment resources. |
Package metrics implements an HTTP service that exposes A/B/n SDK metrics
|
Package metrics implements an HTTP service that exposes A/B/n SDK metrics |
Package storage provides the storage client for the controllers package
|
Package storage provides the storage client for the controllers package |
badgerdb
Package badgerdb implements the storage interface with BadgerDB
|
Package badgerdb implements the storage interface with BadgerDB |
client
Package client implements an implementation independent storage client
|
Package client implements an implementation independent storage client |
redis
Package redis implements the storage interface with Redis
|
Package redis implements the storage interface with Redis |