使用 Spinnaker 自動化 Google Kubernetes Engine 上的初期測試分析

本教學課程會逐步引導您在 Google Kubernetes Engine (GKE) 上設定 Spinnaker 的自動化初期測試分析功能。

簡介

Spinnaker 是由 Netflix 與 Google 主導的開放原始碼的持續推送軟體更新系統,可管理不同運算平台上的應用程式部署,包括 App Engine、GKE、Compute Engine、AWS 和 Azure。您可以使用 Spinnaker 實作進階部署方法,包括初期測試部署。

在初期測試部署中,您會先向一小部分的實際工作環境流量公開新版應用程式並分析其行為,然後再繼續進行完整部署。這可讓您在將新版本部署至所有使用者前減輕相關風險。如要使用初期測試部署,您必須準確地比較舊版與新版應用程式的行為。差異可能難以察覺,而且可能需要一些時間才會顯現。您可能也有許多不同的指標需要檢查。

為解決這些問題,Spinnaker 提供自動化初期測試分析功能,從您的監控系統讀取這兩個版本的指標,並執行統計資料分析以自動化比較作業。本教學課程示範如何在部署於 GKE 且受 Stackdriver 監控的應用程式上執行自動化初期測試分析。

Spinnaker 是進階應用程式部署和管理平台,適用於具有複雜部署情境的機構,通常具有專屬的版本工程功能。您不需要具備 Spinnaker 相關經驗,即可執行本教學課程。不過,如要在實際工作環境中實作自動化初期測試分析,通常是由已具備 Spinnaker 相關經驗、擁有強大的監控系統及瞭解如何判斷版本是否安全的團隊執行。

關於本教學課程

本教學課程中的應用程式是一個簡單的「Hello World」,其錯誤率是以環境變數設定。我們會提供這個應用程式的預先建構 Docker 映像檔。如下列圖片所示,應用程式會以 Prometheus 格式公開指標,這是 Kubernetes 社群中的熱門開放原始碼監控系統,且與 Stackdriver 相容。

應用程式架構

目標

  • 建立 GKE 叢集。
  • 安裝 Spinnaker。
  • 將應用程式部署至 GKE,而不需要初期測試部署。
  • 設定並執行應用程式的初期測試部署。
  • 設定自動化初期測試分析。
  • 測試自動化初期測試分析。

費用

事前準備

  1. 選取或建立一個 GCP 專案。

    前往管理資源頁面

  2. 啟用專案的計費功能。

    啟用計費功能

  3. 建立 Stackdriver 帳戶。

    查看 Stackdriver 說明文件

完成本教學課程後,您可以刪除建立的資源以避免繼續計費。詳情請參閱清除所用資源一節。

設定您的環境

