OpenShift Commonsで知る継続的デリバリーのSpinnaker最新情報
IT業界においては、アプリケーション開発から本番環境への実装のスピードアップはDevOpsやアジャイル開発などと並んで大きな関心であることは間違いない。クラウドネイティブなシステムを目指すのであればインフラストラクチャーのコード化、そしてCI/CDの自動化は避けて通れない道だろう。
Red Hatが主催するコミュニティイベントOpenShift Commonsは、新型コロナウィルスの影響を受けてすべてネット上で実施されるイベントに移行した。今回はその中からContinuous Delivery(CD)のツールとして注目を集めているSpinnakerのDeep Diveセッションを紹介する。
こちらのセッションは、Armoryという2016年に創業されたベンチャー企業のエンジニア2名によって行われたものだ。Armoryは、Spinnakerに特化したソフトウェアとサービスを提供する企業だ。セッションの前半はSpinnakerの概要、そして後半はSpinnakerの実装方法、デモによるSpinnakerの機能の紹介が行われた。
動画:Deep Dive into Spinnaker and the Spinnaker Operator Lee Faus and German Muzquiz (Armory)
Spinnakerの概要
セッションを担当したのはGerman Muzquiz氏とLee Faus氏の2名だ。Faus氏の「フィールドCTO」という肩書は、顧客に対面するエンジニアのトップといったところだろう。
まずはFaus氏がSpinnakerの概要を紹介した。
最初にSpinnakerはNetflixで開発され、その後Googleが協力してオープンソースとして公開、現在では多くのコントリビューターを得て開発が加速しているという経緯を説明した。今でもコードの大部分はNetflixとGoogleが貢献しているが、ここ数年はNetflixとGoogle以外のコントリビューターも増えたということで、コミュニティも確実に拡大しているという。
またプラットフォームに依存しないということに重点を置いているとして、オンプレミスでも3大パブリッククラウドベンダーでも実装できるということを強調した。
またコントリビューターとして北米のIT企業以外にも、中国のITジャイアントであるHuawei、Tencent Cloud、Alibaba Cloudなどからも貢献があるというのは大きな優位点だろう。
そして2020年のトピックとして挙げたのが次のスライドだ。
Spinnaker自体を運用するためのOperator Framework、さまざまなソフトウェアと連携するためのプラグイン、Armoryが開発するミニサイズのSpinnakerであるMinnaker、NetflixがManaged Deliveryというインフラストラクチャーを宣言的に定義することで論理的な実装要件と現実のインフラを紐付ける新しいイニシャティブの中で開発されているKeelなどが紹介された。
KeelについてはNetflixの以下のプログで解説されているように、デベロッパーはアプリケーションが必要とする論理的なリソースを定義し、それを具体的なインスタンス(Netflixの場合はAWS)に置き換えて実装するというものだ。
NetflixのManaged Deliveryの記事:Managed Delivery: Evolving Continuous Delivery at Netflix
Microsoftは2019年に開催されたIgniteのセッションで、分散型アプリケーションのランタイム、Daprを公開して、「アプリケーションデベロッパーがKubernetesのようなインフラストラクチャーを理解して利用するのではなく、アプリケーションオペレーターというデベロッパーとオペレーターの中間に位置する新しいカテゴリーのエンジニアを置くことで、アプリとインフラを紐付ける方法」を提案した。このNetflixのManaged Deliveryも、アプリケーションデベロッパーがアプリケーションのインフラストラクチャー上の実装を具体的に記述しなくてもSpinnakerがプラットフォームに合わせた最適値を選択してくれるという仕組みであると理解すると、その狙いはDaprとかなり似通っているように見える。
参考:Think IT:分散型アプリの開発と運用を分離するOAMとDapr、そしてKubernetes上の実装であるRudrとは?
またArmoryは、インフラストラクチャーの構成管理を行うAnsibleとCDを行うSpinnakerの位置付けについてもブログで詳細に解説を行っている。
参考:Total Automation with Spinnaker and Ansible
このブログ記事からもわかるように、開発~テスト~本番環境まで段階的にコードが実装されていくフローの中でAnsibleはインフラストラクチャーの構成管理、Spinnakerはアプリケーションの実装の自動化というように、棲み分けが行えると解説している。Managed Deliveryを指向するNetflixの狙いは最終的に実装されるアプリケーションの実装方法をパイプラインとして手続き的に記述するより、アプリケーションが必要とするリソースを宣言的に記述することで抽象化しようとすることだと言えるだろう。
Spinnakerの実装の解説
セッションの後半は、実際にSpinnaker自体の実装方法の解説、そして実際にどのようにアプリケーションがパイプラインに従って実装されるのか?をデモを通して解説した。
実装にはSpinnakerのOperatorを利用することを推奨している一方で、公式の実装方法であるHalyardというツールを使う場合の欠点を指摘している点は興味深い。
ここではKubernetes上にSpinnakerを実装するためにKubectl、OC(OpenShiftのコマンドラインツール)、Helm、Kubernetesの構成ファイルのテンプレートツールKustomizeを使うべきであるというのがArmoryの主張だ。
ここでは「Halコマンドを覚えなければいけないこと」「Halyard専用のマシンが必要なこと」などが欠点として指摘されている。
ここでも「Halコマンドが必要なこと」「ConfigファイルとHelmチャートが必要なこと」が挙げられている。
この方法でも新しいコマンドライン、複数のファイルにまたがる構成情報などが欠点として解説された。そしてArmoryが開発するOperatorでは、シンプルな構成情報、既存のCLIを使うことなどが差別化のポイントとして紹介された。
ArmoryはコントリビューターとしてSpinnakerの開発に関わっているが、自社が開発したOperatorをしっかりと宣伝するのは忘れていない。
ただ、Red HatがリードするOperatorのためのリポジトリーOperatorhub.ioにはまだ登録されていないようだ。「将来計画として予定されている」と解説していたのは、よく質問される項目だったからと言えるだろう。GitHubがオープンソースソフトウェアのリポジトリーなら、Operatorhub.ioはクラウドネイティブなシステム向けのソフトウェア運用のためのリポジトリーとしてスタンダードを目指している。Operator Framework自体がCNCFにインキュベーションプロジェクトとして2020年7月に採用されたことは、Red Hatにとっては良いニュースと言える。
また公式のデプロイツールであるHalyardからArmory製のSpinnaker Operatorへの移行についても、Halyardのコンフィグファイルからyamlファイルへの移行が楽であることを解説することも忘れずに行ったのは、セッションを視聴していたエンジニアに向けての良いメッセージになったのではないだろうか。
デモやハッカソンの紹介
これ以降はデモとしてSpinnakerのWebUIを使って説明を行った。
また実装されたアプリケーションがどのようなログを出しているのか? をSpinnakerのWebUIから即座に見られるという点もアピールしていたポイントだ。
またパイプラインについてもUIから設定できることを解説し、上流のCIツールであるJenkinsやConcourseなどと連携することで、ビルド~テスト~各ステージへの実装を自動化できることを紹介してセッションを終えた。
なお2020年7月16日から23日までNetflix、AWS、Armoryが協力して、Spinnaker Gardening Daysというハッカソンが行われることも紹介された。
Spinnaker Gardening Days #communityHack
NetflixのCI/CDを体験するというのは無理かもしれないが、そのエッセンスは感じ取れたのではないだろうか。日本では開発と運用が分離されており、組織の改革なしにDevOpsやCI/CDは難しいのかもしれない。しかし、少なくとも先進的に日々それを行っているユーザーの生の声を聞ける良いチャンスである。英語にめげずに参加されることをお勧めしたい。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- KubeCon EUレポート Alibabaが本番環境で使うKubeVelaとDaprのセッションを紹介
- Spinnakerに特化したArmoryのCEOが語るCDの難しさとは?
- OpenStack Summit 2018 インフラの次はCI/CDに注目
- Open Source Leadership Summit開催 FoundationモデルはOSSのインキュベーションのコアとなる
- 分散型アプリの開発と運用を分離するOAMとDapr、そしてKubernetes上の実装であるRudrとは?
- KubeCon+CloudNativeCon NA 2020 IntuitとMayaDataによるカオスエンジニアリングのセッション
- KubeCon+CloudNativeCon NA開催 Kubernetesのクラスター管理を進化させる方法論をKatie Gamanji氏が解説
- CNDT2020シリーズ:オススメのGitOpsツールをCAのインフラエンジニアが解説
- マルチクラウドを制御するユニバーサルなコントロールプレーンCrossplane
- KubeCon Europe、2日目のキーノートはSpotifyの失敗事例とIBMのRazeeがポイント