第3章 パイプライン

3.1. Red Hat OpenShift Pipelines リリースノート

Red Hat OpenShift Pipelines は、以下を提供する Tekton プロジェクトをベースとするクラウドネイティブの CI/CD エクスペリエンスです。

  • 標準の Kubernetes ネイティブパイプライン定義 (CRD)
  • CI サーバー管理のオーバーヘッドのないサーバーレスのパイプライン。
  • S2I、Buildah、JIB、Kaniko などの Kubernetes ツールを使用してイメージをビルドするための拡張性。
  • Kubernetes ディストリビューションでの移植性。
  • パイプラインと対話するための強力な CLI。
  • OpenShift Container Platform Web コンソールの Developer パースペクティブと統合されたユーザーエクスペリエンス。

Red Hat OpenShift Pipelines の概要については、「OpenShift Pipelines について」を参照してください。

3.1.1. 多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージをご覧ください。

3.1.2. Red Hat OpenShift Pipelines General Availability (GA) 1.5 のリリースノート

Red Hat OpenShift Pipelines General Availability (GA) 1.5 が OpenShift Container Platform 4.8 で利用可能になりました。

3.1.2.1. 互換性およびサポート表

現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。

テクノロジープレビュー機能のサポート範囲

以下の表では、機能は以下のステータスでマークされています。

  • TP: テクノロジープレビュー
  • GA: 一般公開機能

これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。

表3.1 互換性およびサポート表

機能バージョンサポートステータス

パイプライン

0.24

GA

CLI

0.19

GA

カタログ

0.24

GA

トリガー

0.14

TP

パイプラインリソース

-

TP

質問やフィードバックについては、製品チームに pipelines-interest@redhat.com 宛のメールを送信してください。

3.1.2.2. 新機能

以下では、修正および安定性の面での改善点に加え、OpenShift Pipelines 1.5 の主な新機能について説明します。

  • パイプライン実行およびタスク実行は、ターゲット namespace の cron ジョブによって自動的にプルーニングされます。cron ジョブは IMAGE_JOB_PRUNER_TKN 環境変数の値を使用して tkn image の値を取得します。今回の機能拡張により、以下のフィールドが TektonConfig カスタムリソースに導入されるようになりました。

    ...
    pruner:
      resources:
        - pipelinerun
        - taskrun
      schedule: "*/5 * * * *" # cron schedule
      keep: 2 # delete all keeping n
    ...
  • OpenShift Container Platform では、Tekton Add-ons コンポーネントのインストールをカスタマイズするには、TektonConfig カスタムリソースの 新規パラメーター clusterTasks および pipelinesTemplates の値を変更します。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      addon:
        params:
        - name: clusterTasks
          value: "true"
        - name: pipelineTemplates
          value: "true"
    ...

    カスタマイズは、TektonConfig を使用してアドオンを作成するか、または Tekton Add-ons を使用して直接アドオンを作成する場合に許可されます。ただし、パラメーターが渡されない場合、コントローラーはデフォルト値でパラメーターを追加します。

    注記
    • アドオンが TektonConfig カスタムリソースを使用して作成され、Addon カスタムリソースでパラメーター値を変更すると、TektonConfig カスタムリソースの値が変更を上書きします。
    • pipelinesTemplates パラメーターの値は、clusterTasks パラメーターの値が true の場合のみ true に設定できます。
  • enableMetrics パラメーターが TektonConfig カスタムリソースに追加されます。これを使用して、OpenShift Container Platform の Tekton Pipeline の一部であるサービスモニターを無効にすることができます。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
      name: config
    spec:
      profile: all
      targetNamespace: openshift-pipelines
      pipeline:
        params:
        - name: enableMetrics
          value: "true"
    ...
  • プロセスレベルでメトリクスをキャプチャーする EventListener OpenCensus メトリクスが追加されました。
  • トリガーにはラベルセレクターが追加され、ラベルを使用してイベントリスナーのトリガーを設定できるようになりました。
  • インターセプターを登録する ClusterInterceptor カスタムリソース定義が追加され、プラグインできる新しい Interceptor タイプを登録できるようになりました。さらに、以下の関連する変更が行われます。

    • トリガー仕様では、ref フィールドが含まれる新しい API を使用してインターセプターを設定し、クラスターインターセプターを参照できます。さらに、params フィールドを使用して、処理用のインターセプターに渡すパラメーターを追加することができます。
    • バンドルされたインターセプター CEL、GitHub、GitLab、および BitBucket が移行されました。新しい ClusterInterceptor カスタムリソース定義を使用して実装されます。
    • コアインターセプターは新しい形式に移行され、古い構文を使用して作成された新しいトリガーは自動的に新しい ref または params ベースの構文に切り替わります。
  • ログの表示中にタスクまたはステップの名前のプレフィックスを無効にするには、log コマンドに --prefix オプションを使用します。
  • 特定のコンポーネントのバージョンを表示するには、tkn version コマンドで新しい --component フラグを使用します。
  • tkn hub check-upgrade コマンドが追加され、他のコマンドはパイプラインのバージョンに基づいて変更されます。さらに、カタログ名は search コマンドの出力に表示されます。
  • 任意のワークスペースのサポートは start コマンドに追加されます。
  • プラグインが plugins ディレクトリーに存在しない場合は、現在のパスで検索されます。
  • tkn start [task | clustertask | pipeline] コマンドは、対話的に開始し、デフォルトパラメーターが指定されている場合でも params 値の入力を求めます。対話式プロンプトを停止するには、コマンドの呼び出し時に --use-param-defaults フラグを渡します。以下に例を示します。

    $ tkn pipeline start build-and-deploy \
        -w name=shared-workspace,volumeClaimTemplateFile=https://raw.githubusercontent.com/openshift/pipelines-tutorial/pipelines-1.5/01_pipeline/03_persistent_volume_claim.yaml \
        -p deployment-name=pipelines-vote-api \
        -p git-url=https://github.com/openshift/pipelines-vote-api.git \
        -p IMAGE=image-registry.openshift-image-registry.svc:5000/pipelines-tutorial/pipelines-vote-api \
        --use-param-defaults
  • version フィールドは tkn task describe コマンドに追加されます。
  • TriggerTemplateTriggerBindingClusterTriggerBindingEventlistener などのリソースを自動的に選択するオプションのいずれか 1 つが存在する場合は、describe コマンドに追加されます。
  • tkn pr describe コマンドでは、省略されたタスクのセクションが追加されます。
  • tkn clustertask logs のサポートが追加されました。
  • config.yaml からの YAML マージおよび変数は削除されます。さらに、release.yaml ファイルは、kustomizeytt などのツールでより簡単に消費されるようになりました。
  • ドット文字 (".") を含むリソース名のサポートが追加されました。
  • PodTemplate 仕様の hostAliases 配列が、ホスト名解決の Pod レベルの上書きに追加されます。これには、/etc/hosts ファイルを変更します。
  • タスクのアグリゲート実行ステータスにアクセスするために、変数 $(tasks.status) が導入されました。
  • Windows のエントリーポイントバイナリービルドが追加されます。

