マルチクラウドで継続的デリバリー(Continuous Delivery)を実現するSpinnakerについての紹介
マルチクラウドでContinuous Deliveryを実現するSpinnakerについて海浜幕張テック ミートアップ#2
View Slide
About meMahito Ogura < Twitter: @Mahito >海浜幕張在住(都内通信系会社勤務)業務:IoT関連 (2018/7〜)● クラウドや分散システムの調査検証● 分散トレーシングなどの分散システムの調査検証● OpenStackやコンテナに関する調査検証● インフラ構築(Chef, Ansible)● アプリケーション開発● 採用のお手伝いとか各種イベント業, etc...
本日のお話マルチクラウドで継続的デリバリー(Continuous Delivery)を実現するSpinnakerについて知ってもらい興味を持ってもらうあわよくば後日Spinnakerを試してもらって情報交換なんかができれば・・・
Spinnaker
Spinnakerとは● マルチクラウドでContinuous Delivery(CD)を実現するプラットフォーム● クラスタの管理やImageの作成、デプロイ管理などのPipelineを提供●Netflix社が開発し、OSSとして公開されているが現在はGoogleやPivotal,Microsoft, Mirantisなども開発に参加している
パイプラインはアプリケーションのコードをプロダクションにリリースするために必要なすべての手順を実行するプロセスPiplineとCI/CDTest/Build Deploy Test ApproveCI CD
Sample Spinnaker Pipeline
Spinnaker Cloud Target詳細はリポジトリを御覧くださいhttps://github.com/spinnaker/clouddriver/● AWS (EC2)● Docker● GCP (AppEngine, GCE, GKE)● Kubernetes● Microsft Azure● OpenStack● etc...
Blue / Green DeploymentSpinnakerはBlue / Green Deploymentを実現Green (new)に問題があった場合はBlue(old)にRollbackが可能※ただしKubernetes v2 ProviderはBlue/Greenに非対応https://www.spinnaker.io/concepts/
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
参考:NetflixのCanary Release Process3つのクラスタで運用しそれぞれに同じトラフィックから量を変えて流す1. Production:本番環境(many servers)2. Baseline:Canaryと比較するための現行バージョン(1 + m servers)3. Canary:新バージョン(1 + m servers)Traffic RouterMetricsCanaryAnalysisProduction(v1.0)Baseline(v1.0)Canary(v2.0)
Chaos Engineering [1]分散システム内にわざと障害を起こすことで、対象のシステムが本番環境において耐障害性を持っていることを証明する手法Spinnakerではランダムにインスタンスやコンテナを削除することでChaos Engineeringを実現するツールのひとつであるChaos monkeyが利用可能[1] : http://principlesofchaos.org/[2] : https://github.com/Netflix/chaosmonkey
Spinnakerの構築 [1]Halyardを用いて設定、デプロイを行う1. Halyardのインストール2. Cloud Providerの選択3.インストール環境の選択4.設定とデプロイ5.オプション設定6.プロダクション環境への適用※だいたいドキュメントどおりにできるが時折動かないので注意![1]: https://www.spinnaker.io/setup/install/
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
Spinnaker Pros / ConsPros● マルチクラウド対応(AWS/GCP, k8sに関してはほぼ動くと思っていい)● クラスタ管理機能(Blue/Green Deployment, Auto Scale)● 品質確保・向上のしくみ(Canary Release, Chaos Monkey)● 新機能の追加が早い(大体2ヶ月ごとにバージョンアップ)Cons● 公式ドキュメント以外の情報はコミュニティに頼るのが現状●CDに特化しているためCIにはJenkisなど他のCIツールが必要●Spinnaker自体がMicroservicesであり複雑●UIが中心でCLIはまだ開発中...?
Thank you !