3.7. OpenShift Pipeline での Tekton Hub の使用
Tekton Hub はテクノロジープレビュー機能としてのみ提供されます。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Tekton Hub は、CI/CD ワークフローの再利用可能なタスクとパイプラインを検出、検索、および共有するのに役立ちます。Tekton Hub のパブリックインスタンスは、hub.tekton.dev で利用できます。クラスター管理者は、エンタープライズで使用するために Tekton Hub のカスタムインスタンスをインストールしてデプロイすることもできます。
3.7.1. OpenShift Container Platform クラスターへの Tekton Hub のインストールとデプロイ
Tekton Hub はオプションのコンポーネントです。クラスター管理者は、TektonConfig カスタムリソース (CR) を使用してインストールすることはできません。Tekton Hub をインストールおよび管理するには、TektonHub CR を使用します。
次の 2 つのモードを使用して、クラスターに Tekton Hub をインストールできます。
- Tekton Hub アーティファクトのログイン認証と評価 なし
- Tekton Hub アーティファクトのログイン認証と評価 あり
Github Enterprise または Gitlab Enterprise を使用している場合は、エンタープライズサーバーと同じネットワークに Tekton Hub をインストールしてデプロイします。たとえば、エンタープライズサーバーが VPN の背後で実行されている場合は、同じく VPN の背後にあるクラスターに Tekton Hub をデプロイします。
3.7.1.1. ログインと評価なしで Tekton Hub をインストールする
Tekton Hub は、デフォルト設定でクラスターに自動的にインストールできます。デフォルト設定を使用する場合、Tekton Hub は Tekton Hub アーティファクトの認証と評価によるログインをサポートしません。
前提条件
-
Red Hat OpenShift Pipelines Operator がクラスターのデフォルトの
openshift-pipelinesnamespace にインストールされていることを確認します。
手順
次の例のような
TektonHubCR を作成します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml 2 catalogRefreshInterval: 30m 3
TektonHubCR を適用します。$ oc apply -f <TektonHub>.yaml 1- 1
TektonHubCR のファイル名またはパス。
注記TektonHubCR を適用すると、Tekton Hub がアップストリームの Tekton カタログコンテンツとともにopenshift-pipelinesnamespace のクラスターにインストールされます。インストールのステータスを確認します。
TektonHubCR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.1.2. ログインと評価による Tekton Hub のインストール
Tekton Hub アーティファクトの承認と評価を使用したログインをサポートするカスタム設定を使用して、クラスターに Tekton Hub をインストールできます。
前提条件
-
Red Hat OpenShift Pipelines Operator がクラスターのデフォルトの
openshift-pipelinesnamespace にインストールされていることを確認します。
手順
- Tekton Hub リポジトリーのフォークを作成します。
- フォークされたリポジトリーのクローンを作成します。
Git リポジトリーホスティングプロバイダーを使用して OAuth アプリケーションを作成し、クライアント ID とクライアントシークレットをメモします。サポートされているプロバイダーは、GitHub、GitLab、および BitBucket です。
-
GitHub OAuth アプリケーション の場合、Homepage URL と Authorization callback URL を
<auth-route>として設定します。 -
GitLab OAuth アプリケーション の場合は、
REDIRECT_URIを<auth-route>/auth/gitlab/callbackとして設定します。 -
BitBucket OAuth アプリケーション の場合は、
Callback URLを<auth-route>として設定します。
-
GitHub OAuth アプリケーション の場合、Homepage URL と Authorization callback URL を
複製したリポジトリーの
<tekton_hub_repository>/config/02-api/20-api-secret.yamlファイルを編集して、Tekton Hub API シークレットを含めます。apiVersion: v1 kind: Secret metadata: name: tekton-hub-api namespace: openshift-pipelines type: Opaque stringData: GH_CLIENT_ID: 1 GH_CLIENT_SECRET: 2 GL_CLIENT_ID: 3 GL_CLIENT_SECRET: 4 BB_CLIENT_ID: 5 BB_CLIENT_SECRET: 6 JWT_SIGNING_KEY: 7 ACCESS_JWT_EXPIRES_IN: 8 REFRESH_JWT_EXPIRES_IN: 9 AUTH_BASE_URL: 10 GHE_URL: 11 GLE_URL: 12
- 1
- GitHub OAuth アプリケーションからのクライアント ID。
- 2
- GitHub OAuth アプリケーションからのクライアントシークレット。
- 3
- GitLab OAuth アプリケーションからのクライアント ID。
- 4
- GitLab OAuth アプリケーションからのクライアントシークレット。
- 5
- BitBucket OAuth アプリケーションからのクライアント ID。
- 6
- BitBucket OAuth アプリケーションからのクライアントシークレット。
- 7
- ユーザー用に作成された JSON Web トークン (JWT) に署名するために使用される長いランダムな文字列。
- 8
- アクセストークンの有効期限が切れるまでの時間制限を追加します。たとえば、
1m、ここで m は分を示します。サポートされている時間の単位は、秒 (s)、分 (m)、時間 (h)、日 (d)、および週 (w) です。 - 9
- 更新トークンの有効期限が切れるまでの時間制限を追加します。たとえば、
1m、ここでmは分を示します。サポートされている時間の単位は、秒 (s)、分 (m)、時間 (h)、日 (d)、および週 (w) です。トークンの更新に設定された有効期限が、トークンアクセスに設定された有効期限よりも長いことを確認してください。 - 10
- OAuth アプリケーションのルート URL。
- 11
- GitHub Enterprise を使用して認証している場合は、GitHub Enterprise URL。このフィールドの値としてカタログへの URL を指定しないでください。
- 12
- GitLab Enterprise を使用して認証している場合は、GitLab Enterprise URL。このフィールドの値としてカタログへの URL を指定しないでください。
注記デプロイに関係のない Git リポジトリーホスティングサービスプロバイダーの未使用のフィールドを削除できます。
次の例のような
TektonHubCR を作成します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml 2 catalogRefreshInterval: 30m 3
TektonHubCR を適用します。$ oc apply -f <TektonHub>.yaml 1- 1
TektonHubCR のファイル名またはパス。
注記TektonHubCR を適用すると、Tekton Hub がアップストリームの Tekton カタログコンテンツとともにopenshift-pipelinesnamespace のクラスターにインストールされます。インストールのステータスを確認します。
TektonHubCR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.2. オプション: Tekton Hub に設定に新しいユーザーを追加する
手順
目的のスコープに応じて、クラスター管理者は
config.yamlファイルに新しいユーザーを追加できます。... scopes: - name: agent:create users: [<username_1>, <username_2>] 1 - name: catalog:refresh users: [<username_3>, <username_4>] - name: config:refresh users: [<username_5>, <username_6>] default: scopes: - rating:read - rating:write ...- 1
- Git リポジトリーホスティングサービスプロバイダーに登録されているユーザー名。
注記初めてログインするユーザーは、
config.yamlに追加されていても、デフォルトのスコープしかありません。追加のスコープをアクティブ化するには、ユーザーが少なくとも 1 回ログインしていることを確認してください。-
config.yamlファイルにconfig-refreshスコープがあることを確認してください。 設定を更新します。
$ curl -X POST -H "Authorization: <access-token>" \ 1 --header "Content-Type: application/json" \ --data '{"force": true} \ <api-route>/system/config/refresh- 1
- JWT トークン。
3.7.3. オプション: Tekton Hub でのカスタムデータベースの使用
クラスター管理者は、Operator によってインストールされたデフォルトの PostgreSQL データベースの代わりに、Tekton Hub でカスタムデータベースを使用できます。インストール時にカスタムデータベースを関連付けて、Tekton Hub が提供する db-migration、api、および ui インターフェイスで使用できます。または、デフォルトデータベースでのインストールが完了した後でも、カスタムデータベースを Tekton Hub に関連付けることができます。
手順
次のキーを使用して、ターゲット namespace に
tekton-hub-dbという名前のシークレットを作成します。-
POSTGRES_HOST -
POSTGRES_DB -
POSTGRES_USER -
POSTGRES_PASSWORD POSTGRES_PORT例: カスタムデータベースシークレット
apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: <The name of the host of the database> POSTGRES_DB: <Name of the database> POSTGRES_USER: <username> POSTGRES_PASSWORD: <password> POSTGRES_PORT: <The port that the database is listening on> ...注記デフォルトのターゲット namespace は
openshift-pipelinesです。
-
TektonHubCR で、データベースのシークレット属性の値をtekton-hub-dbに設定します。例: カスタムデータベースシークレットの追加
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: secret: tekton-hub-db api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml catalogRefreshInterval: 30m ...更新された
TektonHubCR を使用して、カスタムデータベースを Tekton Hub に関連付けます。クラスターに Tekton Hub をインストールするときにカスタムデータベースを関連付ける場合は、更新された
TektonHubCR を適用します。$ oc apply -f <tekton-hub-cr>.yaml
または、Tekton Hub のインストールが完了した後にカスタムデータベースを関連付ける場合は、既存の
TektonHubCR を更新されたTektonHubCR に置き換えます。$ oc replace -f <tekton-hub-cr>.yaml
インストールのステータスを確認します。
TektonHubCR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/
3.7.4. Red Hat OpenShift Pipelines Operator を 1.7 から 1.8 にアップグレードした後の Tekton Hub 許可の無効化
Red Hat OpenShift Pipelines Operator 1.8 を使用して Tekton Hub をインストールすると、デフォルトのインストールでは、Tekton Hub アーティファクトのログイン認証と評価が無効になります。ただし、Operator を 1.7 から 1.8 にアップグレードすると、クラスター上の Tekton Hub のインスタンスは、ログイン認証と評価を自動的に無効にしません。
Operator を 1.7 から 1.8 にアップグレードした後、Tekton Hub のログイン認証と評価を無効にするには、次の手順を実行します。
前提条件
-
Red Hat OpenShift Pipelines Operator がクラスターのデフォルトの
openshift-pipelinesnamespace にインストールされていることを確認します。
手順
Operator 1.7 用の Tekton Hub を手動でインストールするときに作成した既存の Tekton Hub API シークレットを削除します。
$ oc delete secret tekton-hub-api -n <targetNamespace> 1- 1
- Tekton Hub API シークレットと Tekton Hub CR の共通ネームスペース。デフォルトでは、ターゲット namespace は
openshift-pipelinesです。
Tekton Hub API の
TektonInstallerSetオブジェクトを削除します。$ oc get tektoninstallerset -o name | grep tekton-hub-api | xargs oc delete
注記削除後、Operator は新しい Tekton Hub API インストーラーセットを自動的に作成します。
しばらく待って、Tekton Hub のステータスを確認してください。
READY列にTrueが表示されたら、次の手順に進みます。$ oc get tektonhub hub
出力例
NAME VERSION READY REASON APIURL UIURL hub 1.8.0 True https://tekton-hub-api-openshift-pipelines.apps.example.com https://tekton-hub-ui-openshift-pipelines.apps.example.com
Tekton Hub UI の
ConfigMapオブジェクトを削除します。$ oc delete configmap tekton-hub-ui -n <targetNamespace> 1- 1
- Tekton Hub UI と Tekton Hub CR の共通ネームスペース。デフォルトでは、ターゲット namespace は
openshift-pipelinesです。
Tekton Hub UI の
TektonInstallerSetオブジェクトを削除します。$ oc get tektoninstallerset -o name | grep tekton-hub-ui | xargs oc delete
注記削除後、Operator は新しい Tekton Hub UI インストーラーセットを自動的に作成します。
しばらく待って、Tekton Hub のステータスを確認してください。
READY列にTrueが表示されたら、次の手順に進みます。$ oc get tektonhub hub
出力例
NAME VERSION READY REASON APIURL UIURL hub 1.8.0 True https://tekton-hub-api-openshift-pipelines.apps.example.com https://tekton-hub-ui-openshift-pipelines.apps.example.com
3.7.5. 開発者パースペクティブから Tekton Hub をオプトアウトする
クラスター管理者は、OpenShift Container Platform クラスターの Developer パースペクティブの Pipeline builder ページで、タスクやパイプラインなどの Tekton Hub リソースの表示をオプトアウトできます。
前提条件
-
Red Hat OpenShift Pipelines Operator がクラスターにインストールされており、
ocコマンドラインツールが使用可能であることを確認します。
手順
Developer パースペクティブで Tekton Hub リソースを表示することを選択するには、
TektonConfigカスタムリソース (CR) のenable-devconsole-integrationフィールドの値をfalseに設定します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonConfig metadata: name: config spec: targetNamespace: openshift-pipelines ... hub: params: - name: enable-devconsole-integration value: "false" ...デフォルトでは、
TektonConfigCR にはenable-devconsole-integrationフィールドが含まれておらず、Red Hat OpenShift Pipelines Operator は値がtrueであると想定します。
Developer パースペクティブで Tekton Hub リソースを表示しないようにする代わりに、Tekton Hub UI を完全に無効にする場合は、TektonHub CR で enableUI フィールドを false に設定します。
3.7.6. 関連情報
- Tekton Hub の GitHub リポジトリー。
- OpenShift Pipelines のインストール
- Red Hat OpenShift Pipelines リリースノート