Spinnaker を使用した Google Kubernetes Engine でのカナリア分析の自動化

このチュートリアルでは、Google Kubernetes Engine(GKE)上に Spinnaker の自動カナリア分析機能を構成する方法について説明します。

はじめに

Spinnaker は、App Engine、GKE、Compute Engine、AWS、Azure などのさまざまなコンピューティング プラットフォームでアプリのデプロイを管理するために Netflix と Google が主導するオープンソースの継続的デリバリー システムです。Spinnaker を使用すると、カナリア デプロイを含む高度なデプロイ方法を実装できます。

カナリア デプロイでは、新しいバージョンのアプリを全面的に導入する前に、新しいバージョンを本番環境トラフィックのごく一部のみに組み込んでその動作を分析します。これにより、新しいバージョンをすべてのユーザーに公開する前にリスクを軽減できます。カナリア デプロイを使用するには、アプリの古いバージョンと新しいバージョンの動作を正確に比較する必要があります。両者の違いがわずかで、違いが現れるまで時間がかかることがあります。また、調べる指標が非常に多い場合もあります。アプリケーションのデプロイとテストの戦略でカナリア パターンの詳細をご覧ください。

このような問題を解決するため、Spinnaker には自動カナリア分析機能が用意されています。これは、モニタリング システムから両方のバージョンの指標を読み取り、統計分析を実行して比較を自動化します。このチュートリアルでは、GKE にデプロイされた、Cloud Monitoring によってモニタリングされるアプリで自動カナリア分析を行う方法について説明します。

Spinnaker は、複雑な導入シナリオを実践している組織を対象とした(専用のリリース エンジニアリング部門が設けられていることも多い)、高度なアプリ導入および管理プラットフォームです。このチュートリアルは、Spinnaker の使用経験がなくても実施できます。ただし、本番環境への自動カナリア分析の実装は一般に、Spinnaker の使用経験を持ち、リリースが安全かどうかを判断する方法を知っているチームが、強力なモニタリング システムを介して行います。

このチュートリアルについて

このチュートリアルで使用するアプリは、エラー率が環境変数で構成されたシンプルな「Hello World」です。このアプリ用のビルド済みの Docker イメージが用意されています。次の図に示すように、このアプリは Prometheus 形式で指標を公開します。Prometheus は Kubernetes コミュニティでよく利用されるオープンソースのモニタリング システムであり、Cloud Monitoring と互換性があります。

アプリのアーキテクチャ

目標

  • Spinnaker for Google Cloud をインストールする。
  • カナリア デプロイなしでアプリを GKE にデプロイする。
  • アプリのカナリア デプロイを構成し、実行する。
  • 自動カナリア分析を構成する。
  • 自動カナリア分析をテストする。

料金

始める前に

  1. Google Cloud プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  2. プロジェクトに対する課金を有効にします。

    課金を有効にする

  3. ワークスペースを作成します。

    Monitoring ドキュメントに移動

このチュートリアルを終了した後、作成したリソースを削除すれば、それ以上の請求は発生しません。詳細については、クリーンアップをご覧ください。

Cloud Shell を使用して Spinnaker for Google Cloud をデプロイする

このセクションでは、チュートリアルを実施するために必要なインフラストラクチャを構成します。このチュートリアルでは、Cloud Shell からすべてのターミナル コマンドを実行します。

