Continuous DeliveryツールのSpinnakerを動かしてみた

今度はSpinnakerに興味を持ったので、ローカルのminikubeでやろうとしたけどできなくて、GKEのチュートリアルでやってみたメモ。さくっと終わるつもりだったのにいつも通り色々あったかな。

Spinnaker

Continuous Deliveryツール。チュートリアルやって動いた、程度なので中身は全然理解してない。

www.spinnaker.io

@deeeetさんの記事見て興味を持ちました。

tech.mercari.com

見た目好き。

f:id:bufferings:20180217110621p:plain

minikubeでやってみよう→失敗

ローカルのminikubeで動かしてみようと思って、ここを見ながらhelm入れるところまでいって、その後Spinnaker入れようとしたらできなかった。もうエラーの内容も覚えてないけど、バージョンの違いとかなんだろうかな。

thenewstack.io

ここで時間かけて原因をチェックするより、とりあえず動かしてみたいので、GKEでやってみることにした。

GKEでやってみよう→できた

GKE + Spinnakerのチュートリアル

Continuous Delivery Pipelines with Spinnaker and Kubernetes Engine  |  Solutions  |  Google Cloud Platform

f:id:bufferings:20180217115213p:plain
(Image from: https://cloud.google.com/solutions/continuous-delivery-spinnaker-kubernetes-engine )

この手順でやったら、Spinnakerが動くところまでできた。(∩´∀`)∩ワーイ


そして

勉強の時間を取ることができずにいたら

ということで気を取り直して、最初からやりなおしてみた。

だいたいこんな感じだった:

GCPソースコードリポジトリに"v"で始まるタグをpushすると

ソースコードリポジトリなんてあるんやね。

f:id:bufferings:20180217120816p:plain

GCPのContainer Registoryが検知してイメージを作成すると

トリガーはベータって書いてあるけど、便利。

f:id:bufferings:20180217120957p:plain

Spinnakerが検知してパイプラインが始まる

f:id:bufferings:20180217121228p:plain

まぁ、イメージ作るところまでは、Github -> TravisCI -> DockerHubでいいかなって気がするね。

はまったところ

最初にSpinnakerをデプロイしてから「まだ無料期間中だからいいか」って思ってしばらく放置しておいてから昨日久しぶりに触ったんだけど、そしたらSpinnakerがGCRのタグを取得できないってエラーになってて。ぐぐったらこれっぽい。

github.com

Spinnakerの部品の一つのCloudDriverが起動してから2,3日たつと、認証エラーになるっぽい。ので、とりあえずPodを2日に1回再起動してるーって。ので、Podを落として勝手に再起動されるのを待ってたらタグとってこれて動いたや。(∩´∀`)∩ワーイ

デプロイメントパイプライン

パイプラインの流れは、イメージのpushをトリガーにして→機能テストを実施→問題なければカナリア環境にデプロイ。

んで、動作確認がOKだったら手動で本番化するかどうかを選ぶ。って感じ。(下側の赤いところが中断を選んだ場合。)

f:id:bufferings:20180217122456p:plain

カナリアリリース

チュートリアルの本番環境には本番Podが8個、カナリアPodが1個デプロイされるようになってるから、8:1の割合でカナリアPodにリクエストが流れる。

問題なければ、本番化すると本番Podが新しいバージョンになるっぽい。

面白かったー

次はもう少し詳しくSpinnakerを見ていこうかな。クッキーでカナリア環境に振り分けたりとかとか。