Slide 1

Slide 1 text

マルチクラウドでContinuous Deliveryを実 現するSpinnakerについて 海浜幕張テック ミートアップ #2

Slide 2

Slide 2 text

About me Mahito Ogura < Twitter: @Mahito > 海浜幕張在住(都内通信系会社勤務) 業務:IoT関連 (2018/7〜) ● クラウドや分散システムの調査検証 ● 分散トレーシングなどの分散システムの調査検証 ● OpenStackやコンテナに関する調査検証 ● インフラ構築(Chef, Ansible) ● アプリケーション開発 ● 採用のお手伝いとか各種イベント業, etc...

Slide 3

Slide 3 text

本日のお話 マルチクラウドで継続的デリバリー( Continuous Delivery )を実現する Spinnaker について知ってもらい興味を持ってもらう あわよくば後日 Spinnaker を試してもらって情報交換なんかができれば・・・

Slide 4

Slide 4 text

Spinnaker

Slide 5

Slide 5 text

Spinnakerとは ● マルチクラウドで Continuous Delivery ( CD )を実現するプラットフォーム ● クラスタの管理や Image の作成、デプロイ管理などの Pipeline を提供 ● Netflix 社が開発し、 OSS として公開されているが現在は Google や Pivotal, Microsoft, Mirantis なども開発に参加している

Slide 6

Slide 6 text

パイプラインはアプリケーションのコードをプロダクションにリリースするために必要なすべ ての手順を実行するプロセス PiplineとCI/CD Test/Build Deploy Test Approve CI CD

Slide 7

Slide 7 text

Sample Spinnaker Pipeline

Slide 8

Slide 8 text

Spinnaker Cloud Target 詳細はリポジトリを御覧ください https://github.com/spinnaker/clouddriver/ ● AWS (EC2) ● Docker ● GCP (AppEngine, GCE, GKE) ● Kubernetes ● Microsft Azure ● OpenStack ● etc...

Slide 9

Slide 9 text

Blue / Green Deployment Spinnaker は Blue / Green Deployment を実現 Green (new) に問題があった場合は Blue ( old )に Rollback が可能 ※ただし Kubernetes v2 Provider は Blue/Green に非対応 https://www.spinnaker.io/concepts/

Slide 10

Slide 10 text

Canary Analysis - Kayenta [1] Netflix と Google が共同で OSS 化した Automated Canary Analysis (ACA) の基盤 [2][3] Spinnaker の一機能( Kayenta )として ACA の動作を行う 基準( Baseline )と新バージョン( Canary )のメトリクスを比較し、 差分を確認することで、新バージョンに問題がないかを分析 メトリックスの取得に使えるのは現在 Stackdriver, Prometheus, Datadog, Signalfx 参考 ● [1] : https://github.com/spinnaker/kayenta ● [2] : Automated Canary Analysis at Netflix with Kayenta ● [3] : Introducing Kayenta: An open automated canary analysis tool from Google and Netflix

Slide 11

Slide 11 text

参考:NetflixのCanary Release Process 3 つのクラスタで運用しそれぞれに同じトラフィックから量を変えて流す 1. Production :本番環境 (many servers) 2. Baseline : Canary と比較するための現行バージョン (1 + m servers) 3. Canary :新バージョン (1 + m servers) Traffic Router Metrics Canary Analysis Production(v1.0) Baseline(v1.0) Canary(v2.0)

Slide 12

Slide 12 text

Chaos Engineering [1] 分散システム内にわざと障害を起こすことで、 対象のシステムが本番環境において耐障害性を持っていることを証明する手法 Spinnaker ではランダムにインスタンスやコンテナを削除することで Chaos Engineering を実現するツールのひとつである Chaos monkey が利用可能 [1] : http://principlesofchaos.org/ [2] : https://github.com/Netflix/chaosmonkey

Slide 13

Slide 13 text

Spinnakerの構築 [1] Halyard を用いて設定、デプロイを行う 1. Halyard のインストール 2. Cloud Provider の選択 3. インストール環境の選択 4. 設定とデプロイ 5. オプション設定 6. プロダクション環境への適用 ※だいたいドキュメントどおりにできるが時折動かないので注意! [1]: https://www.spinnaker.io/setup/install/

Slide 14

Slide 14 text

Spinnaker Architecture ● Deck - UI ● Gate - API Gateway ● Orca - Orchestrate engine ● Cloddriver - Cloud controller ● Fiat - Authorization ● Front50 - Metadata management ● Rosco - Image builder ● Kayenta - Canary Analysis ● Echo - Event bus ● Igor - Pipelines trigger

Slide 15

Slide 15 text

Spinnaker Pros / Cons Pros ● マルチクラウド対応( AWS/GCP, k8s に関してはほぼ動くと思っていい) ● クラスタ管理機能 (Blue/Green Deployment, Auto Scale) ● 品質確保・向上のしくみ (Canary Release, Chaos Monkey) ● 新機能の追加が早い(大体 2 ヶ月ごとにバージョンアップ) Cons ● 公式ドキュメント以外の情報はコミュニティに頼るのが現状 ● CD に特化しているため CI には Jenkis など他の CI ツールが必要 ● Spinnaker 自体が Microservices であり複雑 ● UI が中心で CLI はまだ開発中 ... ?

Slide 16

Slide 16 text

Thank you !