Spinnaker を使用したアプリの管理と複数の GKE クラスタへのデプロイ

このチュートリアルでは、Spinnaker を Google Kubernetes Engine(GKE)クラスタにデプロイし、アプリのデプロイ用に複数の Kubernetes クラスタを登録する方法について説明します。このチュートリアルは、サービスとアプリを本番環境に安全にロールアウトすることを担う DevOps エンジニアとサービス オペレータを対象としています。Kubernetes の基本的な知識が必要です。CI / CD のコンセプトを知っていることは、必須ではありませんが、有益です。

Spinnaker は、ソフトウェアの変更をリリースするための、オープンソースでマルチクラウドに対応する継続的デリバリー プラットフォームです。Spinnaker は、次の 2 つの基本機能セットを提供します。

  • アプリのデプロイ
  • アプリの管理

継続的デリバリー ワークフローの構築および管理には Spinnaker のアプリデプロイ機能を使用します。クラウド リソースの表示および管理には Spinnaker のアプリの管理機能を使用します。このチュートリアルでは、両方の機能について詳しく説明します。

このチュートリアルでは、Google Cloud プロジェクト内に次のアーキテクチャを構築します。

アプリを管理およびデプロイするためのアーキテクチャ。

アプリをインストールする 2 つの GKE クラスタ(westeast)を作成します。Spinnaker for Google Cloud Platform を使用して、別の GKE クラスタ(spinnaker-1)に Spinnaker をインストールします。

また、Container Registry を使用してコンテナ イメージを保存し、Cloud Storage バケットを使用して Spinnaker 構成、パイプライン、Kubernetes マニフェスト(YAML)ファイルを保存します。

このチュートリアルでは GKE クラスタを使用しますが、Spinnaker は、オンプレミス、パブリック、プライベートのクラウド インフラストラクチャなど、あらゆる環境で実行されている Kubernetes クラスタにアプリをデプロイできます。

次の図は、このチュートリアルで構築する継続的デリバリー パイプラインを示しています。

継続的デリバリー パイプライン。

このパイプラインで、デベロッパーはコードを変更し、Git タグを作成して、GitHub リポジトリに変更を push します。新しい Git タグが検出されると、Cloud Build は Docker イメージをビルドし、単体テストを実行して、そのイメージを Spinnaker に push します。イメージが検出されると、Spinnaker によってそのイメージがカナリアにデプロイされ、カナリア デプロイの機能テストが実行されます。その後、デプロイを手動で承認して本番環境にデプロイします。

目標

  • GKE クラスタ(spinnaker-1)に Spinnaker for Google Cloud Platform をインストールします。
  • アプリをデプロイする 2 つの GKE クラスタ(westeast)を作成します。
  • west クラスタと east クラスタを Spinnaker に追加します。
  • west クラスタと east クラスタにデプロイするパイプラインを Spinnaker で作成します。
  • パイプラインをトリガーしてアプリを west クラスタと east クラスタにデプロイします。

料金

このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    [プロジェクトの選択] ページに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. GKE, Cloud Build, and Cloud Source Repositories API を有効にします。

    API を有効にする

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

環境設定

このチュートリアルでは、Cloud Shell からすべてのターミナル コマンドを実行します。

このセクションでは、チュートリアルに必要なインフラストラクチャを構成します。

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