在本節中,您將設定完成本教學課程所需的基礎架構。請從 Cloud Shell 執行本教學課程中的所有終端機指令。

  1. 開啟 Cloud Shell。

    前往 CLOUD SHELL

  2. 將您的專案 ID 匯出為變數。

    export GOOGLE_CLOUD_PROJECT=[PROJECT_ID]
    

    其中:

    • [PROJECT_ID] 代表您使用的專案的 ID。
  3. 建立 GKE 叢集。

    gcloud config set project $GOOGLE_CLOUD_PROJECT
    gcloud config set compute/zone us-central1-f
    gcloud services enable container.googleapis.com
    gcloud beta container clusters create kayenta-tutorial \
        --machine-type=n1-standard-2 --cluster-version=1.10 \
        --enable-stackdriver-kubernetes \
        --scopes=gke-default,compute-ro
    gcloud container clusters get-credentials kayenta-tutorial
    

  4. 安裝 Stackdriver-Prometheus 整合外掛程式

    kubectl apply --as=admin --as-group=system:masters -f \
        https://storage.googleapis.com/stackdriver-prometheus-documentation/rbac-setup.yml
    curl -sS "https://storage.googleapis.com/stackdriver-prometheus-documentation/prometheus-service.yml" | \
        sed "s/_stackdriver_project_id:.*/_stackdriver_project_id: $GOOGLE_CLOUD_PROJECT/" | \
        sed "s/_kubernetes_cluster_name:.*/_kubernetes_cluster_name: kayenta-tutorial/" | \
        sed "s/_kubernetes_location:.*/_kubernetes_location: us-central1-f/" | \
        kubectl apply -f -
    

  5. 在新的 GKE 叢集中部署 Spinnaker。

    kubectl apply -f https://spinnaker.io/downloads/kubernetes/quick-install.yml
    

  6. 部署需要幾分鐘才會完成。如要查看進度,請執行 watch kubectl -n spinnaker get pods 指令。如要停止 watch 指令,請按下 Ctrl+C。部署完成後,這個指令會將所有 Pod 輸出為 Ready 1/1

    NAME                                READY  STATUS    RESTARTS   AGE
    minio-deployment-7c665c4b57-jx7px   1/1    Running   0          5m
    spin-clouddriver-789c6fff77-rjtc6   1/1    Running   0          4m
    spin-deck-68b5968f7f-trmkn          1/1    Running   0          4m
    spin-echo-57dbff9fb8-rq5qc          1/1    Running   0          4m
    spin-front50-67965475b8-l24db       1/1    Running   0          4m
    spin-gate-6d8bbf8c45-m9pzn          1/1    Running   0          4m
    spin-halyard-59fd54bd69-xns49       1/1    Running   0          5m
    spin-kayenta-99b97b85f-4gvsv        1/1    Running   0          4m
    spin-orca-5748974888-cph9g          1/1    Running   0          4m
    spin-redis-6d49c9c5b9-q2hzm         1/1    Running   0          4m
    spin-rosco-6b4ddbcb94-mjrht         1/1    Running   0          4m
    

  7. 如要存取 Spinnaker,請將本機通訊埠轉送至 Spinnaker 的 Deck 元件。

    DECK_POD=$(kubectl -n spinnaker get pods -l \
        cluster=spin-deck,app=spin \
        -o=jsonpath='{.items[0].metadata.name}')
    kubectl -n spinnaker port-forward $DECK_POD 8080:9000 >/dev/null &
    

  8. 在 Cloud Shell 中,按一下「網頁預覽」圖示,然後選取 [Preview on port 8080] (功能預覽 8080)。

    通訊埠 8080 的網頁預覽圖示。

使用 Spinnaker 部署應用程式

在本節中,您將設定 Spinnaker 以在 GKE 叢集中部署應用程式。

建立 Spinnaker 應用程式

部署之前,請先建立 Spinaker 應用程式。

  1. 在 Spinnaker 中,按一下 [Actions] > [Create Application]

    建立應用程式下拉式選單

  2. 在「New Application」對話方塊中,輸入以下的值:

    • 「Name」sampleapp
    • 「Owner Email」[example@example.com]

  3. 按一下 [Create]。

您目前位於 Spinnaker 的 sampleapp 中。應用程式尚未設定,因此大部分的分頁都是空白的。

建立並執行部署管道

在本節中,您將先使用簡單的 Spinnaker 管道部署應用程式,使用 successRate 參數建立具有四個 Pod 的 GKE 部署。這些 Pod 會以對應至 successRate 參數的比率隨機擲回錯誤。在本教學課程中,這些 Pod 會以 100 - successRate 的比率擲回 500 個錯誤。

  1. 在 Cloud Shell 中,使用提供的 JSON 檔案建立管道。下列指令會將管道的 JSON 定義直接張貼至 Spinnaker API。

    wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/simple-deploy.json
    curl -d@simple-deploy.json -X POST \
        -H "Content-Type: application/json" -H "Accept: /" \
        http://localhost:8080/gate/pipelines
    

  2. 在 Spinnaker 的「Pipelines」區段中,會顯示一個名為「Simple deploy」的管道。如果沒有看到,請重新載入頁面。按一下 [Start Manual Execution]

    開始手動執行簡易部署管道

  3. 在「Confirm Execution」視窗中,選取 [70] 的「Success Rate」(成功率),然後按一下 [Run]。幾秒過後,管道會成功部署應用程式設定和四個 Pod。

  4. 在 Cloud Shell 中,建立向新應用程式提出要求的 Pod,直到本教學課程結束為止。

    kubectl -n default run injector --image=alpine -- \
        /bin/sh -c "apk add --no-cache --yes curl; \
        while true; do curl -sS --max-time 3 \
        http://sampleapp:8080/; done"
    

