1.11. 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 の以下のリリースで削除されます。
1.11.1. 互換性およびサポート表
現在、今回のリリースに含まれる機能には テクノロジープレビュー のものがあります。これらの実験的機能は、実稼働環境での使用を目的としていません。
以下の表では、機能は以下のステータスでマークされています。
TP | テクノロジープレビュー |
GA | 一般公開 (GA) |
これらの機能に関しては、Red Hat カスタマーポータルの以下のサポート範囲を参照してください。
機能 | バージョン | サポートステータス |
---|---|---|
Pipelines | 0.22 | GA |
CLI | 0.17 | GA |
カタログ | 0.22 | GA |
トリガー | 0.12 | TP |
パイプラインリソース | - | TP |
質問やフィードバックについては、製品チームに pipelines-interest@redhat.com 宛のメールを送信してください。
1.11.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
1.11.3. 非推奨の機能
-
パイプラインリソースストレージの
build-gcs
サブタイプ、およびgcs-fetcher
イメージは、サポートされていません。 -
クラスタータスクの
taskRun
フィールドで、tekton.dev/task
ラベルが削除されます。 -
Webhook の場合、フィールド
admissionReviewVersions
に対応する値v1beta1
は削除されます。 -
ビルドおよびデプロイ用の
creds-init
ヘルパーイメージが削除されます。 トリガー仕様およびバインディングでは、
template.ref
が優先されるため、非推奨フィールドのtemplate.name
が削除されます。ref
フィールドを使用するには、eventListener
のすべての定義を更新する必要があります。注記OpenShift Pipelines 1.3.x 以前のバージョンから OpenShift Pipelines 1.4.0 にアップグレードすると、
template.name
フィールドが使用できないため、イベントリスナーが壊れます。このような場合、OpenShift Pipelines 1.4.1 を使用して、復元されたtemplate.name
フィールドを利用します。-
EventListener
カスタムリソース/オブジェクトの場合、Resource
が優先されるために、PodTemplate
およびServiceType
フィールドは非推奨になりました。 - 非推奨の仕様スタイルの埋め込みバインディングは削除されています。
-
spec
フィールドはtriggerSpecBinding
から削除されています。 - イベント ID 表現は、5 文字のランダムな文字列から UUID に変更されています。
1.11.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"
-
トリガー v0.11.0 以降を使用している場合、
- OpenShift Pipelines 1.3.x から 1.4.x にアップグレードする場合、ルートを再作成する必要があります。
1.11.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
コマンドは、テンプレートなしでクラッシュを回避できるように修正されています。また、トリガーの参照に関する情報も表示します。 -
OpenShift Pipelines 1.3.x 以前のバージョンから OpenShift Pipelines 1.4.0 にアップグレードすると、
template.name
が利用できないため、イベントリスナーが壊れます。OpenShift Pipelines 1.4.1 では、template.name が
復元され、トリガーのイベントリスナーが壊れないようになりました。 -
OpenShift Pipelines 1.4.1 では、
ConsoleQuickStart
カスタムリソースが更新され、OpenShift Container Platform 4.7 の機能および動作と一致するようになりました。