CloudBees CI
組織的なCI/CD運用を実現する
CloudBees CIは、 OSSのJenkinsをベースに、複数のJenkinsの管理・監視・安定性などエンタープライズ機能を提供するCI/CDプラットフォームです。
Jenkinsの管理のしやすさとセキュリティを拡張するためのエンタープライズ機能をプラットフォーム管理者に提供します。また、 Jenkinsに関する専門的サポートを提供するのと同時に、チーム・プロジェクト・ジョブの数とともに負荷が増加する「CI/CDベストプラクティスの展開」を支援します。
<こんな課題をお持ちの方にお勧め>
- 組織内にCI/CDの共通プラットフォームを提供したい
- 乱立したJenkinsの管理コストを下げたい
- CI/CDのベストプラクティスを組織内で広めたい
- ビルドの実行リソースを組織内で共有/活用したい
CloudBees CIの必要性とは
Jenkinsは世界中で人気のあるオープンソフトウェアです。そのため気軽に運用を開始することができ、Jenkinsの豊富な機能やプラグインを用いることで環境を発展させていくことが可能です。その一方でJenkinsの運用を進めていくうちに課題も発生してくることがあります。Jenkinsを社内で広く運用していくためには、スケーラビリティの高いJenkins環境の構築や、社内のJenkins運用方法の確立、また全体のJenkins環境を監視・コントロールするしくみが必要になります。
そこで、おすすめしたいCI/CDプラットフォームが「CloudBees CI」です。CloudBees CIは、社内のJenkins環境を管理するためのさまざまな機能を提供しています。CloudBees CIを利用することで、堅牢かつ柔軟で、統制の取れたCI/CD環境を開発者に提供することが可能です。
また、CloudBees CIでは、管理をさらに容易にする有償プラグインを多数ご用意しています。
- 企業規模での継続的デリバリーを実現
- インストールとアップデートの一括実行
- コンテナやKubernetesを利用した堅牢かつスケーラブルな環境
- チーム間のパイプラインの共有・連携
- 細やかなセキュリティ設定
- クラウドとの親和性
- 開発者の生産性向上
- ビルドやコントローラーの障害復旧
- ビルドエージェントの共有と制御
- 組織向けの分析機能
- スペシャリストによるテクニカルサポート
★Jenkinsのパフォーマンスとスケーラビリティのアップデート★
↓↓
- 高可用性(アクティブ/アクティブ)
- ワークスペースのキャッシュ
- 大きなリポジトリ向けのマルチブランチ/組織フォルダのビルド戦略
- パイプラインのトラブルシューティングの最適化
主な機能
Operations Center/共有エージェント
Operations Centerというマスターを管理するためのJenkinsがあり、煩雑になりがちな複数のJenkinsの管理を簡単に行うことができる機能があります。複数チームで1つのJenkinsを利用する必要がなく、チームごとに個別のJenkinsを提供できます。また、全てのJenkinsからエージェント(スレーブ)として利用できる共有エージェントの設定やマスターごとのプラグインアップデートセンターを独自に作成するなど、組織的にJenkinsを利用する際の管理を支援する機能が多くあります。
Operations Centerを利用することで共有エージェントを設定することができます。共有エージェントとは、複数のJenkinsから共有して利用できるエージェントノードのことで、OSSのJenkinsではマスターそれぞれに登録する必要がありました。Jenkinsではビルド実行時の分散ビルドシステムとしてエージェントでの実行が可能ですが、組織的に複数のJenkinsを最適化するのはとても困難です。共有エージェントのシステムがあれば、複数のJenkins全体のCI実行を最適化して、理想的な分散ビルドを実現することができます。
高可用性と水平スケーラビリティ
CloudBees CI の高可用性モード※1は、予期せぬ障害が発生した場合でも、継続的なパイプライン操作のダウンタイムを削減または排除します。このモードは水平方向のスケーラビリティももたらし、レプリカ間でのワークロード共有を可能にすることで、過負荷になった単一のコントローラーを信頼性の高い安定したコントローラーに変換します。
これにより、自動負荷分散と単一障害点に対する保護が提供されるため、ソフトウェアのデリバリープロセスが中断されなくなります。
利点
- 単一障害点に対する保護
- Jenkins の高可用性ソリューション
- システムの可用性を最大限に高める
- これまで以上にスケール
機能
- コントローラーのフェイルオーバー
- ダウンタイムゼロのローリング再起動※2
- 負荷分散
- 自動スケーリング※2
※1 Windows上のコントローラーは未サポート
※2 CloudBees CI on modern cloud platforms のみ
1.コントローラーのレプリカにより、高可用性が可能になります。
2.ロード バランサーは、異なるコントローラー レプリカ間でワークロードを分散します。
3.コントローラーのコンテンツを永続化するための共有ファイル システム。
4.Hazelcast はコントローラーのライブ状態を同期させます。
高可用性(アクティブ/アクティブ)
コントローラーのフェイルオーバー
レプリカが異常終了した場合でも、エージェントは実行し続けます。レプリカの異常終了後しばらくすると、エージェントは実行中の別のレプリカに接続されます。異常終了したレプリカで実行中のジョブの実行は、別のレプリカで継続されます。
ダウンタイムゼロのローリング再起動
ローリング再起動を実行すると、新しいレプリカセットが作成され、古いレプリカが順々に新しいレプリカに置き換わります。これにより、Jenkinsコントローラーの再起動中の高可用性が提供され、CI/CDのダウンタイムゼロが実現します。
自動スケーリング
Jenkinsコントローラーの負荷に応じて自動的にレプリカ数を増減できます。各レプリカが過負荷になることを防止し、多数の開発者やジョブを抱えるモノリスコントローラーの安定性、ジョブ実行のパフォーマンス、UIの操作性などが向上します。
ワークスペースキャッシュでCIを高速化
CloudBees CI ワークスペースキャッシュ機能は、以前のビルドからキャッシュされた成果物を再利用して、ビルドを高速化し、フィードバックループ時間を短縮し、潜在的なリリース遅延を回避し、必要以上に長く一時的なエージェントを実行することに関連するコストを削減します。結果として、ビルド時間を数分から数時間も短縮し、CI/CDパイプラインを大幅に最適化します。
利点
- ビルドを高速化
- 開発者へのフィードバックを加速
- プロジェクトの特定のニーズに基づいた最適化が可能
機能
- AWS S3にキャッシュを保存
- writeCache およびreadCache パイプラインステップ
テンプレートを使用してパイプラインの一貫性を確保
大規模に運営されている組織は、混乱を防ぐために一貫性が必要です。
パイプラインテンプレートを使用すると、CI/CDパイプラインの一貫性を確保することができます。
開発者は製品の出荷に集中することができ、組織は開発者が使用するパイプラインを標準化することができます。
ユーザーのアクセス権限を一括で管理・制御
ユーザーと権限の管理をOperations Centerで一括で行うことができます。それぞれのJenkinsでは一括で管理されているユーザーの権限でログインを行うことができ、Jenkinsを新しく起動するたびユーザーの設定などを行う必要がなくなります。マスターごとにもアクセス権限が設定できるので、プロジェクト単位で権限のあるユーザーしかアクセスできないJenkinsを立てることも可能です。
さらに、CloudBees HashiCorp Vault プラグイン※は、CloudBees CIの認証情報ストアを有効にします。
HashiCorp Vault は、ユーザーまたは Vault クライアントが Secret Engine を介して機密情報(パスワード、キー、証明書、アクセストークンなど)を管理できるシークレット管理システムです。認証情報はリモートの HashiCorp Vault インスタンスに保存され、シークレットはオンデマンドでアクセスされます。このプラグインを使用すると、すべてのコントローラの認証情報を一元管理できます。
※ Vault インスタンスは CloudBees CI に含まれておりません。お客様自身にてご用意いただく必要があります。
CloudBees Support
Jenkinsのプロフェッショナルによる検証が行われており、本体とプラグインの動作保証があります。そのため、バージョンアップのたびに動作検証を行うような必要もなく、常に最新バージョンへクリック1つでバージョンアップが可能です。また、エラーが発生するような場合でもテクニカルサポートがあるため、ミッションクリティカルな業務でも安心して安定した稼動をサポートが提供されます。
Jenkinsのよくある課題とCloudBees CIでできること
Jenkinsを利用するチームやプロジェクトを増やしていく際には「どのようにJenkins環境を構築、管理していくか」を考えることがより重要になります。無計画にJenkins環境を拡大してしまうと、管理が難しい不安定な環境ができあがってしまい、パフォーマンスや安定性の低下、セキュリティリスクなどのさまざまな問題を抱えることになります。
よくある課題を大まかに分けると、モノリシックJenkins課題(単一のJenkins環境の肥大化)と野良Jenkins課題(複数のJenkins環境の乱立)のふたつに分類することができます。それぞれの課題と対策について、ご紹介します。