3.1.2.3. 非推奨の機能

  • when 式では、PascalCase で記述されたフィールドのサポートが削除されます。when 式は、小文字で記述されたフィールドのみをサポートします。

    注記

    Tekton Pipelines v0.16 (Operator v1.2.x) の when 式のあるパイプラインを適用している場合は、これを再度適用する必要があります。

  • Red Hat OpenShift Pipelines Operator を v1.5 にアップグレードする場合、openshift-client および openshift-client-v-1-5-0 クラスタータスクには SCRIPT パラメーターがあります。ただし、ARGS パラメーターおよび git リソースは openshift-client クラスタータスクの仕様から削除されます。これは重大な変更であり、ClusterTask リソースの name フィールドに特定のバージョンのないクラスタータスクがシームレスにアップグレードされます。

    パイプラインの実行が中断しないようにするには、アップグレード後に SCRIPT パラメーターを使用します。これは、ARGS パラメーターで以前に指定された値がクラスタータスクの SCRIPT パラメーターに移動するためです。以下に例を示します。

    ...
    - name: deploy
      params:
      - name: SCRIPT
        value: oc rollout status <deployment-name>
      runAfter:
        - build
      taskRef:
        kind: ClusterTask
        name: openshift-client
    ...
  • Red Hat OpenShift Pipelines Operator v1.4 から v1.5 にアップグレードする場合は、TektonConfig カスタムリソースがインストールされるプロファイル名が変更になりました。

    表3.2 TektonConfig カスタムリソースのプロファイル

    Pipelines 1.5 のプロファイルPipelines 1.4 の対応するプロファイルインストールされた Tekton コンポーネント

    すべて (デフォルトプロファイル)

    すべて (デフォルトプロファイル)

    Pipelines、Triggers、Add-ons

    Basic

    デフォルト

    Pipeline、Triggers

    Lite

    Basic

    Pipelines

    注記

    TektonConfig カスタムリソースの config インスタンスで profile: all を使用した場合は、リソース仕様を変更する必要はありません。

    ただし、インストールされた Operator がアップグレード前に Default または Basic プロファイルのいずれかにある場合は、アップグレード後に TektonConfig カスタムリソースの config インスタンスを編集する必要があります。たとえば、アップグレードの前に設定が profile: basic の場合は、Pipeline 1.5 へのアップグレード後にこれが profile: lite であることを確認します。

  • disable-home-env-overwrite フィールドおよび disable-working-dir-overwrite フィールドは非推奨となり、今後のリリースで削除されます。本リリースでは、後方互換性のために、これらのフラグのデフォルト値が true に設定されます。

    注記

    次回のリリース (Red Hat OpenShift Pipelines 1.6) では、HOME 環境変数は自動的に /tekton/home に設定されず、デフォルトの作業ディレクトリーはタスク実行の /workspace に設定されていません。これらのデフォルトは、この手順のイメージの Dockerfile で設定されているすべての値と競合します。

  • ServiceType フィールドおよび podTemplate フィールドは EventListener 仕様から削除されます。
  • コントローラーサービスアカウントは、namespace の一覧表示および監視に対してクラスター全体のパーミッションを要求しなくなりました。
  • EventListener リソースのステータスには、Ready という新規条件があります。

    注記

    今後、EventListener リソースの他のステータス条件は非推奨となり、Ready ステータス条件が優先されます。

  • EventListener 応答の eventListener フィールドおよび namespace フィールドは非推奨になりました。代わりに eventListenerUID フィールドを使用してください。
  • replicas フィールドは EventListener 仕様から非推奨になります。その代わりに、spec.replicas フィールドは KubernetesResource 仕様の spec.resources.kubernetesResource.replicas に移動されます。

    注記

    replicas フィールドは今後のリリースで削除されます。

  • コアインターセプターの設定における古い方法は非推奨になりました。ただし、今後のリリースで削除されるまでこれらの作業は継続されます。代わりに、Trigger リソースのインターセプターが新しい ref および params ベースの構文を使用して設定されるようになりました。作成されるデフォルトの Webhook は、新規トリガーの古い構文の使用を新規構文に自動的に切り替えます。
  • ClusterRoleBinding リソースに非推奨の rbac.authorization.k8s.io/v1beta1 ではなく rbac.authorization.k8s.io/v1 を使用します。
  • クラスターロールでは、serviceaccountssecretsconfigmapslimitranges などのリソースへのクラスター全体の書き込みアクセスが削除されます。さらに、deploymentsstatefulsetsdeployment/finalizers などのリソースにクラスター全体のアクセスが削除されます。
  • caching.internal.knative.dev グループの image カスタムリソース定義は Tekton により使用されず、本リリースで除外されます。

3.1.2.4. 既知の問題

  • git-cli クラスタータスクは、alpine/git ベースイメージから構築されます。これは、/root がユーザーのホームディレクトリーであると想定します。ただし、これは git-cli クラスタータスクに明示的に設定されません。

    Tekton では、特に指定がない場合は、デフォルトのホームディレクトリーはタスクのすべての手順で /tekton/home で上書きされます。ベースイメージの $HOME 環境変数を上書きすると、git-cli クラスタータスクが失敗します。

    この問題は、今後のリリースで修正される予定です。Red Hat OpenShift Pipelines 1.5 以前のバージョンでは、以下の回避策のいずれかを使用 して、git-cli クラスタータスクの失敗を防ぐことができます。

    • この手順で $HOME 環境変数を設定します。これにより、上書きされないようにします。

      1. [オプション] Operator を使用して Red Hat OpenShift Pipeline をインストールしている場合は、git-cli クラスタータスクを別のタスクにクローンします。このアプローチにより、Operator はクラスタータスクに加えられた変更を上書きしないようにします。
      2. oc edit clustertasks git-cli コマンドを実行します。
      3. 予想される HOME 環境変数をステップの YAML に追加します。

        ...
        steps:
          - name: git
            env:
            - name: HOME
              value: /root
            image: $(params.BASE_IMAGE)
            workingDir: $(workspaces.source.path)
        ...
        警告

        オペレーターがインストールした Red Hat OpenShift Pipelines の場合、HOME 環境変数を変更する前に git-cli クラスタータスクを別のタスクに複製しないと、Operator の調整中に変更が上書きされます。

    • feature-flags 設定マップで HOME 環境変数の上書きを無効にします。

      1. oc edit -n openshift-pipelines configmap feature-flags コマンドを実行します。
      2. disable-home-env-overwrite フラグの値を true に設定します。

        警告
        • Operator を使用して Red Hat OpenShift Pipelines をインストールしている場合、変更は Operator の調整時に上書きされます。
        • disable-home-env-overwrite フラグのデフォルト値を変更すると、すべてのタスクのデフォルトの動作を変更するため、他のタスクやクラスタータスクが破損する可能性があります。
    • パイプラインのデフォルトサービスアカウントが使用される場合に HOME 環境変数の上書きを行うため、git-cli クラスタータスクに別のサービスアカウントを使用します。

      1. 新規のサービスアカウントを作成します。
      2. 作成したサービスアカウントに Git シークレットをリンクします。
      3. タスクまたはパイプラインの実行中にサービスアカウントを使用します。
  • IBM Power Systems、IBM Z、および LinuxONE では、s2i-dotnet クラスタータスクと tkn hub コマンドはサポートされません。
  • IBM Power Systems (ppc64le)、IBM Z、および LinuxONE (s390x) クラスターで Maven および Jib Maven クラスタータスクを実行する場合は、MAVEN_IMAGE パラメーターの値を maven:3.6.3-adoptopenjdk-11 に設定します。

3.1.2.5. 修正された問題

  • dag タスクの when 式は、他のタスクの実行ステータス ($(tasks.<pipelineTask>.status)) にアクセスするコンテキスト変数を指定できません。
  • PipelineRun リソースがすぐに削除されてから再作成される状況で、volumeClaimTemplate PVCを削除することにより作成される競合状態を回避するのに役立つため、所有者名の代わりに所有者 UID を使用します。
  • root 以外のユーザーによってトリガーされる build-base イメージの pullrequest-init に新しい Dockerfile が追加されます。
  • パイプラインまたはタスクが -f オプションで実行され、その定義の paramtype が定義されていない場合は、パイプラインまたはタスク実行が失敗する代わりに検証エラーが生成されます。
  • tkn start [task | pipeline | clustertask] コマンドの場合は、--workspace フラグの説明に一貫性が保たれました。
  • パラメーターを解析する際に、空の配列が発生すると、対応する対話的なヘルプが空の文字列として表示されるようになりました。

3.1.3. Red Hat OpenShift Pipelines General Availability (GA) 1.4 のリリースノート

Red Hat OpenShift Pipelines General Availability (GA) 1.4 が OpenShift Container Platform 4.7 で利用可能になりました。

注記

stable および preview Operator チャネルのほかに、Red Hat OpenShift Pipelines Operator 1.4.0 には ocp-4.6、ocp-4.5、および ocp-4.4 の非推奨チャネルが同梱されます。これらの非推奨チャネルおよびそれらのサポートは、Red Hat OpenShift Pipelines の以下のリリースで削除されます。

3.1.3.1. 互換性およびサポート表

現在、今回のリリースに含まれる機能にはテクノロジープレビューのものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。

テクノロジープレビュー機能のサポート範囲

以下の表では、機能は以下のステータスでマークされています。

  • TP: テクノロジープレビュー
  • GA: 一般公開機能

これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。

表3.3 互換性およびサポート表

機能バージョンサポートステータス

Pipelines

0.22

GA

CLI

0.17

GA

カタログ

0.22

GA

トリガー

0.12

TP

パイプラインリソース

-

TP

質問やフィードバックについては、製品チームに pipelines-interest@redhat.com 宛のメールを送信してください。

3.1.3.2. 新機能

