You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The `iter8ctl` client facilitates real-time observability of Iter8 experiments. Install `iter8ctl` on your local machine as follows. This installation requires Go 1.13+.
17
+
The above command installs Iter8's controller and analytics services in the `iter8-system` namespace, the Experiment and Metric CRDs, and the following RBAC permissions.
19
18
20
-
```shell
21
-
GO111MODULE=on GOBIN=/usr/local/bin go get github.com/iter8-tools/[email protected]
???+ warning "Before you begin, you will need... "
20
20
1. **Kubernetes cluster.** You can also use [Minikube](https://minikube.sigs.k8s.io/docs/) or [Kind](https://kind.sigs.k8s.io/).
21
21
2. The `kubectl` CLI. Install `kubectl`[here](https://kubernetes.io/docs/tasks/tools/install-kubectl/).
22
-
3. **Go 1.13+** (recommended; required for using `iter8ctl` in [Step 7](/getting-started/quick-start/with-knative/#7-observe-experiment)). Install Go [here](https://golang.org/doc/install).
22
+
3. **Go 1.13+** (recommended; required for using `iter8ctl` in [Step 8](/getting-started/quick-start/with-knative/#8-observe-experiment)). Install Go [here](https://golang.org/doc/install).
23
23
24
24
## 1. Create Kubernetes cluster
25
25
@@ -43,21 +43,16 @@ Create a local cluster using Minikube or Kind as follows, or use a managed Kuber
description: Fraction of requests with error responses
230
+
jqExpression: .data.result[0].value[1] | tonumber
231
+
params:
232
+
- name: query
233
+
value: |
234
+
(sum(increase(revision_app_request_latencies_count{response_code_class!='2xx',revision_name='$revision'}[${elapsedTime}s])) or on() vector(0)) / (sum(increase(revision_app_request_latencies_count{revision_name='$revision'}[${elapsedTime}s])) or on() vector(0))
(sum(increase(revision_app_request_latencies_sum{revision_name='$revision'}[${elapsedTime}s])) or on() vector(0)) / (sum(increase(revision_app_request_latencies_count{revision_name='$revision'}[${elapsedTime}s])) or on() vector(0))
The `urlTemplate` field in these metrics point to the Prometheus instance that was created in Step 3 above. If you wish to use these metrics in your production/staging/dev/test K8s cluster, change the `urlTemplate` values to match the URL of your Prometheus instance.
279
+
280
+
## 7. Launch experiment
181
281
Launch the Iter8 experiment. Iter8 will orchestrate the canary release of the new version with SLO validation and progressive deployment as specified in the experiment.
182
282
183
283
```shell
@@ -245,10 +345,10 @@ The process automated by Iter8 during this experiment is depicted below.
Observe the experiment in realtime. Paste commands from the tabs below in separate terminals.
250
350
251
-
=== "iter8ctl"
351
+
=== "Metrics-based analysis"
252
352
Install `iter8ctl`. You can change the directory where `iter8ctl` binary is installed by changing `GOBIN` below.
253
353
```shell
254
354
GO111MODULE=on GOBIN=/usr/local/bin go get github.com/iter8-tools/[email protected]
@@ -319,7 +419,7 @@ Observe the experiment in realtime. Paste commands from the tabs below in separa
319
419
320
420
As the experiment progresses, you should eventually see that all of the objectives reported as being satisfied by both versions. The candidate is identified as the winner and is recommended for promotion. When the experiment completes (in ~2 mins), you will see the experiment stage change from `Running` to `Completed`.
321
421
322
-
=== "kubectl get experiment"
422
+
=== "Experiment progress"
323
423
324
424
```shell
325
425
kubectl get experiment quickstart-exp --watch
@@ -342,7 +442,7 @@ Observe the experiment in realtime. Paste commands from the tabs below in separa
342
442
343
443
When the experiment completes (in ~ 2 mins), you will see the experiment stage change from `Running` to `Completed`.
344
444
345
-
=== "kubectl get ksvc"
445
+
=== "Traffic split"
346
446
347
447
```shell
348
448
kubectl get ksvc sample-app -o json --watch | jq .status.traffic
@@ -370,15 +470,15 @@ Observe the experiment in realtime. Paste commands from the tabs below in separa
370
470
```
371
471
As the experiment progresses, you should see traffic progressively shift from `sample-app-v1` to `sample-app-v2`. When the experiment completes, all of the traffic will be sent to the winner, `sample-app-v2`.
1. You created a Knative service with two revisions, `sample-app-v1` (baseline) and `sample-app-v2` (candidate).
382
475
2. You generated requests for the Knative service using a Fortio job. At the start of the experiment, 100% of the requests are sent to the baseline and 0% to the candidate.
383
476
3. You created an Iter8 experiment with canary testing and progressive deployment patterns. In each iteration, Iter8 observed the mean latency, 95th percentile tail-latency, and error-rate metrics collected by Prometheus, verified that the candidate satisfied all objectives, identified the candidate as the winner, progressively shifted traffic from the baseline to the candidate, and eventually promoted the candidate using the `kubectl apply` command embedded within its finish action.
384
477
4. Had the candidate failed to satisfy objectives, then the baseline would have been promoted.
0 commit comments