My External Storage

Jun 23, 2018 - 3 minute read - Comments - spinnaker kubernetes

GKE上でStackdriverと連携したSpinnaker/Kayenta環境を構築する #spinnaker #kayenta

SpinnakerとKayentaを組み合わせ自動カナリー分析を行うための環境構築を行う。 今回の構築ではGKE上にSpinnakerを構築し、Stackdriverから分析用のログを取得する。

2018/06/27追記
なお利用するkubernetes(k8s)クラスターはv1.10系で構築し、ベータ版のモニタリングを有効にしておくこと。

TL;DR

“Try out Halyard on GKE”の通りにHalyardインスタンスを作成する

Kayentaを有効にするためには、Halyard経由で操作可能なSpinnakerを用意する必要がある。
GKEとHalyardを使ったSpinnakerの起動は以下のページの通りにすればよい。
hal deploy applyする手前まで実施する。

Try out Halyard on GKE
https://www.spinnaker.io/setup/quickstart/halyard-gke/

サービスアカウントにStackdriver周りの権限を付与する

一通りの準備が終わったあとはモニタリング周りの準備をしておく。当然ながらStackdriverは有効にしておくこと。

サービスアカウントにStackdriverへアクセス権限を付与しておく。
$GCS_SA_EMAILなどはHalyardの準備をするときに取得したサービスアカウントのEメールアドレスだ。

gcloud projects add-iam-policy-binding $GCP_PROJECT \
    --role roles/logging.admin \
    --member serviceAccount:$GCS_SA_EMAIL

gcloud projects add-iam-policy-binding $GCP_PROJECT \
    --role roles/monitoring.admin \
    --member serviceAccount:$GCS_SA_EMAIL

gcloud projects add-iam-policy-binding $GCP_PROJECT \
    --role roles/compute.viewer \
    --member serviceAccount:$GCS_SA_EMAIL

roles/compute.viewerロールまで使うのはcompute.projects.get権限が必要なため。

“Set up canary support”の通りにGCP関連の設定をONにしてhal deploy applyする

上記が終わった後は、GCP Storageを開き、バケットを作成しておく。
https://console.cloud.google.com/storage/browser

MY_SPINNAKER_BUCKET=budougumi0617-spinnaker-bucket

その後は以下の手順のGCP関連の部分に則ってcanary系のコマンドを実行していけばよい。

Set up canary support
https://www.spinnaker.io/setup/canary/

hal config canary enable
hal config canary google enable
hal config canary google account add my-google-account \
  --project $GCP_PROJECT \
  --json-path $GCS_SA_DEST \
  --bucket $MY_SPINNAKER_BUCKET
hal config canary google edit --gcs-enabled true \
  --stackdriver-enabled true
hal config canary edit --default-metrics-store stackdriver
hal deploy apply

hal deploy connectコマンドでSpinnakerにつなぎ、Create Applicationでアプリケーションの設定を作る。
CONFIGを開いて、FeaturesCanaryが表示されていれば自動カナリー分析をする準備が完了している。

CanarySetting

終わりに

今回はそのままカナリー分析を行ってみるところもまで記事にするつもりだったが、実はこの先で詰まってしまっている。
一通りのパイプラインまで作ったのだが、デプロイ後のログが取得できていない(Stackdriverから設定は読み込めているので権限で弾かれているわけではないはずなのだが。。。)。
そちらが解決したら実際に自動カナリー分析をする記事も書く。

関連

関連記事