以下のセクションでは、修正および安定性の面での改善点に加え、OpenShift Pipelines 1.4 の主な新機能について説明します。

  • カスタムタスクには、以下の機能強化が含まれます。

    • パイプラインの結果として、カスタムタスクで生成される結果を参照できるようになりました。
    • カスタムタスクはワークスペース、サービスアカウント、および Pod テンプレートを使用して、より複雑なカスタムタスクをビルドできるようになりました。
  • finally タスクには、以下の機能強化が含まれます。

    • when 式は 最後 のタスクでサポートされます。これにより、効率的に保護された実行が可能になり、タスクの再利用性が向上します。
    • finally タスクは、同じパイプライン内のタスクの結果を使用するように設定できます。

      注記

      when 式および finally タスクのサポートは OpenShift Container Platform 4.7 Web コンソールでは利用できません。

  • dockercfg または dockerconfigjson タイプの複数のシークレットのサポートがランタイム時に認証用に追加されました。
  • git-clone タスクでスパースチェックをサポートする機能が追加されました。これにより、ローカルコピーとしてリポジトリーのサブセットのみをクローンすることができ、これはクローン作成したリポジトリーのサイズを制限するのに便利です。
  • 実際に起動せずに、パイプライン実行を保留中の状態で作成できます。負荷が大きいクラスターでは、これにより、Operator はパイプライン実行の開始時間を制御することができます。
  • コントローラー用に SYSTEM_NAMESPACE 環境変数を手動で設定していることを確認します。これは以前はデフォルトで設定されていました。
  • root 以外のユーザーがパイプラインのビルドベースイメージに追加され、git-init がリポジトリーのクローンを root 以外のユーザーとして作成できるようになりました。
  • パイプライン実行の開始前に解決されたリソース間で依存関係を検証するサポートが追加されています。パイプラインのすべての結果変数は有効でなければならず、パイプラインからのオプションのワークスペースは、パイプライン実行の開始に使用することが予想されているタスクにのみ渡すことができます。
  • コントローラーおよび Webhook は root 以外のグループとして実行され、それらの必要以上の機能は削除され、よりセキュアになりました。
  • tkn pr logs コマンドを使用して、再試行されたタスク実行のログストリームを表示できます。
  • tkn tr delete コマンドで --clustertask オプションを使用して、特定のクラスタータスクに関連付けられたすべてのタスク実行を削除できます。
  • EventListener リソースでの Knative サービスのサポートは、新規の customResource フィールドを導入して追加されます。
  • イベントペイロードが JSON 形式を使用しない場合にエラーメッセージが表示されます。
  • GitLab、BitBucket、GitHub などのソース制御インターセプターは、新規の InterceptorRequest または InterceptorResponse を使用できるようになりました。
  • 新しい CEL 関数の marshalJSON が実装され、JSON オブジェクトまたは配列を文字列にエンコードできます。
  • CEL およびソース制御コアインターセプターを提供する HTTP ハンドラーが追加されました。これは、tekton-pipelines namespace にデプロイされる単一の HTTP サーバーに 4 つのコアインターセプターをパッケージ化します。EventListener オブジェクトは、HTTP サーバー経由でイベントをインターセプターに転送します。それぞれのインターセプターは異なるパスで利用できます。たとえば、CEL インターセプターは /cel パスで利用できます。
  • pipelines-scc SCC (Security Context Constraint) は、パイプラインのデフォルト pipeline サービスアカウントで使用されます。この新規サービスアカウントは anyuid と似ていますが、OpenShift Container Platform 4.7 の SCC について YAML に定義されるように若干の違いがあります。

    fsGroup:
      type: MustRunAs

3.1.3.3. 非推奨の機能

  • パイプラインリソースストレージおよび gcs-fetcher イメージの build-gcs サブタイプはサポートされません。
  • クラスタータスクの taskRun フィールドで、tekton.dev/task ラベルが削除されます。
  • Webhook の場合、フィールド admissionReviewVersions に対応する値 v1beta1 は削除されます。
  • ビルドおよびデプロイ用の creds-init ヘルパーイメージが削除されます。
  • トリガー仕様およびバインディングでは、template.ref が優先されるため、非推奨フィールドの template.name が削除されます。ref フィールドを使用するには、eventListener のすべての定義を更新する必要があります。

    注記

    template.name フィールドが利用できないため、Pipelines 1.3.x 以前のバージョンから Pipelines 1.4.0 へのアップグレードにより、イベントリスナーが破損します。このような場合には、Pipelines 1.4.1 を使用して、復元された template.name フィールドを利用します。

  • EventListener カスタムリソース/オブジェクトの場合、Resource が優先されるために、PodTemplate および ServiceType フィールドは非推奨になりました。
  • 非推奨の仕様スタイルの埋め込みバインディングは削除されています。
  • spec フィールドは triggerSpecBinding から削除されています。
  • イベント ID 表現は、5 文字のランダムな文字列から UUID に変更されています。

3.1.3.4. 既知の問題

  • Developer パースペクティブでは、Pipeline メトリクスおよびトリガー機能は OpenShift Container Platform 4.7.6 以降のバージョンでのみ利用できます。
  • IBM Power Systems、IBM Z、および LinuxONE では、tkn hub コマンドはサポートされません。
  • IBM Power Systems (ppc64le)、IBM Z、および LinuxONE (s390x) クラスターで Maven および Jib Maven クラスタータスクを実行する場合、MAVEN_IMAGE パラメーターの値を maven:3.6.3-adoptopenjdk-11 に設定します。
  • トリガーは、トリガーバインディングに以下の設定がある場合は、JSON 形式の正しくない処理によって生じるエラーをスローします。

    params:
      - name: github_json
        value: $(body)

    この問題を解決するには、以下を実行します。

    • トリガー v0.11.0 以降を使用している場合、marshalJSON 関数を使用して JSON オブジェクトまたは配列を取得し、そのオブジェクトまたは配列の JSON エンコーディングを文字列として返します。
    • 古いバージョンのトリガーを使用している場合は、以下のアノテーションをトリガーテンプレートに追加します。

      annotations:
        triggers.tekton.dev/old-escape-quotes: "true"
  • Pipelines 1.3.x から 1.4.x にアップグレードする際に、ルートを再作成する必要があります。

3.1.3.5. 修正された問題

  • 以前のバージョンでは、tekton.dev/task ラベルがクラスタータスクのタスク実行から削除され、tekton.dev/clusterTask ラベル が導入されました。この変更により生じる問題は 、clustertask describe および delete コマンドを修正して解決されています。さらに、タスクの lastrun 機能は変更され、古いバージョンのパイプラインでタスクとクラスタータスクの両方のタスク実行に適用される tekton.dev/task ラベルの問題を修正できるになりました。
  • 対話的な tkn pipeline start pipelinename を実行する場合、PipelineResource が対話的に作成されます。tkn p start コマンドは、リソースのステータスが nil ではない場合にリソースのステータスを出力します。
  • 以前のバージョンでは、tekton.dev/task=name ラベルは、クラスタータスクから作成されるタスク実行から削除されました。今回の修正により、--last フラグの指定される tkn clustertask start コマンドが変更され、作成されたタスク実行で tekton.dev/task=name ラベルの有無がチェックされるようになりました。
  • タスクがインラインのタスク仕様を使用する場合、対応するタスク実行は tkn pipeline describe コマンドの実行時にパイプラインに組み込まれ、タスク名は埋め込まれた状態で返されます。
  • tkn version コマンドは、設定された kubeConfiguration namespace やクラスターへのアクセスなしに、インストールされた Tekton CLI ツールのバージョンを表示するように修正されています。
  • 引数が予期せずに使用されるか、または複数の引数が使用される場合、tkn completion コマンドでエラーが発生します。
  • 以前のバージョンでは、パイプライン仕様でネスト化された finally タスクのあるパイプライン実行は、v1alpha1 バージョンに変換され、v1beta1 バージョンに戻されると、それらの finally タスクを失うことがあります。変換中に発生するこのエラーは修正され、潜在的データ損失を防ぐことができます。finally タスクがパイプライン仕様でネスト化されたパイプライン実行はシリアライズされ、アルファバージョンに保存されてデシリアライズは後に実行されるようになりました。
  • 以前のバージョンでは、サービスアカウントで secrets フィールドに {} があると、Pod の生成でエラーが発生しました。空のシークレット名を持つ GET 要求がエラーがリソース名が空ではないことを示すエラーを返すため、タスク実行は CouldntGetTask で失敗しました。この問題は、kubeclient GET 要求で空のシークレット名を使用しないことで解決されています。
  • v1beta1 API バージョンのあるパイプラインは、finally タスクを失うことなく、v1alpha1 バージョンと共に要求できるようになりました。返される v1alpha1 バージョンを適用すると、リソースが v1beta1 として保存され、finally セクションがその元の状態に戻ります。
  • 以前のバージョンでは、コントローラーの selfLink フィールドが設定されていないと、Kubernetes v1.20 クラスターでエラーが発生しました。一時的な修正として、CloudEvent ソースフィールドは、自動設定される selfLink フィールドの値なしに現在のソース URI に一致する値に設定されます。
  • 以前のバージョンでは、gcr.io などのドットの付いたシークレット名により、タスク実行の作成が失敗しました。これは、シークレット名がボリュームマウント名の一部として内部で使用されるために生じました。ボリュームマウント名は RFC1123 DNS ラベルに準拠し、名前の一部として使用されるドットを許可しません。この問題は、ドットをダッシュに置き換えることで解決し、これにより名前の読み取りが可能になりました。
  • コンテキスト変数は、finally タスクで検証されるようになりました。
  • 以前のバージョンでは、タスク実行リコンサイラーが渡され、作成した Pod の名前を含む直前のステータス更新を持たないタスク実行があると、タスク実行リコンサイラーはタスク実行に関連付けられた Pod を一覧表示しました。タスク実行リコンサイラーは、Pod を検索するために、Pod に伝播されるタスク実行のラベルを使用しました。タスク実行の実行中にこれらのラベルを変更すると、コードが既存の Pod を見つけることができませんでした。その結果、重複した Pod が作成されました。この問題は、Pod の検索時に tekton.dev/taskRun の Tekton で制御されるラベルのみを使用するようにタスク実行リコンサイラーを変更することで修正されています。
  • 以前のバージョンでは、パイプラインがオプションのワークスペースを受け入れ、これをパイプラインタスクに渡すと、パイプライン実行リコンサイラーは、ワークスペースが提供されておらず、欠落しているワークスペースのバインディングがオプションのワークスペースについて有効な場合でも、エラーを出して停止しました。この問題は、オプションのワークスペースが指定されていない場合でも、パイプライン実行リコンサイラーがタスク実行の作成に失敗しないようにすることで修正されています。
  • ステップのステータスの並び順は、ステップコンテナーの順序と一致します。
  • 以前のバージョンでは、Pod で CreateContainerConfigError の理由が出されると、タスク実行のステータスは unknown に設定されました。これは、タスクおよびパイプラインが Pod がタイムアウトするまで実行されることを意味しました。この問題は、Pod で CreateContainerConfigError の理由が出される際にタスクを失敗 (failed) として設定できるようにタスク実行ステータスを false に設定することで解決されています。
  • 以前のバージョンでは、パイプライン実行の完了後に、パイプラインの結果は最初の調整で解決されました。これにより解決が失敗し、パイプライン実行の Succeeded 状態が上書きされる可能性がありました。その結果、最終のステータス情報が失われ、パイプライン実行の状態を監視するすべてのサービスに混乱を生じさせる可能性がありました。この問題は、パイプライン実行が Succeeded または True 状態になる際に、パイプラインの結果の解決を調整の最後に移行することにで解決されました。
  • 実行ステータス変数が検証されるようになりました。これにより、実行ステータスにアクセスするためのコンテキスト変数の検証中に、タスク結果が検証されることを防ぐことができます。
  • 以前のバージョンでは、無効な変数を含むパイプラインの結果は、変数のリテラル式はそのままの状態でパイプライン実行に追加されます。そのため、結果が正しく設定されているかどうかを評価することは容易ではありませんでした。この問題は、失敗したタスク実行を参照するパイプライン実行結果でフィルタリングすることで解決されています。無効な変数を含むパイプラインの結果は、パイプライン実行によって出されなくなりました。
  • tkn eventlistener describe コマンドは、テンプレートなしでクラッシュを回避できるように修正されています。また、トリガーの参照に関する情報も表示します。
  • template.name が利用できないため、Pipelines 1.3.x 以前のバージョンから Pipelines 1.4.0 へのアップグレードにより、イベントリスナーが破損します。Pipelines 1.4.1 では、トリガーでイベントリスナーが破損しないように、template.name が復元されています。
  • Pipelines 1.4.1 では、ConsoleQuickStart カスタムリソースが OpenShift Container Platform 4.7 の機能および動作に合わせて更新されました。

