PR

OpenShift Commonsで知る継続的デリバリーのSpinnaker最新情報

2020年7月17日(金)
松下 康之 - Yasuyuki Matsushita
Red Hatが主催するコミュニティイベントOpenShift Commonsから、SpinnakerのDeepDiveセッションを紹介。

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)

セッションを紹介するのはRed Hatのコミュニティマネージャー、Diane Mueller氏だ

セッションを紹介するのはRed Hatのコミュニティマネージャー、Diane Mueller氏だ

Spinnakerの概要

セッションを担当したのはGerman Muzquiz氏とLee Faus氏の2名だ。Faus氏の「フィールドCTO」という肩書は、顧客に対面するエンジニアのトップといったところだろう。

Armoryのエンジニア2名が担当

Armoryのエンジニア2名が担当

まずはFaus氏がSpinnakerの概要を紹介した。

Spinnakerの特徴を解説

Spinnakerの特徴を解説

最初にSpinnakerはNetflixで開発され、その後Googleが協力してオープンソースとして公開、現在では多くのコントリビューターを得て開発が加速しているという経緯を説明した。今でもコードの大部分はNetflixとGoogleが貢献しているが、ここ数年はNetflixとGoogle以外のコントリビューターも増えたということで、コミュニティも確実に拡大しているという。

またプラットフォームに依存しないということに重点を置いているとして、オンプレミスでも3大パブリッククラウドベンダーでも実装できるということを強調した。

Netflix、Google、AWS、Microsoftなどが貢献

Netflix、Google、AWS、Microsoftなどが貢献

またコントリビューターとして北米のIT企業以外にも、中国のITジャイアントであるHuawei、Tencent Cloud、Alibaba Cloudなどからも貢献があるというのは大きな優位点だろう。

そして2020年のトピックとして挙げたのが次のスライドだ。

Spinnakerの2020年のトピック

Spinnakerの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自体の実装方法

Spinnaker自体の実装方法

実装にはSpinnakerのOperatorを利用することを推奨している一方で、公式の実装方法であるHalyardというツールを使う場合の欠点を指摘している点は興味深い。

Operator Frameworkを使ったSpinnakerの実装

Operator Frameworkを使ったSpinnakerの実装

ここではKubernetes上にSpinnakerを実装するためにKubectl、OC(OpenShiftのコマンドラインツール)、Helm、Kubernetesの構成ファイルのテンプレートツールKustomizeを使うべきであるというのがArmoryの主張だ。

公式のDeployツールであるHalyardの解説

公式のDeployツールであるHalyardの解説

ここでは「Halコマンドを覚えなければいけないこと」「Halyard専用のマシンが必要なこと」などが欠点として指摘されている。

Helmチャートを使ったSpinnakerの実装

Helmチャートを使ったSpinnakerの実装

ここでも「Halコマンドが必要なこと」「ConfigファイルとHelmチャートが必要なこと」が挙げられている。

この方法でも新しいコマンドライン、複数のファイルにまたがる構成情報などが欠点として解説された。そしてArmoryが開発するOperatorでは、シンプルな構成情報、既存のCLIを使うことなどが差別化のポイントとして紹介された。

ArmoryのSpinnaker Operatorの解説

ArmoryのSpinnaker Operatorの解説

ArmoryはコントリビューターとしてSpinnakerの開発に関わっているが、自社が開発したOperatorをしっかりと宣伝するのは忘れていない。

ArmoryのSpinnaker Operatorの紹介

ArmoryのSpinnaker Operatorの紹介

ただ、Red HatがリードするOperatorのためのリポジトリーOperatorhub.ioにはまだ登録されていないようだ。「将来計画として予定されている」と解説していたのは、よく質問される項目だったからと言えるだろう。GitHubがオープンソースソフトウェアのリポジトリーなら、Operatorhub.ioはクラウドネイティブなシステム向けのソフトウェア運用のためのリポジトリーとしてスタンダードを目指している。Operator Framework自体がCNCFにインキュベーションプロジェクトとして2020年7月に採用されたことは、Red Hatにとっては良いニュースと言える。

また公式のデプロイツールであるHalyardからArmory製のSpinnaker Operatorへの移行についても、Halyardのコンフィグファイルからyamlファイルへの移行が楽であることを解説することも忘れずに行ったのは、セッションを視聴していたエンジニアに向けての良いメッセージになったのではないだろうか。

Halyardからの移行方法も説明

Halyardからの移行方法も説明

デモやハッカソンの紹介

これ以降はデモとしてSpinnakerのWebUIを使って説明を行った。

開発ステージにおいてDeployをロールバックできることをデモ

開発ステージにおいてDeployをロールバックできることをデモ

また実装されたアプリケーションがどのようなログを出しているのか? をSpinnakerのWebUIから即座に見られるという点もアピールしていたポイントだ。

SpringBootのログを表示

SpringBootのログを表示

またパイプラインについてもUIから設定できることを解説し、上流のCIツールであるJenkinsやConcourseなどと連携することで、ビルド~テスト~各ステージへの実装を自動化できることを紹介してセッションを終えた。

なお2020年7月16日から23日までNetflix、AWS、Armoryが協力して、Spinnaker Gardening Daysというハッカソンが行われることも紹介された。

Spinnaker Gardening Daysの紹介

Spinnaker Gardening Daysの紹介

Spinnaker Gardening Days #communityHack

NetflixのCI/CDを体験するというのは無理かもしれないが、そのエッセンスは感じ取れたのではないだろうか。日本では開発と運用が分離されており、組織の改革なしにDevOpsやCI/CDは難しいのかもしれない。しかし、少なくとも先進的に日々それを行っているユーザーの生の声を聞ける良いチャンスである。英語にめげずに参加されることをお勧めしたい。

著者
松下 康之 - Yasuyuki Matsushita
フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。

連載バックナンバー

Think IT会員サービス無料登録受付中

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスの概要とメリットをチェック

他にもこの記事が読まれています