第1章 OpenShift Pipelines での Tekton Hub の使用
Tekton Hub はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Tekton Hub は、CI/CD ワークフローの再利用可能なタスクとパイプラインを検出、検索、および共有するのに役立ちます。Tekton Hub のパブリックインスタンスは、hub.tekton.dev で利用できます。クラスター管理者は、TektonHub
カスタムリソース (CR) の設定を変更することで、Tekton Hub のカスタムインスタンスをインストールしてデプロイすることもできます。
1.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 をデプロイします。
1.1.1. ログインと評価なしで Tekton Hub をインストールする
Tekton Hub は、デフォルト設定でクラスターに自動的にインストールできます。デフォルト設定を使用する場合は、Tekton Hub は Tekton Hub アーティファクトの認証と評価によるログインをサポートしません。
前提条件
-
Red Hat OpenShift Pipelines Operator が、クラスターのデフォルトの
openshift-pipelines
namespace にインストールされている。
手順
次の例のような
TektonHub
CR を作成します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 db: # Optional: If you want to use custom database secret: tekton-hub-db # Name of db secret should be `tekton-hub-db` categories: # Optional: If you want to use custom categories - Automation - Build Tools - CLI - Cloud - Code Quality - ... catalogs: # Optional: If you want to use custom catalogs - name: tekton org: tektoncd type: community provider: github url: https://github.com/tektoncd/catalog revision: main scopes: # Optional: If you want to add new users - name: agent:create users: [abc, qwe, pqr] - name: catalog:refresh users: [abc, qwe, pqr] - name: config:refresh users: [abc, qwe, pqr] default: # Optional: If you want to add custom default scopes scopes: - rating:read - rating:write api: catalogRefreshInterval: 30m 2
注記TektonHub
CR のオプションフィールドにカスタム値を指定しない場合は、Tekton Hub API config map で設定されたデフォルト値が使用されます。TektonHub
CR を適用します。$ oc apply -f <tekton-hub-cr>.yaml
インストールのステータスを確認します。
TektonHub
CR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/
1.1.2. ログインと評価による Tekton Hub のインストール
Tekton Hub アーティファクトの承認と評価を使用したログインをサポートするカスタム設定を使用して、クラスターに Tekton Hub をインストールできます。
前提条件
-
Red Hat OpenShift Pipelines Operator が、クラスターのデフォルトの
openshift-pipelines
namespace にインストールされている。
手順
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_root>/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 リポジトリーホスティングサービスプロバイダーの未使用のフィールドを削除できます。
次の例のような
TektonHub
CR を作成します。apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines 1 db: 2 secret: tekton-hub-db 3 categories: 4 - Automation - Build Tools - CLI - Cloud - Code Quality ... catalogs: 5 - name: tekton org: tektoncd type: community provider: github url: https://github.com/tektoncd/catalog revision: main scopes: 6 - name: agent:create users: [<username>] - name: catalog:refresh users: [<username>] - name: config:refresh users: [<username>] default: 7 scopes: - rating:read - rating:write api: catalogRefreshInterval: 30m 8
- 1
- Tekton Hub をインストールする必要がある namespace。デフォルトは
openshift-pipelines
です。 - 2
- オプション: Crunchy Postgres データベースなどのカスタムデータベース。
- 3
- データベースシークレットの名前は
tekton-hub-db
にする必要があります。 - 4
- オプション: Tekton Hub のタスクとパイプラインのカスタマイズされたカテゴリー。
- 5
- オプション: Tekton Hub 用にカスタマイズされたカタログ。
- 6
- オプション: 追加のユーザー。
[<username_1>, <username_2>, <username_3>]
のように、複数のユーザーをメンションできます。 - 7
- オプション: カスタマイズされたデフォルトスコープ。
- 8
- カタログが自動的に更新されるまでの時間間隔。サポートされている時間の単位は、秒 (
s
)、分 (m
)、時間 (h
)、日 (d
)、および週 (w
) です。デフォルトの間隔は 30 分です。
注記TektonHub
CR のオプションフィールドにカスタム値を指定しない場合は、Tekton Hub API config map で設定されたデフォルト値が使用されます。TektonHub
CR を適用します。$ oc apply -f <tekton-hub-cr>.yaml
インストールのステータスを確認します。
TektonHub
CR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/