查看插入程式的記錄

  1. 如要瞭解應用程式的行為,請查看插入程式的記錄。

    kubectl -n default logs -f \
        $(kubectl -n default get pods -l run=injector \
        -o=jsonpath='{.items[0].metadata.name}')
    

  2. 記錄中會顯示大量「內部伺服器錯誤」訊息。如要停止關注插入程式的記錄,請按下 Ctrl+C

查看應用程式的健康狀態

現在應用程式已部署完成並可提供流量,請確認它是否正常運作。當然,在本教學課程中,您已經知道它無法正常運作,因為您只以 70% 的成功率部署應用程式。

應用程式會公開具有 Stackdriver 擷取的 Prometheus 格式指標的 /metrics 端點。在本節中,您將在 Stackdriver 中以視覺化方式呈現這些指標。

  1. 在 Stackdriver 中,前往「Metrics Explorer」

    METRICS EXPLORER

  2. 在「Find resource type and metric」欄位中,輸入下列內容:

    external.googleapis.com/prometheus/requests
    

  3. 如要修正圖形,請在「Group By」欄位中輸入 http_code。在下圖中,應用程式回覆 HTTP 要求的比率是依據 HTTP 狀態碼組成群組:

    應用程式回覆的 HTTP 要求圖

如圖中所示,目前應用程式如預期有無法接受的錯誤率 (大約 30%)。本教學課程的其餘內容將逐步引導您設定初期測試部署管道及自動分析,以免日後的應用程式部署有這麼高的錯誤率。

建立初期測試部署

在本節中,您將建立不含自動化分析功能的初期測試部署管道,以測試新版應用程式,然後再將它完整部署至實際工作環境。下圖列出這個管道的各個不同階段:

初期測試部署管道的階段圖例

  • 步驟 0:就像「簡易部署」管道一樣,管道會使用「成功率」參數做為輸入。新管道使用這個參數模擬不同的成功率。這是管道的「設定」
  • 步驟 1:「尋找基準版本」階段會從「簡易部署」管道的最新執行作業,擷取正在實際工作環境中執行的應用程式目前版本。在本教學課程中,它會擷取目前已部署應用程式的成功率。
  • 「部署初期測試設定」階段與「尋找基準版本」階段並行執行,會部署應用程式初期測試版本的新成功率設定。
  • 步驟 2:「部署初期測試」和「部署基準」階段會部署兩個版本 (新初期測試版本和基準版本),以進行比較。初期測試版本使用「部署初期測試設定」中建立的設定,而基準版本則是使用實際工作環境版本所用的設定。

  • 步驟 3:「手動判斷」階段會停止管道,直到您繼續為止。在這個階段期間,您可以查看初期測試版本是否正常運作。

  • 步驟 4:繼續進行到「手動判斷」階段後,「刪除初期測試」和「刪除基準」階段都會清除基礎架構。
  • 在清除的同時,會啟動「部署至實際工作環境」階段,並用您一開始提供的同一個「成功率」參數觸發「簡易部署」管道。您在初期測試中測試的同一個應用程式版本會部署在實際工作環境中。
  • 只有在「手動判斷」階段期間選擇 [繼續] 的情況下,才會觸發「部署至實際工作環境」階段
  • 步驟 5:最後,「成功部署」階段會驗證整個管道是否成功。這個階段會檢查您是否已在「手動判斷」階段中允許繼續進行,而且只有在「部署至實際工作環境」、「刪除初期測試」和「刪除基準」階段成功執行時才會繼續執行。

