驗證您的應用程式程式碼和延遲與 Iter8

Iter8 是 Kubernetes 的發佈工程工具,可針對 Kubernetes 應用程式進行服務層級目標 (SLO) 驗證、A/B 測試及逐步更新。 現在,您可以使用 Iter8 來驗證您的 IBM Cloud® Code Engine 應用程式是否以低延遲且無錯誤的方式執行。 在 5 分鐘內進一步瞭解 Iter8。

開始之前

  • 設定 Docker 在您的本地系統上。
  • 建立 Code Engine 應用程式。 不確定如何建立一個? 然後嘗試 部署應用程式 教學。

尋找 URL 的 Code Engine 應用程式

若要使用 CLI 尋找您應用程式的 URL,請執行 ibmcloud ce application get 指令,並指定 -output url 選項。 例如,找到 URL 的應用程式 myapp

ibmcloud ce application get -n myapp -output url

輸出範例

https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud

若要使用 Code Engine 主控台 尋找應用程式的 URL,請前往應用程式總覽頁面。 如果應用程式處於 Ready 狀態,您可以按一下開啟應用程式 URL,在網頁中開啟它。 保存 URL。

執行 Iter8 Docker 容器

Iter8 以 容器的形式提供,其中包含運行 所需的所有相依性。Docker Iter8 以下指令會啟動 Docker 容器。

docker run --name ind --privileged -d iter8/ind:0.7.4

初始化 Iter8 Docker 容器

初始化此 Docker 容器時,該命令會在 Docker 容器內啟動一個本機 Kubernetes 群集,然後在該容器內安裝 Iter8。

docker exec ind ./iter8.sh

尋找顯示 All systems go... 的輸出。

驗證服務層級目標 (SLO)

驗證您的 Code Engine 應用程式是否滿足您為應用程式設定的延遲和錯誤服務層級目標 (SLO)。 以下指令會為您的 Code Engine 應用程式產生請求,建構其延遲和錯誤概況,並驗證您的應用程式是否滿足指定的 SLO。

以步驟 1 取得的 URL 取代 <URL-OF-YOUR-APPLICATION>。 您也可以為用於評估應用程式的三個指標設定自訂限制。在以下範例中,您要驗證應用程式的平均延遲時間低於 200.0 ms、錯誤率低於 1% (您可以將此設定為 0.0 ),以及 95th percentile 尾端延遲時間低於 500.0 ms。

docker exec ind helm install \
--set URL=<URL-OF-YOUR-APPLICATION> \
--set LimitMeanLatency=200.0 \
--set LimitErrorRate=0.01 \
--set Limit95thPercentileLatency=500.0 \
codeengine /iter8/helm/conformance

輸出範例

NAME: codeengine
LAST DEPLOYED: Wed Jun 30 01:10:14 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

取得 SLO 驗證的結果

以下指令會輸出 Code Engine 應用程式的 SLO 驗證結果。

docker exec ind \
bash -c "kubectl get experiment my-experiment -o yaml | iter8ctl describe -f -"

輸出範例

如果您沒有看到類似以下範例的輸出,您可能需要稍等一下,然後再嘗試之前的指令。 目標部分會報告您的應用程式是否滿足指定的 SLO。 度量值」部分會報告 Iter8 觀察到的應用程式度量值。

****** Overview ******
Experiment name: my-experiment
Experiment namespace: default
Target: my-app
Testing pattern: Conformance
Deployment pattern: Progressive

****** Progress Summary ******
Experiment stage: Completed
Number of completed iterations: 1

****** Winner Assessment ******
> If the version being validated; i.e., the baseline version, satisfies the experiment objectives, it is the winner.
> Otherwise, there is no winner.
Winning version: my-app

****** Objective Assessment ******
> Identifies whether or not the experiment objectives are satisfied by the most recently observed metrics values for each version.
+--------------------------------------+--------+
|              OBJECTIVE               | MY-APP |
+--------------------------------------+--------+
| iter8-system/mean-latency <=         | true   |
|                              200.000 |        |
+--------------------------------------+--------+
| iter8-system/error-rate <=           | true   |
|                                0.010 |        |
+--------------------------------------+--------+
| iter8-system/latency-95th-percentile | true   |
| <= 500.000                           |        |
+--------------------------------------+--------+

****** Metrics Assessment ******
> Most recently read values of experiment metrics for each version.
+--------------------------------------+--------+
|                METRIC                | MY-APP |
+--------------------------------------+--------+
| iter8-system/request-count           | 40.000 |
+--------------------------------------+--------+
| iter8-system/error-count             |  0.000 |
+--------------------------------------+--------+
| iter8-system/mean-latency            | 66.060 |
+--------------------------------------+--------+
| iter8-system/error-rate              |  0.000 |
+--------------------------------------+--------+
| iter8-system/latency-95th-percentile | 73.055 |
+--------------------------------------+--------+

回滾修訂

如果您的最新修訂版無法滿足您指定的實驗目標,您可能想要刪除最新修訂版,並讓 Code Engine 自動回滾到之前的穩定修訂版。

若要使用 CLI 刪除最新版本,請執行 ibmcloud ce revision delete 指令。

若要從主控台刪除最新版本,請前往 Code Engine 主控台。 選取專案-> 您的專案- >應用程式->您的應用程式- >修訂與流量。 刪除失敗的版本。Code Engine 自動回滾到之前的穩定版本。

移除 Iter8 容器

如果不再需要,您可以移除 Iter8-in-Docker 容器和映像,清理本機系統。

docker rm -f -v ind

接下來的步驟 Iter8

本教學以 Iter8 開放原始碼專案為基礎。 如需詳細資訊,請參閱 Iter8 開放原始碼專案頁面