第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 にインストールされている。

手順

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

    TektonHub CR のオプションフィールドにカスタム値を指定しない場合は、Tekton Hub API config map で設定されたデフォルト値が使用されます。

  2. TektonHub CR を適用します。

    $ oc apply -f <tekton-hub-cr>.yaml
  3. インストールのステータスを確認します。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 にインストールされている。

手順

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

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

  3. 次の例のような 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 で設定されたデフォルト値が使用されます。

  4. TektonHub CR を適用します。

    $ oc apply -f <tekton-hub-cr>.yaml
  5. インストールのステータスを確認します。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/