現在,您可以建立並執行「初期測試部署」管道。

  1. 如要建立「初期測試部署」管道,請執行下列指令,以擷取「簡易部署」管道的 ID,並將它置入「初期測試部署」管道中:

    wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/canary-deploy.json
    export PIPELINE_ID=$(curl \
        localhost:8080/gate/applications/sampleapp/pipelineConfigs/Simple%20deploy \
        | jq -r '.id')
    jq '(.stages[] | select(.refId == "9") | .pipeline) |= env.PIPELINE_ID | (.stages[] | select(.refId == "8") | .pipeline) |= env.PIPELINE_ID' canary-deploy.json | \
        curl -d@- -X POST \
        -H "Content-Type: application/json" -H "Accept: /" \
        http://localhost:8080/gate/pipelines
    

  2. 如果您沒有在 Spinnaker 中看到「初期測試部署」管道,請重新載入「sampleapp」頁面,然後按一下 [Pipelines]

  3. 如要啟動「初期測試部署」管道:

    1. 按一下 [Start Manual Execution]
    2. 選取 [80] 的「Success Rate」(成功率)
    3. 按一下 [Run]
  4. 管道到達「Manual Judgment」階段時,請勿點選 [Continue],因為您必須將初期測試版本與基準版本加以比較。

    初期測試管道的手動判斷階段

  5. 在 Cloud Shell 中,執行 kubectl -n default get pods 指令以查看標示為初期測試和基準的新 Pod:

    NAME                                READY STATUS  RESTARTS  AGE
    injector-66bd655ffd-9ntwx           1/1   Running 0         30m
    sampleapp-5cdf8f55dd-995rz          1/1   Running 0         28m
    sampleapp-5cdf8f55dd-dqq8n          1/1   Running 0         28m
    sampleapp-5cdf8f55dd-ntq57          1/1   Running 0         28m
    sampleapp-5cdf8f55dd-rlpzp          1/1   Running 0         28m
    sampleapp-baseline-567b8d6849-gsgqr 1/1   Running 0          4m
    sampleapp-canary-54b9759dd6-gmjhc   1/1   Running 0          4m
    

  6. 在 Stackdriver 中,前往「Metrics Explorer」

    METRICS EXPLORER

  7. 如果「Metrics Explorer」中有任何已設定的指標,請從表單中移除所有現有的設定。

  8. 選取初期測試資料做為第一個指標,並指令下列參數:

    1. 「Metric」external.googleapis.com/prometheus/requests
    2. 「Filters」

      • http_code 等於 500
      • pod_name 等於 sampleapp-canary-*
  9. 如要選取基準資料做為第二個指標,請按一下 [+ Add Metric],然後完成下列欄位:

    1. 「Metric」external.googleapis.com/prometheus/requests
    2. 「Filters」

      • http_code 等於 500
      • pod_name 等於 sampleapp-baseline-*
  10. 比較初期測試版本 (下圖中的紫色線條) 與基準版本 (下圖中的藍色線條)。您的圖形中的線條色彩可能會有所不同。在本教學課程中,初期測試版本擁有比基準版本低的錯誤率。因此,您可以安全地將初期測試版本完整部署至實際工作環境。如果初期測試版本沒有較低的錯誤率,您可能會想要在這個階段停止部署,並對應用程式進行一些修正。

    比較初期測試錯誤率與基準版本的圖

  11. 在 Spinnaker 的「Manual Judgement」對話方塊中,按一下 [Continue]

    初期測試管道的手動判斷階段

  12. 部署完成後,請在 Stackdriver 中返回「Metrics Explorer」

    METRICS EXPLORER

  13. 如果「Metrics Explorer」中有任何已設定的指標,請從表單中移除所有現有的設定。

  14. 在「Find resource type and metric」欄位中,輸入下列內容:

    external.googleapis.com/prometheus/requests
    

  15. 在「Group By」欄位中,輸入 http_code。在下圖中,應用程式回覆 HTTP 要求的比率是依據 HTTP 狀態碼拆分:

    比較 HTTP 要求比率的圖

    這個圖顯示所有 Pod 的 HTTP 代碼 200 和 500 的比率,包括實際工作環境、基準和初期測試。由於初期測試版本有較低的錯誤率,您已將它部署在實際工作環境中。在部署期間的一小段時間過後,要求總數會稍微降低,您會發現整體錯誤率已降低,初期測試版本已正確部署在實際工作環境中。

