Skip to content

Commit

Permalink
updates based on suggestions (#138)
Browse files Browse the repository at this point in the history
* update based on suggestions

Signed-off-by: Michael Kalantar <[email protected]>

* capitalization

Signed-off-by: Michael Kalantar <[email protected]>

---------

Signed-off-by: Michael Kalantar <[email protected]>
  • Loading branch information
kalantar authored Jan 4, 2024
1 parent 1d64ced commit 2611b3e
Show file tree
Hide file tree
Showing 24 changed files with 96 additions and 201 deletions.
18 changes: 9 additions & 9 deletions docs/getting-started/concepts.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,23 @@ Iter8 is the Kubernetes release optimizer built for DevOps, MLOps, SRE and data

Iter8 simplifies a variety of traffic engineering and metrics-driven validation use cases. To support such use cases, Iter8 provides support for the key challenges enabling simpler implementation and quicker adoption of testing in the CD process.

**Progressive release with automated traffic management** Iter8 supports blue-green, canary and mirrored releases of new applications and ML models. When new models are deployed, Iter8 automatically reconfigures the routing to desired traffic pattern. Deployment of new versions and their promotion is done by describing the desired state.
**Progressive release with automated traffic management:** Iter8 supports blue-green, canary and mirrored releases of new applications and ML models. When new models are deployed, Iter8 automatically reconfigures the routing to desired traffic pattern. Deployment of new versions and their promotion is done by describing the desired state.

**A/B/n testing with client SDK and business metrics** Iter8 addresses the challenge of doing A/B/n testing of backend application components/ML models. It provides a simple client SDK allowing a user-facing component to easily and reliably associate business metrics with the backend components that were used. This SDK provides sticky lookup based on user request headers.
**A/B/n testing with client SDK and business metrics:** Iter8 addresses the challenge of doing A/B/n testing of backend application components/ML models. It provides a simple client SDK allowing a user-facing component to easily and reliably associate business metrics with the backend components that were used. This SDK provides sticky lookup based on user request headers.

**Performance testing for HTTP and gRPC endpoints** To enable rapid testing, Iter8 provides synthetic load generation and notification support. A set of reusable tasks can be used to implement the desired test and notification behavior.
**Performance testing for HTTP and gRPC endpoints:** To enable rapid testing, Iter8 provides synthetic load generation and notification support. A set of reusable tasks can be used to implement the desired test and notification behavior.

## Design Principles
## Design principles

**Support all applications** Iter8 does not limit what types of resources an application is composed of. It supports applications that are composed of any Kubernetes resources including those defined by custom resource definitions (CRDs). Adding support for a new resource type is both straightforward and declarative.
**Support all applications:** Iter8 does not limit what types of resources an application is composed of. It supports applications that are composed of any Kubernetes resources including those defined by custom resource definitions (CRDs). Adding support for a new resource type is both straightforward and declarative.

**Support any routing technology** Progress release use cases are supported using an service mesh or ingress. Iter8 natively supports the Kubernetes Gateway API allowing easy adoption of many of these technologies. However, native interfaces can also be supported declaratively.
**Support any routing technology:** Progress release use cases are supported using an service mesh or ingress. Iter8 natively supports the Kubernetes Gateway API allowing easy adoption of many of these technologies. However, native interfaces can also be supported declaratively.

**Simplify user interaction** Iter8 leverages Helm to allow users to declaratively specify deployment patterns and to describe test scenarios. The Helm charts provided by Iter8 minimize the barrier to entry by providing common examples. Extension is often possible just be modifying the input to the charts. However, more complicated use cases can also be supported by (user) modification of the Helm charts as well.
**Simplify user interaction:** Iter8 leverages Helm to allow users to declaratively specify deployment patterns and to describe test scenarios. The Helm charts provided by Iter8 minimize the barrier to entry by providing common examples. Extension is often possible just be modifying the input to the charts. However, more complicated use cases can also be supported by (user) modification of the Helm charts as well.

**Minimize Access** Progressive release and A/B/n use cases require the user to install a Kubernetes controller. However, Iter8 allows for users with only namespace level access to install and use Iter8. Iter8 can also be installed and run with cluster level access.
**Minimize Access:** Progressive release and A/B/n use cases require the user to install a Kubernetes controller. However, Iter8 allows for users with only namespace level access to install and use Iter8. Iter8 can also be installed and run with cluster level access.

## Implementation Choices
## Implementation choices

### Iter8 controller

Expand Down
10 changes: 7 additions & 3 deletions docs/getting-started/first-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ template: main.html

# Your first progressive release

This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a blue-green release strategy.
This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a blue-green release strategy.

In a blue-green release, a percentage of requests are directed to a candidate version of the model.
This percentage can be changed over time.
This percentage can be changed over time.

![Blue-green release](../tutorials/images/blue-green.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the blue-green release strategy.

![Blue-green release](../tutorials/images/blue-green.png)
***

???+ warning "Before you begin"
1. Ensure that you have a Kubernetes cluster and the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs. If using a local cluster (for example, [Kind](https://kind.sigs.k8s.io/) or [Minikube](https://minikube.sigs.k8s.io/docs/)), we recommend providing the cluster with at least 16GB of memory.
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/abn.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ template: main.html

# A/B Testing with the Iter8 SDK

[Your first A/B/n test](../getting-started/first-abn.md) describes how to perform an A/B test of an backend component using the with the [Iter8 SDK](../user-guide/abn/using-sdk.md).
[Your first A/B/n test](../getting-started/first-abn.md) describes how to perform an A/B test of an backend component using the [Iter8 SDK](../user-guide/abn/using-sdk.md).
8 changes: 6 additions & 2 deletions docs/tutorials/canary.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@ template: main.html

# Canary release

This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a canary release strategy.
This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a canary release strategy.

In a canary release, requests that match a particular pattern, for example those that have a particular header, are directed to the candidate version of the model. The remaining requests go to the primary, or initial, version of the model.

![Canary release](images/canary.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the canary release strategy.

![Canary release](images/canary.png)
***

???+ warning "Before you begin"
1. Ensure that you have a Kubernetes cluster and the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs. If using a local cluster (for example, [Kind](https://kind.sigs.k8s.io/) or [Minikube](https://minikube.sigs.k8s.io/docs/)), we recommend providing the cluster with at least 16GB of memory.
Expand Down
4 changes: 2 additions & 2 deletions docs/tutorials/integrations/ghactions.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
template: main.html
---

# Trigger a GitHub Actions workflow during a performance test
# Trigger a GitHub Actions workflow

Iter8 provides a [`github` task](../../user-guide/performance/tasks/github.md) that sends a [`repository_dispatch`](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#repository_dispatch) which can trigger the workflows in the default branch of a GitHub repository.
Iter8 provides a [`github` task](../../user-guide/performance/tasks/github.md) that can be used in a performance test to send a [`repository_dispatch`](https://docs.github.com/en/developers/webhooks-and-events/webhooks/webhook-events-and-payloads#repository_dispatch) event to trigger workflows in the default branch of a GitHub repository.

## Example

Expand Down
10 changes: 7 additions & 3 deletions docs/tutorials/integrations/kserve-mm/blue-green.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ template: main.html

# Blue-green release of a ML model

This tutorial shows how Iter8 can be used to release ML models hosted in a KServe ModelMesh environment using a blue-green release strategy.
This tutorial shows how Iter8 can be used to release ML models hosted in a KServe ModelMesh environment using a blue-green release strategy.

In a blue-green release, a percentage of requests are directed to a candidate version of the model.
This percentage can be changed over time.
This percentage can be changed over time.

![Blue-green release](../../images/blue-green.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the blue-green release strategy.

![Blue-green release](../../images/blue-green.png)
***

???+ warning "Before you begin"
1. Ensure that you have the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs installed.
Expand Down
8 changes: 6 additions & 2 deletions docs/tutorials/integrations/kserve-mm/canary.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ template: main.html

# Canary release of a ML model

This tutorial shows how Iter8 can be used to release ML models hosted in a KServe ModelMesh environment using a canary release strategy.
This tutorial shows how Iter8 can be used to release ML models hosted in a KServe ModelMesh environment using a canary release strategy.

In a canary release, inference requests that match a particular pattern, for example those that have a particular header, are directed to the candidate version of the model.
The remaining requests go to the primary, or initial, version of the model.

![Canary release](../../images/canary.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the canary release strategy.

![Canary release](../../images/canary.png)
***

???+ warning "Before you begin"
1. Ensure that you have the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs installed.
Expand Down
10 changes: 7 additions & 3 deletions docs/tutorials/integrations/kserve/blue-green.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ template: main.html

# Blue-green release of a KServe ML model

This tutorial shows how Iter8 can be used to release ML models hosted in a KServe environment using a blue-green release strategy.
This tutorial shows how Iter8 can be used to release ML models hosted in a KServe environment using a blue-green release strategy.

In a blue-green release, a percentage of requests are directed to a candidate version of the model.
This percentage can be changed over time.
This percentage can be changed over time.

![Blue-green release](../../images/blue-green.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the blue-green release strategy.

![Blue-green release](../../images/blue-green.png)
***

???+ warning "Before you begin"
1. Ensure that you have the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs installed.
Expand Down
8 changes: 6 additions & 2 deletions docs/tutorials/integrations/kserve/canary.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,18 @@ template: main.html

# Canary release of a KServe ML model

This tutorial shows how Iter8 can be used to release ML models hosted in a KServe environment using a canary release strategy.
This tutorial shows how Iter8 can be used to release ML models hosted in a KServe environment using a canary release strategy.

In a canary release, inference requests that match a particular pattern, for example those that have a particular header, are directed to the candidate version of the model.
The remaining requests go to the primary, or initial, version of the model.

![Canary release](../../images/canary.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the canary release strategy.

![Canary release](../../images/canary.png)
***

???+ warning "Before you begin"
1. Ensure that you have the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs installed.
Expand Down
12 changes: 8 additions & 4 deletions docs/tutorials/integrations/kubernetes-gateway-api/blue-green.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,21 @@ template: main.html

# Blue-green release

This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a blue-green release strategy.
This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a blue-green release strategy.

In a blue-green release, a percentage of requests are directed to a candidate version of the model.
This percentage can be changed over time.
This percentage can be changed over time.

![Blue-green release](../../images/blue-green.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the blue-green release strategy.

![Blue-green release](../../images/blue-green.png)

This tutorial uses the Kubernetes Gateway API to allow the use any service mesh that supports this API. In this case, we use demonstrate with [Linkerd](https://linkerd.io/).

***

???+ warning "Before you begin"
1. Ensure that you have a Kubernetes cluster and the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs. If using a local cluster (for example, [Kind](https://kind.sigs.k8s.io/) or [Minikube](https://minikube.sigs.k8s.io/docs/)), we recommend providing the cluster with at least 16GB of memory.
2. [Install Linkerd](https://linkerd.io/2.14/getting-started/).
Expand Down
10 changes: 7 additions & 3 deletions docs/tutorials/integrations/kubernetes-gateway-api/canary.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,21 @@ template: main.html

# Canary release

This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a canary release strategy.
This tutorial shows how Iter8 can be used to release a basic Kubernetes application using a canary release strategy.

In a canary release, inference requests that match a particular pattern, for example those that have a particular header, are directed to the candidate version of the model.
The remaining requests go to the primary, or initial, version of the model.

![Canary release](../../images/canary.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the canary release strategy.

![Canary release](../../images/canary.png)

This tutorial uses the Kubernetes Gateway API to allow the use any service mesh that supports this API. In this case, we use demonstrate with [Linkerd](https://linkerd.io/).

***

???+ warning "Before you begin"
1. Ensure that you have a Kubernetes cluster and the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs. If using a local cluster (for example, [Kind](https://kind.sigs.k8s.io/) or [Minikube](https://minikube.sigs.k8s.io/docs/)), we recommend providing the cluster with at least 16GB of memory.
2. [Install Linkerd](https://linkerd.io/2.14/getting-started/).
Expand Down
4 changes: 2 additions & 2 deletions docs/tutorials/integrations/slack.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
template: main.html
---

# Use Iter8 to send a message to a Slack channel
# Use Iter8 to send a Slack message

Iter8 provides a [`slack` task](../../user-guide/performance/tasks/slack.md) that sends a message to a Slack channel using a [webhook](https://api.slack.com/messaging/webhooks).
Iter8 provides a [`slack` task](../../user-guide/performance/tasks/slack.md) that can be used in a performance test to send a message to a Slack channel using a [webhook](https://api.slack.com/messaging/webhooks).

## Example

Expand Down
6 changes: 5 additions & 1 deletion docs/tutorials/mirror.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,18 @@ template: main.html
# Mirrored release

This tutorial shows how Iter8 can be used to release a new version of an application using mirroring.

When an application is mirrored, all requests are sent to the primary version of the application.
A percentage of requests is replicated and sent to the candidate version of the model.
This percentage can be changed over time. Only the responses from the primary version are returned to the user.

![Mirrored release](images/mirror.png)

The user declaratively describes the desired application state at any given moment.
An Iter8 `release` chart assists users who describe the application state at any given moment.
The chart provides the configuration needed for Iter8 to automatically deploy application versions and configure the routing to implement the mirrored release strategy.

![Mirrored release](images/mirror.png)
***

???+ warning "Before you begin"
1. Ensure that you have a Kubernetes cluster and the [`kubectl`](https://kubernetes.io/docs/reference/kubectl/) and [`helm`](https://helm.sh/) CLIs. If using a local cluster (for example, [Kind](https://kind.sigs.k8s.io/) or [Minikube](https://minikube.sigs.k8s.io/docs/)), we recommend providing the cluster with at least 16GB of memory.
Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/performance/load-test-grpc-multiple.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ template: main.html

# Load test multiple gRPC methods

This tutorial expands on the tutorial [Single gRPC method](./load-test-grpc.md) by describing how to load test multiple gRPC methods.
This tutorial expands on the [Single gRPC method](./load-test-grpc.md) tutorial by describing how to load test multiple gRPC methods.

![load-test-grpc](../images/grpc.png)

Expand Down
2 changes: 1 addition & 1 deletion docs/tutorials/performance/load-test-http-multiple.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ template: main.html

# Load test multiple HTTP endpoints

[Your first performance test](../../getting-started/first-performance.md) describes how to load test a single HTTP service. This tutorial expands on the previous tutorial and describes how to load test multiple HTTP endpoints.
This tutorial expands on the [Your first performance test](../../getting-started/first-performance.md) tutorial by describing how to load test multiple HTTP endpoints.

![load-test-http](../../getting-started/images/kubernetesusage.png)

Expand Down
Loading

0 comments on commit 2611b3e

Please sign in to comment.