Spinnaker for Google Cloud Platform を使用すると、Google Cloud 向けに最適化され、本番環境に対応した構成で Spinnaker をセットアップして管理できます。Spinnaker for Google Cloud Platform は、次のことを行います。

  • リソース(GKE、Memorystore、Cloud Storage バケット、サービス アカウント)を設定します。
  • Spinnaker を Cloud Build などの関連サービスと統合します。
  • Spinnaker インストール用の Cloud Shell ベースの管理環境を提供します。spinhal などのヘルパーや共通ツールも提供されます。

  1. Cloud Shell で Spinnaker for Google Cloud Platform を開き、Spinnaker for Google Cloud Repository のクローンを Cloud Shell 環境に作成して、詳細なインストール手順を開始します。

    Cloud Shell で開く

    Cloud Shell が開き、Spinnaker-for-gcp リポジトリのクローンが作成されたことを示す次のメッセージが表示されます。

    +-------------------------------------------------------------------------------------------------------+
    |                                                                                                       |
    | To reopen the installation instructions in the right-hand pane at any time, enter:                    |
    |                                                                                                       |
    | cloudshell launch-tutorial ~/cloudshell_open/spinnaker-for-gcp/scripts/install/provision-spinnaker.md |
    |                                                                                                       |
    +-------------------------------------------------------------------------------------------------------+
    
  2. このチュートリアルに関連するすべてのタスクを実行する作業ディレクトリ($WORKDIR)を作成して移動します。

    mkdir $HOME/spinnaker
    cd $HOME/spinnaker
    WORKDIR=$(pwd)
    
  3. kubectxkubens をインストールします。

    git clone https://github.com/ahmetb/kubectx $WORKDIR/kubectx
    export PATH=$PATH:$WORKDIR/kubectx
    

    これらのツールを使用すると、コンテキストと名前空間をすばやく切り替えることができるため、複数の Kubernetes クラスタを簡単に操作できます。

  4. Git を構成します。以前に Git を構成したことがある場合は、この手順をスキップできます。

    git config --global user.email `gcloud config get-value account`
    git config --global user.name ${USER}
    
  5. プロジェクトとデフォルト ゾーンを構成します。

    gcloud config set project PROJECT_ID
    export ZONE=us-east1-c
    gcloud config set compute/zone ${ZONE}
    

    PROJECT_ID は、このチュートリアルで選択または作成したプロジェクトで置き換えます。

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

    PROJECT_ID=${DEVSHELL_PROJECT_ID}
    ~/cloudshell_open/spinnaker-for-gcp/scripts/install/setup_properties.sh
    ~/cloudshell_open/spinnaker-for-gcp/scripts/install/setup.sh
    

    このインストール コマンドが完了するまで約 20 分かかります。次のような出力が表示されたら、インストールは完了です。

    Installation complete. Sign up for Spinnaker for Google Cloud updates and announcements: ...
    

    警告は無視してかまいません。このチュートリアルには影響しません。

GKE クラスタを作成する

  1. Spinnaker がアプリをデプロイできる GKE クラスタ(westeast)を作成します。

    gcloud container clusters create west --zone us-west2-b \
        --num-nodes 3 --machine-type n1-standard-2 --async
    gcloud container clusters create east --zone us-east4-a \
        --num-nodes 3 --machine-type n1-standard-2
    

    両方のクラスタが作成されるまで数分かかります。

  2. クラスタが実行されていることを確認します。

    gcloud container clusters list
    

    出力は次のようになります。

    NAME         LOCATION    MASTER_VERSION  MASTER_IP        MACHINE_TYPE   NODE_VERSION    NUM_NODES  STATUS
    spinnaker-1  us-east1-c  1.14.10-gke.32  104.196.198.217  n1-highmem-4   1.14.10-gke.32  3          RUNNING
    east         us-east4-a  1.14.10-gke.24  35.245.163.62    n1-standard-2  1.14.10-gke.24  3          RUNNING
    west         us-west2-b  1.14.10-gke.24  34.94.253.224    n1-standard-2  1.14.10-gke.24  3          RUNNING
    
  3. west クラスタと east クラスタに接続して、kubeconfig ファイルにエントリを生成します。

    export PROJECT_ID=$(gcloud info --format='value(config.project)')
    gcloud container clusters get-credentials east --zone us-east4-a --project ${PROJECT_ID}
    gcloud container clusters get-credentials west --zone us-west2-b --project ${PROJECT_ID}
    

    kubeconfig ファイルは、クラスタごとに userscontexts を作成することによって、クラスタに対する認証を作成するために使用されます。kubeconfig ファイルを作成すると、クラスタ間でコンテキストをすばやく切り替えられるようになります。

Spinnaker への Kubernetes クラスタの追加

このセクションでは、アプリをデプロイする west クラスタと east クラスタを spinnaker-1 クラスタに追加します。

Spinnaker に west クラスタを追加する

  1. west クラスタを追加します。

    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/add_gke_account.sh
    
  2. プロンプトが表示されたら、west クラスタのコンテキストを入力します。プロンプトの上に 3 つのクラスタのコンテキストが表示され、コピーして貼り付けることができます。

    Please enter the context you wish to use to manage your
    GKE resources: gke_PROJECT_ID_ZONE_west
    
  3. プロジェクト ID とアカウント名のデフォルト オプション(west-acct)を選択します。