3.1.4. Red Hat OpenShift Pipelines テクノロジープレビュー 1.3 のリリースノート

3.1.4.1. 新機能

Red Hat OpenShift Pipelines テクノロジープレビュー (TP) 1.3 が OpenShift Container Platform 4.7 で利用可能になりました。Red Hat OpenShift Pipelines TP 1.3 が以下をサポートするように更新されています。

  • Tekton Pipelines 0.19.0
  • Tekton tkn CLI 0.15.0
  • Tekton Triggers 0.10.2
  • Tekton Catalog 0.19.0 をベースとするクラスタータスク
  • OpenShift Container Platform 4.7 での IBM Power Systems
  • OpenShift Container Platform 4.7 での IBM Z および LinuxONE

以下のセクションでは、修正および安定性の面での改善点に加え、OpenShift Pipelines 1.3 の主な新機能について説明します。

3.1.4.1.1. Pipelines
  • S2I や Buildah タスクなどのイメージをビルドするタスクが、イメージの SHA を含むビルドされたイメージの URL を生成するようになりました。
  • Condition カスタムリソース定義 (CRD) が非推奨となっているため、カスタムタスクを参照するパイプラインタスクの条件は許可されません。
  • spec.steps[].imagePullPolicy および spec.sidecar[].imagePullPolicy フィールドの Task CRD に変数の拡張が追加されました。
  • disable-creds-init feature-flag を true に設定すると、Tekton のビルトイン認証情報メカニズムを無効にすることができます。
  • 解決済みの When 式は、PipelineRun 設定の Status フィールドの Skipped Tasks および Task Runs セクションに一覧表示されるようになりました。
  • git init コマンドが、再帰的なサブモジュールのクローンを作成できるようになりました。
  • Task CR の作成者は、Task 仕様のステップのタイムアウトを指定できるようになりました。
  • エントリーポイントイメージを distroless/static:nonroot イメージにベースとして作成し、ベースイメージに存在する cp コマンドを使用せずに、これを宛先にコピーするモードを許可できるようになりました。
  • Git SSH シークレットの既知のホストの省略を許可しないように、設定フラグ require-git-ssh-secret-known-hosts を使用できるようになりました。フラグ値が true に設定されている場合には、Git SSH シークレットに known_host フィールドを含める必要があります。フラグのデフォルト値は false です。
  • オプションのワークスペースの概念が導入されました。タスクまたはパイプラインはワークスペースオプションを宣言し、その存在に基づいて動作を条件的に変更する可能性があります。タスク実行またはパイプライン実行により、そのワークスペースが省略され、タスクまたはパイプラインの動作が変更される可能性があります。デフォルトのタスク実行ワークスペースは、省略されたオプションのワークスペースの代わりに追加されることはありません。
  • Tekton の認証情報の初期化により、SSH 以外の URL で使用する SSH 認証情報が検出されるほか、Git パイプラインリソースでは SSH URL で使用する http 認証情報が検出され、Step コンテナーで警告がログに記録されるようになりました。
  • タスク実行コントローラーは、Pod テンプレートで指定されたアフィニティーがアフィニティーアシスタントによって上書きされる場合に警告イベントを生成します。
  • タスク実行リコンサイラーは、タスク実行が完了すると生成されるクラウドイベントのメトリクスを記録するようになりました。これには再試行が含まれます。
3.1.4.1.2. Pipelines CLI
  • --no-headers flag のサポートが、次のコマンドに追加されました: tkn condition listtkn triggerbinding listtkn eventlistener listtkn clustertask listtkn clustertriggerbinding list
  • 併用した場合、--last または --use オプションは、--prefix-name および --timeout オプションを上書きします。
  • tkn eventlistener logs コマンドが追加され、EventListener ログが表示されるようになりました。
  • tekton hub コマンドは tkn CLI に統合されるようになりました。
  • --nocolour オプションは --no-color に変更されました。
  • --all-namespaces フラグは、次のコマンドに追加されました: tkn triggertemplate listtkn condition listtkn triggerbinding listtkn eventlistener list
3.1.4.1.3. トリガー
  • EventListener テンプレートでリソース情報を指定できるようになりました。
  • すべてのトリガーリソースの get 動詞に加えて、EventListener サービスアカウントに list および watch 動詞が設定されることが必須になりました。これにより、Listers を使用して EventListenerTriggerTriggerBindingTriggerTemplate、および ClusterTriggerBinding リソースからデータを取得することができます。この機能を使用して、複数のインフォーマーを指定するのではなく Sink オブジェクトを作成し、API サーバーを直接呼び出すことができます。
  • イミュータブルな入力イベント本体をサポートする新たな Interceptor インターフェースが追加されました。インターセプターはデータまたはフィールドを新しい extensions フィールドに追加できるようになり、入力本体を変更できなくなったことでイミュータブルとなりました。CEL インターセプターはこの新たな Interceptor インターフェースを使用します。
  • namespaceSelector フィールドは EventListener リソースに追加されます。これを使用して、EventListener リソースがイベント処理用に Trigger オブジェクトを取得できる namespace を指定します。namespaceSelector フィールドを使用するには、EventListener のサービスアカウントにクラスターロールが必要です。
  • トリガー EventListener リソースは、eventlistener Pod へのエンドツーエンドのセキュアな接続をサポートするようになりました。
  • "\" に置き換えることで、TriggerTemplates リソースのエスケープパラメーター動作が削除されました。
  • Kubernetes リソースをサポートする新規 resources フィールドは、EventListener 仕様の一部として導入されます。
  • ASCII 文字列の大文字と小文字へのサポートが含まれる CEL インターセプターの新機能が追加されました。
  • TriggerBinding リソースは、トリガーの name および value フィールドを使用するか、またはイベントリスナーを使用して埋め込むことができます。
  • PodSecurityPolicy 設定は、制限された環境で実行されるように更新されます。これにより、コンテナーは root 以外のユーザーとして実行する必要があります。さらに、Pod セキュリティーポリシーを使用するためのロールベースのアクセス制御は、クラスタースコープから namespace スコープに移行されます。これにより、トリガーは namespace に関連しない他の Pod セキュリティーポリシーを使用することができません。
  • 埋め込みトリガーテンプレートのサポートが追加されました。name フィールドを使用して埋め込みテンプレートを参照するか、または spec フィールド内にテンプレートを埋め込むことができます。