Spinnaker for Google Cloud を使用すると、Google Cloud 向けに最適化され、本番環境に対応した構成で Spinnaker をセットアップして管理できます。Spinnaker for Google Cloud は、Google Cloud で Spinnaker を実行するために必要な多くのリソース(GKE、Memorystore、Cloud Storage バケット、サービス アカウント)を設定し、Spinnaker を Cloud Build などの関連サービスと統合して、Spinnaker のインストールに使用する Cloud Shell ベースの管理環境をヘルパーや spinhal などの一般的なツールとともに提供します。

  1. Cloud Shell で Spinnaker for Google Cloud を開きます。これにより、Cloud Shell 環境に Spinnaker for Google Cloud リポジトリのクローンが作成され、詳細なインストール手順が起動します。

    Cloud Shell に移動

  2. Spinnaker for Google Cloud をインストールします。

    PROJECT_ID=${DEVSHELL_PROJECT_ID} ~/cloudshell_open/spinnaker-for-gcp/scripts/install/setup_properties.sh
        ~/cloudshell_open/spinnaker-for-gcp/scripts/install/setup.sh
        
  3. Monitoring-Prometheus 統合プラグインをインストールします。

    export KUBE_NAMESPACE=prometheus
        export GCP_PROJECT=$DEVSHELL_PROJECT_ID
        export DATA_DIR=/prometheus/
        export DATA_VOLUME=prometheus-storage-volume
        export SIDECAR_IMAGE_TAG=0.7.0
        export GCP_REGION=us-east1-c
        export KUBE_CLUSTER=spinnaker-1
    
        kubectl create namespace ${KUBE_NAMESPACE}
        kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-stackdriver-gke/master/prometheus-service-account.yaml
        kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-stackdriver-gke/master/prometheus-configmap.yaml
        curl -sS https://raw.githubusercontent.com/GoogleCloudPlatform/prometheus-stackdriver-gke/master/gke-prometheus-deployment.yaml | \
          envsubst | \
          kubectl apply -f -
        
  4. Cloud Shell を再起動して、新しい環境設定を読み込みます。

    Cloud Shell の再起動メニュー オプション。

  5. Spinnaker に接続します。

    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/connect_unsecured.sh
        
  6. Cloud Shell で [ウェブでプレビュー] アイコンを選択し、[ポート 8080 でプレビュー] を選択します。

    メニューの Cloud Shell 再起動オプション

Spinnaker を使用したアプリのデプロイ

このセクションでは、Spinnaker を構成して、GKE クラスタにアプリをデプロイします。

Spinnaker アプリを作成する

デプロイする前に、Spinnaker のアプリを作成してください。

  1. Spinnaker で [Actions] を選択し、[Create Application] を選択します。

    [Create Application] プルダウン メニュー

  2. [New Application] ダイアログで、次の値を入力します。

    • Name: sampleapp
    • Owner Email: [example@example.com]

  3. [Create] を選択します。

これで Spinnaker の sampleapp に入りました。まだ何も構成していないため、ほとんどのタブは空です。

デプロイ パイプラインを作成して実行する

このセクションではまず、successRate パラメータを受け取る単純な Spinnaker パイプラインを使用してアプリをデプロイし、4 つの Pod を持つ GKE デプロイを作成します。これらの Pod は、successRate パラメータに対応するレートでランダムにエラーをスローします。このチュートリアルでは、100 - successRate のレートで 500 エラーをスローします。

  1. Cloud Shell で、用意された JSON ファイルを使用してパイプラインを作成します。次のコマンドは、パイプラインの JSON 定義を Spinnaker API に直接 post します。

    cd ~
        wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/simple-deploy.json
        sed "s/my-kubernetes-account/spinnaker-install-account/g" simple-deploy.json > updated-simple-deploy.json
        spin pipeline save --file updated-simple-deploy.json
        
  2. Spinnaker の [Pipelines] セクションに、Simple deploy というパイプラインが表示されます。これが表示されない場合、ページを再読み込みします。[Start Manual Execution] を選択してください。

    Simple deploy パイプラインの手動実行の開始

  3. [Confirm Execution] ウィンドウで、[Success Rate] として 70 を選択し、[実行] を選択します。数秒後、パイプラインによってアプリと 4 つのポッドの構成がデプロイされます。

  4. Cloud Shell で、チュートリアルが終了するまでの間新しいアプリにリクエストを送信するポッドを作成します。

    kubectl -n default run injector --generator=run-pod/v1 --image=alpine:3.10 -- \
            /bin/sh -c "apk add --no-cache 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% の成功率でアプリをデプロイしたため、アプリが正しく動作しないことが最初からわかっています。