Spinnaker に east クラスタを追加する

  1. east クラスタを追加します。

    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/add_gke_account.sh
    
  2. プロンプトが表示されたら、east クラスタのコンテキストを入力します。プロンプトの上に 3 つのクラスタのコンテキストが表示され、コピーして貼り付けることができます。

    Please enter the context you wish to use to manage your
    GKE resources: gke_PROJECT_ID_ZONE_east
    
  3. プロジェクト ID とアカウント名のデフォルト オプション(east-acct)を選択します。

Spinnaker に変更を push して適用する

両方のクラスタを Spinnaker の構成に追加したので、更新された構成を Spinnaker に push します。

  • Kubernetes コンテキストを Spinnaker クラスタに変更して、変更を push して適用します。

    kubectx gke_${DEVSHELL_PROJECT_ID}_${ZONE}_spinnaker-1
    ~/cloudshell_open/spinnaker-for-gcp/scripts/manage/push_and_apply.sh
    

Spinnaker UI に接続する

  1. Spinnaker に接続する前に、すべての Pod が実行されていることを確認します。

    kubectl get pods -n spinnaker
    

    出力は次のようになります。

    NAME                               READY   STATUS    RESTARTS   AGE
    spin-clouddriver-d4d64f877-x7wlv   1/1     Running   0          117s
    spin-deck-66768664d7-6b9ws         1/1     Running   0          26m
    spin-echo-8b4c96f5f-2dn5b          1/1     Running   0          2m
    spin-front50-7d6d55d654-zqknw      1/1     Running   0          26m
    spin-gate-69c4f8c589-fss4r         1/1     Running   0          26m
    spin-igor-66b4fd7b47-7cf45         1/1     Running   0          26m
    spin-kayenta-868c774c59-xtlts      1/1     Running   0          26m
    spin-orca-6cbfffddfb-rnhpj         1/1     Running   0          26m
    spin-rosco-755b495594-jvh85        1/1     Running   0          26m
    
  2. Spinnaker に接続します。

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

    [ポート 8080 でプレビュー] が選択された状態でのスクリーンショット。

    ようこそ画面に続いて、Spinnaker UI が表示されます。

    Spinnaker UI。

  4. 上部のメニューで [Applications] をクリックします。

    3 つのアカウントを示すスクリーンショット。

    このスクリーンショットは、Kubernetes アプリのエントリを示しています。Kubernetes のアカウント リストには 3 つのクラスタすべてが表示されます。Spinnaker では、これらをアカウントと呼びます。

    • west-acct: west クラスタ
    • east-acct: east クラスタ
    • spinnaker-install-acct: spinnaker-1 クラスタ(Spinnaker がインストールされている場所)

Spinnaker は、3 つのクラスタ(アカウント)すべてにアプリをデプロイできるようになりました。

Docker イメージのビルド

このセクションでは、アプリのソースコードの変更を検出し、変更されたコードを含む Docker イメージをビルドしてから、イメージを Container Registry に push するように Cloud Build を構成します。

ソースコード リポジトリを作成する

  1. Cloud Shell で、サンプル ソースコードをダウンロードして展開します。

    cd ${WORKDIR}
    git clone https://github.com/viglesiasce/continuous-delivery-spinnaker-gke sample-app
    cd sample-app
    
  2. 元の Git リポジトリを削除します。

    rm -rf .git
    
  3. ソースコード リポジトリへの最初の commit を行います。

    git init
    git add .
    git commit -m "Initial commit"
    
  4. コードをホストするリポジトリを作成します。

    gcloud source repos create sample-app
    git config credential.helper gcloud.sh
    
  5. 新しいリポジトリをリモートとして追加し、リモート リポジトリのプライマリ(master)ブランチにコードを push します。

    git remote add origin https://source.developers.google.com/p/$PROJECT_ID/r/sample-app
    git push origin master
    
  6. コンソールにソースコードが表示されることを確認します。

    [ソースコード] ページに移動

ビルドトリガーを構成する

このセクションでは、Git タグがソース リポジトリに push されるたびに Docker イメージをビルドして push するように Cloud Build を構成します。次の図に示すように、Cloud Build はソースコードを自動的にチェックアウトして、リポジトリ内の Dockerfile から Docker イメージをビルドし、そのイメージを Container Registry に push します。