3.1.4.2. 非推奨の機能

  • PipelineResources CRD を使用する Pipeline テンプレートは非推奨となり、今後のリリースで削除されます。
  • template.ref フィールドが優先されるため、template.name フィールドは非推奨となり、今後のリリースで削除されます。
  • --check コマンドの短縮形である -c が削除されました。さらに、グローバル tkn フラグが version コマンドに追加されます。

3.1.4.3. 既知の問題

  • CEL オーバーレイは、受信イベント本体を変更する代わりに、フィールドを新しい最上位の extensions 関数に追加します。TriggerBinding リソースは、$(extensions.<key>) 構文を使用して、この新しい extensions 関数内の値にアクセスできます。$(body.<overlay-key>) の代わりに $(extensions.<key>)構文を使用するようにバインディングを更新します。
  • "\" に置き換えることで、エスケープパラメーター動作が削除されました。古いエスケープパラメーターの動作を保持する必要がある場合は、tekton.dev/old-escape-quotes: true" アノテーションを TriggerTemplate 仕様に追加します。
  • TriggerBinding リソースは、トリガーまたはイベントリスナー内の name および value フィールドを使用して組み込みことができます。ただし、単一のバインディングに name および ref フィールドの両方を指定することはできません。ref フィールドを使用して TriggerBinding リソースおよび埋め込みバインディングの name フィールドを参照します。
  • インターセプターは、EventListener リソースの namespace 外で secret の参照を試行することはできません。シークレットを `EventListener` の namespace に含める必要があります。
  • Trigger 0.9.0 以降では、本体またはヘッダーベースの TriggerBinding パラメーターが見つからないか、またはイベントペイロードで形式が正しくない場合に、エラーを表示する代わりにデフォルト値が使用されます。
  • JSON アノテーションを修正するには、Tekton および Pipelines 0.16.x を使用して WhenExpression オブジェクトで作成されたタスクおよびパイプラインを再適用する必要があります。
  • パイプラインがオプションのワークスペースを受け入れ、これをタスクに付与すると、ワークスペースが指定されていない場合はパイプライン実行が停止します。
  • 非接続環境で Buildah クラスタータスクを使用するには、Dockerfile が内部イメージストリームをベースイメージとして使用していることを確認してから、これを S2I クラスタータスクと同じ方法で使用します。

3.1.4.4. 修正された問題

  • CEL インターセプターによって追加された拡張機能は、イベント本体内に Extensions フィールドを追加して Webhook インターセプターに渡されます。
  • ログリーダーのアクティビティータイムアウトは、LogOptions フィールドを使用して設定できるようになりました。ただし、10 秒のタイムアウトのデフォルト動作は保持されます。
  • log コマンドは、タスク実行またはパイプライン実行が完了したときに --follow フラグを無視し、ライブログではなく利用可能なログを読み取ります。
  • 以下の Tekton リソースへの参照: EventListenerTriggerBindingClusterTriggerBindingCondition、および TriggerTemplate は、tkn コマンドのすべてのユーザーに表示されるメッセージで標準化され、一貫性を保つようになりました。
  • 以前は、--use-taskrun <canceled-task-run-name>--use-pipelinerun <canceled-pipeline-run-name> または --last フラグを使用してキャンセルされたタスク実行またはパイプライン実行を開始した場合、新規の実行はキャンセルされました。このバグは修正されています。
  • tkn pr desc コマンドが強化され、パイプラインが各種の状態で実行された場合に失敗しなくなりました。
  • --task オプションで tkn tr delete コマンドを使用してタスク実行を削除し、クラスタータスクが同じ名前で存在する場合、クラスタータスクのタスク実行も削除されます。回避策として、TaskRefKind フィールドを使用して、タスク実行をフィルタリングします。
  • tkn triggertemplate describe コマンドは、出力内の apiVersion 値の一部のみを表示します。たとえば、triggers.tekton.dev/v1alpha1 ではなく、triggers.tekton.dev のみが表示されました。このバグは修正されています。
  • 特定の条件下で Webhook はリースの取得に失敗し、正常に機能しません。このバグは修正されています。
  • v0.16.3 で作成した When 式を持つパイプラインは、v0.17.1 以降で実行できるようになりました。アップグレード後に、アノテーションの最初の大文字と小文字の両方がサポートされるようになったため、以前のバージョンで作成されたパイプライン定義を再適用する必要はありません。
  • デフォルトでは、leader-election-ha フィールドが高可用性に対して有効にされるようになりました。コントローラーフラグ disable-hatrue に設定すると、高可用性サポートが無効になります。
  • 重複したクラウドイベントに関する問題が修正されています。クラウドイベントは、条件が状態、理由、またはメッセージを変更する場合にのみ送信されるようになりました。
  • サービスアカウント名が PipelineRun または TaskRun 仕様にない場合、コントローラーは config-defaults 設定マップからサービスアカウント名を使用します。サービスアカウント名が config-defaults 設定マップにもない場合、コントローラーはこれを仕様で default に設定するようになりました。
  • アフィニティーアシスタントとの互換性の検証は、同じ永続ボリューム要求 (PVC) が複数のワークスペースに使用される場合にサポートされるようになりましたが、サブパスは異なります。

3.1.5. Red Hat OpenShift Pipelines テクノロジープレビュー 1.2 のリリースノート

3.1.5.1. 新機能

Red Hat OpenShift Pipelines テクノロジープレビュー (TP) 1.2 が OpenShift Container Platform 4.6 で利用可能になりました。Red Hat OpenShift Pipelines TP 1.2 が以下をサポートするように更新されています。

  • Tekton Pipelines 0.16.3
  • Tekton tkn CLI 0.13.1
  • Tekton Triggers 0.8.1
  • Tekton Catalog 0.16 をベースとするクラスタータスク
  • OpenShift Container Platform 4.6 での IBM Power Systems
  • OpenShift Container Platform 4.6 での IBM Z および LinuxONE

以下では、修正および安定性の面での改善点に加え、OpenShift Pipelines 1.2 の主な新機能について説明します。

3.1.5.1.1. Pipelines
  • Red Hat OpenShift Pipelines のリリースでは、非接続インストールのサポートが追加されました。

    注記

    制限された環境でのインストールは現時点で、IBM Power Systems、IBM Z、および LinuxONE ではサポートされていません。

  • conditions リソースの代わりに when フィールドを使用して、特定の条件が満たされる場合にのみタスクを実行できるようになりました。WhenExpression の主なコンポーネントは InputOperator、および Values です。すべての When 式が True に評価されると、タスクが実行されます。When 式のいずれかが False に評価されると、タスクはスキップされます。
  • ステップのステータスは、タスクの実行がキャンセルまたはタイムアウトすると更新されるようになりました。
  • git-init が使用するベースイメージをビルドするために、Git Large File Storage (LFS) のサポートが利用できるようになりました。
  • taskSpec フィールドを使用して、タスクがパイプラインに組み込まれる際に、ラベルやアノテーションなどのメタデータを指定できるようになりました。
  • クラウドイベントがパイプラインの実行でサポートされるようになりました。backoff を使用した再試行が、クラウドイベントパイプラインリソースによって送信されるクラウドイベントに対して有効になりました。
  • Task リソースが宣言するものの、TaskRun リソースが明示的に指定しないワークスペースのデフォルトの Workspace 設定を設定できるようになりました。
  • サポートは、PipelineRun namespace および TaskRun namespace の namespace 変数の補間に利用できます。
  • TaskRun オブジェクトの検証が追加され、TaskRun リソースが Affinity Assistant に関連付けられる際に複数の永続ボリューム要求 (PVC) ワークスペースが使用されていないことを確認するようになりました。複数の永続ボリューム要求 (PVC) ワークスペースが使用されていると、タスクの実行は TaskRunValidationFailed の状態で失敗します。デフォルトで、Affinity Assistant は Red Hat OpenShift Pipelines で無効にされているため、これを使用できるように有効にする必要があります。
3.1.5.1.2. Pipelines CLI
  • tkn task describetkn taskrun describetkn clustertask describetkn pipeline describe、および tkn pipelinerun describe コマンドが以下を実行するようになりました。

    • TaskTaskRunClusterTaskPipeline および PipelineRun リソースのいずれかが 1 つしかない場合、それぞれを自動的に選択します。
    • 出力に TaskTaskRunClusterTaskPipeline および PipelineRun リソースの結果をそれぞれ表示します。
    • 出力に TaskTaskRunClusterTaskPipeline および PipelineRun リソースで宣言されたワークスペースをそれぞれ表示します。
  • tkn clustertask start コマンドに --prefix-name オプションを指定して、タスク実行の名前にプレフィックスを指定できるようになりました。
  • インタラクティブモードのサポートが tkn clustertask start コマンドに提供されるようになりました。
  • TaskRun および PipelineRun オブジェクトのローカルまたはリモートファイル定義を使用して、パイプラインでサポートされる PodTemplate プロパティーを指定できるようになりました。
  • --use-params-defaults オプションを tkn clustertask start コマンドに指定して、ClusterTask 設定に設定したデフォルト値を使用して、タスク実行を作成できるようになりました。
  • tkn pipeline start コマンドの --use-param-defaults フラグで、デフォルトの値が一部のパラメーターに指定されていない場合に対話モードをプロンプトで表示するようになりました。