このアプリは、Monitoring に取り込まれる Prometheus 形式の指標を持つ /metrics エンドポイントを公開します。このセクションでは、これらの指標を Monitoring で可視化します。

  1. Google Cloud Console で [モニタリング] に移動します。

    [モニタリング] に移動

  2. ナビゲーション パネルに Metrics Explorer が表示されている場合は、 [Metrics Explorer] を選択します。それ以外の場合は、 [リソース] を選択して [Metrics Explorer] を選択します。

  3. [指標] タブが選択されていることを確認します。

  4. [Find resource type and metric] というラベルが付いたチェックボックスを選択し、external.googleapis.com/prometheus/requests と入力します。

  5. グラフを見やすくするために、[Group By] フィールドに http_code を入力します。

    次のグラフでは、アプリが応答した HTTP リクエストの割合が HTTP ステータス コード別にグループ化されています。

    アプリが応答した HTTP リクエストのグラフ

    Monitoring にデータがない場合や external.googleapis.com/prometheus/requests の指標が見つからない場合は、Monitoring でデータが取り込まれるまで数分待ってから、Metrics Explorer を再読み込みしてください。

    グラフからわかるように、アプリの現在のエラー率は約 30%(予測どおり)であり、許容されないレベルにあります。チュートリアルの残りの部分では、カナリア デプロイ パイプラインと自動分析をセットアップし、このようにエラー率の高いアプリがデプロイされないようにする方法を説明します。

カナリア デプロイの作成

このセクションでは、カナリア デプロイ パイプラインを自動分析なしで作成し、アプリの新しいバージョンを本番環境に全面的にデプロイする前に新しいバージョンのテストを行います。次の図は、このパイプラインのステージの全体図を示しています。

カナリア デプロイ パイプラインのステージの図

  • ステップ 0: Simple Deploy パイプラインと同様に、このパイプラインも Success Rate パラメータを入力として受け取ります。この新しいパイプラインは、このパラメータを使用してさまざまな成功率をシミュレートします。これはパイプラインの Configuration です。

  • ステップ 1: Find Baseline Version ステージは、Simple Deploy パイプラインの最新の実行から、本番環境で実行されているアプリの現在のバージョンを取得します。このチュートリアルでは、現在デプロイされているアプリの成功率を取得します。

    Find Baseline Version ステージと並行して、Deploy Canary Config ステージで、アプリのカナリア バージョンの新しい成功率構成がデプロイされます。

  • ステップ 2: Deploy Canary ステージと Deploy Baseline ステージでは、比較のために新しいカナリア バージョンとベースライン バージョンの 2 つのバージョンがデプロイされます。カナリア バージョンは Deploy Canary Config で作成された構成を使用するのに対し、ベースライン バージョンは本番環境バージョンで使用されている構成を使用します。

  • ステップ 3: Manual Judgment ステージではパイプラインが停止し、手動で続行を指示するまで先に進みません。このステージで、カナリア バージョンが正しく動作するかどうかを確認できます。

  • ステップ 4: Manual Judgment ステージからパイプラインを続行した後、Delete Canary ステージと Delete Baseline ステージでインフラストラクチャがクリーンアップされます。

    クリーンアップと並行して、Deploy to Production ステージが開始され、最初に指定したときと同じ Success Rate パラメータを使用して Simple Deploy パイプラインがトリガーされます。カナリアでテストした同じバージョンのアプリが本番環境にデプロイされます。

    Deploy to Production ステージは、Manual Judgment ステージで手動で「続行」を選択した場合にのみトリガーされます。

  • ステップ 5: 最後に、Successful Deployment ステージでパイプライン全体が成功したことが確認されます。ここでは、Manual Judgment ステージで本番環境へのデプロイを許可したことが確認されます。このステージは、Deploy to Production、Delete Canary、Delete Baseline の各ステージが正常に実行された場合にのみ実行されます。