初期測試分析自動化

初期測試部署非常實用,但在其目前的實作中,這是個手動的程序。在執行完整部署之前,您必須手動檢查初期測試是否如您預期般運作,而且初期測試與基準之間的差異不一定顯而易見。

建議您使用自動化初期測試分析;您不必親自執行,比起透過人工方式偵測一組指標中的問題,自動化統計資料分析會是更適合的做法。在本節中,我們會將「手動判斷」階段替換為自動化初期測試分析。

啟用初期測試支援

首先,請在 Spinnaker 中設定自動化初期測試分析功能 Kayenta。如要設定 Kayenta,請使用 Halyard,也就是用來設定及部署 Spinnaker 的同一個工具。

  1. 在 Cloud Shell 中,取得您的專案 ID。

    echo $GOOGLE_CLOUD_PROJECT
    

  2. 在 Halyard Pod 中取得殼層。

    export HALYARD_POD=$(kubectl -n spinnaker get pods -l \
        stack=halyard,app=spin \
        -o=jsonpath='{.items[0].metadata.name}')
    kubectl -n spinnaker exec -it $HALYARD_POD -- bash
    

  3. 將 Kayenta 設定為使用 Stackdriver 做為後端。

    hal config canary google enable
    hal config canary google account add kayenta-tutorial --project [PROJECT_ID]
    hal config canary google edit --stackdriver-enabled=true
    

    其中:

    • [PROJECT_ID] 代表您已擷取的專案 ID。
  4. 套用新設定並結束 Halyard Pod。

    hal deploy apply
    exit
    

  5. 部署需要幾分鐘才會完成。如要查看進度,請執行 watch kubectl -n spinnaker get pods 指令。部署完成後,這個指令會將所有 Pod 輸出為 Ready 1/1。如要停止 watch 指令,請按 Ctrl+C

    NAME                               READY  STATUS   RESTARTS AGE
    minio-deployment-7c665c4b57-prl6d  1/1    Running  0        1h
    spin-clouddriver-6c4f954667-8769c  1/1    Running  0        1h
    spin-deck-7d44499f9b-hkqz4         1/1    Running  0        1h
    spin-echo-6cf4bbbbfc-vxzlr         1/1    Running  0        1h
    spin-front50-7666c894c6-fm7sz      1/1    Running  0        1h
    spin-gate-76f789696d-vsn98         1/1    Running  0        1h
    spin-halyard-59fd54bd69-vb99h      1/1    Running  0        1h
    spin-kayenta-84f6b9b697-5krhh      1/1    Running  0        1m
    spin-orca-78f5c74c6f-srl4f         1/1    Running  0        1h
    spin-redis-6d49c9c5b9-gddgv        1/1    Running  0        1h
    spin-rosco-699cb484f7-grthh        1/1    Running  0        1h
    

設定自動初期測試分析功能

現在 Kayenta 已經啟用,請將它設定為可供 sampleapp 使用。

  1. 在 Spinnaker 中,按一下 [Config]

  2. 在「Features」區段中,選取 [Canary],然後按一下 [Save Changes]

    管道功能的螢幕擷取畫面