3.1.5.1.3. トリガー
  • YAML 文字列を文字列のマップに解析するために、parseYAML という名前の Common Expression Language (CEL)関数が追加されました。
  • 式を評価する際や、評価環境を作成するためにフック本体を解析する際に、CEL 式の解析を行うエラーメッセージの詳細度が上がりました。
  • ブール値とマップが CEL オーバーレイメカニズムで式の値として使用されている場合に、それらをマーシャリングするためのサポートが利用できるようになりました。
  • 以下のフィールドが EventListener オブジェクトに追加されました。

    • replicas フィールドは、YAML ファイルのレプリカ数を指定して、イベントリスナーが複数の Pod を実行できるようにします。
    • NodeSelector フィールドでは、EventListener オブジェクトがイベントリスナー Pod を特定のノードにスケジュールできるようにします。
  • Webhook インターセプターは EventListener-Request-URL ヘッダーを解析し、イベントリスナーによって処理される元のリクエスト URL からパラメーターを抽出できるようになりました。
  • イベントリスナーからのアノテーションがデプロイメント、サービス、およびその他の Pod に伝播できるようになりました。サービスまたはデプロイメントのカスタムアノテーションは上書きされるため、イベントリスナーアノテーションに追加して伝播できるようにする必要があります。
  • EventListener 仕様のレプリカの適切な検証が、ユーザーが spec.replicas 値を negative または zero として指定する場合に利用できるようになりました。
  • TriggerCRD オブジェクトを、TriggerRef フィールドを使用して参照として EventListener 仕様内に指定し、TriggerCRD オブジェクトを別個に作成してから、これを EventListener 仕様内でバインドできるようになりました。
  • TriggerCRD オブジェクトの検証およびデフォルト値が利用可能になりした。

3.1.5.2. 非推奨の機能

  • $(params) パラメーターは triggertemplate リソースから削除され、$(tt.params) に置き換えられ、これにより resourcetemplatetriggertemplate パラメーター間の混乱が生じなくなります。
  • オプションの EventListenerTrigger ベースの認証レベルの ServiceAccount 参照が ServiceAccountName 文字列へのオブジェクト参照から変更されました。これにより、ServiceAccount 参照が EventListenerTrigger オブジェクトと同じ namespace に置かれるようになりました。
  • Conditions カスタムリソース定義 (CRD) は非推奨となり、代わりに WhenExpressions CRD が使用されます。
  • PipelineRun.Spec.ServiceAccountNames オブジェクトは非推奨となり、PipelineRun.Spec.TaskRunSpec[].ServiceAccountName オブジェクトによって置き換えられます。

3.1.5.3. 既知の問題

  • Red Hat OpenShift Pipelines のリリースでは、非接続インストールのサポートが追加されました。ただし、クラスタータスクで使用される一部のイメージは、非接続クラスターで動作するようにミラーリングする必要があります。
  • openshift namespace のパイプラインは、Red Hat OpenShift Pipelines Operator のアンインストール後に削除されません。oc delete pipelines -n openshift --all コマンドを使用してパイプラインを削除します。
  • Red Hat OpenShift Pipelines Operator をアンインストールしても、イベントリスナーは削除されません。

    回避策として、EventListener および Pod CRD を削除するには、以下を実行します。

    1. EventListener オブジェクトを foregroundDeletion ファイナライザーで編集します。

      $ oc patch el/<eventlistener_name> -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge

      以下に例を示します。

      $ oc patch el/github-listener-interceptor -p '{"metadata":{"finalizers":["foregroundDeletion"]}}' --type=merge
    2. EventListener CRD を削除します。

      $ oc patch crd/eventlisteners.triggers.tekton.dev -p '{"metadata":{"finalizers":[]}}' --type=merge
  • IBM Power Systems (ppc64le) または IBM Z (s390x) クラスターでコマンド仕様なしにマルチアーキテクチャーコンテナーイメージタスクを実行すると、TaskRun リソースは以下のエラーを出して失敗します。

    Error executing command: fork/exec /bin/bash: exec format error

    回避策として、アーキテクチャー固有のコンテナーイメージを使用するか、または正しいアーキテクチャーを参照する sha256 ダイジェストを指定します。sha256 ダイジェストを取得するには、以下を実行します。

    $ skopeo inspect --raw <image_name>| jq '.manifests[] | select(.platform.architecture == "<architecture>") | .digest'

3.1.5.4. 修正された問題

  • CEL フィルター、Webhook バリデーターのオーバーレイ、およびインターセプターの式を確認するための簡単な構文検証が追加されました。
  • Trigger は、基礎となるデプロイメントおよびサービスオブジェクトに設定されたアノテーションを上書きしなくなりました。
  • 以前のバージョンでは、イベントリスナーはイベントの受け入れを停止しました。今回の修正により、この問題を解決するために EventListener シンクの 120 秒のアイドルタイムアウトが追加されました。
  • 以前のバージョンでは、Failed(Canceled) 状態でパイプラインの実行を取り消すと、成功のメッセージが表示されました。これは、代わりにエラーが表示されるように修正されました。
  • tkn eventlistener list コマンドが一覧表示されたイベントリスナーのステータスを提供するようになり、利用可能なイベントリスナーを簡単に特定できるようになりました。
  • トリガーがインストールされていない場合や、リソースが見つからない場合に、triggers list および triggers describe コマンドについて一貫性のあるエラーメッセージが表示されるようになりました。
  • 以前のバージョンでは、多くのアイドル接続がクラウドイベントの配信時に増大しました。この問題を修正するために、DisableKeepAlives: true パラメーターが cloudeventclient 設定に追加されました。新規の接続がすべてのクラウドイベントに設定されます。
  • 以前のバージョンでは、特定のタイプの認証情報が指定されていない場合であっても、creds-init コードが空のファイルをディスクに書き込みました。今回の修正により、creds-init コードが変更され、正しくアノテーションが付けられたシークレットから実際にマウントされた認証情報のみのファイルを書き込むようになりました。

3.1.6. Red Hat OpenShift Pipelines テクノロジープレビュー 1.1 のリリースノート

3.1.6.1. 新機能

Red Hat OpenShift Pipelines テクノロジープレビュー (TP) 1.1 が OpenShift Container Platform 4.5 で利用可能になりました。Red Hat OpenShift Pipelines TP 1.1 が以下をサポートするように更新されています。

  • Tekton Pipelines 0.14.3
  • Tekton tkn CLI 0.11.0
  • Tekton Triggers 0.6.1
  • Tekton Catalog 0.14 をベースとするクラスタータスク

以下では、修正および安定性の面での改善点に加え、OpenShift Pipelines 1.1 の主な新機能について説明します。