これで、Canary Deploy パイプラインを作成して実行できます。

  1. Canary Deploy パイプラインを作成するには、次のコマンドを実行して Simple deploy パイプラインの ID を取得し、Canary Deploy パイプラインに挿入します。

    cd ~
        wget https://raw.githubusercontent.com/spinnaker/spinnaker/master/solutions/kayenta/pipelines/canary-deploy.json
        export PIPELINE_ID=$(spin pipeline get -a sampleapp -n 'Simple deploy' | jq -r '.id')
        jq '(.stages[] | select(.refId == "9") | .pipeline) |= env.PIPELINE_ID | (.stages[] | select(.refId == "8") | .pipeline) |= env.PIPELINE_ID' canary-deploy.json | \
            sed "s/my-kubernetes-account/spinnaker-install-account/g" > updated-canary-deploy.json
            spin pipeline save --file updated-canary-deploy.json
        
  2. Spinnaker に Canary Deploy パイプラインが表示されない場合は、[sampleapp] を再読み込みして [Pipelines] を選択します。

  3. Canary Deploy パイプラインを起動するには:

    1. [Start Manual Execution] を選択します。
    2. [Success Rate] として 80 を選択します。
    3. [Run] を選択します。
  4. パイプラインが Manual Judgement ステージに到達した際、カナリア バージョンとベースライン バージョンを比較する必要があるため、[Continue] を選択しないでください。

    カナリア パイプラインの Manual judgement ステージ

  5. Cloud Shell で kubectl -n default get pods コマンドを実行して、canarybaseline というラベルの付いた新しい 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. Google Cloud Console で [モニタリング] に移動します。

    [モニタリング] に移動

  7. ナビゲーション パネルに Metrics Explorer が表示されている場合は、 [Metrics Explorer] を選択します。それ以外の場合は、 [リソース] を選択して [Metrics Explorer] を選択します。

  8. [指標] タブが選択されていることを確認します。

  9. ベースラインとカナリアの両方のエラー率を表示するには、次のパラメータを指定します。

    1. 指標: external.googleapis.com/prometheus/requests
    2. フィルタ:
      1. http_code500 と等しいです
      2. version は(!=prod と異なります

    Monitoring のデータの一部に不足がある場合は、そのデータが表示されるまで数分待ちます。

  10. カナリア バージョン(次のグラフの紫色)とベースライン バージョン(次のグラフの青色)を比較します。実際のグラフの色はこれとは異なる場合があります。このチュートリアルでは、カナリア バージョンのエラー率はベースライン バージョンよりも低くなります。したがって、カナリア バージョンを本番環境に全面的にデプロイしても安全です。カナリア バージョンのエラー率の方が高い場合は、この段階でデプロイを中止し、アプリを修正します。

    カナリア バージョンとベースライン バージョンのエラー率を比較するグラフ

  11. Spinnaker の [Manual Judgement] ダイアログで、[Continue] を選択します。

  12. デプロイが完了したら、[モニタリング] に戻ります。

    [モニタリング] に移動

  13. ナビゲーション パネルに Metrics Explorer が表示されている場合は、 [Metrics Explorer] を選択します。それ以外の場合は、 [リソース] を選択して [Metrics Explorer] を選択します。

  14. [指標] タブが選択されていることを確認します。

  15. [Find resource type and metric] のボックスを選択して、リソースと指標をメニューから選択するか、リソースと指標の名前を入力します。次の情報を使用して、このテキスト ボックスのフィールドに入力します。

    1. [指標] で external.googleapis.com/prometheus/requests を選択または入力します。
    2. [Group By] フィールドに http_code と入力します。

    次のグラフでは、アプリが応答した HTTP リクエストの割合が HTTP ステータス コードによって分割されています。

    HTTP リクエストの割合を比較するグラフ

    このグラフは、本番、ベースライン、カナリアのすべてのポッドの HTTP コード 200 および 500 の割合を示します。カナリア バージョンの方がエラー率が低かったため、このバージョンを本番環境にデプロイしました。デプロイ中に短時間でリクエストの総数が若干少なくなり、その後全体のエラー率が低下したことがわかります。これはカナリア バージョンが本番環境に正しくデプロイされたことを示します。

カナリア分析の自動化

カナリア デプロイは便利ですが、現在の実装では手動でデプロイの可否を判断しなければなりません。全面的にデプロイする前に、カナリアが期待どおりに動作していることを人手を介して確認する必要があります。また、カナリアとベースラインの違いは常に明確であるとは限りません。

カナリア分析を自動化することをおすすめします。自動化すると、自ら分析作業を行わなくて済みます。また、自動化された統計分析の方が、人間が一連の指標に潜む問題を検出するよりも適しています。このセクションでは、Manual Judgement ステージを自動カナリア分析に置き換えます。

カナリアのサポートを有効にする

まず、Spinnaker で、Kayenta と呼ばれる自動カナリア分析機能を構成します。Kayenta の構成には Halyard を使用します。これは Spinnaker の構成やデプロイに使用するのと同じツールです。

  1. Monitoring をバックエンドとして使用するように Kayenta を構成します。

    hal config canary google enable
        hal config canary google account add kayenta-tutorial --project $DEVSHELL_PROJECT_ID
        hal config canary google edit --stackdriver-enabled=true
        
  2. 新しい構成を適用します。

    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/push_and_apply.sh
        

    デプロイが完了するまで数分かかります。

自動カナリア分析機能を構成する

Kayenta が有効になったので、次に sampleapp で Kayenta を構成します。

  1. Spinnaker で [Config] を選択します。

  2. [Features] セクションで [Canary] を選択し、[Save Changes] を選択します。

    パイプラインの機能のスクリーンショット

カナリア構成を作成する

Spinnaker の自動カナリア分析は、さまざまな指標に対する統計テストを実行し、スコアを出力します。このスコアは範囲が 0~100 で、ベースラインとカナリアを比較した結果合格基準を満たしていた、または満たしていなかった指標の数を表します。指標を複数のグループにまとめ、グループごとに重みを変えることで、スコアに影響を与えることができます。分析のスコアに応じて、デプロイを進めるかどうかを決定できます。このチュートリアルのように指標を 1 つしか使わない場合、スコアは 0(不合格)と 100(合格)のどちらかになります。

アプリには複数のカナリア構成を設定でき、1 つのカナリア構成を複数のアプリで共有できます。カナリア構成は、次の 2 つの主要な要素からなります。

  • 分析する指標のセット(複数のグループにまとめることができます)。
  • スコアの下限しきい値と合格しきい値。

デプロイ パイプラインでは、Canary Analysis ステージでカナリア構成が使用されます。このステージでは、カナリアランを複数回実行できます。いずれかのランのスコアが下限しきい値を下回った場合、このステージは中止され、他のランは実行されません。ステージ全体が合格とみなされるには、最後のランのスコアが合格しきい値を上回る必要があります。

カナリア構成を作成する手順は次のとおりです。

  1. カナリアが有効になったので、[Pipelines] セクションは [Delivery] に置き換えられます([Delivery] セクションが表示されていない場合は Spinnaker を再読み込みしてください)。[Delivery] セクションで、[Canary Configs] に移動します。

  2. [構成を追加] を選択します。

  3. [構成名] に kayenta-test と入力します。

  4. [指標] セクションで [指標の追加] を選択します。

  5. [指標の追加] ダイアログで、次の値を入力して [OK] を選択します。

    • 名前: error_rate
    • Fail on: increase
    • リソースの種類: k8s_container
    • 指標タイプ: external.googleapis.com/prometheus/requests
    • 整列指定子: ALIGN_RATE
    • フィルタ テンプレート: [新規作成] を選択します。

      • 新しいフィルタ テンプレートの [名前] に http_code と入力します。
      • 新しいフィルタ テンプレートの [テンプレート] に metric.labels.http_code = "500" AND resource.label.pod_name = starts_with("${scope}") と入力します。
      • [保存] を選択します。
  6. [Scoring] セクションで、Group 1100 に設定します。

  7. [Save Changes] を選択します。

パイプラインにカナリア分析ステージを追加する

カナリア構成を作成したら、次に既存のデプロイ パイプラインの Manual Judgment ステージを、この構成を使用する Canary Analysis ステージに置き換えます。

  1. [Delivery] > [Pipelines] に移動し、[Canary Deploy] パイプラインの [Configure] を選択します。

    カナリア デプロイの構成ボタンのスクリーンショット

  2. [Add Stage] を選択します。

  3. [Type] で [Canary Analysis] を選択します。

  4. [Depends On] セクションで、新しいステージの依存先を次のステージに設定します。

    • Deploy Canary
    • Deploy Baseline
  5. [Canary Analysis Configuration] セクションで、次の値を入力します。

    パラメータ名 定義
    Analysis Type リアルタイム(手動) カナリアとベースラインが自動的に作成される自動モードは、Kubernetes ではまだ使用できません。
    Config Name kayenta-test 前のステップで作成したカナリア構成の名前。
    Lifetime 0 時間 5 分 カナリア分析の存続時間。
    Delay 0 分析を行う前にアプリをウォームアップする時間。
    Interval 5 1 回の統計分析を実行するために Kayenta が使用する時間枠。
    ベースライン sampleapp-baseline Kayenta がベースラインとして使用する GKE デプロイ。
    Baseline Location default ベースラインが存在する GKE 名前空間。
    Canary sampleapp-canary Kayenta がカナリアとして使用する GKE デプロイ。
    Canary Location default カナリアが存在する GKE 名前空間。
    Marginal 75 カナリアの下限合格のしきい値スコア。
    Pass 95 カナリアの全体合格のしきい値スコア。
  6. [Execution Options] セクションで、[Ignore the failure] を選択します。カナリア分析が失敗した場合でもベースラインとカナリアを破棄できるように、失敗を無視します。このチュートリアルの後の方で、カナリアが失敗する可能性を考慮に入れてステージを変更します。

  7. パイプラインの線図で、[Deploy to Production] を選択します。

    パイプラインの [Deploy to Production] ボタンのスクリーンショット

  8. [Depends On] セクションを次のように変更します。

    1. [Canary Analysis] を追加します。
    2. [Manual Judgment] を削除します。
  9. カナリア分析が成功した場合にのみ本番環境にデプロイされるようにするため、[Conditional on Expression] パラメータを変更します。

    ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
        
  10. パイプラインの線図で、[Delete Canary] を選択し、[Depend On] セクションを次のパラメータに変更します。

    1. [Canary Analysis] を追加します。
    2. [Manual Judgment] を削除します。
  11. パイプラインの線図で [Delete Baseline] を選択し、[Depends On] セクションを変更します。

    1. [Canary Analysis] を追加します。
    2. [Manual Judgment] を削除します。
  12. カナリア分析が失敗した場合にパイプライン全体が失敗するようにするため、パイプラインの線図で [Successful deployment] を選択し、既存の前提条件の [Edit] アイコンを選択します。

    デプロイの成功を示す既存の前提条件を編集する

    1. [Expression] を次のように変更します。

      ${ #stage('Canary Analysis')['status'].toString() == 'SUCCEEDED'}
          
    2. [Update] を選択します。

  13. 最後に、Manual Judgement ステージを新しく作成した Canary Analysis ステージに置き換えます。

    1. パイプラインの線図で、[Manual Judgment] を選択します。
    2. [Remove stage] を選択します。
  14. [Save Changes] を選択します。

    これでパイプラインは次の図のようになります。

    カナリア分析パイプラインの可視化

新しいパイプラインをテストする

自動 Canary Analysis の構成が完了したので、次にパイプラインをテストして期待どおりに動作することを確認します。

  1. [Delivery] > [Pipelines] に移動し、[Canary Deploy] パイプライン、または Automated Canary Deploy で CLI を使用している場合は、Start Manual Execution を選択します。

  2. [Success Rate] として 60 を選択し、[Run] を選択します。

  3. カナリア分析の現在の進行状況を確認するには、[Canary Analysis] を選択し、[Task Status] を選択します。数分後、Canary Analysis ステージは失敗します。これは本番環境の現在の成功率が 80 であるためです。Canary Analysis ステージが失敗したら、このカナリア分析のレポートに移動します。

    1. [Canary Analysis] を選択します。
    2. [Canary Summary] を選択します。
    3. [Report] アイコンをクリックします。

      レポートページでは、カナリア バージョンのエラー率がベースライン バージョンよりも高くなっています。

      カナリア分析サマリーのレポート アイコン

  4. このセクションの手順をもう一度繰り返しますが、今度はカナリア分析を成功させるために [Success Rate] で 90 を選択します。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

  1. Cloud Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

リソースの削除

このチュートリアルで使用した Google Cloud プロジェクトを残しておく場合は、個々のリソースを削除します。

  1. GKE クラスタを削除します。

    gcloud container clusters delete spinnaker-1
        
  2. 確認のプロンプトが表示されたら、「Y」と入力します。

次のステップ