Red Hat Trusted Application Pipeline のインストール
クラスターに Red Hat Trusted Application Pipeline をインストールする方法の説明
概要
はじめに
Red Hat Trusted Application Pipeline (RHTAP) は、実際には単一の製品ではありません。一連の製品を組み合わせて構成されたものであり、高度な自動化とカスタマイズ性を特徴とする、アプリケーション構築のためのセキュアなプラットフォームです。
RHTAP には次の製品が含まれます。
- Red Hat Developer Hub: 開発者向けのセルフサービスポータル。
- OpenShift GitOps: Kubernetes のデプロイメントとそのインフラストラクチャーを管理します。
- OpenShift Pipelines: ソフトウェアの継続的インテグレーションおよび継続的デリバリー (CI/CD) の自動化と視覚化を実現します。
- Trusted Artifact Signer: RHTAP が生成するアーティファクトに署名し、検証します。
- Trusted Profile Analyzer: セキュリティー体制に関する実用的な情報を提供します。
また、以下の製品に依存します。
- Quay.io: RHTAP がアーティファクトを保存するコンテナーレジストリー。
- Advanced Cluster Security (ACS): RHTAP がアーティファクトをスキャンするために使用するセキュリティーツール。
RHTAP がサポートするこれらの製品のバージョンを正確に確認するには、リリースノート の互換性およびサポートマトリックスを参照してください。
完全に機能する RHTAP のインスタンスには、上記のすべての製品が含まれるため、RHTAP のインストールには時間と労力がかかります。ただし、このプロセスは可能な限り自動化されています。ここでは役に立つ簡潔な手順を記載します。
さらに、RHTAP インストーラーはマネージャーではなく、アップグレードをサポートしません。インストーラーは RHTAP の最初のデプロイメントを生成します。インストール後、RHTAP 内の各製品を個別に管理します。
インストールを開始する前に、6 つの前提条件を満たす必要があります。その後、7 つの手順を完了する必要があります。
前提条件
- CLI と Web コンソールの両方から OpenShift Container Platform (OCP) クラスターに ClusterAdmin としてアクセスできる。
Red Hat Advanced Cluster Security のインスタンスと、そのインスタンスの次の値がある。
ACS がイメージレジストリー内のプライベートリポジトリーにアクセスできるように、ACS をお使いのレジストリー用に設定する必要があります。
- Quay.io の場合は、Integrations→Image Integrations で Quay.io カードを選択します。
- お使いの Quay.io インスタンスにアクセスするための OAUTH トークンを追加します。
- テストボタンでアクセスを検証します。これにより、RHTAP がプライベートイメージをスキャンするように求められたときに、ACS がアクセスできるようになります。
- Quay.io アカウント
- Helm CLI ツール
- GitHub アカウント
手順
- RHTAP 用の GitHub アプリケーションの作成
- テンプレートカタログのフォーク
- GitOps git トークンの作成
- Docker 設定値の作成
- private-values.yaml ファイルの作成
- クラスターへの RHTAP のインストール
- GitHub アプリケーションの完成
このドキュメントの次のページで、それぞれの手順について詳しく説明します。前提条件を満たせば、GitHub アプリケーションを作成してインストールプロセスを開始する準備が整います。
第1章 RHTAP 用の GitHub アプリケーションの作成
RHTAP 用の GitHub アプリケーションを作成すると、開発者が Red Hat Developer Hub に対して認証できるようになります。Developer Hub は、RHTAP を使用できる開発者向けのユーザーインターフェイス (UI) です。また、この GitHub アプリケーションにより、RHTAP が GitHub でホストされている開発者のソースコードにアクセスできるようになります。
この新しいアプリケーションは、お客様が所有し、Red Hat Trusted Application Pipeline のインスタンスに使用する GitHub 組織に作成してインストールする必要があることに注意してください。その後、その組織内に RHTAP が新しいリポジトリーを作成し、構築するアプリケーションのソースコードを提供します。
前提条件
- GitHub 組織の所有権
手順
- GitHub にログインし、組織 (Settings > Organizations) に移動します。
- お客様が所有し、RHTAP のこのインスタンスに使用する組織をクリックします。または、New organization を選択して新しい組織を作成することもできます。
- 組織のコンテキストで、GitHub Apps ページ (Settings > Developer settings > GitHub Apps) に移動します。
- ページの右側、上部のバナーの近くにある New GitHub App を選択します。
- プロンプトが表示されたら、必要に応じて認証します。
- GitHub App name フィールドに一意の名前を入力します。
- Homepage URL フィールドにプレースホルダー値 (例: https://www.placeholder.com) を入力します。
- Callback URL フィールドにプレースホルダー値を入力します。同じプレースホルダー値 (例: https://www.placeholder.com) を使用できます。
- Webhook URL フィールドにプレースホルダー値を入力します。同じプレースホルダー値 (例: https://www.placeholder.com) を使用できます。また、Active チェックボックスがオンになっていることを確認します (GitHub ではデフォルトでオンになっているはずです)。
ローカルシステムに新しいファイルを作成します。このファイルには、インストールプロセスの後の手順で必要になるいくつかの値を保存します。このファイルに値を入力するときは、後で各値が何であるかを思い出せるように必ずラベルを付けてください。
$ touch ~/install_values.txt
CLI でシークレットを生成し、ラベルを付けて
~/install_values.txt
に保存します。OpenSSL をお持ちでない場合は、ダウンロード手順 に従ってください。
$ openssl rand -hex 20 >> ~/install_values.txt
重要このコマンドの出力を必ず保存してください。
- GitHub の Webhook secret フィールドに、先ほどのコマンドの出力を入力します。
Repository permissions で、次の権限を設定します。
- Administration: Read and write
- Checks: Read and write
- Contents: Read and write
- Issues: Read and write
- Metadata: Read-only (すでに正しく設定されているはずですが、値を確認してください)
- Pull requests: Read and write
Organization permissions で、次の権限を設定します。
- Members: Read-only
- Plan: Read-only
Subscribe to events で、次のサブスクリプションを選択します。
- Check run
- Check suite
- Commit comment
- Issue comment
- Pull request
- Push
- Where can this GitHub App be installed? で Any account を選択します。
- Create GitHub App をクリックします。すると、Developer Settings ページが表示されます。
Client ID と Application ID を取得します。ラベルを付けて
~install_values.txt
に保存します。重要次の 2 つの手順では、クライアントシークレットと秘密鍵を収集する方法を説明します。RHTAP のインストールプロセスを完了するには、クライアントシークレットと秘密鍵を保存し、アクセス可能な状態にしておく必要があります。
-
新しいアプリケーションのページで、Client secrets の横にある Generate a new client secret を選択します。クライアントシークレットにラベルを付けて、
~/install_values.txt
に保存します。 -
GitHub の同じページの Private keys で、Generate a private key ボタンを選択します。秘密鍵を含む
private-key
ファイルがダウンロードされます。秘密鍵ファイルの内容にラベルを付けて、~/install_values.txt
に保存します。秘密鍵は-----BEGIN RSA PRIVATE KEY-----
で始まり、-----END RSA PRIVATE KEY-----
で終わるようにする必要があります。 - 引き続き GitHub の同じページで、左側のタブから Install App を選択します。
- 組織名の横にある緑色の Install ボタンを使用します。
- プロンプトが表示されたら、All repositories を選択して、RHTAP が組織内に新しいリポジトリーを作成できるようにします。緑色の Install ボタンをクリックします。
関連情報
- このドキュメントの手順は、GitHub アプリケーションを作成するための Pipelines as Code のドキュメント に基づいています。
第2章 RHTAP カタログリポジトリーのフォーク
開発者が RHTAP のインスタンスを使い始めると、ニーズに合わせてインスタンスをカスタマイズする必要が生じる場合があります。RHTAP のカスタマイズ可能な要素の 1 つとして、提供するソフトウェアテンプレートのセットがあります。これらのテンプレートは、開発者がアプリケーションを迅速に構築するのに役立ちます。
デフォルトのソフトウェアテンプレートセットを含むカタログリポジトリーをフォークすると、インスタンスのテンプレートをカスタマイズできます。
前提条件:
- GitHub アカウント
手順:
- Web ブラウザーで、RHTAP ソフトウェアカタログリポジトリー に移動します。
ページのバナーの下にある Fork を選択し、リポジトリーをフォークします。
-
Main
ブランチのみをコピーするボックスのチェックを外します。
-
新しいフォークのバナーの下にある main をクリックしてドロップダウンメニューを開きます。Tags の下で、使用している RHTAP のバージョンに対応するリリースを選択します。
たとえば、RHTAP バージョン 1.0.0 を使用している場合は、このリリース のフォークされたインスタンスを使用する必要があります。
注記フォークを時々更新して、アップストリームリポジトリーの更新を RHTAP のインスタンスで利用できるようにしてください。
第3章 GitOps git トークンの作成
この手順と次の手順では、インストールを完了するために ~/install_values.txt
ファイルに必要な 2 つの値をさらに作成します。
前提条件:
- GitHub アカウント
手順:
- Web ブラウザーで、GitHub の Developer Settings ページに移動します。
- 左側のパネルの Personal access tokens で、Tokens (classic) を選択します。
- ページバナーの下にある Generate new token ドロップダウンメニューから、Generate new token (classic) を選択します。続行するのに認証が必要な場合があります。
- 名前を入力し、有効期限を選択して、Select scopes で repo を選択します (これにより、repo: status から security_events までのすべてのスコープが自動的に含まれるはずです)。
-
Generate token を選択します。GitHub で新しいページにリダイレクトされ、トークンが表示されます。このトークンにラベルを付けて、
~/install_values.txt
に保存してください。
第4章 Docker 設定値の作成
この手順では、~/install_values.txt
ファイルに必要な最後の値を作成します。
前提条件:
- Quay.io アカウント
手順:
- Web ブラウザーで Quay.io にログインします。バナーの右側でユーザー名を選択し、ドロップダウンメニューから Account Settings を選択します。
- ユーザー設定ページの Docker CLI Password で、Generate Encrypted Password を選択します。ポップアップウィンドウで、パスワードを入力して認証します。
-
次に、ポップアップウィンドウで、Docker Configuration > View [username]-auth.json を選択します。
"auth":
の後の文字列を引用符なしでコピーします。 ~/install_values.txt
ファイルで、Docker 設定値をラベルを付けて作成します。{"auths": {"quay.io/[username]": {"auth": "[auth token]","email": ""}}} という形式を使用し、適切な場所にユーザー名と認証トークンを使用します。注記RHTAP でビルドするイメージを、Quay 上のプライベートリポジトリーを使用してホストする予定の場合は、こちらのドキュメント の説明に従って、そのプライベートリポジトリーを Advanced Cluster Security に登録する必要があります。
第5章 private-values.yaml ファイルの作成
RHTAP は、インストールプロセスの大部分を自動化するのを Helm に依存しています。ただし、RHTAP をクラスターに正しくインストールするには、Helm に特定の情報が必要です。その情報を、インストールコマンドで参照できるファイルに指定する必要があります。ファイルの名前は private-values.yaml
です。
このファイルは複雑であるため、準備の際に手違いが発生しがちです。しかし、この手順では、private-values.yaml
を準備するプロセスを大幅に簡素化する方法を説明します。GitHub から RHTAP インストーラーリポジトリーをクローンし、そのリポジトリー内でシェルスクリプトを使用して、private-values.yaml
をより簡単に生成する方法を説明します。
前提条件:
- git CLI ツール
- yq CLI ツール
-
必要なすべての値を含む
~/install_values.txt
ファイル。このファイルは、最初の手順、3 番目の手順、および 4 番目の手順で作成したものです。 - Advanced Cluster Security インスタンスの API トークンと Central エンドポイント。
手順:
- Web ブラウザーで、GitHub の RHTAP インストーラーリポジトリー に移動します。
- 緑色の <> CODE ボタンを選択します。Local タブで、クローン作成に使用する接続タイプ (HTTPS、SSH、または GitHub CLI) を選択し、指定された URL をコピーします。
先ほどコピーした URL を使用してインストーラーを複製します。ただし、
main
ブランチをクローンしないでください。代わりに、release-XX
の形式で最新の stable リリースをクローンします。たとえば、公開時点で SSH を使用して最新の stable リリースをクローンするには、CLI で次のコマンドを実行します。
$ git clone -b release-1.0 git@github.com:redhat-appstudio/rhtap-installer.git
CLI で、RHTAP インストーラーリポジトリーのローカルクローンへ移動します。
$ cd rhtap-installer
bin/make.sh
スクリプトを実行します。$ bin/make.sh values
スクリプトにより、次の各フィールドに値を入力するように求められます。指示に従って、入力する値を決定します。任意のタイミングでスクリプトを停止する必要がある場合は、いつでも停止できます。
bin/make.sh values
コマンドを再実行するだけで、進行を再開できます。-
RHTAP_ENABLE_GITHUB: GitHub をアプリケーションの git リポジトリーとして使用する場合は
y
と入力します。 RHTAP_ENABLE_GITLAB: GitLab をアプリケーションの git リポジトリーとして使用する場合は
y
と入力します。重要このドキュメントの公開時点では、GitLab を RHTAP の Git ホストとして設定する方法は説明していませんが、そのように設定することは可能です。Red Hat はそのプロセスを文書化する作業を進めています。GitLab を使用する場合は、この手順の最後に記載されているドキュメントを参照してください。
-
RHTAP_ENABLE_DEVELOPER_HUB:
y
を入力します。 -
RHTAP_ENABLE_TAS: Red Hat Trusted Artifact Signer を使用してソフトウェアサプライチェーンのセキュリティーを強化する場合は、
y
を入力します。 -
RHTAP_ENABLE_TAS_FULCIO_OIDC_DEFAULT_VALUES: 上記の値を
y
に設定した場合は、y
を入力します。 -
RHTAP_ENABLE_TPA: Red Hat Trusted Profile Analyzer を使用してソフトウェアサプライチェーンのセキュリティーを強化する場合は、
y
を入力します。 - ACS__API_TOKEN: ACS インスタンスの API トークンを入力します。API トークンを作成するには、こちら の前提条件の手順に従ってください。
- ACS__CENTRAL_ENDPOINT: ACS インスタンスのエンドポイントを入力します。エンドポイントを設定するには、こちら の手順に従ってください。
DEVELOPER_HUB__CATALOG__URL: 2 番目の手順で作成したフォーク内の
all.yaml
ファイルのアドレスを入力します。手順の最後に選択したタグが URL に含まれていることを確認してください。https://github.com/chr1st1an-org/tssc-sample-templates/blob/v1.0.0/all.yaml
-
GITHUB__APP__ID: この値は
~/install_values.txt
ファイル内にあるはずです。最初のインストール手順で保存したものです。 -
GITHUB__APP__CLIENT__ID: この値は
~/install_values.txt
ファイル内にあるはずです。最初のインストール手順で保存したものです。 -
GITHUB__APP__CLIENT__SECRET: この値は
~/install_values.txt
ファイル内にあるはずです。最初の手順で作成して保存したものです。 -
GITHUB__APP__PRIVATE_KEY: この値は
~/install_values.txt
ファイル内にあるはずです。最初の手順で作成して保存したものです。 -
GITHUB__APP__WEBHOOK__SECRET: この値は
~/install_values.txt
ファイル内にあるはずです。最初の手順で作成して保存したものです。 -
GITOPS__GIT_TOKEN: この値は
~/install_values.txt
ファイル内にあるはずです。3 番目の手順で作成して保存しました。 - QUAY__API_TOKEN: イメージリポジトリーがパブリックである場合は 'null' を使用します。それ以外の場合は、読み取りアクセス権を持つ API トークンを作成 し、その値を貼り付けます。
-
QUAY__DOCKERCONFIGJSON: この値は
~/install_values.txt
ファイル内にあるはずです。前の手順で作成して保存したものです。 - TAS__SECURESIGN__FULCIO__ORG_EMAIL: この新しい RHTAP インスタンスを所有する組織内の個人またはチームのメールアドレスを入力します。
TAS__SECURESIGN__FULCIO__ORG_NAME: GitHub 組織の名前を入力します。
注記残りの値はパスワードとシークレットです。特殊文字を含む既存のパスワードを使用することも、新しいパスワードを生成することもできます。bash スクリプトは入力したすべての値を保存するファイルを作成するため、これらの値を他の場所に保存する必要はありません。
TPA__GUAC__PASSWORD: 自分とチームメンバーが TPA の GUAC に対して自身を認証するのに使用できる強力なパスワードを入力します。以前使用したのと同じ OpenSSL コマンドを使用して、Webhook シークレットを作成できます。
$ openssl rand -hex 20
- TPA__KEYCLOAK__ADMIN_PASSWORD: 別の強力なパスワードを入力します。
- TPA__MINIO__ROOT_PASSWORD: 別の強力なパスワードを入力します。
- TPA__OIDC__TESTING_MANAGER_CLIENT_SECRET: セキュアなシークレットとして使用できる別の値を入力します。OpenSSL コマンドを使用してこの値を生成することもできます。
- TPA__OIDC__TESTING_USER_CLIENT_SECRET: セキュアなシークレットとして使用できる別の値を入力します。
- TPA__OIDC__WALKER_CLIENT_SECRET: セキュアなシークレットとして使用できる別の値を入力します。
- TPA__POSTGRES__POSTGRES_PASSWORD: 別の強力なパスワードを入力します。
- TPA__POSTGRES__TPA_PASSWORD: 別の強力なパスワードを入力します。
-
RHTAP_ENABLE_GITHUB: GitHub をアプリケーションの git リポジトリーとして使用する場合は
-
(オプション)
bin/make.sh
を実行した後、RHTAP がアプリケーションをデプロイするために使用する名前空間を変更できます。bin/make.sh
を実行したのと同じコンテキストで、新しく生成されたprivate-values.yaml
ファイルを探します。そのファイルを開き、namespaces:
の下にある他の名前空間を編集または追加します。現在、- rhtap-app
が表示されているはずです。 (オプション) クラスター内に OpenShift GitOps または OpenShift Pipeline の既存のデプロイメントがある場合は、次の手順で RHTAP が試行するこれらの製品のデプロイメントをバイパスする必要があります。
-
任意のテキストエディターを使用して、インストーラーディレクトリーに新しく生成された
private-values.yaml
ファイルを開きます。 -
すでにデプロイされている製品の場合は、YAML ファイル内の名前の下 (例:
openshift-gitops
) で、enabled:
の値をfalse
に設定します。 -
OpenShift GitOps デプロイメントをバイパスする場合は、次の手順 に従って、Red Hat Trusted Application Pipeline インストール名前空間 (デフォルトでは
rhtap
) をサブスクリプションに追加します。
-
任意のテキストエディターを使用して、インストーラーディレクトリーに新しく生成された
関連情報
インストールパスに関するドキュメントが完成する前に、GitLab を Git ホストとして使用する必要がある場合は、次のドキュメントを参照してください。
第6章 クラスターへの RHTAP のインストール
GitHub アプリケーションと private-values.yaml ファイルを作成したら、RHTAP をインストールする準備は完了です。実際のインストールプロセスは非常に簡単です。
前提条件
- CLI を介した OCP クラスターへの ClusterAdmin アクセス
-
private-values.yaml
ファイル (前の手順で生成したもの)
手順
CLI で、ClusterAdmin として OCP クラスターにアクセスします。
$ oc login [cluster address] -u kubeadmin -p [password]
インストーラー Helm リポジトリーをローカルシステムに追加します。
$ helm repo add openshift-helm-charts https://charts.openshift.io/
以前にこの Helm リポジトリーをすでに追加している場合は、Helm リポジトリーを更新してください。
$ helm repo update
bin/make.sh
を実行したディレクトリーで、インストールコマンドを実行します。インストールが完了するまでに 10 分以上かかる場合があります。$ helm upgrade installer openshift-helm-charts/redhat-trusted-application-pipeline --install --create-namespace --namespace rhtap --timeout 20m --values private-values.yaml
注記--namespace
の後に任意の名前空間を指定できます。rhtap
を使用する必要はありません。-
インストールが完了すると、インストーラーによって出力が提供されます。インストーラーによって生成される PipelineRun ファイルにラベルを付けて、
~/install_values.txt
に保存します。 -
PipelineRun 全体 (
cat << EOF | kubectl create
からEOF
まで) をコピーしてコマンドラインに貼り付けます。Enter キーを押してこの PipelineRun を実行します。 - PipelineRun が完了すると、リンクを含む出力が提供されます。OpenShift Web コンソールにまだログインしていない場合は、先にログインします。その後、PipelineRun の出力からリンクを開きます。
トラブルシューティング
-
何らかの理由で Helm が RHTAP を正常にインストールできない場合は、クラスター内の
rhatp
プロジェクトを削除して、インストールコマンドを再度実行してみてください。
第7章 GitHub アプリケーションの完成
RHTAP をインストールした後、GitHub アプリケーションに以前に入力したプレースホルダー値を、クラスター固有の値に置き換える必要があります。これにより、GitHub アプリケーションをインストールするすべてのユーザーが Red Hat Developer Hub に対して認証を行い、Red Hat Trusted Application Pipeline を使用できるようになります。
前提条件:
- Web コンソールを介した OpenShift クラスターへの ClusterAdmin アクセス
手順:
前の手順の最終ステップで生成されたリンクを開くと、Administrator ビューで OpenShift コンソールが表示されるはずです。表示されない場合は、OpenShift コンソールに移動してクラスターを表示します。
- 左側のナビゲーションバーを使用して Pipelines > Pipelines に移動します。
- ページのバナーの下にある Project フィールドで、rhtap を選択します。
-
PipelineRun タブを選択します。
rhtap-pe-info-
で始まる名前の PipelineRun を選択します。 - Logs タブに移動します。
- 別のブラウザータブで、GitHub Apps ページ (Settings > Developer settings > GitHub Apps) に戻ります。
- 新しいカスタムアプリケーションの横にある Edit をクリックします。
次のフィールドのプレースホルダー値を、OpenShift コンソールで実行した PipelineRun のログにある新しい値に置き換えます。
- Homepage URL
- Callback URL
- Webhook URL
- ページの一番下までスクロールして、Save をクリックします。
- 別のタブで、GitHub アプリケーションの新しいホームページ URL として入力したアドレスに移動します。
- SIGN IN ボタンをクリックして、サインイン方法として GitHub を選択します。
- ポップアップウィンドウで、要求に従ってカスタム GitHub アプリケーションを許可します。
すぐに Red Hat Developer Hub (RHDH) にリダイレクトされます。GitHub アプリケーションをダウンロードした開発者は、そのアプリケーションを使用して認証できます。また、3 番目の手順で生成された 2 番目の PipelineRun を実行することで認証することもできます。開発者は RHDH で Red Hat Trusted Application Pipeline のカスタマイズ可能で自動化されたセキュアな CI/CD 機能を活用できます。
改訂日時: 2024-07-16