開発者がアプリケーションのリリースプロセスを効率化する際、継続的インテグレーション/継続的デリバリー(CI/CD)の手法を取り入れる必要があります。OpenShift 環境では、Red Hat OpenShift Pipelines を導入することで CI/CD ワークフローを自動化することが出来ます。本記事では CI/CD について、OpenShift Pipelines について、その他のCIソリューションとの比較を解説します。本記事に続いて、CD 部分である OpenShift Gitops、OpenShift Pipelines のハンズオンなどの記事も投稿する予定なので、そちらもぜひ読んでみてください。
CI/CD について
Continuous Integration / Continuous Deliveryの略称で、継続的インテグレーション&継続的デリバリーという意味です。具体的に CI と CD が何を指すかというと以下の通りです。
CI は、ビルドとテスト等を自動化させることを指します。コード変更がメインブランチにマージされるたびに自動ビルドとテストが行われ、問題を早期に検出して対処することができます。
CD は、CI のプロセスをさらに拡張し、アプリケーションを自動的にリリース準備段階に(継続的デリバリー)または本番環境にデプロイ(継続的デプロイメント)することを目指します。
Openshift Pipelines について
OpenShift Pipelines は、Red Hat のエンタープライズ向け Kubernetes プラットフォームである OpenShift 上で動作する、CI/CD ソリューションです。オープンソースフレームワークの CI/CD ソリューションである Tekton を基盤としたこのツールは、開発者がアプリケーションのビルド、テスト、デプロイメントを自動化し、より迅速にアプリケーションをリリースできます。
OpenShift Pipelines では CD 部分についても実装が可能ですが、いわゆる Push 型のデプロイになってしまいます。CD 部分では開発環境や本番環境の状態を検知してあるべき状態に変更する Pull 型の実装が望ましいとされているため、本記事では OpenShift Pipelines で CI 部分のみ実装することを想定しています。CD 部分は OpenShift Gitops で実装します。
ここで、OpenShift Pipelines のユースケースを一つ挙げてみます。例えば、開発者はリポジトリにコミットをプッシュします。すると webhook が送信され、パイプラインが実行されます。パイプラインが実行されると、アプリケーションのビルドとテスト、イメージのビルドとレジストリへのプッシュが自動的に実行されます。
Openshift Pipelines のコンポーネントについて
Task
ビルドやテストといったパイプラインの各動作は Task と呼ばれる作業単位で定義します。Task の中では Step と呼ばれるコマンドの実行単位を定義します。Task は Pod として構成され、Step はコンテナとして実行されます。Tekton Hub に公開されている Task を使用することも出来たり、ソースコードの取得といったよく使われる Task は ClusterTask と呼ばれるクラスタ全体で共通利用できる Task として登録して再利用したり出来る点が一番の利点と言えます。
Pipeline
実行したい Pipeline の流れを Task で定義します。実行する Task の順序や実行条件、失敗した際のリトライ回数などを定義します。
Workspaces
パイプラインが実行される際に使用される永続的なストレージ領域で、Task 間のデータ共有をするために使用されます。
Trigger
Trigger と呼ばれる機能を定義して外部イベントを webhook などで受け取り、パイプラインをインスタンス化して動作させるといったメカニズムを定義します。
その他の CI ソリューションについて
他にも多くの CI ソリューションが存在します。Openshift Pipelines の基盤となっているTekton 以外の CI ソリューションと Tekton との比較をいくつか紹介します。
Jenkins
Jenkins は Java で開発されたオープンソースの自動化サーバです。プラグインの豊富さと柔軟性が特徴で、多くの企業で広く採用されています。Tekton と比較すると、Jenkins は長い歴史があり、コミュニティが活発でサポートされるプラグインが多い点が異なります。一方で、Jenkins は従来のサーバーベースで動作するため、クラウドネイティブな環境に最適化されている Tekton に比べると、スケーリングやコンテナ管理においては劣る面があります。
CircleCI
CircleCI は SaaS の CI/CD ソリューションで、GUI で直感的なワークフローを作成できます。Tekton と比較すると、CircleCI は SaaS として利用できるため、インフラの管理が不要である点が異なります。CircleCI はパフォーマンスに優れていますが、Tekton は Kubernetes 上で動作するため、Kubernetes との親和性が高いという利点があります。
Travis CI
Travis CI は GitHub リポジトリと連携して自動ビルドやテストを行うことが出来る CI ソリューションです。設定がシンプルで簡単に始められる点が特徴です。Travis CI はシンプルな分、カスタマイズ性や拡張性では Tekton が優れています。
各 CI ソリューションにはそれぞれの特徴があり、プロジェクトの要件や環境に応じて適切なツールを選択することが重要です。
まとめ
本記事では CI/CD について、OpenShift Pipelines について、Openshift Pipelines のコンポーネントについて、その他の CI ソリューションとの比較を解説しました。各 CI ソリューションには適切なツールを選択する必要があり、OpenShift 環境では、Kubernetes との親和性が高い Tekton を基盤として OpenShift に最適化された OpenShift Pipelines を採用することが望ましいです。
本記事に続いて、CD 部分である OpenShift Gitops、OpenShift Pipelines のハンズオンなどの記事も投稿する予定なので、そちらもぜひ読んでみてください。
参考文献
https://docs.openshift.com/container-platform/4.17/cicd/index.html
https://github.com/openshift/pipelines-tutorial?tab=readme-ov-file#trigger