This documentation is for a release that is no longer maintained
See documentation for the latest supported version.Jenkins の設定
セキュアな CI/CD ワークフロー用に Jenkins を設定する方法を学ぶ
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
Jenkins パイプラインが脆弱性スキャン、イメージ署名、アテステーションなどの重要なタスクを実行できるようにするには、次の手順に従います。この表には、実行する必要があるアクションと、完了する必要があるタイミングをまとめています。
| アクション | 完了するタイミング |
| 外部ツールとのセキュアな統合のために Jenkins にシークレットを追加する | セキュアなソフトウェアテンプレートを使用してアプリケーションを作成する前に、Jenkins にシークレットを追加します。これにより、ACS、Quay、GitOps とのシームレスな統合が保証されます。 |
| Jenkins にアプリケーションを追加する | アプリケーションとソースリポジトリーを作成したら、それらを Jenkins に追加します。これにより、Red Hat Developer Hub プラットフォームで Jenkins パイプラインのさまざまな側面を確認できるようになります。 |
これらの手順を完了すると、Jenkins を ACS (Advanced Cluster Security)、Quay、GitOps とシームレスに統合し、コンテナーイメージの署名と検証に Cosign を利用できます。
第1章 外部ツールとのセキュアな統合のために Jenkins にシークレットを追加する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの作成時に CI プロバイダーとして Jenkins を選択した場合は、外部ツールとのセキュアな統合のために Jenkins にシークレットを追加する必要があります。これにより、Jenkins は脆弱性スキャン、イメージ署名、アテステーション生成などの重要なタスクを実行できるようになります。
前提条件
- Jenkins ジョブ、変数、CI パイプラインの作成および管理に必要な権限がある。
- コンテナーイメージをプルするために使用する、Quay.io、Jfrog Artifactory、Sonatype Nexus などのイメージレジストリーのユーザー名とパスワードがある。
- 適切な GitOps 認証情報がある。
Jenkins パイプラインで実行する特定のタスクに使用するため、次の情報がある。
ACS タスクの場合:
- ROX Central サーバーのエンドポイントとトークン
SBOM タスクの場合:
- 署名キーのパスワード、秘密鍵、公開鍵に署名する
- 信頼 URL、クライアント ID、シークレット、およびサポートされている CycloneDX バージョン
注記これらの認証情報に使用される値はすでに Base64 でエンコードされているため、変換する必要はありません。これらの認証情報は
private.envファイルにあります。
手順
- Web ブラウザーで Jenkins インスタンスを開き、管理者の認証情報でログインします。
- Jenkins ダッシュボードの右上隅にあるユーザー名を選択します。
- 左側のサイドバーから Credentials を選択します。
- 認証情報を追加する適切なドメインを選択します。通常は、Global credentials (unrestricted) です。
- Add Credentials を選択します。
- Kind ドロップダウンリストから、Secret text を選択します。
- Scope ドロップダウンリストのデフォルト値は Global (Jenkins) のままにします。
- Secret フィールドに ACS API トークンを入力します。
-
ID フィールドに
ROX_API_TOKENを入力します。 - Description フィールドには、認証情報の適切な説明を入力します。
以下の認証情報に対して、手順 5 - 10 を繰り返します。
Expand 変数 説明 1 つのイメージレジストリーに対してのみイメージレジストリー認証情報を提供します。
QUAY_IO_CREDS_USRQuay.io リポジトリーにアクセスするためのユーザー名。
QUAY_IO_CREDS_PSWQuay.io リポジトリーにアクセスするためのパスワード。
ARTIFACTORY_IO_CREDS_USRJFrog Artifactory リポジトリーにアクセスするためのユーザー名。
ARTIFACTORY_IO_CREDS_PSWJFrog Artifactory リポジトリーにアクセスするためのパスワード。
NEXUS_IO_CREDS_USRSonatype Nexus リポジトリーにアクセスするためのユーザー名。
NEXUS_IO_CREDS_PSWSonatype Nexus リポジトリーにアクセスするためのパスワード。
Jenkins がローカル以外の OpenShift インスタンスで実行され、Rekor サービスと TUF サービスが異なるクラスター上にある場合は、これらの変数を設定します。
REKOR_HOSTRekor サーバーの URL。
TUF_MIRRORTUF サービスの URL。
Jenkins の GitOps 設定
GITOPS_AUTH_PASSWORD新しくビルドされたイメージの GitOps リポジトリーを更新するためにシステムが使用するトークン。
GITOPS_AUTH_USERNAME(任意)Jenkins が GitLab と連携するために必要なパラメーター。また、Jenkinsfile でこのパラメーターを含む行のコメントを解除する必要があります (GITOPS_AUTH_USERNAME = credentials('GITOPS_AUTH_USERNAME')。デフォルトでは、この行はコメントアウトされています。
ACS タスクに必要な変数
ROX_CENTRAL_ENDPOINTROX Central サーバーのエンドポイント。
ROX_API_TOKENROX サーバーにアクセスするための API トークン。
SBOM タスクに必要な変数
COSIGN_SECRET_PASSWORDCosign 署名鍵のパスワード。
COSIGN_SECRET_KEYCosign の秘密鍵。
COSIGN_PUBLIC_KEYCosign の公開鍵。
TRUSTIFICATION_BOMBASTIC_API_URLSBOM 生成で使用される Trustification Bombastic API の URL。
TRUSTIFICATION_OIDC_ISSUER_URLTrustification Bombastic API と対話する際の認証に使用される OIDC 発行者 URL。
TRUSTIFICATION_OIDC_CLIENT_IDOIDC を使用して Trustification Bombastic API に認証するためのクライアント ID。
TRUSTIFICATION_OIDC_CLIENT_SECRETTrustification Bombastic API への認証にクライアント ID と一緒に使用されるクライアントシークレット。
TRUSTIFICATION_SUPPORTED_CYCLONEDX_VERSIONシステムがサポートして生成する CycloneDX SBOM バージョンを指定します。
最後に実行したパイプラインを再実行します。
- または、GitHub でアプリケーションのソースリポジトリーに切り替えて、小さな変更を加え、コミットして新しいパイプラインの実行をトリガーします。
第2章 Jenkins にアプリケーションを追加する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションの作成時に CI プロバイダーとして Jenkins を選択した場合は、アプリケーションを Jenkins に追加する必要があります。適切な統合により、パイプラインが CI/CD ワークフローと連携し、シームレスに動作するようになります。
前提条件
- 環境に Jenkins がインストール、設定されている。
- Jenkins ジョブの作成および管理に必要な権限がある。
- RHTAP のインストール後のフェーズで、Jenkins パイプラインの 正しい認証情報を追加 している。
-
Jenkinsfileを確認して Jenkins 設定と一致しているようにする。たとえば、パイプラインを実行できる場所を制限するためにエージェント設定を更新する必要がある場合があります。 -
Jenkins エージェントに必要なバイナリーがインストールされている (
git、curl、jq、yq、buildah、syft、cosign、python3、およびtree)。パイプラインの実行が開始時に失敗する場合は、1 つ以上のバイナリーが欠落していることを示している可能性があります。
手順
- Jenkins インスタンスにログインします。
- Jenkins ダッシュボードから、New Item を選択します。
パイプラインジョブの名前を入力し、Pipeline プロジェクト (例:
secure-jenkins) を選択します。注記パイプラインジョブの名前は、Jenkins CI を追加するアプリケーションの名前と一致する必要があります。名前が一致しないと、パイプラインは Jenkins 上で実行しれますが、RHDH には表示されません。
-
(オプション) 別のパイプライン名を使用する場合は、ソースリポジトリーの
catalog-info.yamlファイルのjenkins.io/job-full-nameフィールドを、選択したパイプライン名に更新します。
-
(オプション) 別のパイプライン名を使用する場合は、ソースリポジトリーの
- OK を選択してジョブを作成します。
- Configure > General ページで Pipeline セクションに移動し、Definition ドロップダウンリストから Pipeline script from SCM を選択します。
- SCM ドロップダウンリストから Git を選択します。
Repository URL フィールドに、Jenkins ソースリポジトリーの URL を入力します。
- Red Hat Developer Hub プラットフォームのカタログから適切なアプリケーションを選択します。
- Overview タブに移動し、View Source を選択して、アプリケーションのソースコードが格納されているリポジトリーを開きます。
-
Branches to build セクションで、
*/mainと入力します。 - Save を選択します。システムは live-jenkins (ジョブの名前) ページを表示します。
Build Now を選択します。システムはビルドパイプラインを開始します。ビルドが完了するまで待機します。
- Stage View セクションで、Pipeline Overview を選択し、パイプライン実行を視覚化します。
- Pipeline Console を選択して、パイプライン実行の各ステージのライブログを確認します。
検証
アプリケーションを Jenkins と統合したら、Red Hat Developer Hub プラットフォームで Jenkins パイプラインのさまざまな側面を確認します。
カタログから適切なアプリケーションまたはコンポーネントを選択します。
- CI タブに移動して、Jenkins プロジェクトを表示します。適切な Jenkins ジョブは、Actions 列を使用して、ジョブの表示、再実行、および履歴の表示を行うことができます。システムは、最新の実行のステータスを含むジョブの概要を表示します。
- CD タブに移動し、適切なカードを選択して、コミットメッセージ、作成者名、ArgoCD と GitOps により管理されるデプロイメント履歴などのデプロイメントの詳細を表示します。
- カタログの Kind ドロップダウンリストから Resource を選択します。システムは Jenkins GitOps ジョブを表示します。適切な GitOps リソースを選択して確認します。
- Topology タブに移動して、デプロイメント namespace 内でのアプリケーションのデプロイメントを視覚化します。
これらの手順を完了すると、アプリケーションと Jenkins がシームレスに統合され、効率的で信頼性の高い CI/CD ワークフローが実現します。
改訂日時: 2025-02-07