第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>
$ 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$ oc new-app -e \ JENKINS_PASSWORD=<password> \ ocp-tools-4/jenkins-rhel8Copy to Clipboard Copied! Toggle word wrap Toggle overflow