3.1.6.1.1. Pipelines
  • ワークスペースをパイプラインリソースの代わりに使用できるようになりました。パイプラインリソースはデバッグが容易ではなく、スコープの制限があり、タスクの再利用を可能にしないため、OpenShift Pipelines ではワークスペースを使用することが推奨されます。ワークスペースの詳細は、OpenShift Pipelines のセクションを参照してください。
  • ボリューム要求テンプレートのワークスペースのサポートが追加されました。

    • パイプライン実行およびタスク実行のボリューム要求テンプレートがワークスペースのボリュームソースとして追加できるようになりました。次に、tekton-controller はパイプラインのすべてのタスク実行の PVC として表示されるテンプレートを使用して永続ボリューム要求 (PVC) を作成します。したがって、複数のタスクにまたがるワークスペースをバインドするたびに PVC 設定を定義する必要はありません。
    • ボリューム要求テンプレートがボリュームソースとして使用される場合の PVC の名前検索のサポートが、変数の置換を使用して利用できるようになりました。
  • 監査を強化するサポート:

    • PipelineRun.Status フィールドには、パイプラインのすべてのタスク実行のステータスと、パイプライン実行の進捗をモニターするためにパイプライン実行をインスタンス化する際に使用するパイプライン仕様が含まれるようになりました。
    • Pipeline の結果が Pipeline 仕様および PipelineRun ステータスに追加されました。
    • TaskRun.Status フィールドには、TaskRun リソースのインスタンス化に使用される実際のタスク仕様が含まれるようになりました。
  • デフォルトパラメーターを各種の状態に適用するサポート。
  • クラスタータスクを参照して作成されるタスク実行は、tekton.dev/task ラベルではなく tekton.dev/clusterTask ラベルを追加するようになりました。
  • kube config writer は、kubeconfig-creator タスクでパイプラインリソースタイプクラスターの置き換えを有効にするために ClientKeyData および ClientCertificateData 設定をリソース構造に追加できるようになりました。
  • feature-flags および config-defaults 設定マップの名前はカスタマイズ可能になりました。
  • タスク実行で使用される Pod テンプレートのホストネットワークのサポートが追加されました。
  • Affinity Assistant が、ワークスペースボリュームを共有するタスク実行のノードのアフィニティーをサポートするようになりました。デフォルトで、これは OpenShift Pipelines で無効にされます。
  • Pod テンプレートは、Pod の起動時にコンテナーイメージのプルを許可するためにコンテナーランタイムが使用するシークレットを特定するために imagePullSecrets を指定するように更新されました。
  • コントローラーがタスク実行の更新に失敗した場合にタスク実行コントローラーから警告イベントを出すためのサポート。
  • アプリケーションまたはコンポーネントに属するリソースを特定するために、すべてのリソースに標準または推奨される k8s ラベルが追加されました。
  • Entrypoint プロセスがシグナルについて通知されるようになり、これらのシグナルは Entrypoint プロセスの専用の PID グループを使用して伝播されるようになりました。
  • Pod テンプレートはタスク実行仕様を使用してランタイム時にタスクレベルで設定できるようになりました。
  • Kubernetes イベントを生成するサポート。

    • コントローラーは、追加のタスク実行ライフサイクルイベント (taskrun started および taskrun running) のイベントを生成するようになりました。
    • パイプライン実行コントローラーは、パイプラインの起動時に毎回イベントを生成するようになりました。
  • デフォルトの Kubernetes イベントのほかに、タスク実行のクラウドイベントのサポートが利用可能になりました。コントローラーは、クラウドイベントとして create、started、および failed などのタスク実行イベントを送信するように設定できます。
  • パイプライン実行およびタスク実行の場合に適切な名前を参照するための $context.<taskRun|pipeline|pipelineRun>.name 変数を使用するサポート。
  • パイプライン実行パラメーターの検証が、パイプラインで必要なすべてのパラメーターがパイプライン実行によって提供できるようにするために利用可能になりました。これにより、パイプライン実行は必要なパラメーターに加えて追加のパラメーターを指定することもできます。
  • パイプライン YAML ファイルの finally フィールドを使用して、すべてのタスクが正常に終了するか、またはパイプラインのタスクの失敗後、パイプラインが終了する前に常に実行されるパイプライン内でタスクを指定できるようになりました。
  • git-clone クラスタータスクが利用できるようになりました。
3.1.6.1.2. Pipelines CLI
  • 組み込まれた Trigger バインディングのサポートが、tkn evenlistener describe コマンドで利用できるようになりました。
  • 正しくないサブコマンドが使用される場合にサブコマンドを推奨し、提案するためのサポート。
  • tkn task describe コマンドは、1 つのタスクのみがパイプラインに存在する場合にタスクを自動的に選択できるようになりました。
  • --use-param-defaults フラグを tkn task start コマンドに指定することにより、デフォルトのパラメーター値を使用してタスクを起動できるようになりました。
  • --workspace オプションを tkn pipeline start または tkn task start コマンドで使用して、パイプライン実行またはタスク実行のボリューム要求テンプレートを指定できるようになりました。
  • tkn pipelinerun logs コマンドに、finally セクションに一覧表示される最終タスクのログが表示されるようになりました。
  • インタラクティブモードのサポートが、以下の tkn リソース向けに tkn task start コマンドおよび describe サブコマンドに追加されました: pipelinepipelineruntasktaskrunclustertask および pipelineresource
  • tkn version コマンドで、クラスターにインストールされているトリガー のバージョンが表示されるようになりました。
  • tkn pipeline describe コマンドで、パイプラインで使用されるタスクに指定されたパラメーター値およびタイムアウトが表示されるようになりました。
  • 最近のパイプライン実行またはタスク実行をそれぞれ記述できるように、tkn pipelinerun describe および tkn taskrun describe コマンドの --last オプションのサポートが追加されました。
  • tkn pipeline describe コマンドに、パイプラインのタスクに適用される各種の状態が表示されるようになりました。
  • --no-headers および --all-namespaces フラグを tkn resource list コマンドで使用できるようになりました。
3.1.6.1.3. トリガー
  • 以下の Common Expression Language (CEL) 機能が利用できるようになりました。

    • parseURL: URL の一部を解析し、抽出します。
    • parseJSON: deployment webhook の payload フィールドの文字列に埋め込まれた JSON 値タイプを解析します。
  • Bitbucket からの Webhook の新規インターセプターが追加されました。
  • イベントリスナーは、kubectl get コマンドで一覧表示される際の追加フィールドとして Address URL および Available status を表示します。
  • トリガーテンプレートパラメーターは、$(params.<paramName>) ではなく $(tt.params.<paramName>) 構文を使用するようになり、トリガーテンプレートとリソーステンプレートパラメーター間で生じる混乱が軽減されました。
  • EventListener CRD に tolerations を追加し、セキュリティーや管理上の問題によりすべてのノードにテイントのマークが付けられる場合でもイベントリスナーが同じ設定でデプロイされるようにできるようになりました。
  • イベントリスナー Deployment の Readiness Probe を URL/live に追加できるようになりました。
  • イベントリスナートリガーでの TriggerBinding 仕様の埋め込みのサポート。
  • Trigger リソースに推奨される app.kubernetes.io ラベルでアノテーションが付けられるようになりました。

3.1.6.2. 非推奨の機能

本リリースでは、以下の項目が非推奨になりました。

  • clustertask コマンドおよび clustertriggerbinding コマンドを含む、クラスター全体のすべてのコマンドの --namespace または -n フラグが非推奨になりました。これは今後のリリースで削除されます。
  • ref フィールドが優先されるため、イベントリスナー内の triggers.bindingsname フィールドは非推奨となり、今後のリリースで削除されます。
  • $(tt.params) が優先されるため、$(params) を使用したトリガーテンプレートの変数の補間が非推奨となり、これにより、パイプライン変数の補間構文に関連した混乱が軽減されました。$(params.<paramName>) 構文は今後のリリースで削除されます。
  • tekton.dev/task ラベルはクラスタータスクで非推奨になりました。
  • TaskRun.Status.ResourceResults.ResourceRef フィールドは非推奨となり、今後削除されます。
  • tkn pipeline createtkn task create、および tkn resource create -f サブコマンドが削除されました。
  • namespace の検証が tkn コマンドから削除されました。
  • tkn ct start コマンドのデフォルトタイムアウトの 1h および -t フラグが削除されました。
  • s2i クラスタータスクが非推奨になりました。

3.1.6.3. 既知の問題

  • 各種の状態はワークスペースには対応しません。
  • --workspace オプションとおよびインタラクティブモードは tkn clustertask start コマンドではサポートされていません。
  • $(params.<paramName>) 構文の後方互換性のサポートにより、トリガーテンプレートがパイプライン固有のパラメーターで強制的に使用されます。 トリガー webhook がトリガーパラメーターとパイプラインパラメーターを区別できないためです。
  • Pipeline メトリクスは、tekton_taskrun_count および tekton_taskrun_duration_seconds_count の promQL を実行する際に正しくない値を報告します。
  • パイプライン実行およびタスク実行は、存在しない PVC 名がワークスペースに指定されている場合でも、それぞれ Running および Running(Pending) の状態のままになります。

3.1.6.4. 修正された問題

  • 以前のバージョンでは、タスクおよびクラスタータスクの名前が同じ場合、tkn task delete <name> --trs コマンドは、タスクとクラスタータスクの両方を削除しました。今回の修正により、コマンドはタスク <name> で作成されるタスク実行のみを削除するようになりました。
  • 以前のバージョンでは、tkn pr delete -p <name> --keep 2 コマンドは、--keep フラグと共に使用する場合に -p フラグを無視し、最新の 2 つのパイプライン実行を除きすべてのパイプライン実行を削除しました。今回の修正により、コマンドは最新の 2 つのパイプライン実行を除き、パイプライン <name> で作成されるパイプライン実行のみを削除するようになりました。
  • tkn triggertemplate describe 出力には、YAML 形式ではなくテーブル形式でリソーステンプレートが表示されるようになりました。
  • 以前のバージョンでは、buildah クラスタータスクは、新規ユーザーがコンテナーに追加されると失敗していました。今回の修正により、この問題は解決されています。

3.1.7. Red Hat OpenShift Pipelines テクノロジープレビュー 1.0 のリリースノート

3.1.7.1. 新機能

Red Hat OpenShift Pipelines テクノロジープレビュー (TP) 1.0 が OpenShift Container Platform 4.4 で利用可能になりました。Red Hat OpenShift Pipelines TP 1.0 が以下をサポートするように更新されています。

  • Tekton Pipelines 0.11.3
  • Tekton tkn CLI 0.9.0
  • Tekton Triggers 0.4.0
  • Tekton Catalog 0.11 をベースとするクラスタータスク

