Category: 入門編
2024.04.05
目次
Kubernetes 環境に最適なCI/CDパイプラインを構築しよう
CI/CD ( Continuous Integration/Continuous Delivery )とは、ソフトウェア開発の効率化と品質の向上を実現するための手法です。クラウドコンピューティングや Kubernetes が台頭してから、これらの環境に適した CI/CD のアプローチ方法は変化しています。
本記事では CI/CD の概要から Kubernetes ネイティブな CI/CD の特徴やメリット、適したツールなどについて解説します。1. CI/CDとは
CI/CD とは、ソフトウェア開発におけるビルドやテスト、デリバリー、デプロイメントを自動化して継続的に行うアプローチのことです。日本語では「継続的インテグレーション/継続的デリバリー」と訳されます。
CI (継続的インテグレーション)は、開発者が作成したコードの変更をメインリポジトリに統合するプロセスです。たとえば複数のエンジニアのソースコードを継続的に統合し、正常に動作するか確認する取り組みを指します。
またビルドやテストは自動化され、コードの変更が作業に影響を与える前に問題を特定して修正することが可能です。
CD (継続的デリバリー)は CI のプロセスをさらに進め、ビルドされたアプリケーションをいつでもリリース可能な状態に保つことを指します。ソフトウェアが自動的にテスト環境にデリバリーされ、必要に応じて手動で本番環境にデプロイできます。
なお自動的に本番環境へのデプロイまで行うことは「継続的デプロイメント」といいます。これはコード変更がテストを通過すると、自動的に本番環境にデプロイされるアプローチです。
図版出典:ビジネス+IT
2. CI/CDの変化
CI/CD はオンプレミスが主流だった時代からある概念ですが、技術の進化によって考え方が変化してきています。この変化について詳しく解説します。
クラウドやKubernetes の台頭
初期の CI/CD はオンプレミス環境での運用が主流であり、 OS やミドルウェア、アプリなどさまざまなレイヤーを考慮しなければなりませんでした。しかしクラウドコンピューティングやコンテナの台頭により、これらのリソースはクラウドリソースやコンテナに集約されます。
とくに Kubernetes ではマニフェストに集約されるため、さらに抽象化されテキストベースで管理することが可能です。この変化は CI/CD プロセスの自動化と効率化に大きく寄与し、よりシンプルなものに変化させました。
CIOpsからGitOps へ
CIOps とは、 CI ツールがビルドからデプロイまで一括して実施する仕組みのことです。従来は CI と CD の区別がそれほど明確ではなく、 CI ツールを使ってデプロイまで実施することが多くありました。
一方で GitOps とは、 Git リポジトリを唯一信頼できる情報源( Source of Truth )として使用し、そこからすべての変更を管理する仕組みのことです。 GitOps では効率性、セキュリティを高めるために特定の役割と責任を CI と CD で明確に分離し、それぞれに最適化されたツールを使用します。
近年では以前より高度な CD を可能とするツールが登場したこともあり、 GitOps の概念が浸透しました。 Kubernetes 環境では CI と CD でそれぞれ別のツールを使用することが主流になっています。
3. Kubernetesに特化したCI/CDツール
Kubernetes に特化した CI/CD ツールは、 Kubernetes のエコシステム内で効率的にビルド、テスト、デプロイメントを行うために設計されています。ここでは代表的なツールを紹介します。
Tekton
Kubernetes に特化した CI ツールです。クラウドネイティブなアプローチをとり、ビルド、テスト、デプロイのタスクを管理するために Kubernetes のリソースを使用します。
カスタマイズ可能で拡張性が高く、さまざまな CI/CD シナリオに対応できることが特徴です。宣言的な構成と Kubernetes のリソースモデルを使用して、再利用可能なパイプラインコンポーネントを作成できます。
Jenkins X
Kubernetes と連携するために Jenkins プロジェクトから発展した CI/CD ツールです。 Jenkins の概念を拡張し、クラウドネイティブな開発に焦点を当てています。
Kubernetes クラスタ上でのみ動作し、 GitHub など Git ベースのプラットフォームと連携させることが前提となります。 GUI は最低限で、コマンドラインあるいは連携させる開発プラットフォーム経由で操作を行うことが特徴です。
Argo CD
Kubernetes に特化し、 GitOps に則った CD ツールです。 Git リポジトリに保存されたマニフェストファイルを使用して、 Kubernetes クラスタ内のアプリケーションのデプロイメントを自動化します。
また直感的な UI を提供し、クラスタ内のアプリケーションの状態をビジュアル化してデプロイメントの進行状況や問題の発生を監視できることも特徴です。
4. KubernetesネイティブなCI/CDツールを使うメリット
Kubernetes ネイティブな CI/CD ツールを使うメリットとしては次のようなものがあります。
属人化の解消
これまでの CI/CD ツールは、ツール自体を人が操作する必要があり、運用が属人化しやすいという課題がありました。
しかし Kubernetes ネイティブな CI/CD ツールは Kubernetes リソースの特徴を活かす機能が豊富であり、 CI/CD ツール自体の運用を自動化することが可能です。運用を意識せずに CI/CD パイプラインを構築できるようになり、開発者は開発に専念できます。
依存関係の考慮が不要
従来の CI/CD ツールはプラグインをインストールして使用しますが、それぞれのプラグインの依存関係を考慮する必要がありました。一方 Kubernetes ネイティブな CI/CD ツールはジョブが独立したコンテナで実行されるため、依存関係を考慮する必要がないこともメリットです。
5. まとめ
CI/CD はソフトウェア開発におけるビルドやテスト、デリバリー、デプロイメントを自動化し、継続的に行うアプローチです。最近ではオンプレミス環境を対象としていた従来のものから、クラウド環境や Kubernetes 環境に適したアプローチへ変化しています。
Kubernetes に特化した CI/CD ツールを活用することはさまざまなメリットがあるため、ぜひ Kubernetes ネイティブな CI/CD パイプラインを構築してみてはいかがでしょうか。
Kubernetes の運用を相談したい
Tag: Kubernetes
Contactお問い合わせ
お見積もり・ご相談など、お気軽にお問い合わせください。