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-pipelines namespace にインストールされていることを確認します。

手順

  1. 次の例のような TektonHub CR を作成します。

    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
    1
    Tekton Hub をインストールする必要がある namespace。デフォルトは openshift-pipelines です。
    2
    config.yaml ファイルの URL。
    3
    カタログが自動的に更新されるまでの時間間隔。サポートされている時間の単位は、秒 (s)、分 (m)、時間 (h)、日 (d)、および週 (w) です。デフォルトの間隔は 30 分です。
  2. TektonHub CR を適用します。

    $ oc apply -f <TektonHub>.yaml 1
    1
    TektonHub CR のファイル名またはパス。
    注記

    TektonHub CR を適用すると、Tekton Hub がアップストリームの Tekton カタログコンテンツとともに openshift-pipelines namespace のクラスターにインストールされます。

  3. インストールのステータスを確認します。TektonHub CR が安定状態になるまでに時間がかかる場合があります。

    $ 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-pipelines namespace にインストールされていることを確認します。

手順

  1. Tekton Hub リポジトリーのフォークを作成します。
  2. フォークされたリポジトリーのクローンを作成します。
  3. Git リポジトリーホスティングプロバイダーを使用して OAuth アプリケーションを作成し、クライアント ID とクライアントシークレットをメモします。サポートされているプロバイダーは、GitHub、GitLab、および BitBucket です。

  4. 複製したリポジトリーの <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 リポジトリーホスティングサービスプロバイダーの未使用のフィールドを削除できます。

  5. 次の例のような TektonHub CR を作成します。

    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
    1
    Tekton Hub をインストールする必要がある namespace。デフォルトは openshift-pipelines です。
    2
    config.yaml ファイルの URL に置き換えます。
    3
    カタログが自動的に更新されるまでの時間間隔。サポートされている時間の単位は、秒 (s)、分 (m)、時間 (h)、日 (d)、および週 (w) です。デフォルトの間隔は 30 分です。
  6. TektonHub CR を適用します。

    $ oc apply -f <TektonHub>.yaml 1
    1
    TektonHub CR のファイル名またはパス。
    注記

    TektonHub CR を適用すると、Tekton Hub がアップストリームの Tekton カタログコンテンツとともに openshift-pipelines namespace のクラスターにインストールされます。

  7. インストールのステータスを確認します。TektonHub CR が安定状態になるまでに時間がかかる場合があります。

    $ 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 に設定に新しいユーザーを追加する

手順

  1. 目的のスコープに応じて、クラスター管理者は 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 回ログインしていることを確認してください。

  2. config.yaml ファイルに config-refresh スコープがあることを確認してください。
  3. 設定を更新します。

    $ 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-migrationapi、および ui インターフェイスで使用できます。または、デフォルトデータベースでのインストールが完了した後でも、カスタムデータベースを Tekton Hub に関連付けることができます。

手順

  1. 次のキーを使用して、ターゲット 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 です。

  2. TektonHub CR で、データベースのシークレット属性の値を 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
    ...

  3. 更新された TektonHub CR を使用して、カスタムデータベースを Tekton Hub に関連付けます。

    1. クラスターに Tekton Hub をインストールするときにカスタムデータベースを関連付ける場合は、更新された TektonHub CR を適用します。

      $ oc apply -f <tekton-hub-cr>.yaml
    2. または、Tekton Hub のインストールが完了した後にカスタムデータベースを関連付ける場合は、既存の TektonHub CR を更新された TektonHub CR に置き換えます。

      $ oc replace -f <tekton-hub-cr>.yaml
  4. インストールのステータスを確認します。TektonHub CR が安定状態になるまでに時間がかかる場合があります。

    $ 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-pipelines namespace にインストールされていることを確認します。

手順

  1. 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 です。
  2. 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

  3. Tekton Hub UI の ConfigMap オブジェクトを削除します。

    $ oc delete configmap tekton-hub-ui -n <targetNamespace> 1
    1
    Tekton Hub UI と Tekton Hub CR の共通ネームスペース。デフォルトでは、ターゲット namespace は openshift-pipelines です。
  4. 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"
        ...

    デフォルトでは、TektonConfig CR には enable-devconsole-integration フィールドが含まれておらず、Red Hat OpenShift Pipelines Operator は値が true であると想定します。

注記

Developer パースペクティブで Tekton Hub リソースを表示しないようにする代わりに、Tekton Hub UI を完全に無効にする場合は、TektonHub CR で enableUI フィールドを false に設定します。

3.7.6. 関連情報