以下では、修正および安定性の面での改善点に加え、OpenShift Pipelines 1.0 の主な新機能について説明します。

3.1.7.1.1. Pipelines
  • v1beta1 API バージョンのサポート。
  • 改善された制限範囲のサポート。以前のバージョンでは、制限範囲はタスク実行およびパイプライン実行に対してのみ指定されていました。制限範囲を明示的に指定する必要がなくなりました。namespace 間で最小の制限範囲が使用されます。
  • タスク結果およびタスクパラメーターを使用してタスク間でデータを共有するためのサポート。
  • パイプラインは、HOME 環境変数および各ステップの作業ディレクトリーを上書きしないように設定できるようになりました。
  • タスクステップと同様に、sidecars がスクリプトモードをサポートするようになりました。
  • タスク実行 podTemplate リソースに別のスケジューラーの名前を指定できるようになりました。
  • Star Array Notation を使用した変数置換のサポート。
  • Tekton コントローラーは、個別の namespace を監視するように設定できるようになりました。
  • パイプライン、タスク、クラスタータスク、リソース、および状態 (condition) の仕様に新規の説明フィールドが追加されました。
  • Git パイプラインリソースへのプロキシーパラメーターの追加。
3.1.7.1.2. Pipelines CLI
  • describe サブコマンドが以下の tkn リソースについて追加されました。EventListenerConditionTriggerTemplateClusterTask、および TriggerSBinding
  • v1beta1 についてのサポートが、v1alpha1 の後方互換性と共に以下のコマンドに追加されました。ClusterTaskTaskPipelinePipelineRun、および TaskRun
  • 以下のコマンドは、--all-namespaces フラグオプションを使用してすべての namespace からの出力を一覧表示できるようになりました。これらは、tkn task listtkn pipeline listtkn taskrun listtkn pipelinerun list です。

    これらのコマンドの出力は、--no-headers フラグオプションを使用してヘッダーなしで情報を表示するように強化されています。

  • --use-param-defaults フラグを tkn pipelines start コマンドに指定することにより、デフォルトのパラメーター値を使用してパイプラインを起動できるようになりました。
  • ワークスペースのサポートが tkn pipeline start および tkn task start コマンドに追加されるようになりました。
  • 新規の clustertriggerbinding コマンドが以下のサブコマンドと共に追加されました。describedelete、および list
  • ローカルまたはリモートの yaml ファイルを使用してパイプラインの実行を直接開始できるようになりました。
  • describe サブコマンドには、強化され、詳細化した出力が表示されるようになりました。descriptiontimeoutparam description、および sidecar status などの新規フィールドの追加により、コマンドの出力に特定の tkn リソースについてのより詳細な情報が提供されるようになりました。
  • tkn task log コマンドには、1 つのタスクが namespace に存在する場合にログが直接表示されるようになりました。
3.1.7.1.3. トリガー
  • Trigger は v1alpha1 および v1beta1 の両方のパイプラインリソースを作成できるようになりました。
  • 新規 Common Expression Language (CEL) インターセプター機能 compareSecret のサポート。この機能は、文字列と CEL 式のシークレットを安全な方法で比較します。
  • イベントリスナーのトリガーレベルでの認証および認可のサポート。

3.1.7.2. 非推奨の機能

本リリースでは、以下の項目が非推奨になりました。

  • 環境変数 $HOME、および Steps 仕様の変数 workingDir が非推奨となり、今後のリリースで変更される可能性があります。現時点で Step コンテナーでは、HOME および workingDir 変数が /tekton/home および /workspace 変数にそれぞれ上書きされます。

    今後のリリースでは、これらの 2 つのフィールドは変更されず、コンテナーイメージおよび Task YAML で定義される値に設定されます。本リリースでは、disable-home-env-overwrite および disable-working-directory-overwrite フラグを使用して、HOME および workingDir 変数の上書きを無効にします。

  • 以下のコマンドは非推奨となり、今後のリリースで削除される可能性があります。tkn pipeline createtkn task create
  • tkn resource create コマンドの -f フラグは非推奨になりました。これは今後のリリースで削除される可能性があります。
  • tkn clustertask create コマンドの -t フラグおよび --timeout フラグ (秒単位の形式) は非推奨になりました。期間タイムアウトの形式のみがサポートされるようになりました (例: 1h30s)。これらの非推奨のフラグは今後のリリースで削除される可能性があります。

3.1.7.3. 既知の問題

  • 以前のバージョンの Red Hat OpenShift Pipelines からアップグレードする場合は、既存のデプロイメントを削除してから Red Hat OpenShift Pipelines バージョン 1.0 にアップグレードする必要があります。既存のデプロイメントを削除するには、まずカスタムリソースを削除してから Red Hat OpenShift Pipelines Operator をアンインストールする必要があります。詳細は、Red Hat OpenShift Pipelines のアンインストールについてのセクションを参照してください。
  • 同じ v1alpha1 タスクを複数回送信すると、エラーが発生します。v1alpha1 タスクの再送信時に、oc apply ではなく oc replace コマンドを使用します。
  • buildah クラスタータスクは、新規ユーザーがコンテナーに追加されると機能しません。

    Operator がインストールされると、buildah クラスタータスクの --storage-driver フラグが指定されていないため、フラグはデフォルト値に設定されます。これにより、ストレージドライバーが正しく設定されなくなることがあります。新規ユーザーが追加されると、storage-driver が間違っている場合に、buildah クラスタータスクが以下のエラーを出して失敗します。

    useradd: /etc/passwd.8: lock file already used
    useradd: cannot lock /etc/passwd; try again later.

    回避策として、buildah-task.yaml ファイルで --storage-driver フラグの値を overlay に手動で設定します。

    1. cluster-admin としてクラスターにログインします。

      $ oc login -u <login> -p <password> https://openshift.example.com:6443
    2. oc edit コマンドを使用して buildah クラスタータスクを編集します。

      $ oc edit clustertask buildah

      buildah clustertask YAML ファイルの現行バージョンが EDITOR 環境変数で設定されたエディターで開かれます。

    3. Steps フィールドで、以下の command フィールドを見つけます。

       command: ['buildah', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--layers', '-f', '$(params.DOCKERFILE)', '-t', '$(resources.outputs.image.url)', '$(params.CONTEXT)']
    4. command フィールドを以下に置き換えます。

       command: ['buildah', '--storage-driver=overlay', 'bud', '--format=$(params.FORMAT)', '--tls-verify=$(params.TLSVERIFY)', '--no-cache', '-f', '$(params.DOCKERFILE)', '-t', '$(params.IMAGE)', '$(params.CONTEXT)']
    5. ファイルを保存して終了します。

    または、PipelinesCluster Tasksbuildah に移動して、buildah クラスタータスク YAML ファイルを Web コンソール上で直接変更することもできます。Actions メニューから Edit Cluster Task を選択し、直前の手順のように command フィールドを置き換えます。

3.1.7.4. 修正された問題

  • 以前のリリースでは、DeploymentConfig タスクは、イメージのビルドがすでに進行中であっても新規デプロイメントビルドをトリガーしていました。これにより、パイプラインのデプロイメントが失敗していました。今回の修正により、deploy task コマンドが oc rollout status コマンドに置き換えられ、進行中のデプロイメントが終了するまで待機するようになりました。
  • APP_NAME パラメーターのサポートがパイプラインテンプレートに追加されました。
  • 以前のバージョンでは、Java S2I のパイプラインテンプレートはレジストリーでイメージを検索できませんでした。今回の修正により、イメージはユーザーによって提供される IMAGE_NAME パラメーターの代わりに既存イメージのパイプラインリソースを使用して検索されるようになりました。
  • OpenShift Pipelines イメージはすべて、Red Hat Universal Base Images (UBI) をベースにしています。
  • 以前のバージョンでは、パイプラインが tekton-pipelines 以外の namespace にインストールされている場合、tkn version コマンドはパイプラインのバージョンを unknown と表示していました。今回の修正により、tkn version コマンドにより、正しいパイプラインのバージョンがすべての namespace で表示されるようになりました。
  • -c フラグは tkn version コマンドでサポートされなくなりました。
  • 管理者以外のユーザーがクラスタートリガーバインディングを一覧表示できるようになりました。
  • イベントリスナーの CompareSecret 機能が、CEL インターセプターについて修正されました。
  • タスクおよびクラスタータスクの listdescribe、および start サブコマンドは、タスクおよびクラスタータスクが同じ名前を持つ場合に出力に正常に表示されるようになりました。
  • 以前のバージョンでは、OpenShift Pipelines Operator は特権付き SCC (Security Context Constraints) を変更していました。これにより、クラスターのアップグレード時にエラーが発生しました。このエラーは修正されています。
  • tekton-pipelines namespace では、設定マップを使用して、すべてのタスク実行およびパイプライン実行のタイムアウトが default-timeout-minutes フィールドの値に設定されるようになりました。
  • 以前のバージョンでは、Web コンソールのパイプラインセクションは管理者以外のユーザーには表示されませんでした。この問題は解決されています。