建立初期測試設定

在 Spinnaker 中,自動化初期測試分析會在不同的指標上執行統計資料測試,然後輸出分數。這個分數的範圍可為 0 至 100,並且代表通過或未通過基準與初期測試之間比較的指標數量。您可以在不同的群組中置入指標,並為各個群組設定不同的權重,以影響這個分數。您可能會根據分析的分數,選擇是否要繼續進行部署。如果您使用單一指標 (如同本教學課程中的做法),分數只能是 0 (未通過) 或 100 (通過)。

應用程式可能有在多個應用程式間共用的數個初期測試設定。初期測試設定有兩項主要元素:

  • 一組要分析的指標 (可能在不同的群組中)。
  • 分數的臨界和通過門檻。

在部署管道中,會在「初期測試分析」階段期間使用初期測試設定。這個階段可包含多個初期測試執行作業。如果任何執行作業的分數低於臨界門檻,則會停止階段,且不會執行其他執行作業。最後一個執行作業的分數必須高於通過門檻,才能將整個階段視為成功。

如要建立初期測試設定,請按照下列步驟進行:

  1. 現在初期測試已經啟用,請重新載入 Spinnaker。「Pipelines」區段已替換為「Delivery」。在「Delivery」區段中,前往「Canary Configs」

  2. 按一下 [Add Configuration]

  3. 針對「Configuration Name」,請輸入 kayenta-test

  4. 在「Filter Templates」區段中,按一下 [Add Template]

  5. 在「Add Template」對話方塊中,新增以下的值,然後按一下 [OK]

    • 「Name」http_code
    • 「Template」metric.labels.http_code = "500" AND resource.label.pod_name = starts_with("${scope}")

    系統會在執行階段使用 Kayenta 應檢查指標的 GKE 部署名稱來填入 scope 變數。如果是基準,則為 sampleapp-baseline;而如果是初期測試,則為 sampleapp-canary

  6. 在「Metrics」區段中,按一下 [Add Metric]

  7. 在「Add Metric」對話方塊中,輸入以下的值,然後按一下 [OK]

    • 「Name」error_rate
    • 「Fail on」increase
    • 「Filter Template」http_code
    • 「Metric type」external.googleapis.com/prometheus/requests
  8. 在「Scoring」區段中,選取以下的值:

    • 「Marginal」75
    • 「Pass」95
    • 「Group 1」100
  9. 按一下 [Save Changes]。

將初期測試分析階段套用至管道

