MatsushitaTweetサイバーエージェントのインフラエンジニア長谷川氏が、GitOpsのためのツールを比較して紹介する。今回は、サイバーエージェントのインフラストラクチャーエンジニアである長谷川誠氏によるGitOpsのためのCDツールを比較検討するセッションを紹介する。長谷川氏は青山氏と同じくインフラストラクチャーチームに所属し、サイバーエージェントのOpenStackとKubernetesのインフラストラクチャーを担当するリードエンジニアだ。Tokyoでも講演を行い、高い評価を得たコンテナランタイムのセッションなども行っている。今回は、CI/CDの解説とツールの比較検討を行うセッションを担当した。CI/CDはCNCFのクラウドネイティブなシステムのトレイルマップにおいても、コンテナ化の次にやるべきこととして挙げられている。ちなみにCNCFのトレイルマップは、クラウドネイティブなシステムを実装する際に「どこから手を付けるべきか?」を教えてくれるものだ。これによれば、アプリケーションのコンテナ化の次にCI/CDが挙げられており、ソースコードの修正から本番環境への実装までを自動化することを推奨している。クラウドネイティブなシステムの基盤として使われるKubernetesが登場するのはその次の段階となっており、「コンテナ化」→「CI/CD」→「コンテナオーケストレーション」→「オブザーバビリティ」という流れがベストプラクティスであることを知っておくべきだろう。トレイルマップは以下のリンクから参照可能だ。参考:CNCFトレイルマップセッションを行うサイバーエージェントの長谷川氏セッションのタイトルは「GitOpsツール徹底比較!あなたにぴったりなGitOpsツールがきっと見つかる」というもので、CI/CDをより進めたGitOpsを解説する内容ともなっている。GitOpsツールの比較を行うセッションとなったそもそもGitOpsとは?まず長谷川氏は「GitOpsとは何か?」の解説からセッションを始めた。ここではWeaveworksが2017年に公開したブログ記事から「GitOps」という単語が使われ始めたことを紹介。「簡単に言うと」というまとめで「Kubernetesのリソース構成情報をGit上で管理する」ことで、属人化しがちなインフラストラクチャーを宣言的に処理しようという試みであることを解説した。GitOpsの定義は?より運用担当者の立場で分かりやすく言えば、「kubectl」コマンドを使わないことだと説明した。Requestのみで行う」「リソースの変更は自動でKubernetesクラスターに反映する」「クラスターとGitの内容に違いが生じた場合は、それを修正する」などを紹介した。「この辺りの定義は組織やデベロッパーによって異なる」という認識も示しており、違いはあるだろうとのことだ。GitOpsのルールの例またGitOpsを実施するメリットとして「履歴が残るために変更が分かりやすくなる」「変更の承認などの組織のガバナンスが適用できる」「自動化によって人的コストが削減できる」などを挙げた。GitOpsのメリットそしてCI/CDの処理の流れのうちで長谷川氏が考えるGitOpsの領域について、後半のCDの部分がGitOpsの適用領域であると説明した。ここでも「諸説ある」としてインフラストラクチャーエンジニアの中でも認識にはズレがあることを語った。Push?続いて、GitOpsの手法にはPush型とPull型の2つが考えられるとした。PushはGitリポジトリーからのWebhookによってKubernetesへのDeployが始まる仕組みであり、PullはKubernetesからGitへの定期的なポーリングを行うことで変更を検知して、自身の構成の変更をキックする仕組みだ。長谷川氏はPush型の欠点として、クラスターを変更するための特権を持つユーザーの認証情報をKubernetesの外側に持つ必要があり、APIを外部から操作できるように公開する必要もあるとして、セキュリティ上のマイナスポイントになるだろうと解説した。一方のPull型はKubernetesの中で閉じた構成が可能となり、またAPIを公開する必要もないため、Push型のセキュリティ上のマイナスポイントがないことを語った。Secretのようなツールを使うなどの工夫が必要だと解説した。SecretはGoDaddyが作ったツールで、詳細についてはGoDaddyの以下のブログを参照されたい。Secrets日本語の資料で参考になるのは、以下のPlaidのエンジニアが書いたブログだろう。以上を踏まえて長谷川氏は、実際に選択するとすれば、セキュリティの観点からPull型を採用すべきと語った。Pull型を推奨GitOpsツールの比較そしてここからこのセッションの本題であるGitOpsツールの比較となった。GitOpsツールの比較はFlux、ArgoそしてJenkinsXここで紹介されたツールはすべてオープンソースソフトウェアであり、FluxはWeaveworks、ArgoはIntuit、そしてJenkinsXはCloudBeesが開発をリードしている。前述のとおり、WeaveworksはそもそもGitOpsという単語を生み出したベンチャー企業だ。Trendでそれぞれのソフトウェアの人気の遷移を紹介した。TrendによるFlux、Argo、JenkinsXの比較ツールの開発状況の比較としてGitHubでのStar、Commit、Contributorの数などを示したのが次のスライドだ。Foundationの中でホストされているという違いがあることが分かる。FluxFluxの特徴Fluxはシンプルな構成をもつソフトウェアで、1リポジトリーに一つのAgentが必要となる。シンプルであるゆえに、複数のGitとKubernetesクラスターという組み合わせでは構成&運用するのにコツが必要と言えるようだ。Gitだけではなくアプリケーションのイメージが更新されたらCDが動き出すという特徴を備えており、長谷川氏はこれを指して「ImageOpsと呼んでも良い」とコメントした。この点はGitの中の変更ではなく、その生成物であるArtifactを中心にフローが動き出すという意味であろう。Engineなどのサブプロジェクトが存在する形になっている。Workflowで、KubernetesのCRDとして実装されるソフトウェアだ。CDはその意味ではCNCFのプロジェクトではないと言える。CDの特徴を「何と言ってもGUIだ」と解説し、すべての操作がGUIから実行できることを強調した。CDではGitリポジトリーやクラスターなどをApplicationという名称で定義し、マルチテナントも無理なく構成できるという。CDが複数存在するサブのクラスターを運用できるとして、柔軟な構成が取れる部分がシンプルなFluxとの違いであると解説した。CDで運用できるJenkinsX最後に紹介されたのは、CloudBeesが開発するJenkinsXだ。JenkinsXはJenkinsとはまったく異なるソフトウェアであり、複数のオープンソースソフトウェアによって構成されていると説明した。多くのOSSで構成されるJenkinsXの概要JenkinsXのコマンドラインツールであるjxコマンドは非常に強力で、JenkinsXの設定だけではなくKubernetesクラスターの作成まで可能であるとして、他のツールとの違いを解説した。複数のOSSで構成されることで複雑なのがJenkinsXの残念な点ここではステップに沿ってPreview~Staging~Productionと開発からステージング、本番環境に至るまでをJenkinsXで運用する部分を解説した。jxコマンドで操作し、本番環境までDeployされるようすを説明GitOpsツールはどれを選ぶ?ここまでで3つのツールについてインストール、マルチテナンシー、GUI、ImageOpsの項目で評価をしたのが次のスライドだ。Engine」として統合されるというニュースを紹介。Engineを開発するということになったと説明した。Resourceに移行したことで、よりKubernetes-Nativeになったことを解説した。長谷川氏がImageOpsと呼んだイメージを検知してCDを実行するImageOpsの機能はまだ実装されておらず、またGUIも予定にないと説明した。Toolkitを加えて4つのツールを比較した表は以下の通りだ。最後にそれぞれの特徴によって選択すべきツールを紹介してセッションを終えた。Engineの項でも説明されていたように、CI/CDのツールに関して言えば戦国時代という様相で、Netflixが開発し2015年に公開したSpinnaker、HashiCorpが2020年10月に公開したWaypointなどまだまだ新しいツール、プロジェクトがさまざまなベンダー、ユーザーから出てくるレッドオーシャンと言える。エンドユーザーから見れば、選択は非常に困難と言えるだろう。そのためにもこのような比較のセッションは価値がある。細かい領域では、CI/CDで利用されるクレデンシャルの扱いや管理ツールの比較にも期待したい。今後もCI/CDの領域は要注目だ。コンテナ化されたアプリケーションのデプロイ、スケーリングなどの管理を自動化するコンテナオーケストレーションエンジンです。本書ではKubernetesに関して、アプリケーション開発者およびインフラエンジニアが利用する機能を網羅的に取り上げます。今回、前版を見直し、バージョン1.18に対応しました(アルファ機能を含む)。認定資格CKA/CKAD取得に役立つ、さまざまな知識が得られます。285枚の図、312個のサンプルマニフェスト、257個のよくある質問と回答により、前版以上に分かりやすいものとなっています。この著者の記事一覧フリーランスライター&マーケティングスペシャリスト。DEC、マイクロソフト、アドビ、レノボなどでのマーケティング、ビジネス誌の編集委員などを経てICT関連のトピックを追うライターに。オープンソースとセキュリティが最近の興味の中心。連載バックナンバークラウドイベント第11回CNDT2020シリーズ:サイボウズのSREが語る分散ストレージの配置問題を解決するTopoLVMとは2021/1/13サイボウズの森本氏によるCeph&Rookにおけるストレージ配置問題を解決するTopoLVMの解説のセッションを紹介する。続きを読むクラウドイベント第10回CNDT2020シリーズ:ヤフージャパンのインフラを支えるゼットラボが語るKubernetesストレージの深い話2021/1/8ゼットラボの坂下氏によるKubernetesのストレージの深い話が行われたセッションを紹介する。続きを読むクラウドイベント第9回CNDT2020シリーズ:オススメのGitOpsツールをCAのインフラエンジニアが解説2021/1/7サイバーエージェントのインフラエンジニア長谷川氏が、GitOpsのためのツールを比較して紹介する。Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。ITがお届けするポッドキャストです。