5.3. Jenkins から OpenShift Pipelines または Tekton への移行
CI/CD ワークフローを Jenkins から Red Hat OpenShift Pipelines に移行できます。これは、Tekton プロジェクトに基づくクラウドネイティブの CI/CD エクスペリエンスです。
5.3.1. Jenkins と OpenShift Pipelines のコンセプトの比較 リンクのコピーリンクがクリップボードにコピーされました!
Jenkins および OpenShift Pipelines で使用される以下の同等の用語を確認および比較できます。
5.3.1.1. Jenkins の用語 リンクのコピーリンクがクリップボードにコピーされました!
Jenkins は、共有ライブラリーおよびプラグインを使用して拡張可能な宣言型およびスクリプト化されたパイプラインを提供します。Jenkins における基本的な用語は以下のとおりです。
- Pipeline: Groovy 構文を使用してアプリケーションをビルドし、テストし、デプロイするプロセスをすべて自動化します。
- ノード: スクリプト化されたパイプラインのオーケストレーションまたは実行できるマシン。
- ステージ: パイプラインで実行されるタスクの概念的に異なるサブセット。プラグインまたはユーザーインターフェイスは、このブロックを使用してタスクの状態または進捗を表示します。
- ステップ: コマンドまたはスクリプトを使用して、実行する正確なアクションを指定する単一タスク。
5.3.1.2. OpenShift Pipelines の用語 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Pipelines は、宣言型パイプラインに YAML 構文を使用し、タスクで構成されます。OpenShift Pipelines の基本的な用語は次のとおりです。
- パイプライン: 一連のタスク、並行したタスク、またはその両方。
- タスク: コマンド、バイナリー、またはスクリプトとしてのステップシーケンス。
- PipelineRun: 1 つ以上のタスクを使用したパイプラインの実行。
TaskRun: 1 つ以上のステップを使用したタスクの実行。
注記パラメーターやワークスペースなどの入力のセットを使用して PipelineRun または TaskRun を開始し、実行結果を出力およびアーティファクトのセットで開始できます。
Workspace: OpenShift Pipelines では、ワークスペースは次の目的に役立つ概念的なブロックです。
- 入力、出力、およびビルドアーティファクトのストレージ。
- タスク間でデータを共有する一般的な領域。
- シークレットに保持される認証情報のマウントポイント、config map に保持される設定、および組織が共有される共通のツール。
注記Jenkins には、OpenShift Pipelines ワークスペースに直接相当するものはありません。コントロールノードは、クローン作成したコードリポジトリー、ビルド履歴、およびアーティファクトを格納するため、ワークスペースと考えることができます。ジョブが別のノードに割り当てられると、クローン化されたコードと生成されたアーティファクトはそのノードに保存されますが、コントロールノードはビルド履歴を維持します。
5.3.1.3. 概念のマッピング リンクのコピーリンクがクリップボードにコピーされました!
Jenkins と OpenShift Pipelines のビルディングブロックは同等ではなく、特定の比較では技術的に正確なマッピングは提供されません。Jenkins と OpenShift Pipelines の以下の用語と概念は、一般的に相互に関連しています。
| Jenkins | OpenShift Pipeline |
|---|---|
| パイプライン | パイプラインおよび PipelineRun |
| ステージ | タスク |
| Step | タスクのステップ |
5.3.2. Jenkins から OpenShift Pipelines へのサンプルパイプラインの移行 リンクのコピーリンクがクリップボードにコピーされました!
以下の同等の例を使用して、Jenkins から OpenShift Pipelines へのパイプラインのビルド、テスト、およびデプロイを支援できます。
5.3.2.1. Jenkins パイプライン リンクのコピーリンクがクリップボードにコピーされました!
ビルド、テスト、デプロイ用に Groovy で記述された Jenkins パイプラインを検討します。
5.3.2.2. OpenShift Pipelines パイプライン リンクのコピーリンクがクリップボードにコピーされました!
前の Jenkins パイプラインと同等のパイプラインを OpenShift Pipelines で作成するには、次の 3 つのタスクを作成します。
build タスクの YAML 定義ファイルの例
test タスクの YAML 定義ファイルの例
deploy タスクの YAML 定義ファイルの例
3 つのタスクを順番に組み合わせて、OpenShift Pipelines でパイプラインを形成できます。
例: ビルド、テスト、およびデプロイのための OpenShift Pipelines
5.3.3. Jenkins プラグインから Tekton Hub タスクへの移行 リンクのコピーリンクがクリップボードにコピーされました!
プラグイン を使用して、Jenkins の機能を拡張できます。OpenShift Pipelines で同様の拡張性を実現するには、Tekton Hub から利用可能なタスクのいずれかを使用します。
たとえば、Jenkins の git plug-in に対応する Tekton Hub の git-clone タスクについて考えてみます。
例: Tekton Hub からの git-clone タスク
5.3.4. カスタムタスクとスクリプトを使用した OpenShift Pipelines 機能の拡張 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Pipelines では、Tekton Hub で適切なタスクが見つからない場合、またはタスクをより細かく制御する必要がある場合は、カスタムタスクとスクリプトを作成して OpenShift Pipelines の機能を拡張できます。
例: maven test コマンドを実行するカスタムタスク
例: パスを指定してカスタムシェルスクリプトを実行する
例: カスタム Python スクリプトを YAML ファイルに書き込んで実行する
5.3.5. Jenkins と OpenShift Pipelines の実行モデルの比較 リンクのコピーリンクがクリップボードにコピーされました!
Jenkins と OpenShift Pipelines は同様の機能を提供しますが、アーキテクチャーと実行が異なります。
| Jenkins | OpenShift Pipeline |
|---|---|
| Jenkins にはコントローラーノードがあります。Jenkins は、パイプラインとステップを一元的に実行するか、他のノードで実行しているジョブのオーケストレーションを行います。 | OpenShift Pipelines はサーバーレスで分散されており、実行のための central 依存関係はありません。 |
| コンテナーは、パイプラインを介して Jenkins コントローラーノードによって起動されます。 | OpenShift Pipelines は、'コンテナーファースト' アプローチを採用しています。このアプローチでは、すべてのステップが Pod 内のコンテナーとして実行されます (Jenkins のノードに相当)。 |
| プラグインを使用することで拡張性が実現されます。 | 拡張性は、Tekton Hub のタスクを使用するか、カスタムタスクおよびスクリプトを作成して実行します。 |
5.3.6. 一般的な使用例の例 リンクのコピーリンクがクリップボードにコピーされました!
Jenkins と OpenShift Pipelines はどちらも、次のような一般的な CI/CD ユースケース向けの機能を提供します。
- Apache Maven を使用したイメージのコンパイル、ビルド、およびデプロイ
- プラグインを使用してコア機能の拡張
- 共有可能なライブラリーおよびカスタムスクリプトの再利用
5.3.6.1. Jenkins および OpenShift Pipelines での Maven パイプラインの実行 リンクのコピーリンクがクリップボードにコピーされました!
Jenkins ワークフローと OpenShift Pipelines ワークフローの両方で Maven を使用して、イメージのコンパイル、ビルド、およびデプロイを行うことができます。既存の Jenkins ワークフローを OpenShift Pipelines にマッピングするには、以下の例を検討してください。
例: Jenkins の Maven を使用して、イメージをコンパイルおよびビルドし、OpenShift にデプロイする
例: OpenShift Pipelines の Maven を使用して、イメージをコンパイルおよびビルドし、OpenShift にデプロイする
5.3.6.2. プラグインを使用して Jenkins および OpenShift Pipelines のコア機能を拡張する リンクのコピーリンクがクリップボードにコピーされました!
Jenkins には、その広範なユーザーベースによって長年にわたって開発された多数のプラグインの大規模なエコシステムという利点があります。Jenkins プラグインインデックス でプラグインを検索および参照できます。
OpenShift Pipelines には、コミュニティーおよびエンタープライズユーザーによって開発および提供された多くのタスクもあります。再利用可能な OpenShift Pipelines タスクの公開されているカタログは、Tekton Hub で入手できます。
さらに、OpenShift Pipelines は、Jenkins エコシステムのプラグインの多くをコア機能に組み込んでいます。たとえば、承認は Jenkins と OpenShift Pipelines の両方で重要な機能です。Jenkins は Role-based Authorization Strategy プラグインを使用して認可を保証しますが、OpenShift Pipelines は OpenShift のビルトインロールベースアクセス制御システムを使用します。
5.3.6.3. Jenkins および OpenShift Pipelines での再利用可能なコードの共有 リンクのコピーリンクがクリップボードにコピーされました!
Jenkins 共有ライブラリー は、Jenkins パイプラインの一部に再利用可能なコードを提供します。ライブラリーは、Jenkinsfiles 間で共有され、コードの繰り返しなしに、高度にモジュール化されたパイプラインを作成します。
OpenShift Pipelines には Jenkins 共有ライブラリーの直接の機能は存在しませんが、カスタムタスクやスクリプトと組み合わせて Tekton Hub のタスクを使用して同様のワークフローを実行できます。