CI/CDにおける潮流 - CIOpsからGitOpsへ

【連載】

Kubernetes入門

【第15回】CI/CDにおける潮流 - CIOpsからGitOpsへ

[2020/07/10 08:00]正野 勇嗣 ブックマーク ブックマーク

昨今、もはや当たり前とも言えるCI/CD(継続的インテグレーション/継続的デプロイ)は、Kubernetesの世界でも当然必要な技術です。さまざまなツールが登場し、「それぞれどういった位置付けなのかわからない」というかたも多いのではないでしょうか。

そこで今回は、CI/CDツールについてGitOpsやIaC(Infrastructure as Code)など、さまざまな側面から紹介することで、位置付けをより深く理解していただきます。なお、個別のCI/CD系のツールの使い方などの詳細については次回以降紹介します。

標準化の動き- CDF(Continuous Delivery Foundation)

さまざまなCI/CDツール出てくるなかで、ツールに応じた記法を覚えるのは非常に大変なことでしょう。2019年3月12日にCDF(Continuous Delivery Foundation)の設立が発表され、CI/CDの標準化の動きが出てきました。

CDFには以下の4ツールが名を連ねています。パイプラインやソースへのアクセスなどを標準化し、CI/CDのベストプラクティスを構築していくことを狙っています。

  • Jenkins:言わずと知れたCI/CDツールの元祖
  • Jenkins X:JenkinsをgitとKubernetesの取り扱いに特化させ、自動構築の範囲を大幅に広げたもの
  • Tekton:KubernetesのCRD(Custom Resource Definition)として実装されたCDツール
  • Spinnaker: Netflixが開発したマルチクラウドに対応したCDツール

どんなツールがあるか

CDF以外にどんなツールがあるかをざっくりと把握するため、ここでは数あるツールのなかから筆者が特に注目しているツールをご紹介しましょう。

なお、「CIに強いツール」「CDに強いツール」といった具合に、各ツールが主眼とする領域は異なります。一方で、住み分けや交通整理が明確に行われているわけではありません。したがって、ツール間で機能重複する面もあります。

Kubernetesに対応しているCDツールは、多数存在します。

  • パブクラ系
    • AWS Codeシリーズ:AWSのCI/CDツール

      CodeCommit/CodeBuild/CodeDeploy/CodePipelineの機能に分かれる

    • Azure DevOps Services:AzureのCI/CDツール

      Azure Repos/Pipeline/Artifactsに加え、カンバンによるタスク管理を行うAzure Boardsや、探索的テストを行うAzure Test Plansがある

    • Cloud Build:GCPのCI/CDツール
  • CIに軸足
    • Circle CI:Saas型のCI/CDツール
    • GitHub Actions:GitHub上のCI/CDツール
  • CDに軸足
    • ArgoCD:Kubernetes前提の宣言的CDツール
    • FluxCD:Kubernetes前提のGitOps Operator

CIOpsからGitOpsへ(CIとCDの分離)

これまでのCI/CDの問題点を解消するため、「GitOps」と呼ばれる考え方が登場しました。従来からのCI/CDである「CIOps」と対比するかたちで、権限と管理対象の2軸で説明します。

権限 管理対象
CIOps CIサーバに強い権限 アプリケーションコード中心
GitOps CIとCDの分離 基盤コードも含めて全て(Single Source of Truth)

CIOpsの特徴は、以下の通りです。

◆権限:CIサーバに強い権限
JenkinsやCircle CIにデプロイまで任せるCIOpsの場合、本番環境へのアクセスなど、CIサーバに強い権限を与える必要がありました。CIサーバは一開発者もアクセスするため、細やかな権限管理が必要となります。何より、CIとCDの境界が曖昧になりやすくなります。

◆管理対象:アプリケーションコード中心
アプリケーションコードはGitで管理されていますが、デプロイに関わるスクリプトや、KubernetesマニフェストなどがGitで管理されていないケースもあります。

一方、GitOpsの特徴は以下の通りです。

◆権限:CIとCDの分離
CIサーバに強い権限を与えることを避けるために、CIとCDを分離することがうたわれています。アプリケーションコードを管理するCIサーバにはCircle CIを、Kubernetesのマニフェストを管理するCDサーバにはArgoCDをといった具合です。

◆管理対象:Single Source of Truth
「Single Source of Truth」と呼ばれる発想で、全てのものはコードとして管理します。IaC(Infrastructure as Code)が普及してきたことも後押ししています。

GitOps

IaCとの関係

IaCは、以下の3レイヤに大別されます。CI/CDもIaCの一つと捉えることができます。
  • IaaSレイヤ(狭義のIaC)
    • インフラレイヤ構築の自動化を行う、狭義のIaCはこのレイヤを指します。プロビジョニングは主にこの領域を指します。
    • 時系列に沿って、さまざまなツールが登場しています。

      Puppet(2005) → Chef(2009) → Ansible(2012) → Terraform(2014)

  • コンテナレイヤ
    • コンテナをどのように作っていくかに主眼を置いたものです。本連載のKubernetesそのものも、こちらに含まれます。
      • コンテナ(例:Docker)
      • コンテナオーケストレーション(例:Kubernetes/Docker Compose)
      • コンテナオーケストレーションのオーケストレーション(例:Helm)

        Chart(設定ファイル)を作成することで、Kubernetesのリソース群を作成できます。

  • CI/CDレイヤ
    • IaCの進展については、Jenkinsをベースに捉えておくと理解しやすいでしょう。
      • Jenkins 1.xの時代までは設定ファイルを直接書くことはあっても、積極的に勧められていたわけではありません。
      • Jenkins 2.xからは「Jenkinsfile」が登場し、IaCの要素を備えてきました。
    • * * *

      今回はCI/CDについて説明しました。IaCの考え方はCI/CDの領域にも浸透してきており、GitOpsの前提となっています。マニフェストをGitで管理し、CIとCDを分離するGitOpsを中心に理解しておくとよいでしょう。 個別のツールの利用法については次回以降紹介します。

      著者紹介


      正野 勇嗣 (SHONO Yuji ) - NTTデータ 課長

      2011年まで開発自動化技術のR&Dに従事。その後、開発プロジェクト支援やトラブルシューティング等に主戦場を移す。「ソースコード自動生成」に加えて、JenkinsやMaven等の「ビルド自動化」、JsTestDriverやSelenium等の「テスト自動化」を扱うようになり、多様化する開発自動化技術動向に興味。

      最近は第四の自動化であるInfrastructure as Code等の「基盤自動化」の魅力に惹かれている。開発自動化技術に関する雑誌・記事執筆も行う。3児のパパ。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

「ゼロトラスト」が実現する、リモートワーク時代のセキュリティ対策

「ゼロトラスト」が実現する、リモートワーク時代のセキュリティ対策

日本マイクロソフトが6月17日から30日まで開催するオンラインイベント「de:code 2020」。オンデマンドで配信されたセッション「ゼロトラスト Deep Dive 間違いだらけのリモートワーク セキュリティ」では、日本マイクロソフト クラウド&ソリューション事業本部 テクニカル スペシャリスト 小町紘之氏が、どのようなリモートワーク環境を整えるべきか、…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
知りたい! カナコさん 皆で話そうAIのコト
対話システムをつくろう! Python超入門
Kubernetes入門
AWSで作るクラウドネイティブアプリケーションの基本
PowerShell Core入門
徹底研究! ハイブリッドクラウド
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る