Jenkins Xの概要
Jenkins X(じぇんきんずえっくす)は、Kubernetes上で動作するクラウドネイティブアプリケーションに対して継続的インテグレーション(Continuous Integration)および、継続的デリバリー(Continuous Delivery)を行うための自動ビルドツールです。
Jenkins Xは、2018年3月14日にApache Groovy の開発者であるジェームス・ストラカンが後援するJenkinsの仕様を決定する仕組みであるJenkins Enhancement Proposalで発表されました。
Jenkinsとの大きな違いは、Git/Docker/Kubernetesを利用したクラウドネイティブアプリケーションを前提としたアーキテクチャになっている点です。あえて、開発プロセスを限定することで、CI/CDにかかわる設定の複雑さや、それにかかる運用の労力を低減させる狙いがあります。
Jenkins Xのロゴには当初Jenkins のウェイターにKubernetes の航海のイメージを重ねたキャラクターが使用されていましたが、現在は2019年7月に発表された自動化をイメージさせるロボットのキャラクターが主に使用されています。
Jenkins Xのアーキテクチャは以下の通りです。
Jenkins Xの概念モデルは以下です。
出典:https://jenkins-x.io/about/
Jenkins Xでは、主に以下のような機能が提供されます。
- CI/CDの自動化
- GitOpsによるアプリケーションと環境とプロモーション
- masterにマージする前のプルリクエストによるプレビュー環境
- コメントによるIssueとプルリクエストのフィードバック
Jenkins Xは、Kubernetesが動作する主要なクラウドプラットフォーム(Amazon、Azure、Google、IBM Cloud、OpenShift、Pivotalなど)で動作します。
Jenkins Xの特徴
コマンドライン |
Jenkins Xは、jxコマンドラインツールにより以下のような操作を簡単に行えます。
|
---|---|
パイプラインの自動化 |
Jenkinsのパイプラインについて深い知識がなくても、DevOpsのベストプラクティスに則ったCI/CDの双方を実現するパイプラインをプロジェクトに自動で組み込むことができます。 |
複数環境の対応 |
Jenkins Xでは、複数環境(テスト/ステージング(UAT)/本番など)に対応します。各環境に展開されるKubernetesリソースは、Gitリポジトリでバージョン管理されます。プルリクエストが各環境のGitリポジトリにマージされると該当の環境用のパイプラインが実行されます。 |
チームでの利用 |
Jenkins Xでのチームとは、別々の名前空間にJenkins Xをインストールすることを表します。--namespaceオプションを利用することで、同一クラスタに異なる名前空間にJenkins Xをインストールできます。ただし、helm 2.xを使っている場合は、Tillerを利用しない設定に変更する必要があります。 |
プロモーション |
各環境のGitリポジトリへのプルリクエスト生成や、masterへのマージにより、各環境のパイプラインがトリガーされます。Jenkins XのCDパイプラインでは、環境に応じて自動化されます。デフォルトではステージング環境は自動プロモーションが利用され、本番環境は手動プロモーションが利用されます。 |
プレビュー環境 |
Jenkins Xでは、プルリクエストに対応したプレビュー環境を起動できます。これにより、変更をmasterにマージする前に迅速にフィードバックを得られます。 また、プレビュー環境が起動すると、プルリクエストにリンク付きコメントが投稿され、チームメンバーが1クリックでプレビューを試すことが可能となります。 |
フィードバック |
issueに関連したコミットコメントがあった場合、Jenkins Xのパイプラインは、リリースノートを生成します。また、新しいコミットを含むバージョンがステージング環境や本番環境へプロモートされた際には、修正されたissue自動的にコメントが投稿されます。 |
アプリケーション |
Jenkins Xでは、NexusやChartMuseum、Monocular、Prometheus、Grafanaなどの著名なソフトウェアツール群がヘルムチャートとしてパッケージ化されており、アドオンとして追加が可能です。 |
Jenkins Xの動作環境
- Kubernetesが動作する主要なクラウドプラットフォーム(Amazon、Azure、Google、IBM Cloud、OpenShift、Pivotalなど)を利用していること
- Kubernetesクラスタが作成されていること(Terraformの使用を推奨)
- jx コマンドがインストールされていること
Jenkins X 機能マトリックス
機能 | GKE | EKS | OpenShift3.11 |
---|---|---|---|
クラスタ作成用Terraformスクリプト | ○ | ○ | × |
インストール用jxブート | ○ | ○ | ○ |
シークレットストレージ用Vault | ○ | ○ | セルフプロビジョニング |
バケットログストレージ | ○ | ○ | ○ |
Kubernetesバージョン | |||
- 1.13 | ○ | × | 非対応 |
- 1.14 | ○ | ○ | 非対応 |
- 1.15 | プレビュー | プレビュー | 非対応 |
- 1.16 | プレビュー | プレビュー | 非対応 |
ソースコントロールプロバイダ | |||
-Github | ○ | ○ | ○ |
- Github Enterprise | ○ | ○ | ○ |
- Gitlab CE | プレビュー | プレビュー | プレビュー |
- Gitlab EE | プレビュー | プレビュー | プレビュー |
- Bitbucket Server | プレビュー | プレビュー | プレビュー |
- Bitbuket Cloud | × | × | × |
類似の機能をもつOSS
オープンソースのCI/CDツールとしては以下のものがあります。
- Buildbot
- GoCD
- Jenkins
- Spinnaker
- Tekton
- Travis CI
Jenkins Xのライセンス
Jenkins Xは、Apache2.0ライセンスです。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と公開が認められています。
Jenkins Xの公式サイト
Jenkins Xのダウンロードサイト
Jenkins Xのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。