第1章 Jenkins イメージの設定
OpenShift Dedicated には、Jenkins を実行するためのコンテナーイメージがあります。このイメージには Jenkins サーバーインスタンスが含まれており、このインスタンスを使用して継続的なテスト、統合、デリバリーの基本フローを設定できます。
イメージは、Red Hat Universal Base Images (UBI) に基づいています。
OpenShift Dedicated は Jenkins の LTS リリースに準拠しています。OpenShift Dedicated は Jenkins 2.x を含むイメージを提供します。
OpenShift Dedicated の Jenkins イメージは、Quay.io または registry.redhat.io で入手できます。
以下に例を示します。
$ podman pull registry.redhat.io/ocp-tools-4/jenkins-rhel8:<image_tag>
Jenkins イメージを使用するには、これらのレジストリーから直接アクセスするか、イメージを OpenShift Dedicated のコンテナーイメージレジストリーにプッシュします。さらに、コンテナーイメージレジストリーまたは外部の場所で、対象イメージを参照するイメージストリームを作成することもできます。これにより、OpenShift Dedicated リソースがイメージストリームを参照できるようになります。
ただし、OpenShift Dedicated は、利便性のために、コア Jenkins イメージ用の openshift
namespace でイメージストリームを提供するほか、OpenShift Dedicated と Jenkins の統合用に用意されたサンプルエージェントイメージも提供します。
1.1. 設定とカスタマイズ
Jenkins 認証は、以下の 2 つの方法で管理できます。
- OpenShift Dedicated ログインプラグインが提供する OpenShift Dedicated OAuth 認証。
- Jenkins が提供する標準認証。
1.1.1. OpenShift Dedicated OAuth 認証
OAuth 認証をアクティブ化するには、Jenkins UI の Configure Global Security パネルでオプションを設定するか、Jenkins の Deployment configuration の OPENSHIFT_ENABLE_OAUTH
環境変数を false
以外に設定します。これにより、OpenShift Dedicated ログインプラグインがアクティブ化されます。このプラグインは、Pod データから、または OpenShift Dedicated の API サーバーと対話して設定情報を取得します。
有効な認証情報は、OpenShift Dedicated のアイデンティティープロバイダーによって制御されます。
Jenkins はブラウザーおよびブラウザー以外のアクセスの両方をサポートします。
有効なユーザーは、ログイン時に Jenkins 認証マトリックスに自動的に追加されます。その際に、OpenShift Dedicated のロールによって、ユーザーに付与される特定の Jenkins パーミッションが指定されます。デフォルトで使用されるロールは、事前に定義される admin
、edit
、および view
です。ログインプラグインは、Jenkins が実行しているプロジェクトまたは namespace のそれらのロールに対して自己 SAR 要求 (self-SAR request) を実行します。
admin
ロールを持つユーザーには、従来の Jenkins 管理ユーザーパーミッションがあります。ユーザーのパーミッションは、ロールが edit
、view
になるほど少なくなります。
デフォルトの OpenShift Dedicated の admin
、edit
、および view
ロールと、Jenkins インスタンスでそれらのロールに割り当てられる Jenkins パーミッションは設定可能です。
OpenShift Dedicated の Pod で Jenkins を実行すると、ログインプラグインは、Jenkins が実行している namespace で openshift-jenkins-login-plugin-config
という名前の config map を検索します。
ログインプラグインがその config map を検出して読み取ることができる場合は、Jenkins パーミッションマッピングにロールを定義できます。具体的には以下を実行します。
- ログインプラグインは、config map 内のキーと値のペアを、OpenShift Dedicated のロールマッピングに対する Jenkins パーミッションとして処理します。
- キーは Jenkins パーミッショングループの短い ID と Jenkins パーミッションの短い ID で、この 2 つはハイフンで区切られています。
-
OpenShift Dedicated のロールに
Overall Jenkins Administer
パーミッションを追加する場合は、キーがOverall-Administer
である必要があります。 - パーミッショングループおよびパーミッション ID が利用可能であるかどうかを把握するには、Jenkins コンソールのマトリックス認証ページに移動し、グループの ID とグループが提供するテーブルの個々のパーミッションを確認します。
- キーと値のペアの値は、パーミッションの適用先となる OpenShift Dedicated ロールのリストです。各ロールはコンマで区切ります。
-
Overall Jenkins Administer
パーミッションをデフォルトのadmin
およびedit
ロールの両方に追加し、作成した新規の jenkins ロールも追加する場合は、キーのOverall-Administer
の値がadmin,edit,jenkins
になります。
OpenShift Dedicated の OAuth を使用する場合、OpenShift Dedicated の Jenkins イメージに管理者権限を使用して事前設定されている admin
ユーザーには、管理者権限が付与されません。この権限を付与するには、OpenShift Dedicated クラスター管理者が OpenShift Dedicated のアイデンティティープロバイダーでそのユーザーを明示的に定義し、そのユーザーに admin
ロールを割り当てる必要があります。
保存される Jenkins ユーザーのパーミッションは、初回のユーザー作成後に変更できます。OpenShift Dedicated ログインプラグインは、OpenShift Dedicated の API サーバーをポーリングしてパーミッションを取得し、ユーザーごとに Jenkins に保存されているパーミッションを、OpenShift Dedicated から取得したパーミッションを更新します。Jenkins UI を使用して Jenkins ユーザーのパーミッションを更新する場合には、プラグインが次回に OpenShift Dedicated をポーリングするタイミングで、パーミッションの変更が上書きされます。
ポーリングの頻度は OPENSHIFT_PERMISSIONS_POLL_INTERVAL
環境変数で制御できます。デフォルトのポーリングの間隔は 5 分です。
OAuth 認証を使用して新しい Jenkins サービスを作成するには、テンプレートを使用するのが最も簡単な方法です。
1.1.2. Jenkins 認証
テンプレートを使用せず、イメージが直接実行される場合は、デフォルトで Jenkins 認証が使用されます。
Jenkins の初回起動時には、設定、管理ユーザーおよびパスワードが作成されます。デフォルトのユーザー認証情報は、admin
と password
です。標準の Jenkins 認証を使用する場合に限り、JENKINS_PASSWORD
環境変数を設定してデフォルトのパスワードを設定します。
手順
次のコマンドを実行して、標準の Jenkins 認証を使用する Jenkins アプリケーションを作成します。
$ oc new-app -e \ JENKINS_PASSWORD=<password> \ ocp-tools-4/jenkins-rhel8