Git タグを push するたびに Docker イメージのビルドと push を行うように Cloud Build を構成する。

  1. Cloud Shell でトリガーを作成します。

    gcloud beta builds triggers create cloud-source-repositories \
        --repo=sample-app \
        --tag-pattern="v.*" \
        --build-config=cloudbuild.yaml
    

    出力は次のようになります。

    Created [https://cloudbuild.googleapis.com/v1/projects/qwiklabs-gcp-02/triggers/a6c27ebd-2972-42e9-b4c8-7ab7a740ebc3].
    NAME     CREATE_TIME                STATUS
    trigger  2020-03-25T18:50:03+00:00
    

これ以降、文字「v」が先頭に付いている Git タグをソースコード リポジトリに push すると、Cloud Build が自動的にアプリをビルドして、Docker イメージとして Container Registry に push します。

Spinnaker で使用するために Kubernetes マニフェストを準備する

Spinnaker は、クラスタにデプロイするために Kubernetes マニフェストにアクセスする必要があります。マニフェストを Spinnaker パイプライン(ステージ)に直接貼り付けるか、外部ストレージを使用してこれらのマニフェストを保存できます。マニフェストを外部に保存する場合、通常はオブジェクト ストアを使用します。オブジェクト ストアを Kubernetes マニフェストの信頼できるソースとして使用する利点の 1 つとして、バケット内のすべてのファイル(マニフェスト)の変更をバージョンとして追跡するバージョニング機能を利用できます。

このセクションでは、Cloud Build の継続的インテグレーション(CI)プロセス中にマニフェストが設定される Cloud Storage バケットを作成します。マニフェストが Cloud Storage に保存されると、Spinnaker はパイプラインの実行中にマニフェストをダウンロードして適用できます。

  1. Cloud Shell で、バケットを作成し、バケットに対するバージョニングを有効にして、マニフェストの履歴を取得できるようにします。

    cd $WORKDIR/sample-app
    export PROJECT_ID=$(gcloud info --format='value(config.project)')
    gsutil mb -l us-west2 gs://$PROJECT_ID-kubernetes-manifests
    gsutil versioning set on gs://$PROJECT_ID-kubernetes-manifests
    
  2. Kubernetes デプロイメント マニフェストに正しいプロジェクト ID を設定し、変更をリポジトリへ commit します。

    sed -i s/PROJECT/$PROJECT_ID/g k8s/deployments/*
    git commit -a -m "Set project ID"
    

イメージをビルドする

  1. Git タグを作成してリポジトリに push することで、最初のイメージを push します。

    git tag v1.0.0
    git push --tags
    
  2. [ビルド履歴] ページに移動し、ビルドがトリガーされたことを確認します。

    [ビルド履歴] に移動

    ビルドがトリガーされていない場合は、前のセクションでトリガーを正しく構成したことを確認します。

Spinnaker デプロイ パイプラインの構成

これでイメージが自動的にビルドされるようになりました。イメージは Kubernetes クラスタにデプロイする必要があります。次のパイプラインは、Spinnaker を介して west クラスタと east クラスタの両方にデプロイします。

Spinnaker を介して west クラスタと east クラスタにデプロイするパイプライン。

マルチクラスタ デプロイ パイプラインを作成する

  1. Cloud Shell で、spin を使用して Spinnaker 内にアプリを作成します。

    cd $HOME
    ./spin application save --application-name sample \
        --owner-email example@example.com \
        --cloud-providers kubernetes \
        --gate-endpoint http://localhost:8080/gate
    

    次のような出力が表示されます。

    Application save succeeded
  2. Spinnaker インスタンスにサンプル パイプラインをアップロードします。

    cd $WORKDIR/sample-app
    export PROJECT_ID=$(gcloud info --format='value(config.project)')
    export GKE_ONE=west-acct
    export REGION_ONE=West
    export GKE_TWO=east-acct
    export REGION_TWO=East
    sed -e s/GKE_ONE/$GKE_ONE/g -e s/REGION_ONE/$REGION_ONE/g -e s/GKE}_TWO/$GKE_TWO/g -e s/REGION_TWO/$REGION_TWO/g -e s/PROJECT_ID/$PROJECT_ID/g $WORKDIR/sample-app/spinnaker/pipeline-deploy-multicluster.json > $WORKDIR/sample-app/multicluster-pipeline-deploy.json
    cd $HOME
    ./spin pipeline save --gate-endpoint http://localhost:8080/gate -f $WORKDIR/sample-app/multicluster-pipeline-deploy.json
    

    次のような出力が表示されます。

    Pipeline save succeeded

    サンプルアプリは、Golang で作成された 2 つのウェブサービス(フロントエンドとバックエンド)で構成されています。フロントエンドは外部に公開され、バックエンドに接続します。このパイプラインには、次の 3 つのフェーズがあります。

    • フェーズ 1 は、west クラスタと east クラスタの両方でフロントエンドとバックエンドのカナリアとして、前の手順で作成した新しいイメージごとに Pod 1 つからなる新しい Deployment を作成するステージのグループです。これらのステージでは、フロントエンドとバックエンドの両方の Deployment と Service を構築します。
    • フェーズ 2 は、手動の判断ステージです。カナリアのフロントエンドとバックエンドが正常にデプロイされた後、ステージは管理者が本番環境へのデプロイを開始するまで待機します。
    • フェーズ 3 は、デプロイ ステージです。パイプラインを初めて実行したときに、west クラスタと east クラスタの本番環境として、フロントエンドとバックエンドのそれぞれで Pod 4 つからなる Deployment が作成されます。以後、このパイプラインを実行すると、カナリア Deployment と本番環境 Deployment のローリング アップグレードが行われます。

    次のセクションでは、このパイプラインをトリガーします。

Spinnaker パイプラインをトリガーする

ここまでの手順で作成した構成では、新しくタグ付けされたイメージが push された際の通知を利用して Spinnaker パイプラインをトリガーします。前のステップでは、タグを Cloud Source Repositories に push しました。これによって、Cloud Build でのイメージのビルドと Container Registry への push がトリガーされます。Spinnaker パイプラインを作成する前に以前のビルドが完了している場合、Spinnaker パイプラインをトリガーするためにタグを作成してビルドする必要があります。

  • タグを作成し、イメージを Cloud Source Repositories に push して、Spinnaker パイプラインをトリガーします。

    cd $WORKDIR/sample-app
    git tag v1.0.1
    git push --tags
    

パイプラインの実行を調べて表示する

  1. [ビルド履歴] ページに移動し、ビルドプロセスが正常に完了したことを確認します。

    [ビルド履歴] に移動

    これで、トリガーされたパイプラインを確認できます。

    1. Spinnaker UI のヘッダー メニューで、[Applications] をクリックし、サンプルアプリを選択します。
    2. [Pipelines] をクリックし、Cloud Build プロセスの完了後にパイプラインがトリガーされたことを確認します。
    3. [Details] をクリックして、パイプラインの進行状況の詳細を表示します。このセクションで、デプロイメント パイプラインのステータスとそのステップを確認できます。青色のステップは現在実行中、緑色のステップは正常に完了、赤色のステップは失敗したことを示しています。ステージをクリックして、その詳細を表示します。

      3~5 分後に、カナリア デプロイ フェーズが完了し、デプロイ続行のための手動承認をパイプラインから要求されます。

    4. 黄色の「人型」アイコンにマウスポインタを合わせ、[Continue] をクリックします。

      人型アイコンをクリックする。

      ロールアウトが本番環境フロントエンドと本番環境バックエンドのデプロイに進みます。これは数分後に完了します。

  2. 両方のクラスタにデプロイされたアプリを表示するには、[Infrastructure] > [Clusters] を選択します。

    両方のクラスタにデプロイされたアプリの表示。

  3. スクロールして、west クラスタと east クラスタの両方でアプリのデプロイを確認します。

  4. Spinnaker UI で、[Infrastructure] > [Load Balancers] を選択します。

  5. 左側のナビゲーション バーの [Stack] で [frontend] を選択し、[Detail] で [production] を選択します。結果をこれらの属性で絞り込めます。

  6. west クラスタと east クラスタの両方の [Default] 名前空間をクリックして、各クラスタの詳細セクションで IP アドレスを取得します。

    デフォルトの名前空間から IP アドレスを取得する。

    各クラスタの詳細セクションで IP アドレスを確認する。

  7. west クラスタの Ingress IP アドレス(外部 IP)をコピーし、ウェブブラウザのタブに貼り付けます。次に、east クラスタの Ingress IP アドレスをコピーし、2 番目のタブに貼り付けます。IP アドレスのリンクをクリックしないでください。代わりに、IP アドレスをコピーしてブラウザに貼り付け、httpshttp に変更してから、リンクに進みます。

    デプロイの詳細で、これは本番環境バージョンであることがわかります。[Node Name] フィールドでクラスタ名を見つけることができます。

    [Node Name] フィールドでクラスタ名を見つける(`west`)。

    [Node Name] フィールドでクラスタ名を見つける(`east`)。

コードの変更によるパイプラインのトリガー

このセクションでは、コードの変更、Git タグの push、レスポンスでのパイプライン実行の監視を通して、パイプラインをエンドツーエンドでテストします。「v」で始まる Git タグを push すると、新しい Docker イメージをビルドして Container Registry に push するための Cloud Build がトリガーされます。Spinnaker は新しいイメージタグが「v」で始まることを検出すると、イメージをカナリアにデプロイしてテストを実行し、同じイメージを Deployment 内のすべての Pod にロールアウトするためのパイプラインをトリガーします。

  1. Cloud Shell で、アプリの色をオレンジ色から青色に変更します。

    cd $WORKDIR/sample-app
    sed -i 's/orange/blue/g' cmd/gke-info/common-service.go
    
  2. 変更にタグを付け、ソース リポジトリに push します。

    git commit -a -m "Change color to blue"
    git tag v1.0.2
    git push --tags
    

    新しいビルドが Cloud Build のビルド履歴に表示されるのを監視します。

  3. ビルドが完了するまで待ちます。

  4. [パイプライン] をクリックして、パイプラインがイメージのデプロイを開始するのを監視します。

  5. カナリア デプロイを観察します。デプロイが一時停止され、本番環境へのロールアウトを待機している間に、アプリを含む 2 つのクラスタのタブの更新を開始します。west クラスタと east クラスタの両方で、バックエンドのうちの 4 つがアプリの以前のバージョンを実行しており、カナリアを実行しているバックエンドは 1 つだけです。更新 5 回に 1 回ほどの割合でアプリの新しい青色バージョンが表示されます。

  6. テストが完了したら、[Spinnaker] タブに戻り、デプロイを承認します。

    パイプラインが完了すると、アプリに青色のトップバナーが表示されます。コードが変更されたため、色は青に変わります。

これで、アプリを本番環境全体に正常にロールアウトできました。

クリーンアップ

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

プロジェクトの削除

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

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

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

リソースの削除

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

    gcloud container clusters delete spinnaker-1 --zone=us-east1-c --quiet --async
    gcloud container clusters delete west --zone=us-west2-b --quiet --async
    gcloud container clusters delete east --zone=us-east4-a --quiet --async
    
  2. kubeconfig ファイルから 3 つのクラスタのコンテキストを削除します。

    kubectx -d gke_${PROJECT_ID}_us-east1-c_spinnaker-1
    kubectx -d gke_${PROJECT_ID}_us-east4-a_east
    kubectx -d gke_${PROJECT_ID}_us-west2-b_west
    
  3. Google Cloud サービス アカウント(spinnaker-service-account)の spinnaker を削除します。

    SPINNAKER_SA_EMAIL=$(gcloud iam service-accounts list \
        --filter="displayName:spinnaker-1*" \
        --format='value(email)')
    gcloud iam service-accounts delete $SPINNAKER_SA_EMAIL --quiet
    
  4. setup.sh スクリプトによって作成された Pub/Sub トピックとサブスクリプションを削除します。

    export PROJECT_ID=$(gcloud info --format='value(config.project)')
    gcloud pubsub topics delete projects/${PROJECT_ID}/topics/gcr
    gcloud pubsub subscriptions delete gcr-triggers
    
  5. Spinnaker 構成ファイルと Kubernetes マニフェストの Cloud Storage バケットを削除します。

    export PROJECT_ID=$(gcloud info --format='value(config.project)')
    export BUCKET=$(gsutil ls | grep spinnaker)
    gsutil -m rm -r ${BUCKET}
    gsutil -m rm -r gs://$PROJECT_ID-kubernetes-manifests
    
  6. Cloud Source Repositories から sample-app を削除します。

    gcloud source repos delete sample-app --quiet
    
  7. Container Registry からコンテナ イメージを削除します。

    gcloud container images delete gcr.io/${PROJECT_ID}/sample-app:v1.0.2 --force-delete-tags --quiet
    gcloud container images delete gcr.io/${PROJECT_ID}/sample-app:v1.0.1 --force-delete-tags --quiet
    gcloud container images delete gcr.io/${PROJECT_ID}/sample-app:v1.0.0 --force-delete-tags --quiet
    
  8. WORKDIR フォルダを削除します。

    cd ~
    rm -rf $WORKDIR
    

次のステップ