驗證您的應用程式程式碼和延遲與 Iter8
Iter8 是 Kubernetes 的發佈工程工具,可針對 Kubernetes 應用程式進行服務層級目標 (SLO) 驗證、A/B 測試及逐步更新。 現在,您可以使用 Iter8 來驗證您的 IBM Cloud® Code Engine 應用程式是否以低延遲且無錯誤的方式執行。 在 5 分鐘內進一步瞭解 Iter8。
開始之前
尋找 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 開放原始碼專案頁面。