現在您已有初期測試設定,請修改現有的部署管道,以將「手動判斷」階段替換為使用這個設定的「初期測試分析」階段。

  1. 前往「Delivery」>「Pipelines」,並在「Canary Deploy」管道中按一下 [Configure]

    初期測試部署的設定按鈕的螢幕擷取畫面

  2. 按一下 [Add Stage]。

  3. 在「Type」中選取 [Canary Analysis]

  4. 在「Depends On」區段中,將新階段修改為取決於下列選擇:

    • 部署初期測試
    • 部署基準
  5. 在「Extended Params」區段中,按一下 [Add Field],並使用 perSeriesAligner 鍵和 ALIGN_RATE 值來新增參數。

  6. 請使用以下的值,填寫「Canary Analysis Configuration」區段:

    參數名稱 定義
    Config Name kayenta-test 您之前建立的初期測試設定名稱。
    Delay 0 提供給應用程式在執行分析前準備的時間。
    Interval 5 Kayenta 應用來執行單一統計資料分析的時間範圍。
    Baseline sampleapp-baseline Kayenta 應使用做為基準的 GKE 部署。
    Baseline Location 預設 基準存在的 GKE 命名空間。
    Canary sampleapp-canary Kayenta 應使用做為初期測試的 GKE 部署。
    Canary Location 預設 初期測試存在的 GKE 命名空間。
    Lifetime 0 小時 5 分 初期測試分析應持續的時間。
    Resource Type k8s_container 您用來執行初期測試分析的資源類型。這是用來查詢 Stackdriver Debugger API。
    Metrics Account kayenta-tutorial Kayenta 用來查詢指標的帳戶。這裡是您之前設定為可讓 Spinnaker 存取 {{stackdriver_name_short} 的 Google 帳戶。
    Storage Account kayenta-minio Kayenta 用來儲存所需檔案 (例如初期測試報告) 的帳戶。

  7. 在「Execution Options」區段中,選取 [Ignore the failure]。即使初期測試分析失敗,只要忽略失敗,仍可刪除基準和初期測試。在稍後的教學課程中,您將修改階段以將可能的初期測試失敗列入考量。

  8. 在管道的結構定義中,按一下 [Deploy to Production]

    管道的 [Deploy to Production] 按鈕的螢幕擷取畫面

  9. 在「Depends On」區段變更下列參數:

    1. 新增「Canary Analysis」
    2. 移除「Manual Judgment」
  10. 為確保只在初期測試分析成功的情況下才部署至實際工作環境,請變更「Conditional on Expression」參數。

    ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
    

  11. 在管道的結構定義中,按一下 [Delete Canary],然後在「Depends On」區段變更下列參數:

    1. 新增「Canary Analysis」
    2. 移除「Manual Judgment」
  12. 在管道的結構定義中,按一下 [Delete Baseline],然後變更「Depends On」區段。

    1. 新增「Canary Analysis」
    2. 移除「Manual Judgment」
  13. 為確保在初期測試分析失敗時整個管道也隨之失敗,請在管道的結構定義中按一下 [Successful deployment],然後在現有的先決條件中按一下「編輯」圖示。

    編輯成功部署的現有先決條件

    1. 將「Expression」變更為以下內容:

      ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
      

    2. 按一下 [Update]。

  14. 完成將「手動判斷」階段替換為新建立的「初期測試分析」階段的程序。

    1. 在管道的結構定義中,按一下 [Manual Judgment]
    2. 按一下 [Remove stage]
  15. 按一下 [Save Changes]。管道現在看起來會類似下圖:以視覺化方式呈現初期測試分析管道

測試新管道

現在自動化初期測試分析已設定完成,請測試管道以確保它可如預期般運作。

  1. 前往「Delivery」>「Pipelines」,在「Canary Deploy」管道或「Automated Canary Deploy」(如果使用的是 CLI) 中,按一下 [Start Manual Execution]

  2. 選取 [60] 的「Success Rate」,然後按一下 [Run]

  3. 如要查看初期測試分析目前的進度,請按一下 [Canary Analysis],然後按一下 [Task Status]。幾分鐘過後,「Canary Analysis」階段會失敗,因為實際工作環境中目前的成功率為 80。當「Canary Analysis」階段失敗時,請前往報告以取得這個初期測試分析。

    1. 按一下 [Canary Analysis]
    2. 按一下 [Canary Summary]
    3. 點選「報告」圖示。在報告頁面上,初期測試版本的錯誤率比基準版本的錯誤率高。

      初期測試分析摘要的報告圖示

  4. 請重複本節中的步驟,但請選取 [90] 的「Success Rate」,以成功進行初期測試分析。

清除所用資源

如要避免系統向您的 Google Cloud Platform 帳戶收取您在本教學課程中使用資源的相關費用:

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往專案頁面

  2. 在專案清單中選取要刪除的專案,然後按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

刪除資源

如要保留您在本教學課程中使用的 GCP 專案,請刪除個別的資源:

  1. 解除安裝 Spinnaker。

    kubectl delete -f https://spinnaker.io/downloads/kubernetes/quick-install.yml
    

  2. 刪除 GKE 叢集。

    gcloud container clusters delete kayenta-tutorial
    

  3. 出現要求您進行確認的提示時,請輸入 Y

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
解決方案