OpenShift Serverless について


Red Hat OpenShift Serverless 1.34

OpenShift Serverless の概要

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、Functions、Serving、Eventing などの OpenShift Serverless 機能の概要を説明します。リリースノートとサポートを受ける方法の詳細も含まれています。

第1章 リリースノート

注記

OpenShift Serverless のライフサイクルとサポートされるプラットフォームの詳細は、OpenShift Operator ライフサイクル を参照してください。

リリースノートには、新機能、非推奨機能、互換性を損なう変更、既知の問題に関する情報が記載されています。以下のリリースノートは、OpenShift Container Platform 上の最新の OpenShift Serverless リリースに適用されます。

OpenShift Serverless 機能の概要については、OpenShift Serverless についてを参照してください。

注記

OpenShift Serverless はオープンソースの Knative プロジェクトに基づいています。

最新の Knative コンポーネントリリースの詳細は、Knative ブログ を参照してください。

1.1. API バージョンについて

API バージョンは、OpenShift Serverless の特定の機能およびカスタムリソースの開発状況を示す重要な指標です。正しい API バージョンを使用していないリソースをクラスター上に作成すると、デプロイメントで問題が発生する可能性があります。

OpenShift Serverless Operator は、最新バージョンを使用するように非推奨の API を使用する古いリソースを自動的にアップグレードします。たとえば、v1beta1 などの古いバージョンの ApiServerSource API を使用するクラスターにリソースを作成していると、OpenShift Serverless Operator はこれらのリソースを自動的に更新し、これが利用可能な場合に API の v1 バージョンを使用するようになり、v1beta1 バージョンは非推奨になりました。

非推奨となった古いバージョンは、今後のリリースで削除される可能性があります。API の非推奨バージョンを使用すると、リソースが失敗することはありません。ただし、削除された API のバージョンを使用しようとすると、リソースが失敗します。問題を回避するために、マニフェストが最新バージョンを使用するように更新されていることを確認します。

1.2. 一般提供およびテクノロジープレビュー機能

一般提供 (GA) の機能は完全にサポートされており、実稼働での使用に適しています。テクノロジープレビュー (TP) 機能は実験的な機能であり、本番環境での使用を目的としたものではありません。TP 機能の詳細は、Red Hat Customer Portal の Technology Preview のサポート範囲 を参照してください。

次の表は、どの OpenShift Serverless 機能が GA であり、どの機能が TP であるかに関する情報を提供します。

Expand
表1.1 一般提供およびテクノロジープレビュー機能トラッカー
機能1.321.331.34

Eventing トランスポートの暗号化

-

-

TP

トランスポート暗号化の提供

-

-

TP

OpenShift Serverless Logic

TP

GA

GA

ARM64 サポート

-

TP

TP

Custom Metrics Autoscaler Operator (KEDA)

-

TP

TP

kn event プラグイン

TP

TP

TP

Pipelines-as-code

TP

TP

TP

new-trigger-filters

TP

TP

TP

S2I ビルダーを使用した Go 関数

TP

TP

TP

単一ノード OpenShift での Serverless のインストールと使用

GA

GA

GA

Service Mesh を使用して Serverless でネットワークトラフィックを分離する

TP

TP

TP

Serverless Logic

TP

GA

GA

関数における liveness および readiness のオーバーライド

GA

GA

GA

kn func

GA

GA

GA

Quarkus 関数

GA

GA

GA

Node.js 関数

GA

GA

GA

TypeScript 関数

GA

GA

GA

Python 関数

TP

TP

TP

Service Mesh mTLS

GA

GA

GA

emptyDir ボリューム

GA

GA

GA

HTTPS リダイレクト

GA

GA

GA

Kafka ブローカー

GA

GA

GA

Kafka シンク

GA

GA

GA

Knative サービスの init コンテナーのサポート

GA

GA

GA

Knative サービスの PVC サポート

GA

GA

GA

namespace スコープのブローカー

TP

TP

TP

multi-container support

GA

GA

GA

1.3. 非推奨の機能と削除された機能

以前のリリースで一般提供 (GA) またはテクノロジープレビュー (TP) であった一部の機能は、非推奨または削除されました。非推奨の機能は依然として OpenShift Serverless に含まれており、引き続きサポートされますが、本製品の今後のリリースで削除されるため、新規デプロイメントでの使用は推奨されません。

OpenShift Serverless で非推奨となり、削除された主な機能の最新のリストについては、以下の表を参照してください。

Expand
表1.2 非推奨および削除機能のトラッカー
機能1.291.301.311.321.331.34

EventTypes v1beta1 API

-

-

-

非推奨

非推奨

非推奨

domain-mapping および domain-mapping-webhook デプロイメント

-

-

-

削除済み

削除済み

削除済み

Kourier が有効になっている場合の Serverless 対応の Red Hat OpenShift Service Mesh

-

-

-

非推奨

非推奨

非推奨

NamespacedKafka アノテーション

-

非推奨

非推奨

非推奨

非推奨

非推奨

enable-secret-informer-filtering アノテーション

非推奨

非推奨

非推奨

非推奨

非推奨

非推奨

Serving および Eventing v1alpha1 API

削除済み

削除済み

削除済み

削除済み

削除済み

削除済み

kn func emit (1.21 以降では kn func invoke)

削除済み

削除済み

削除済み

削除済み

削除済み

削除済み

KafkaBinding API

削除済み

削除済み

削除済み

削除済み

削除済み

削除済み

1.4. Red Hat OpenShift Serverless 1.34

OpenShift Serverless 1.34 が利用可能になりました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.4.1. 新機能

  • OpenShift Serverless は Knative Serving 1.14 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.14 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.14 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.14 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.14 に Knative を使用するようになりました。
  • kn func CLI プラグインが func 1.15 を使用するようになりました。
  • OpenShift Serverless Logic は、同じ namespace で OpenAPI の複数の設定をサポートするようになりました。
  • OpenShift Serverless Logic の管理コンソールが、テクノロジープレビュー (TP) 機能として利用できるようになり、開発プロセスの効率化を実現します。
  • OpenShift Serverless Logic 1.34 では、ワークフローが設定を通じてさまざまな OpenShift Container Platform クラスターにアクセスできるようにする新しい機能が導入されています。この機能により、ユーザーはワークフロー内で REST 呼び出しを定義して、複数のクラスターとシームレスに対話できるようになります。
  • OpenShift Serverless Logic では、Job Service liveness チェックが強化され、リーダーステータスの取得に必要な時間を抑えることができるようになりました。新しいシステムプロパティー kogito.jobs-service.management.leader-check.expiration-in-seconds が導入され、リーダーステータスチェックに許可される最大時間を設定できるようになりました。
  • 自動 EventType 登録は、テクノロジープレビュー (TP) として利用できるイベント機能です。ブローカーの Ingress とメモリー内チャネルで処理されたイベントに基づいて EventTypes オブジェクトを自動的に作成し、EventTypes の使用と作成のエクスペリエンスを向上させます。
  • 暗号化サービスは、テクノロジープレビュー (TP) 機能として利用できるようになりました。
  • スタートアッププローブがサポートされるようになり、コールドスタート時間が短縮され、アプリケーションの起動が高速化され、パフォーマンスが向上します。これらのプローブは、コンテナーの起動プロセスが遅いに特に役立ちます。
  • OpenShift Serverless Serving のトランスポート暗号化機能により、TLS を使用してセキュリティーで保護され暗号化された HTTPS 接続を介してデータを転送できます。これは現在、テクノロジープレビュー (TP) 機能として利用できます。
  • S2I ビルダーを使用する Go 関数が、Linux および Mac 開発者向けのテクノロジープレビュー (TP) 機能として利用できるようになりました。これにより、開発者はこれらのプラットフォームで Go 関数を実装および構築できます。
  • Knative Serving のマルチコンテナーサポートにより、単一の Knative サービスを使用してマルチコンテナー Pod をデプロイできます。また、複数のコンテナーの readinessliveness のプローブ値もサポートします。
  • Knative Kafka トリガーの自動スケーリングが、テクノロジープレビュー (TP) として KEDA (Kubernetes Event-Driven Autoscaling) によって強化されました。CMA/KEDA を使用した自動スケーリングは、Kafka トリガーと KafkaSource オブジェクトのリソース割り当てを最適化することでパフォーマンスをさらに向上させ、イベント駆動型ワークロードでのスケーラビリティーを向上します。
  • Knative Eventing は、テクノロジープレビュー (TP) 機能として、転送中のデータの暗号化 (Eventing TLS) のサポートを提供するようになりました。Knative Eventing コンポーネントを設定して、HTTPS アドレスを公開したり、ユーザー提供の CA 信頼バンドルをクライアントに追加したりできます。

1.4.2. 修正された問題

  • 以前は、KafkaSource.spec.net.tls.key の読み込みに失敗しても、KafkaSource オブジェクトが誤って Ready ステータスのままになっていました。この問題は解決されています。PKCS #1 (Public-Key Cryptography Standards#1) 形式のサポートされていない TLS 証明書を使用して Kafka BrokerKafkaChannelKafkaSource、または KafkaSink オブジェクトを作成するとエラーが報告されるようになり、設定の問題が適切に処理され、通知されるようになりました。
  • Eventing コントローラーが間違ったオブジェクトタイプ (Namespace) を誤って再キューに入れたため、"resource not found" というログエラーが発生しました。この問題は解決され、コントローラーがオブジェクトの再キューイングを処理するようになり、ロギングとリソース管理の正確性が向上されるようになります。

1.5. Red Hat OpenShift Serverless 1.33.2

OpenShift Serverless 1.33.2 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する修正された問題は、次の注記に含まれています。

1.5.1. 修正された問題

  • 以前は、ユーザー namespace で KnativeServingKnativeEventing などの Knative インストールリソースを作成すると、OpenShift Serverless Operator で無限調整ループが発生していました。この問題は、knative-serving または knative-eventing 以外の namespace で Knative インストールリソースが作成されないようにするアドミッション Webhook を再導入することで解決されました。
  • 以前は、インストール後のバッチジョブは一定期間後に削除され、特権サービスアカウントはバインドされていない状態のままでした。これにより、コンプライアンスシステムが問題を警告しました。この問題は、完了したジョブを保持し、サービスアカウントがバインドされたままになることで解決されました。

1.6. Red Hat OpenShift Serverless 1.33

OpenShift Serverless 1.33 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.6.1. 新機能

  • OpenShift Serverless は Knative Serving 1.12 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.12 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.12 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.12 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.12 に Knative を使用するようになりました。
  • kn func CLI プラグインが func 1.14 を使用するようになりました。
  • OpenShift Serverless Logic が一般提供 (GA) されました。このリリースには、OpenShift Serverless Logic の概要、ワークフローの作成、実行、デプロイの手順、OpenShift Serverless Logic Operator のインストールとアンインストールのガイドラインが含まれています。さらに、OpenAPI サービスとエンドポイントを設定する手順と、サービスのトラブルシューティングの手法も含まれています。詳細は、OpenShift Serverless Logic overview を参照してください。

    追加のドキュメントを参照することもできます。詳細は、Serverless Logic のドキュメント を参照してください。

  • ARM64 上の OpenShift Serverless がテクノロジープレビューとして利用可能になりました。
  • NamespacedKafka アノテーションは非推奨になりました。代わりに、データプレーン分離のない標準の Kafka ブローカーを使用します。
  • 自動 EventType の自動作成を有効にすると、クラスター内で利用可能なイベントを簡単に検出できるようになります。この機能は開発者プレビューとして利用できます。
  • OpenShift 開発者コンソールの開発者ビューの Observe タブ内で、Knative Eventing モニタリングダッシュボードを直接使用できるようになりました。
  • Custom Metrics Autoscaler Operator を使用して、KafkaSource オブジェクトが定義する Apache Kafka ソースの Knative Eventing ソースを自動スケーリングできるようになりました。この機能はテクノロジープレビュー機能として利用可能で、Knative Eventing 内の Kafka ベースのイベントソースに対して強化されたスケーラビリティーと効率性を提供します。
  • Kafka 実装を使用して Knative Broker を作成するときに、内部の Kafka トピックプロパティーをカスタマイズできるようになりました。これにより効率が向上し、管理が簡素化されます。
  • 新しいトリガーフィルター機能がテクノロジープレビューとして利用できるようになりました。これらのフィルターはデフォルトで有効になっており、ユーザーは一連のフィルター式を指定できます。各式は各イベントに対して true または false に評価されます。

1.6.2. 既知の問題

  • マウントポイントの権限が異なるため、クラスタービルドでの直接アップロードは IBM zSystems (s390x) および IBM Power (ppc64le) では機能しません。
  • Podman バージョン 4.6 を使用した関数のビルドとデプロイは invalid pull policy "1" エラーで失敗します。

    この問題を回避するには、Podman バージョン 4.5 を使用します。

1.7. Red Hat OpenShift Serverless 1.32.2

OpenShift Serverless 1.32.2 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する修正された問題は、次の注記に含まれています。

1.7.1. 修正された問題

  • 以前は、インストール後のバッチジョブは一定期間後に削除され、特権サービスアカウントはバインドされていない状態のままでした。これにより、コンプライアンスシステムが問題を警告しました。この問題は、完了したジョブを保持し、サービスアカウントがバインドされたままになることで解決されました。

1.8. Red Hat OpenShift Serverless 1.32

OpenShift Serverless 1.32 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.8.1. 新機能

  • OpenShift Serverless は Knative Serving 1.11 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.11 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.11 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.11 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.11 に Knative を使用するようになりました。
  • kn func CLI プラグインが func 1.13 を使用するようになりました。
  • テクノロジープレビュー (TP) 機能として利用可能な Serverless Logic が更新されました。

    使用方法は、Serverless Logic のドキュメント を参照してください。

  • user コンテナーと queue-proxy コンテナーの OpenShift Serverless Functions の readiness と liveness プローブ設定を指定できます。
  • OpenShift Serverless Functions は、OpenShift Pipelines バージョン 1.10 から 1.14 (最新) までをサポートするようになりました。OpenShift Pipelines の古いバージョンは、OpenShift Serverless Functions と互換性がなくなりました。
  • Pipelines as Code の使用を含むクラスター内関数の構築は、OpenShift Data Foundation ストレージ上の IBM zSystems (s390x) および IBM Power (ppc64le) でのみサポートされるようになりました。
  • func subscribe コマンドを使用して、関数を一連のイベントにサブスクライブできるようになりました。これにより、関数がフィルターによって定義された CloudEvent オブジェクトにリンクされ、自動応答が可能になります。
  • 内部トラフィックの Knative Serving TLS 暗号化機能は非推奨になりました。それはテクニカルプレビュー機能でした。internal-encryption 設定フラグを使用した機能は利用できなくなり、今後のリリースで新しい設定フラグに置き換えられます。
  • シークレットのフィルタリングは、OpenShift Serverless Operator 側でデフォルトで有効化されています。環境変数 ENABLE_SECRET_INFORMER_FILTERING_BY_CERT_UID=true は、デフォルトで net-istio and net-kourier コントローラー Pod に追加されます。
  • knative-serving namespace の domain-mapping および domain-mapping-webhook デプロイメント機能が削除されました。これらは現在、Serving Webhook および Serving Controller と統合されています。
  • KnativeServing カスタムリソース (CR) で spec.config.domain フィールドを設定すると、デフォルトの外部ドメインは、knative-serving namespace の config-domain config map に自動的に入力されなくなります。ここで、正確なドメイン設定を確実にするために、config-domain config map を手動で設定する必要があります。
  • net-kourier デプロイメントに gRPC ヘルスプローブを使用できるようになりました。Kourier コントローラーは、以前の exec コマンドとカスタムコマンドではなく、readiness と liveness の両方に標準の Kubernetes gRPC ヘルスプローブを使用するようになりました。より信頼性の高いプローブ応答を確保するために、timeoutSeconds 値が 100 ミリ秒から 1 秒に調整されました。
  • 新しいトリガーフィルター機能がテクノロジープレビューとして利用できるようになりました。新しいトリガーフィルターがデフォルトで有効になりました。これにより、ユーザーはフィルター式のセットを指定できます。各式は、イベントごとに true または false に評価されます。
  • Knative Eventing は、開発者プレビューとして、転送中のデータの暗号化 (Eventing TLS) のサポートを提供するようになりました。Knative Eventing コンポーネントを設定して、HTTPS アドレスを公開したり、ユーザー提供の CA 信頼バンドルをクライアントに追加したりできます。
  • OpenShift Serverless は、システムコンポーネントのカスタム OpenShift CA バンドル注入をサポートするようになりました。詳細は、カスタム PKI の設定 を参照してください。
  • Custom Metrics Autoscaler Operator を使用して、Apache Kafka ソースの Knative Eventing ソースを自動スケーリングできるようになりました。この機能は開発者プレビューとして利用可能で、Knative Eventing 内の Kafka ベースのイベントソースのスケーラビリティーと効率性が向上します。
  • OpenShift 開発者コンソールの開発者ビューの Observe タブ内で、Knative Eventing モニタリングダッシュボードを直接使用できるようになりました。
  • 同梱の Knative の EventTypes v1beta1 のサポートは、OpenShift Serverless 1.32 では非推奨になりました。OpenShift Serverless 1.32 では、Knative CLI は EventType v1beta2 API を使用してを促進します。以前のリリースでは、kn CLI は EventType API v1beta1 と下位互換性がなく、kn eventtypes サブコマンドグループに制限されています。したがって、最高のユーザーエクスペリエンスを得るには、一致する kn バージョンを使用することが推奨されます。

1.8.2. 修正された問題

  • 3scale-kourier-gateways のデフォルトの CPU 制限が 500m から 1s に増加されました。500 を超える Knative Service インスタンスが作成されると、CPU リソースがなくなり、3scale-kourier-gateways Pod で readiness および liveness プローブの失敗が発生する可能性があります。この調整は、上記の障害を減らし、高負荷時でもスムーズに動作させることを目的としています。

1.8.3. 既知の問題

  • マウントポイントの権限が異なるため、クラスタービルドでの直接アップロードは IBM zSystems (s390x) および IBM Power (ppc64le) では機能しません。
  • Podman バージョン 4.6 を使用した関数のビルドとデプロイは invalid pull policy "1" エラーで失敗します。

    この問題を回避するには、Podman バージョン 4.5 を使用します。

1.9. Red Hat OpenShift Serverless 1.31

OpenShift Serverless 1.31 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.9.1. 新機能

  • OpenShift Serverless は Knative Serving 1.10 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.10 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.10 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.10 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.10 に Knative を使用するようになりました。
  • kn func CLI プラグインは func 1.11 を使用するようになりました。
  • Service Mesh を使用した OpenShift Serverless マルチテナントがテクノロジープレビュー (TP) 機能として利用できるようになりました。
  • テクノロジープレビュー (TP) 機能として利用可能な Serverless Logic が更新されました。

    使用方法は、Serverless Logic のドキュメント を参照してください。

  • OpenShift Serverless を単一ノード OpenShift にインストールして使用できるようになりました。
  • 既存の PersistentVolume オブジェクトの永続ボリューム要求 (PVC) を設定して、Serverless 機能で使用できるようになりました。
  • Ingress に Kourier を指定し、DomainMapping を使用する場合、OpenShift Route の TLS はパススルーに設定され、TLS は Kourier Gateway によって処理されます。Serverless 1.31 以降では、Kourier Gateway 側で有効な暗号スイートを指定できるようになりました。
  • Kourier が有効な場合の Red Hat OpenShift Service Mesh と Serverless の統合は非推奨になりました。Service Mesh の統合には net-kourier ではなく net-istio を使用してください。

    詳細は、「Red Hat OpenShift Service Mesh と Serverless の統合」セクションを参照してください。

  • PodDistruptionBudget オブジェクトと HorizontalPodAutoscaler オブジェクトが 3scale-kourier-gateway デプロイメント用に追加されました。

    • PodDistruptionBudget は、デプロイメント内の Pod の最小可用性要件を定義するために使用されます。
    • HorizontalPodAutoscaler は、デプロイメント内の Pod の数を需要またはカスタムメトリクスに基づいて自動的にスケーリングするために使用されます。
  • Knative ブローカーと Apache Kafka のチャネルによって使用される Apache Kafka トピック名のパターンを変更できるようになりました。
  • DomainMapping v1alpha1 カスタムリソース定義 (CRD) は非推奨になりました。代わりに v1beta1 CRD を使用してください。
  • テクノロジープレビュー (TP) 機能であった NamespacedKafka アノテーションは現在非推奨になり、データプレーン分離のない標準の Kafka ブローカーが優先されます。

1.9.2. 修正された問題

  • 以前は、完全な Red Hat OpenShift Service Mesh 統合と STRICT ピア認証を使用して Knative Eventing をデプロイする場合、PingSource アダプターのメトリクスは利用できませんでした。

    この問題は修正され、PingSource アダプターのメトリクスは、別の jobservice ラベルの値を使用して収集されるようになりました。以前の値は pingsource-mt-adapter でしたが、新しい値は pingsource-mt-adapter-sm-service です。

1.10. Red Hat OpenShift Serverless 1.30.2

OpenShift Serverless 1.30.2 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

OpenShift Serverless addresses Common Vulnerabilities and Exposures (CVEs) の本リリースには、バグ修正が含まれ、OpenShift Container Platform 4.11 以降でサポートされます。特に、この更新プログラムは、Serving、Eventing Webhook、および RBAC プロキシーコンテナーで HTTP/2 トランスポートを無効にすることで、CVE-2023-44487 - HTTP/2 Rapid Stream Reset に対処します。

1.11. Red Hat OpenShift Serverless 1.30.1

OpenShift Serverless 1.30.1 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

OpenShift Serverless addresses Common Vulnerabilities and Exposures (CVEs) の本リリースには、バグ修正が含まれ、OpenShift Container Platform 4.11 以降でサポートされます。

1.12. Red Hat OpenShift Serverless 1.30

OpenShift Serverless 1.30 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

重要

OpenShift Container Platform 4.13 は Red Hat Enterprise Linux (RHEL) 9.2 をベースにしています。RHEL 9.2 は、連邦情報処理標準 (FIPS) 検証に提出されていません。Red Hat は特定の期限を約束することはできませんが、RHEL 9.0 および RHEL 9.2 モジュール、さらには RHEL 9.x のマイナーリリースでも FIPS 検証を取得する予定です。更新に関する情報は、ナレッジベースの記事 Compliance Activities and Government Standards で入手できます。

1.12.1. 新機能

  • OpenShift Serverless は Knative Serving 1.9 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.9 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.9 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.9 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.9 に Knative を使用するようになりました。
  • kn func CLI プラグインは func 1.10.1 を使用するようになりました。
  • OpenShift Serverless は、HyperShift でホストされるクラスター上で実行されるようになりました。
  • OpenShift Serverless は単一ノード OpenShift 上で実行されるようになりました。
  • OpenShift Serverless に関する開発者エクスペリエンスは、Visual Studio Code (VSCode) の OpenShift IDE 拡張機能である OpenShift Toolkit を通じて利用できるようになりました。拡張機能は、VSCode Extension タブおよび VSCode Marketplace からインストールできます。Visual Studio Code OpenShift Toolkit 拡張機能については、Marketplace ページ を参照してください。
  • OpenShift Serverless Functions は、Red Hat OpenShift Pipelines バージョン 1.10 および 1.11 をサポートするようになりました。Red Hat OpenShift Pipelines の古いバージョンは、OpenShift Serverless Functions と互換性がなくなりました。
  • Serverless Logic は、テクノロジープレビュー (TP) 機能として利用できるようになりました。

    詳細は、Serverless Logic のドキュメント を参照してください。

  • OpenShift Serverless 1.30.0 以降、s2i ビルダーを使用する IBM zSystems で次のランタイム環境がサポートされます。

    • NodeJS
    • Python
    • TypeScript
    • Quarkus
  • Red Hat OpenShift Service Mesh とのイベント統合が、テクノロジープレビュー (TP) 機能として利用できるようになりました。

    このインテグレーションには次のものが含まれます。

    • PingSource
    • ApiServerSource
    • Knative Source for Apache Kafka
    • Knative Broker for Apache Kafka
    • Knative Sink for Apache Kafka
    • ContainerSource
    • SinkBinding
    • InMemoryChannel
    • KafkaChannel
    • Channel-based Knative Broker
  • OpenShift Serverless Functions の Pipelines-as-code がテクノロジープレビュー機能として利用可能になりました。
  • net-kourier のバースト値と 1 秒あたりのクエリー (QPS) の値を設定できるようになりました。
  • OpenShift Serverless Functions ユーザーは、個々の Quarkus 関数の func.yaml ファイル内の readiness プローブ値と liveness プローブ値をオーバーライドできるようになりました。

    Quarkus、TypeScript、および Node.js 関数のガイダンスについては、「関数開発リファレンスガイド」を参照してください。

  • OpenShift Serverless 1.30.0 以降、Kourier コントローラーとゲートウェイのマニフェストには、デフォルトで次の制限とリクエストがあります。

    • リクエスト:

      • cpu: 200m
      • memory: 200Mi
    • 制限:

      • cpu: 500m
      • memory: 500Mi

        OpenShift Serverless ドキュメントの「Knative Serving システムのデプロイメント設定のオーバーライド」セクションを参照してください。

  • テクノロジープレビュー (TP) 機能であった NamespacedKafka アノテーションは現在非推奨になり、データプレーン分離のない標準の Kafka ブローカーが優先されます。

1.12.2. 修正された問題

  • 以前では、3scale-jourier-gateway Pod が毎日数千の net-jourier-controller DNS クエリーを送信していました。NXDOMAIN 応答ごとに新しいクエリーが送信されていました。これは、正しい DNS クエリーが生成されるまで続いていました。

    このクエリーには net-kourier-controller.knative-serving-ingress.svc.<cluster domain>. 完全修飾ドメイン名 (FQDN) が含まれるようになり、問題が解決されています。

1.12.3. 既知の問題

  • Podman バージョン 4.6 を使用した関数のビルドとデプロイは invalid pull policy "1" エラーで失敗します。

    この問題を回避するには、Podman バージョン 4.5 を使用します。

  • Pipelines-as-code の使用を含むクラスター上での関数の構築は、IBM zSystems および IBM Power ではサポートされていません。
  • Buildpack ビルダーは、IBM zSystems および IBM Power ではサポートされていません。

1.13. Red Hat OpenShift Serverless 1.29.1

OpenShift Serverless 1.29.1 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

OpenShift Serverless addresses Common Vulnerabilities and Exposures (CVEs) の本リリースには、バグ修正が含まれ、OpenShift Container Platform 4.10 以降でサポートされます。

1.13.1. 修正された問題

  • 以前は、liveness プローブエラーが原因で net-kourier-controller が起動に失敗することがありました。これは修正されています。

1.14. Red Hat OpenShift Serverless 1.29

OpenShift Serverless 1.29 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

重要

OpenShift Container Platform 4.13 は Red Hat Enterprise Linux (RHEL) 9.2 をベースにしています。RHEL 9.2 はまだ連邦情報処理標準 (FIPS) 検証に提出されていません。Red Hat は特定の期限を約束することはできませんが、RHEL 9.0 および RHEL 9.2 モジュール、さらには RHEL 9.x のマイナーリリースでも FIPS 検証を取得する予定です。更新に関する情報は、ナレッジベースの記事 Compliance Activities and Government Standards で入手できます。

1.14.1. 新機能

  • OpenShift Serverless は Knative Serving 1.8 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.8 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.8 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.8 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.8 に Knative を使用するようになりました。
  • kn func CLI プラグインは func 1.10 を使用するようになりました。
  • OpenShift Serverless 1.29 以降、次のようなさまざまな製品バージョンが利用できます。

    • 最新リリースは stable チャネルから入手できます。
    • 最新よりも古いリリースは、バージョンベースのチャネルを通じて入手できます。

      これを使用するには、サブスクリプションオブジェクト YAML ファイルのチャネルパラメーターを stable 版から対応するバージョンベースのチャネル (stable-1.29 など) に更新します。

      この変更により、最新リリースだけでなく、メンテナンス段階のリリースの更新も受け取れるようになります。

      さらに、Knative (kn) CLI のバージョンをロックできます。詳細は、「Knative CLI のインストール」セクションを参照してください。

  • OpenShift Container Platform Pipelines を使用して、開発者コンソールから OpenShift Serverless 関数を作成できるようになりました。
  • Knative Serving のマルチコンテナーのサポートが一般提供 (GA) になりました。この機能を使用すると、単一の Knative サービスを使用してマルチコンテナー Pod をデプロイできます。
  • OpenShift Serverless 関数は、個々の Node.js および TypeScript 関数の func.yaml ファイル内の readiness プローブ値と liveness プローブ値をオーバーライドできるようになりました。
  • GitHub リポジトリー内のソースコードが変更されたときに、関数がクラスターに自動的に再デプロイされるように設定できるようになりました。これにより、よりシームレスな CI/CD 統合が可能になります。
  • Service Mesh とのイベント統合が開発者プレビュー機能として利用できるようになりました。統合には、PingSourceApiServerSource、Knative Source for Apache Kafka、Knative Broker for Apache Kafka、Knative Sink for Apache Kafka、ContainerSource、および SinkBinding が含まれます。
  • このリリースには、アップグレードされた OpenShift Serverless Logic の開発者プレビューが含まれています。
  • Knative Operator Serving and Eventings CRD の API バージョン v1alpha1 は削除されました。代わりに v1beta1 バージョンを使用する必要があります。Serverless Operator のアップグレード時に CRD が自動的に更新されるため、これは既存のインストールには影響しません。

1.14.2. 既知の問題

  • DomainMapping で指定されたシークレットを更新する場合は、シークレットを更新するだけでは調整ループはトリガーされません。調整ループをトリガーするには、シークレットの名前を変更するか、Knative Ingress リソースを削除する必要があります。
  • Webhook Horizontal Pod Autoscaler (HPA) 設定は、OpenShift Serverless Operator によってオーバーライドされます。その結果、より高いワークロードに対応することができなくなります。この問題を回避するには、ワークロードに対応する初期レプリカ値を手動で設定します。
  • Red Hat OpenShift Serverless 1.27 より前に作成された KafkaSource リソースは、削除時にスタックします。この問題を回避するには、KafkaSource の削除を開始した後、リソースからファイナライザーを削除します。
  • liveness プローブエラーが原因で net-kourier-controller を起動できない可能性があります。ナレッジベースのソリューションを使用して問題を回避できます。

1.15. Red Hat OpenShift Serverless 1.28

OpenShift Serverless 1.28 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

重要

OpenShift Container Platform 4.13 は Red Hat Enterprise Linux (RHEL) 9.2 をベースにしています。RHEL 9.2 はまだ連邦情報処理標準 (FIPS) 検証に提出されていません。Red Hat は特定の期限を約束することはできませんが、RHEL 9.0 および RHEL 9.2 モジュール、さらには RHEL 9.x のマイナーリリースでも FIPS 検証を取得する予定です。更新に関する情報は、ナレッジベースの記事 Compliance Activities and Government Standards で入手できます。

1.15.1. 新機能

  • OpenShift Serverless は Knative Serving 1.7 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.7 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.7 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.7 を使用するようになりました。
  • OpenShift Serverless は、Apache Kafka 1.7 に Knative ブローカー実装を使用するようになりました。
  • kn func CLI プラグインは func 1.9.1 バージョンを使用するようになりました。
  • OpenShift Serverless Functions の Node.js および TypeScript ランタイムが一般提供 (GA) になりました。
  • OpenShift Serverless Functions の Python ランタイムがテクノロジープレビューとして利用可能になりました。
  • Knative Serving のマルチコンテナーサポートがテクノロジープレビューとして利用可能になりました。この機能を使用すると、単一の Knative サービスを使用してマルチコンテナー Pod をデプロイできます。
  • OpenShift Serverless 1.29 以降では、Knative Eventing の以下のコンポーネントが 2 つの Pod から 1 つにスケールダウンされます。

    • imc-controller
    • imc-dispatcher
    • mt-broker-controller
    • mt-broker-filter
    • mt-broker-ingress
  • Serving CR の serverless.openshift.io/enable-secret-informer-filtering アノテーションが非推奨になりました。アノテーションは Istio に対してのみ有効ですが、Kourier では有効ではありません。

    OpenShift Serverless 1.28 では、OpenShift Serverless Operator は net-istionet-kourier の両方の環境変数 ENABLE_SECRET_INFORMER_FILTERING_BY_CERT_UID を挿入できます。

    シークレットフィルタリングを有効にする場合は、すべてのシークレットに networking.internal.knative.dev/certificate-uid: "<id>" というラベルを付ける必要があります。そうしないと、Knative Serving がシークレットを検出しないため、障害が発生します。新規および既存のシークレットの両方にラベルを付ける必要があります。

    次の OpenShift Serverless リリースのいずれかでは、シークレットフィルタリングがデフォルトで有効になります。障害が発生しないように、事前にシークレットにラベルを付けます。

1.15.2. 既知の問題

  • 現在、Python のランタイムは、IBM Power、IBM zSystems、および IBM® LinuxONE の OpenShift Serverless Functions ではサポートされません。

    Node.js、TypeScript、および Quarkus 関数は、これらのアーキテクチャーでサポートされます。

  • Windows プラットフォームでは、app.sh ファイルのパーミッションが原因で、Source-to-Image ビルダーを使用して Python 関数をローカルで構築、実行、またはデプロイできません。

    この問題を回避するには、Windows Subsystem for Linux を使用します。

  • Red Hat OpenShift Serverless 1.27 より前に作成された KafkaSource リソースは、削除時にスタックします。この問題を回避するには、KafkaSource の削除を開始した後、リソースからファイナライザーを削除します。

1.16. Red Hat OpenShift Serverless 1.27

OpenShift Serverless 1.27 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

重要

OpenShift Serverless 1.26 は、OpenShift Container Platform 4.12 で完全にサポートされている最も古いリリースです。OpenShift Serverless 1.25 以前は、OpenShift Container Platform 4.12 にデプロイされません。

このため、OpenShift Container Platform をバージョン 4.12 にアップグレードする前に、OpenShift Serverless をバージョン 1.26 または 1.27 にアップグレードしてください。

1.16.1. 新機能

  • OpenShift Serverless は Knative Serving 1.6 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.6 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.6 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.6 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 1.6 を使用するようになりました。
  • kn func CLI プラグインは func 1.8.1 を使用するようになりました。
  • namespace スコープのブローカーがテクノロジープレビューとして利用できるようになりました。このブローカーは、たとえば、ロールベースのアクセス制御 (RBAC) ポリシーを実装するために使用できます。
  • KafkaSink は、 デフォルトで CloudEvent バイナリーコンテンツモードを使用するようになりました。バイナリーコンテンツモードは、CloudEvent の代わりにボディーのヘッダーを使用するため、構造化モードよりも効率的です。たとえば、HTTP プロトコルの場合、HTTP ヘッダーを使用します。
  • OpenShift Container Platform 4.10 以降で OpenShift Route を使用して、外部トラフィックに HTTP/2 プロトコルを介して gRPC フレームワークを使用できるようになりました。これにより、クライアントとサーバー間の通信の効率と速度が向上します。
  • Knative Operator Serving および Eventings CRD の API バージョン v1alpha1 は、1.27 で非推奨になりました。これは今後のバージョンで削除される予定です。Red Hat は、代わりに v1beta1 バージョンを使用することを強く推奨しています。Serverless Operator のアップグレード時に CRD が自動的に更新されるため、これは既存のインストールには影響しません。
  • 配信タイムアウト機能がデフォルトで有効になりました。これを使用すると、送信される HTTP リクエストごとにタイムアウトを指定できます。この機能は、引き続きテクノロジープレビューです。

1.16.2. 修正された問題

  • 以前は、Knative サービスが Ready 状態にならないことがあり、ロードバランサーの準備が整うのを待っていると報告されていました。この問題は修正されました。

1.16.3. 既知の問題

  • OpenShift Serverless を Red Hat OpenShift Service Mesh と統合すると、クラスターに存在するシークレットが多すぎると、起動時に net-kourier Pod がメモリー不足になります。
  • namespace スコープブローカーは、namespace スコープブローカーを削除した後でも、ClusterRoleBindings をユーザーの namespace に残す場合があります。

    これが発生した場合は、ユーザー namespace で rbac-proxy-reviews-prom-rb-knative-kafka-broker-data-plane-{{.Namespace}}という名前の ClusterRoleBinding を削除します。

1.17. Red Hat OpenShift Serverless 1.26

OpenShift Serverless 1.26 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.17.1. 新機能

  • Quarkus を使用した OpenShift Serverless Functions が GA になりました。
  • OpenShift Serverless は Knative Serving 1.5 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.5 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.5 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.5 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 1.5 を使用するようになりました。
  • OpenShift Serverless は Knative Operator 1.3 を使用するようになりました。
  • kn func CLI プラグインは func 1.8.1 を使用するようになりました。
  • 永続ボリューム要求 (PVC) が GA になりました。PVC は、Knative サービスに永続的なデータストレージを提供します。
  • 新しいトリガーフィルター機能が開発者プレビューとして利用できるようになりました。これにより、ユーザーはフィルター式のセットを指定できます。各式は、イベントごとに true または false に評価されます。

    新しいトリガーフィルターを有効にするには、Operator config map の KnativeEventing タイプのセクションに new-trigger-filters: enabled エントリーを追加します。

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeEventing
    ...
    ...
    spec:
      config:
        features:
          new-trigger-filters: enabled
    ...
    Copy to Clipboard Toggle word wrap
  • Knative Operator 1.3 は、operator.knative.dev の更新された v1beta1 バージョンの API を追加します。

    KnativeServing および KnativeEventing カスタムリソース config map で v1alpha1 から v1beta1 に更新するには、apiVersion キーを編集します。

    KnativeServing カスタムリソース config map の例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    ...
    Copy to Clipboard Toggle word wrap

    KnativeEventing カスタムリソース config map の例

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeEventing
    ...
    Copy to Clipboard Toggle word wrap

1.17.2. 修正された問題

  • 以前、連邦情報処理標準 (FIPS) モードは、Kafka ブローカー、Kafka ソース、および Kafka シンクに対して無効になっていました。これは修正され、FIPS モードが利用できるようになりました。

1.18. Red Hat OpenShift Serverless 1.25.0

OpenShift Serverless 1.25.0 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.18.1. 新機能

  • OpenShift Serverless は Knative Serving 1.4 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.4 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.4 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.4 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 1.4 を使用するようになりました。
  • kn func CLI プラグインは func 1.7.0 を使用するようになりました。
  • 関数を作成およびデプロイするための統合開発環境 (IDE) プラグインが、Visual Studio Code および IntelliJ で利用できるようになりました。
  • Knative Kafka ブローカーが一般提供されるようになりました。Knative Kafka ブローカーは、Apache Kafka を直接ターゲットとする、Knative ブローカー API の高性能な実装です。

    MT-Channel-Broker ではなく、Knative Kafka ブローカーを使用することを推奨します。

  • Knative Kafka シンクが一般提供されるようになりました。KafkaSinkCloudEvent を取得し、Apache Kafka トピックに送信します。イベントは、構造化コンテンツモードまたはバイナリーコンテンツモードのいずれかで指定できます。
  • 内部トラフィックの TLS の有効化がテクノロジープレビューとして利用可能になりました。

1.18.2. 修正された問題

  • 以前のバージョンでは、Knative Serving には liveness プローブの失敗後にコンテナーが再起動された場合に readiness プローブが失敗する問題がありました。この問題は修正されました。

1.18.3. 既知の問題

  • 連邦情報処理標準 (FIPS) モードは、Kafka ブローカー、Kafka ソース、および Kafka シンクに対して無効になっています。
  • SinkBinding オブジェクトは、サービスのカスタムリビジョン名をサポートしません。
  • Knative Serving Controller Pod は、クラスター内のシークレットを監視するための新しいインフォーマーを追加します。インフォーマーはシークレットをキャッシュに含めるため、コントローラー Pod のメモリー消費量が増加します。

    Pod のメモリーが不足している場合は、デプロイのメモリー制限を増やすことで問題を回避できます。

1.19. Red Hat OpenShift Serverless 1.24.0

OpenShift Serverless 1.24.0 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.19.1. 新機能

  • OpenShift Serverless は Knative Serving 1.3 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.3 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.3 を使用するようになりました。
  • OpenShift Serverless は、Knative (kn) CLI 1.3 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 1.3 を使用するようになりました。
  • kn func CLI プラグインが func 0.24 を使用するようになりました。
  • Knative サービスの初期化コンテナーのサポートが一般提供 (GA) になりました。
  • OpenShift Serverless ロジックが開発者プレビューとして利用できるようになりました。これにより、Serverless アプリケーションを管理するための宣言型ワークフローモデルを定義できます。
  • OpenShift Container Platform では、OpenShift Serverless で Cost Management サービスを使用できるようになりました。

1.19.2. 修正された問題

  • OpenShift Serverless を Red Hat OpenShift Service Mesh と統合すると、クラスターに存在するシークレットが多すぎると、起動時に net-istio-controller Pod がメモリー不足になります。

    シークレットフィルタリングを有効にできるようになりました。これにより、net-istio-controller は、networking.internal.knative.dev/certificate-uid ラベルを持つシークレットのみを考慮するようになり、必要なメモリー量が削減されます。

  • OpenShift Serverless Functions テクノロジープレビューは、デフォルトで Cloud Native Buildpacks を使用してコンテナーイメージをビルドするようになりました。

1.19.3. 既知の問題

  • 連邦情報処理標準 (FIPS) モードは、Kafka ブローカー、Kafka ソース、および Kafka シンクに対して無効になっています。
  • OpenShift Serverless 1.23 では、KafkaBindings および kafka -binding Webhook のサポートが削除されました。ただし、既存の kafkabindings.webhook.kafka.sources.knative.dev MutatingWebhookConfiguration が残り、もはや存在しない kafka-source-webhook サービスを指している可能性があります。

    クラスター上の KafkaBindings の特定の仕様では、kafkabindings.webhook.kafka.sources.knative.dev MutatingWebhookConfiguration が、Webhook を介して、デプロイメント、Knative Services、ジョブなどのさまざまなリソースに作成および更新イベントを渡すように設定されている場合がありますが、そのように設定されていると失敗します。

    この問題を回避するには、OpenShift Serverless 1.23 にアップグレードした後、クラスターから kafkabindings.webhook.kafka.sources.knative.dev MutatingWebhookConfiguration を手動で削除します。

    $ oc delete mutatingwebhookconfiguration kafkabindings.webhook.kafka.sources.knative.dev
    Copy to Clipboard Toggle word wrap

1.20. Red Hat OpenShift Serverless 1.23.0

OpenShift Serverless 1.23.0 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.20.1. 新機能

  • OpenShift Serverless は Knative Serving 1.2 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.2 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.2 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.2 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 1.2 を使用するようになりました。
  • kn func CLI プラグインが func 0.24 を使用するようになりました。
  • Kafka ブローカーで kafka.eventing.knative.dev/external.topic アノテーションを使用できるようになりました。このアノテーションを使用すると、ブローカー自体の内部トピックを作成する代わりに、既存の外部管理トピックを使用できます。
  • kafka-ch-controller および kafka-webhook Kafka コンポーネントが存在しなくなりました。これらのコンポーネントは kafka-webhook-eventing コンポーネントに置き換えられました。
  • OpenShift Serverless Functions テクノロジープレビューは、デフォルトで Source-to-Image (S2I) を使用してコンテナーイメージをビルドするようになりました。

1.20.2. 既知の問題

  • 連邦情報処理標準 (FIPS) モードは、Kafka ブローカー、Kafka ソース、および Kafka シンクに対して無効になっています。
  • Kafka ブローカーを含む namespace を削除する場合は、ブローカーの auth.secret.ref.name シークレットがブローカーの前に削除されると、namespace ファイナライザーが削除されない可能性があります。
  • 多数の Knative サービスで OpenShift Serverless を実行すると、Knative アクティベーター Pod がデフォルトのメモリー制限である 600MB 近くで実行される可能性があります。これらの Pod は、メモリー消費がこの制限に達すると再起動される可能性があります。アクティベーターデプロイメントの要求と制限は、KnativeServing カスタムリソースを変更することで設定できます。

    apiVersion: operator.knative.dev/v1beta1
    kind: KnativeServing
    metadata:
      name: knative-serving
      namespace: knative-serving
    spec:
      deployments:
      - name: activator
        resources:
        - container: activator
          requests:
            cpu: 300m
            memory: 60Mi
          limits:
            cpu: 1000m
            memory: 1000Mi
    Copy to Clipboard Toggle word wrap
  • 関数のローカルビルド戦略として Cloud Native Buildpack を使用している場合、kn func は podman を自動的に起動したり、リモートデーモンへの SSH トンネルを使用したりすることはできません。これらの問題は、関数をデプロイする前に、ローカル開発コンピューターで Docker または podman デーモンをすでに実行していると回避できます。
  • 現時点で、クラスター上の関数ビルドが Quarkus および Golang ランタイムで失敗します。これらは Node、Typescript、Python、および Springboot ランタイムで正常に機能します。

1.21. Red Hat OpenShift Serverless 1.22.0

OpenShift Serverless 1.22.0 が公開されました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.21.1. 新機能

  • OpenShift Serverless は Knative Serving 1.1 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.1 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.1 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 1.1 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka1.1 を使用するようになりました。
  • kn func CLI プラグインは func 0.23 を使用するようになりました。
  • Knative サービスの初期コンテナーサポートがテクノロジープレビューとして利用できるようになりました。
  • Knative サービスの永続ボリュームクレーム (PVC) サポートが、テクノロジープレビューとして利用できるようになりました。
  • knative-servingknative-serving-ingressknative-eventing、および knative-kafka システムネームボックスに、デフォルトで knative.openshift.io/part-of:"openshift-serverless" ラベルが付けられるようになりました。
  • Knative Eventing-Kafka Broker/Trigger ダッシュボードが追加されました。これにより、Web コンソールで Kafka ブローカーとトリガーメトリクスを視覚化できます。
  • Knative Eventing-KafkaSink ダッシュボードが追加されました。これにより、Web コンソールで KafkaSink メトリクスを視覚化できます。
  • Knative Eventing-Broker/Trigger ダッシュボードは、Knative Eventing-Channel-based Broker/Trigger と呼ばれるようになりました。
  • knative.openshift.io/part-of: " openshift-serverless " ラベルが、knative.openshift.io/system-namespace ラベルに置き換わりました。
  • Knative Serving YAML 設定ファイルの命名スタイルがキャメルケース (ExampleName) からハイフンスタイル (example-name) に変更されました。このリリース以降、Knative Serving YAML 設定ファイルを作成または編集するときは、ハイフンスタイルの表記を使用してください。

1.21.2. 既知の問題

  • 連邦情報処理標準 (FIPS) モードは、Kafka ブローカー、Kafka ソース、および Kafka シンクに対して無効になっています。

1.22. Red Hat OpenShift Serverless 1.21.0

OpenShift Serverless 1.21.0 が利用可能になりました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.22.1. 新機能

  • OpenShift Serverless は Knative Serving 1.0 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 1.0 を使用するようになりました。
  • OpenShift Serverless は Kourier 1.0 を使用するようになりました。
  • OpenShift Serverless は、Knative (kn) CLI 1.0 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 1.0 を使用するようになりました。
  • kn func CLI プラグインが func 0.21 を使用するようになりました。
  • Kafka シンクがテクノロジープレビューとして利用できるようになりました。
  • Knative オープンソースプロジェクトは、camel-cased 設定キーを非推奨にし、kebab-cased キーを一貫して使用することを支持し始めました。その結果、OpenShift Serverless 1.18.0 リリースノートで前述した defaultExternalScheme キーは非推奨になり、default-external-scheme キーに置き換えられました。キーの使用方法は同じです。

1.22.2. 修正された問題

  • OpenShift Serverless 1.20.0 では、サービスにイベントを送信するための kn event send の使用に影響するイベント配信の問題がありました。この問題は修正されています。
  • OpenShift Serverless 1.20.0 (func0.20) では、http テンプレートを使用して作成された TypeScript 関数をクラスターにデプロイできませんでした。この問題は修正されています。
  • OpenShift Serverless 1.20.0 (func 0.20) では、gcr.io レジストリーを使用した関数のデプロイがエラーで失敗しました。この問題は修正されています。
  • OpenShift Serverless 1.20.0 (func 0.20) では、kn func create コマンドを使用して Springboot 関数プロジェクトディレクトリーを作成してから、kn func build コマンドを実行するとエラーメッセージが表示されて失敗しました。この問題は修正されています。
  • OpenShift Serverless 1.19.0 (func 0.19) では、一部のランタイムが podman を使用して関数をビルドできませんでした。この問題は修正されています。

1.22.3. 既知の問題

  • 現在、ドメインマッピングコントローラーは、現在サポートされていないパスを含むブローカーの URI を処理できません。

    つまり、DomainMapping カスタムリソース (CR) を使用してカスタムドメインをブローカーにマップする場合は、ブローカーの入力サービスを使用して DomainMapping CR を設定し、ブローカーの正確なパスをカスタムドメインに追加する必要があります。

    DomainMapping CR の例

    apiVersion: serving.knative.dev/v1alpha1
    kind: DomainMapping
    metadata:
      name: <domain-name>
      namespace: knative-eventing
    spec:
      ref:
        name: broker-ingress
        kind: Service
        apiVersion: v1
    Copy to Clipboard Toggle word wrap

    その場合、ブローカーの URI は <domain-name>/<broker-namespace>/<broker-name> になります。

1.23. Red Hat OpenShift Serverless 1.20.0

OpenShift Serverless 1.20.0 が利用可能になりました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.23.1. 新機能

  • OpenShift Serverless は Knative Serving 0.26 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 0.26 を使用するようになりました。
  • OpenShift Serverless は Kourier 0.26 を使用するようになりました。
  • OpenShift Serverless は、Knative (kn) CLI 0.26 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 0.26 を使用するようになりました。
  • kn func CLI プラグインが func 0.20 を使用するようになりました。
  • Kafka ブローカーがテクノロジープレビュー機能として利用可能になりました。

    重要

    現在テクノロジープレビューにある Kafka ブローカーは、FIPS ではサポートされていません。

  • kn event プラグインがテクノロジープレビューとして利用できるようになりました。
  • kn service create コマンドの --min-scale フラグと --max-scale フラグは非推奨になりました。代わりに、-scale-min フラグと --scale-max フラグを使用してください。

1.23.2. 既知の問題

  • OpenShift Serverless は、HTTPS を使用するデフォルトアドレスで Knative サービスをデプロイします。クラスター内のリソースにイベントを送信する場合、送信側にはクラスターの認証局 (CA) が設定されていません。これにより、クラスターがグローバルに受け入れ可能な証明書を使用しない限り、イベント配信は失敗します。

    たとえば、一般にアクセス可能なアドレスへのイベント配信は機能します。

    $ kn event send --to-url https://ce-api.foo.example.com/
    Copy to Clipboard Toggle word wrap

    一方、サービスがカスタム CA によって発行された HTTPS 証明書でパブリックアドレスを使用する場合、この配信は失敗します。

    $ kn event send --to Service:serving.knative.dev/v1:event-display
    Copy to Clipboard Toggle word wrap

    ブローカーやチャネルなどの他のアドレス指定可能なオブジェクトへのイベント送信は、この問題の影響を受けず、期待どおりに機能します。

  • 現在、Kafka ブローカーは Federal Information Processing Standards (FIPS) モードが有効になっているクラスターでは動作しません。
  • kn func create コマンドで Springboot 関数プロジェクトディレクトリーを作成すると、それ以降の kn func build コマンドの実行は失敗し、以下のエラーメッセージが出力されます。

    [analyzer] no stack metadata found at path ''
    [analyzer] ERROR: failed to : set API for buildpack 'paketo-buildpacks/ca-certificates@3.0.2': buildpack API version '0.7' is incompatible with the lifecycle
    Copy to Clipboard Toggle word wrap

    回避策として、関数設定ファイル func.yamlbuilder プロパティーを gcr.io/paketo-buildpacks/builder:base に変更します。

  • gcr.io レジストリーを使用した関数のデプロイは失敗し、以下のエラーメッセージが出力されます。

    Error: failed to get credentials: failed to verify credentials: status code: 404
    Copy to Clipboard Toggle word wrap

    回避策として、quay.io または docker.io などの gcr.io 以外のレジストリーを使用します。

  • http テンプレートで作成された TypeScript 関数は、クラスターへのデプロイに失敗します。

    回避策として、func.yaml ファイルで以下のセクションを置き換えます。

    buildEnvs: []
    Copy to Clipboard Toggle word wrap

    上記を以下のように置き換えます。

    buildEnvs:
    - name: BP_NODE_RUN_SCRIPTS
      value: build
    Copy to Clipboard Toggle word wrap
  • func バージョン 0.20 では、一部のランタイムが podman を使用して関数をビルドできない場合があります。以下のようなエラーメッセージが出力される場合があります。

    ERROR: failed to image: error during connect: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.40/info": EOF
    Copy to Clipboard Toggle word wrap
    • この問題には、以下の回避策があります。

      1. --time=0 をサービス ExecStart 定義に追加して、podman サービスを更新します。

        サービス設定の例

        ExecStart=/usr/bin/podman $LOGGING system service --time=0
        Copy to Clipboard Toggle word wrap

      2. 以下のコマンドを実行して podman サービスを再起動します。

        $ systemctl --user daemon-reload
        Copy to Clipboard Toggle word wrap
        $ systemctl restart --user podman.socket
        Copy to Clipboard Toggle word wrap
    • または、TCP を使用して podman API を公開することもできます。

      $ podman system service --time=0 tcp:127.0.0.1:5534 &
      export DOCKER_HOST=tcp://127.0.0.1:5534
      Copy to Clipboard Toggle word wrap

1.24. Red Hat OpenShift Serverless 1.19.0

OpenShift Serverless 1.19.0 が利用可能になりました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.24.1. 新機能

  • OpenShift Serverless は Knative Serving 0.25 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 0.25 を使用するようになりました。
  • OpenShift Serverless は Kourier 0.25 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 0.25 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 0.25 を使用するようになりました。
  • kn func CLI プラグインが func 0.19 を使用するようになりました。
  • KafkaBinding API は OpenShift Serverless 1.19.0 で非推奨となり、今後のリリースで削除される予定です。
  • HTTPS リダイレクトがサポートされ、クラスターに対してグローバルに設定することも、各 Knative サービスごとに設定することもできるようになりました。

1.24.2. 修正された問題

  • 以前のリリースでは、Kafka チャネルディスパッチャーは、ローカルコミットが成功するのを待ってからしか応答していませんでした。これにより、Apache Kafka ノードに障害が発生した場合に、イベントが失われる可能性がありました。Kafka チャネルディスパッチャーは、すべての同期レプリカがコミットするのを待ってから応答するようになりました。

1.24.3. 既知の問題

  • func バージョン 0.19 では、一部のランタイムが podman を使用して関数をビルドできない場合があります。以下のようなエラーメッセージが出力される場合があります。

    ERROR: failed to image: error during connect: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.40/info": EOF
    Copy to Clipboard Toggle word wrap
    • この問題には、以下の回避策があります。

      1. --time=0 をサービス ExecStart 定義に追加して、podman サービスを更新します。

        サービス設定の例

        ExecStart=/usr/bin/podman $LOGGING system service --time=0
        Copy to Clipboard Toggle word wrap

      2. 以下のコマンドを実行して podman サービスを再起動します。

        $ systemctl --user daemon-reload
        Copy to Clipboard Toggle word wrap
        $ systemctl restart --user podman.socket
        Copy to Clipboard Toggle word wrap
    • または、TCP を使用して podman API を公開することもできます。

      $ podman system service --time=0 tcp:127.0.0.1:5534 &
      export DOCKER_HOST=tcp://127.0.0.1:5534
      Copy to Clipboard Toggle word wrap

1.25. Red Hat OpenShift Serverless 1.18.0

OpenShift Serverless 1.18.0 が利用可能になりました。OpenShift Container Platform 上の OpenShift Serverless に関連する新機能、更新、既知の問題は、以下のノートに含まれています。

1.25.1. 新機能

  • OpenShift Serverless は Knative Serving 0.24.0 を使用するようになりました。
  • OpenShift Serverless は Knative Eventing 0.24.0 を使用するようになりました。
  • OpenShift Serverless は Kourier 0.24.0 を使用するようになりました。
  • OpenShift Serverless は Knative (kn) CLI 0.24.0 を使用するようになりました。
  • OpenShift Serverless は Knative Kafka 0.24.7 を使用するようになりました。
  • kn func CLI プラグインが func 0.18.0 を使用するようになりました。
  • 今後の OpenShift Serverless 1.19.0 リリースでは、外部ルートの URL スキームはデフォルトで HTTPS になり、セキュリティーが強化されます。

    この変更をワークロードに適用する必要がない場合は、以下の YAML を KnativeServing カスタムリソース (CR) に追加してから 1.19.0 にアップグレードする前にデフォルト設定を上書きできます。

    ...
    spec:
      config:
        network:
          defaultExternalScheme: "http"
    ...
    Copy to Clipboard Toggle word wrap

    変更を 1.18.0 ですでに適用する必要がある場合は、以下の YAML を追加します。

    ...
    spec:
      config:
        network:
          defaultExternalScheme: "https"
    ...
    Copy to Clipboard Toggle word wrap
  • 今後の OpenShift Serverless 1.19.0 リリースでは、Kourier ゲートウェイが公開されるデフォルトのサービスタイプは ClusterIP であり、LoadBalancer ではありません。

    この変更をワークロードに適用する必要がない場合は、以下の YAML を KnativeServing カスタムリソース定義 (CR) に追加してから 1.19.0 にアップグレードする前にデフォルト設定を上書きできます。

    ...
    spec:
      ingress:
        kourier:
          service-type: LoadBalancer
    ...
    Copy to Clipboard Toggle word wrap
  • OpenShift Serverless で emptyDir ボリュームを使用できるようになりました。詳細は、Knative Serving に関する OpenShift Serverless ドキュメントを参照してください。
  • kn func を使用して関数を作成すると、Rust テンプレートが利用できるようになりました。

1.25.2. 修正された問題

  • 以前の 1.4 バージョンの Camel-K は OpenShift Serverless 1.17.0 と互換性がありませんでした。Camel-K の問題が修正され、Camel-K バージョン 1.4.1 を OpenShift Serverless 1.17.0 で使用できます。
  • 以前のバージョンでは、Kafka チャネルまたは新しい Kafka ソースの新しいサブスクリプションを作成する場合は、新しく作成されたサブスクリプションまたはシンクが準備完了ステータスを報告した後、Kafka データプレーンがメッセージをディスパッチする準備ができるまでに遅延が生じる可能性があります。

    その結果、データプレーンが準備完了ステータスを報告していないときに送信されたメッセージは、サブスクライバーまたはシンクに配信されない可能性があります。

    OpenShift Serverless 1.18.0 では、問題が修正され、初期メッセージが失われなくなりました。この問題の詳細は、ナレッジベースの記事 #6343981 を参照してください。

1.25.3. 既知の問題

  • Knative kn CLI の古いバージョンは、Knative Serving および Knative Eventing API の古いバージョンを使用する可能性があります。たとえば、kn CLI のバージョン 0.23.2 は v1alpha1 API バージョンを使用します。

    一方、OpenShift Serverless の新しいリリースでは、古い API バージョンをサポートしない可能性があります。たとえば、OpenShift Serverless 1.18.0 は kafkasources.sources.knative.dev API のバージョン v1alpha1 をサポートしなくなりました。

    そのため、kn が古い API を検出できないため、新しい OpenShift Serverless で古いバージョンの Knative kn CLI を使用するとエラーが発生する可能性がありました。たとえば、kn CLI のバージョン 0.23.2 は OpenShift Serverless 1.18.0 では機能しません。

    問題を回避するには、OpenShift Serverless リリースで利用可能な最新の kn CLI バージョンを使用します。OpenShift Serverless 1.18.0 では、Knative kn CLI 0.24.0 を使用します。

第2章 OpenShift Serverless の概要

OpenShift Serverless は、Kubernetes ネイティブなビルディングブロックを提供します。開発者はそのビルディングブロックを使用して、OpenShift Container Platform 上でサーバーレスのイベント駆動型アプリケーションを作成およびデプロイできます。Serverless アプリケーションはオンデマンドでスケールアップおよびスケールダウン (ゼロまで) でき、数多くのイベントソースによりトリガーされます。OpenShift Serverless はオープンソースの Knative プロジェクト をベースとし、エンタープライズレベルのサーバーレスを有効にすることで、ハイブリッドおよびマルチクラウド環境に対して移植性と一貫性をもたらします。

注記

OpenShift Serverless は OpenShift Container Platform とは異なる頻度でリリースされるため、OpenShift Serverless ドキュメントは製品のマイナーバージョンごとに個別のドキュメントセットとして利用できるようになりました。

OpenShift Serverless ドキュメントは https://docs.openshift.com/serverless/ で利用できます。

特定のバージョンのドキュメントは、バージョンセレクターのドロップダウンを使用するか、URL にバージョン (https://docs.openshift.com/serverless/1.28 など) を直接追加すると利用できます。

さらに、OpenShift Serverless ドキュメントは、Red Hat カスタマーポータル (https://access.redhat.com/documentation/ja-jp/red_hat_openshift_serverless/) でも利用できます。

OpenShift Serverless のライフサイクルとサポートされるプラットフォームに関する追加情報は、プラットフォームライフサイクルポリシー を参照してください。

2.1. OpenShift Serverless のコンポーネント

2.1.1. Knative Serving

Knative Serving は Kubernetes 上に構築され、アプリケーションと機能をサーバーレスコンテナーとしてデプロイおよび提供することをサポートします。Serving はアプリケーションのデプロイメントを簡素化し、受信トラフィックに基づいて動的にスケーリングし、トラフィック分割によるカスタムロールアウトストラテジーをサポートします。

Knative Serving には以下の機能が含まれます。

  • サーバーレスコンテナーの簡素化されたデプロイメント
  • scale-to-zero を含むトラフィックベースの自動スケーリング
  • ルーティングおよびネットワークプログラミング
  • 特定の時点のアプリケーションスナップショットとその設定

2.1.2. Knative Eventing

Knative Eventing には、遅延バインディングイベントソースとイベントコンシューマーを有効にするために設定可能なプリミティブを提供するプラットフォームが含まれます。

Knative Eventing は、次のアーキテクチャーのクラウドネイティブコンセプトをサポートしています。

  • サービスは開発中に疎結合され、実稼働環境に独立してデプロイされます。
  • プロデューサーは、コンシューマーがリッスンする前にイベントを生成できます。また、コンシューマーはまだ生成されていないイベントまたはイベントのクラスに対して、リソースを受信する意思を示すことができます。
  • サービスを接続して、プロデューサーやコンシューマーを変更せずに新しいアプリケーションを作成でき、特定のプロデューサーから特定のイベントのサブセットを選択することもできます。

2.1.3. OpenShift Serverless Functions

OpenShift Serverless Functions を使用すると、Knative サービスとしてデプロイされ、Knative Serving と Eventing を活用できる関数を作成できます。

OpenShift Serverless Functions には、以下の機能が含まれています。

  • 以下のビルドストラテジーをサポートします。

    • Source-to-Image (S2I)
    • buildpacks
  • 複数のランタイム
  • Knative (kn) CLI によるローカル開発者エクスペリエンス
  • プロジェクトテンプレート
  • CloudEvents およびプレーン HTTP リクエストを受信するサポート

2.1.4. OpenShift Serverless Logic

OpenShift Serverless Logic を使用すると、YAML または JSON ファイルを使用して宣言型ワークフローモデルを定義できます。宣言型ワークフローモデルは、イベント駆動型のサーバーレスアプリケーションを調整します。OpenShift Serverless Logic を使用すると、ワークフローの実行を視覚化できるため、デバッグと最適化が簡素化されます。また、エラー処理とフォールトトレランスも組み込まれているため、ワークフローの実行中に発生するエラーや例外の処理が容易になります。OpenShift Serverless Logic は CNCF Serverless Workflow specification を実装します。

2.1.5. Knative CLI

Knative (kn) CLI を使用すると、コマンドラインまたはシェルスクリプト内から Knative リソースを作成できます。豊富なヘルプページと自動補完のサポートにより、Knative リソーススキーマの詳細な構造を記憶する必要がなくなります。

Knative (kn) CLI には次の機能が含まれています。

  • 次の Knative Serving 機能の管理をサポートします。

    • サービス
    • リビジョン
    • ルート
  • 次の Knative Eventing エンティティーの管理をサポートします。

    • ソース
    • ブローカー
    • トリガー
    • チャネル
    • サブスクリプション
  • Kubernetes (kubectl) CLI ツールの設計に基づいたプラグインアーキテクチャー
  • Knative の Tekton パイプラインへの統合

第3章 Knative Serving

Knative Serving は、クラウドネイティブアプリケーション の作成、デプロイ、管理を希望する開発者をサポートします。これにより、オブジェクトのセットが OpenShift Container Platform クラスター上の Serverless ワークロードの動作を定義し制御する Kubernetes カスタムリソース定義 (CRD) として提供されます。

開発者はこれらの CRD を使用して、複雑なユースケースに対応するためにビルディングブロックとして使用できるカスタムリソース (CR) インスタンスを作成します。以下に例を示します。

  • Serverless コンテナーの迅速なデプロイ
  • Pod の自動スケーリング

3.1. Knative Serving リソース

サービス
service.serving.knative.dev CRD はワークロードのライフサイクルを自動的に管理し、アプリケーションがネットワーク経由でデプロイされ、到達可能であることを確認します。これは、ユーザーが作成した Service またはカスタムリソースに対して加えられるそれぞれの変更に Route、Configuration、および新規 Revision を作成します。Knative での開発者の対話のほとんどは、サービスを変更して実行されます。
Revision
revision.serving.knative.dev CRD は、ワークロードに対して加えられるそれぞれの変更のコードおよび設定の特定の時点におけるスナップショットです。Revision (リビジョン) はイミュータブル (変更不可) オブジェクトであり、必要な期間保持することができます。
Route
route.serving.knative.dev CRD は、ネットワークのエンドポイントを、1 つ以上のリビジョンにマップします。部分的なトラフィックや名前付きルートなどのトラフィックを複数の方法で管理することができます。
Configuration
configuration.serving.knative.dev CRD は、デプロイメントの必要な状態を維持します。これにより、コードと設定を明確に分離できます。設定を変更すると、新規リビジョンが作成されます。

第4章 Knative Eventing

OpenShift Container Platform 上の Knative Eventing を使用すると、開発者は Serverless アプリケーションと共に イベント駆動型のアーキテクチャー を使用できます。イベント駆動型のアーキテクチャーは、イベントプロデューサーとイベントコンシューマー間の関係を切り離すという概念に基づいています。

イベントプロデューサーはイベントを作成し、イベントシンクまたはコンシューマーはイベントを受信します。Knative Eventing は、標準の HTTP POST リクエストを使用してイベントプロデューサーとシンク間でイベントを送受信します。これらのイベントは CloudEvents 仕様 に準拠しており、すべてのプログラミング言語でのイベントの作成、解析、および送受信を可能にします。

Knative Eventing は以下のユースケースをサポートします。

コンシューマーを作成せずにイベントを公開する
イベントを HTTP POST としてブローカーに送信し、バインディングを使用してイベントを生成するアプリケーションから宛先設定を分離できます。
パブリッシャーを作成せずにイベントを消費
トリガーを使用すると、イベント属性に基づいてブローカーからのイベントを消費できます。アプリケーションはイベントを HTTP POST として受信します。

複数のタイプのシンクへの配信を有効にするために、Knative Eventing は複数の Kubernetes リソースで実装できる以下の汎用インターフェイスを定義します。

アドレス指定可能なリソース
HTTP 経由でイベントの status.address.url フィールドに定義されるアドレスに配信されるイベントを受信し、確認することができます。Kubernetes Service リソースはアドレス指定可能なインターフェイスにも対応します。
呼び出し可能なリソース
HTTP 経由で配信されるイベントを受信し、これを変換できます。HTTP 応答ペイロードで 0 または 1 の新規イベントを返します。返されるイベントは、外部イベントソースからのイベントが処理されるのと同じ方法で処理できます。

4.1. Apache Kafka の Knative ブローカーの使用

Apache Kafka の Knative ブローカー実装では、サポートされているバージョンの Apache Kafka メッセージストリーミングプラットフォームを OpenShift Serverless で使用できるように、統合オプションが提供されています。Kafka は、イベントソース、チャネル、ブローカー、およびイベントシンク機能のオプションを提供します。

Apache Kafka の Knative ブローカーは、以下のような追加オプションを提供します。

  • Kafka ソース
  • Kafka チャネル
  • Kafka ブローカー
  • Kafka シンク

第5章 OpenShift Serverless Functions について

OpenShift Serverless Functions により、開発者は OpenShift Container Platform で Knative サービスとしてステートレスでイベント駆動型の関数を作成およびデプロイできます。kn func CLI は Knative kn CLI のプラグインとして提供されます。kn func CLI を使用して、クラスター上の Knative サービスとしてコンテナーイメージを作成、ビルド、デプロイできます。

5.1. 含まれるランタイム

OpenShift Serverless Functions は、以下のランタイムの基本機能を作成するために使用できるテンプレートを提供します。

5.2. 次のステップ

第6章 OpenShift Serverless Logic の概要

OpenShift Serverless Logic を使用すると、開発者はイベント駆動型のサーバーレスアプリケーションをオーケストレーションする宣言型ワークフローモデルを定義できます。

ワークフローモデルは YAML または JSON 形式で記述できます。これは、クラウドまたはコンテナー環境でのサーバーレスアプリケーションの開発とデプロイに最適です。

OpenShift Container Platform にワークフローをデプロイするには、OpenShift Serverless Logic Operator を使用できます。

次のセクションでは、OpenShift Serverless Logic のさまざまな概念の概要を説明します。

6.1. Events

イベントの状態は、1 つ以上のイベント定義で構成されます。イベント定義を組み合わせて、イベント状態がリッスンする CloudEvent タイプを指定します。イベント状態を使用すると、指定された CloudEvent を受信したときに新しいワークフローインスタンスを開始したり、指定された CloudEvent を受信するまで既存のワークフローインスタンスの実行を一時停止したりできます。

イベント状態定義では、onEvents プロパティーを使用して、同じ アクション セットをトリガーする可能性のある CloudEvent タイプをグループ化します。イベント定義の exclusive プロパティーは、イベントの一致がどのように計算されるかを示します。exclusive プロパティーの値が false の場合、一致させるには、eventRefs 配列内のすべての CloudEvent タイプを受信する必要があります。それ以外の場合、参照された CloudEvent タイプの受信は一致と見なされます。

次の例は、noisysilent を含む 2 つの CloudEvent タイプで構成されるイベント定義を示しています。

イベント定義の例

"events": [
    {
      "name": "noisyEvent",
      "source": "",
      "type": "noisy",
      "dataOnly" : "false"
    },
    {
      "name": "silentEvent",
      "source": "",
      "type": "silent"
    }
  ]
Copy to Clipboard Toggle word wrap

noisysilent の CloudEvent タイプの両方を受信したときにイベント一致が発生したことを示し、両方の CloudEvent タイプに対して異なるアクションを実行するには、両方のイベント定義を含むイベント状態を別々の onEvent 項目に定義し、exclusive プロパティーを false に設定します。

複数の onEvent 項目を持つイベント状態定義の例

{
    "name": "waitForEvent",
    "type": "event",
    "onEvents": [
      {
        "eventRefs": [
          "noisyEvent"
         ],
         "actions": [
           {
             "functionRef": "letsGetLoud"
           }
         ]
      },
      {
        "eventRefs": [
           "silentEvent"
        ],
        "actions": [
          {
            "functionRef": "beQuiet"
          }
        ]
      }
    ]
    ,
    "exclusive": false
  }
Copy to Clipboard Toggle word wrap

6.2. Callback

Callback の状態ではアクションが実行され、アクションの結果として生成されるイベントを待ってから、ワークフローを再開します。Callback の状態によって実行されるアクションは、非同期外部サービス呼び出しです。したがって、Callback の状態は、fire&wait-for-result 演算を実行するのに適しています。

ワークフローの観点から見ると、非同期サービスは、アクションが完了するのを待たずに制御が呼び出し元に直ちに返されることを示します。アクションが完了すると、CloudEvent が公開されてワークフローが再開されます。

JSON 形式の Callback 状態の例

{
        "name": "CheckCredit",
        "type": "callback",
        "action": {
            "functionRef": {
                "refName": "callCreditCheckMicroservice",
                "arguments": {
                    "customer": "${ .customer }"
                }
            }
        },
        "eventRef": "CreditCheckCompletedEvent",
        "timeouts": {
          "stateExecTimeout": "PT15M"
        },
        "transition": "EvaluateDecision"
}
Copy to Clipboard Toggle word wrap

YAML 形式の Callback 状態の例

name: CheckCredit
type: callback
action:
  functionRef:
    refName: callCreditCheckMicroservice
    arguments:
      customer: "${ .customer }"
eventRef: CreditCheckCompletedEvent
timeouts:
  stateExecTimeout: PT15M
transition: EvaluateDecision
Copy to Clipboard Toggle word wrap

action プロパティーは、外部アクティビティーまたはサービスをトリガーする関数呼び出しを定義します。アクションが実行されると、状態が Callback の場合、呼び出されたサービスによる手動での決定が完了したことを示す CloudEvent になるまで待機します。

完了コールバックイベントを受信すると、Callback の状態は実行を完了し、次の定義されたワークフロー状態に遷移するか、終了状態の場合はワークフローの実行を完了します。

6.3. JQ 式

各ワークフローインスタンスはデータモデルに関連付けられています。ワークフローファイルに YAML または JSON が含まれているかどうかに関係なく、データモデルは JSON オブジェクトで構成されます。JSON オブジェクトの初期コンテンツは、ワークフローの開始方法によって異なります。CloudEvent を使用してワークフローが作成されている場合は、ワークフローのコンテンツは data プロパティーから取得されます。ワークフローが HTTP POST リクエストにより開始された場合、ワークフローコンテンツはリクエスト本文から取得されます。

JQ 式は、データモデルとの対話に使用されます。サポートされる式言語には、JsonPath および JQ が含まれます。JQ 式言語がデフォルトの言語です。expressionLang プロパティーを使用して、式言語を JsonPath に変更できます。

関数の JQ 式の例

{
      "name": "max",
      "type": "expression",
      "operation": "{max: .numbers | max_by(.x), min: .numbers | min_by(.y)}"
    }
Copy to Clipboard Toggle word wrap

6.4. エラー処理

OpenShift Serverless Logic を使用すると、明示的な エラー処理を定義できます。一般的なエラー処理エンティティーではなく、エラーが発生した場合に何が起こるかをワークフローモデル内で定義できます。明示的なエラー処理により、ワークフローと外部システム間のやり取り中に発生する可能性のあるエラーを処理できます。エラーが発生すると、通常のワークフローのシーケンスが変更されます。このような場合、ワークフローの状態は、事前定義された状態に移行するのではなく、エラーを処理できる可能性のある代わりの状態に移行します。

各ワークフロー状態では、実行中に発生する可能性のあるエラーにのみ関連するエラー処理を定義できます。ある状態で定義されたエラー処理は、ワークフロー実行中に別の状態で発生したエラーの処理に使用できません。

ワークフロー状態の実行中に発生する可能性があり、ワークフロー定義内で明示的に処理されない不明なエラーは、ランタイム実装によって報告され、ワークフローの実行を停止する必要があります。

6.4.1. エラー定義

ワークフロー内のエラー定義は、name および code パラメーターで構成されます。この name は、wrong parameter など、自然言語によるエラーに関する簡単な説明です。code パラメーターは、実装でエラーを特定するのに役立ちます。

コード パラメーターは必須であり、エンジンはさまざまなストラテジーを使用して、提供された値を実行時に発生した例外にマッピングします。使用可能なストラテジーには、FQCN、エラーメッセージ、ステータスコードが含まれます。

ワークフローの実行中は、ワークフローの最上位レベルの errors プロパティーで既知のワークフローエラーを処理する必要があります。このプロパティーは string 型にすることができ、エラー定義を含む再利用可能な JSON または YAML 定義ファイルを参照できます。また、チェックされたエラーをワークフロー定義にインラインで定義できる array 型にすることもできます。

以下の例は、両方のタイプの定義を示しています。

再利用可能な JSON エラー定義ファイルを参照する例

{
"errors": "file://documents/reusable/errors.json"
}
Copy to Clipboard Toggle word wrap

再利用可能な YAML エラー定義ファイルを参照する例

errors: file://documents/reusable/errors.json
Copy to Clipboard Toggle word wrap

JSON ファイルを使用してワークフローエラーをインラインで定義する例

{
"errors": [
  {
    "name": "Service not found error",
    "code": "404",
    "description": "Server has not found anything matching the provided service endpoint information"
  }
]
}
Copy to Clipboard Toggle word wrap

YAML ファイルを使用してワークフローエラーをインラインで定義する例

errors:
  - name: Service not found error
    code: '404'
    description: Server has not found anything matching the provided service endpoint
      information
Copy to Clipboard Toggle word wrap

6.5. スキーマ定義

OpenShift Serverless Logic は、入力スキーマ定義と出力スキーマ定義の 2 種類のスキーマ定義をサポートしています。

6.5.1. 入力スキーマ定義

dataInputSchema パラメーターは、定義された JSON スキーマに対してワークフローデータ入力を検証します。dataInputSchema を指定することは重要です。これは、ワークフロー状態が実行される前に、提供されたワークフローデータ入力が正しいかどうかを確認する場合に使用されるためです。

dataInputSchema は、以下のように定義できます。

dataInputSchema 定義の例

"dataInputSchema": {
   "schema": "URL_to_json_schema",
   "failOnValidationErrors": false
}
Copy to Clipboard Toggle word wrap

スキーマプロパティーは URI であり、ワークフローデータ入力を検証するために使用される JSON スキーマへのパスを保持します。URI は、クラスパス URI、ファイル、または HTTP URL にすることができます。クラスパス URI が指定されている場合、JSON スキーマファイルをプロジェクトのリソースセクションまたはクラスパスに含まれるその他のディレクトリーに配置する必要があります。

failOnValidationErrors は、オプションのフラグで、入力データが指定の JSON スキーマと一致しない場合に採用される動作を示します。指定しない場合や true に設定された場合、例外が発生し、フローの実行に失敗します。false に設定すると、フローが実行され、検証エラーを含む WARN レベルのログが出力されます。

6.5.2. 出力スキーマ定義

出力スキーマ定義はワークフロー実行後に適用され、出力モデルが期待どおりの形式であることを確認します。Swagger 生成にも役立ちます。

入力スキーマ定義と同様に、次のように outputSchema を使用して JSON スキーマへの URL を指定する必要があります。

outputSchema 定義の例

"extensions" : [ {
      "extensionid": "workflow-output-schema",
      "outputSchema": {
         "schema" : "URL_to_json_schema",
          "failOnValidationErrors": false
     }
  } ]
Copy to Clipboard Toggle word wrap

dataInputSchema に記述されている同じルールは、schemafailOnValidationErrors に適用されます。唯一の違いは、後者のフラグがワークフローの実行後に適用されることです。

6.6. カスタム関数

OpenShift Serverless Logic は custom 関数タイプをサポートしており、これにより実装で関数定義機能を拡張できるようになります。operation 文字列と組み合わせることで、定義済みの関数タイプのリストを使用できます。

注記

カスタム関数型は、他のランタイム実装間で移植できない可能性があります。

6.6.1. sysout カスタム関数

以下の例のように、sysout 関数をロギングに使用できます。

sysout 関数定義の例

{
  "functions": [
    {
      "name": "logInfo",
      "type": "custom",
      "operation": "sysout:INFO"
    }
  ]
}
Copy to Clipboard Toggle word wrap

: の後の文字列はオプションであり、ログレベルを示すために使用されます。使用可能な値は TRACEDEBUGINFOWARN、および ERROR です。値が存在しない場合は、INFO がデフォルトになります。

state 定義では、次の例に示すように、同じ sysout 関数を呼び出すことができます。

状態内の sysout 関数参照の例

{
  "states": [
    {
      "name": "myState",
      "type": "operation",
      "actions": [
        {
          "name": "printAction",
          "functionRef": {
            "refName": "logInfo",
            "arguments": {
              "message": "\"Workflow model is \\(.)\""
            }
          }
        }
      ]
    }
  ]
}
Copy to Clipboard Toggle word wrap

上記の例では、message 引数は、補間を使用した jq 式または jq 文字列にすることができます。

6.6.2. Java カスタム関数

OpenShift Serverless Logic は、ワークフローサービスを定義する Apache Maven プロジェクト内の Java 関数をサポートします。

次の例は、Java 関数の宣言を示しています。

Java 関数宣言の例

{
  "functions": [
    {
      "name": "myFunction", 
1

      "type": "custom", 
2

      "operation": "service:java:com.acme.MyInterfaceOrClass::myMethod" 
3

    }
  ]
}
Copy to Clipboard Toggle word wrap

1
myFunction は関数名です。
2
custom は関数タイプです。
3
service:java:com.acme.MyInterfaceOrClass::myMethod はカスタム演算定義です。カスタム演算定義では、service は予約済みの演算キーワードであり、その後に java キーワードが続きます。com.acme.MyInterfaceOrClass は、インターフェイスまたは実装クラスの FQCN (完全修飾クラス名) であり、その後にメソッド名 myMethod が続きます。

6.6.3. Knative カスタム関数

OpenShift Serverless Logic は knative-serving アドオンを通じてカスタム関数の実装を提供し、Knative サービスを起動します。これにより、HTTP リクエストの実行に使用される、Knative サービスを定義する静的 URI を取得できるようになります。URI で定義された Knative サービスは、現在の Knative クラスターでクエリーされ、有効な URL に変換されます。

次の例では、デプロイされた Knative サービスを使用します。

$ kn service list
NAME                              URL                                                                      LATEST                                  AGE     CONDITIONS   READY   REASON
custom-function-knative-service   http://custom-function-knative-service.default.10.109.169.193.sslip.io   custom-function-knative-service-00001   3h16m   3 OK / 3     True
Copy to Clipboard Toggle word wrap

以下の例のように、Knative サービス名を使用して OpenShift Serverless Logic カスタム関数を宣言できます。

  "functions": [
    {
      "name": "greet", 
1

      "type": "custom", 
2

      "operation": "knative:services.v1.serving.knative.dev/custom-function-knative-service?path=/plainJsonFunction", 
3

    }
  ]
Copy to Clipboard Toggle word wrap
1
greet は関数名です。
2
custom は関数タイプです。
3
operation では、Knative サービスの座標を設定します。
注記

この関数は POST リクエストを送信します。パスを指定しない場合、OpenShift Serverless Logic はルートパス (/) を使用します。演算で method=GET を設定して GET リクエストを送信することもできます。この場合、引数はクエリー文字列を介して転送されます。

6.6.4. REST カスタム関数

OpenShift Serverless Logic は、ショートカットとして REST カスタムタイプを提供します。カスタム REST を使用する場合は、関数定義で、呼び出す HTTP URI と使用する HTTP メソッド (get、post、patch、または put) を指定します。これは、operation 文字列を使用して行います。関数が呼び出されるとき、OpenAPI 関数を使用する場合と同じように、リクエスト引数を渡します。

次の例は、REST 関数の宣言を示しています。

  {
  "functions": [
    {
      "name": "multiplyAllByAndSum", 
1

      "type": "custom", 
2

      "operation": "rest:post:/numbers/{multiplier}/multiplyByAndSum" 
3

    }
  ]
}
Copy to Clipboard Toggle word wrap
1
multiplyAllAndSum は関数名です。
2
custom は関数タイプです。
3
rest:post:/numbers/{multiplier}/multiplyByAndSum はカスタム演算定義です。カスタム演算定義では、rest はこれが REST 呼び出しであることを示す予約済みの演算キーワード、post は HTTP メソッド、/numbers/{multiplier}/multiplyByAndSum は相対エンドポイントです。

相対エンドポイントを使用する場合は、ホストをプロパティーとして指定する必要があります。ホストプロパティーの形式は kogito.sw.functions.<function_name> .host です。この例では、kogito.sw.functions.multiplyAllByAndSum.host がホストプロパティーキーです。必要に応じて、kogito.sw.functions.multiplyAllAndSum.port プロパティーを指定して、デフォルトのポート (80) を上書きできます。

このエンドポイントは、numbers フィールドが整数の配列である JSON オブジェクトを本体として受け取り、配列内の各項目を multiplier で乗算し、乗算されたすべての項目の合計を返します。

6.7. タイムアウト

OpenShift Serverless Logic では、さまざまなシナリオでワークフロー実行の最大時間を設定するために使用できるタイムアウト設定が複数定義されています。ワークフローが特定の状態にあるときにイベントの到達を待機できる時間、またはワークフローの最大実行時間を設定できます。

定義場所に関係なく、タイムアウトは、参照されたワークフロー要素がアクティブになったときに開始される時間または期間として設定する必要があります。タイムアウトは ISO 8601 data and time standard を使用して期間を指定し、PnDTnHnMn.nS 形式を使用します。1 日は厳密に 24 時間と見なされます。たとえば、PT15M は 15 分を設定し、P2DT3H4M は 2 日、3 時間、および 4 分を定義します。

注記

P2M のような月ベースのタイムアウト、つまり 2 カ月間の期間は、月の長さが変化する可能性があるため、有効ではありません。その場合は、代わりに PT60D を使用します。

6.7.1. ワークフローのタイムアウト

ワークフローがキャンセルされるまでに実行できる最大時間を設定するには、ワークフロータイムアウトを使用します。キャンセルされると、ワークフローは終了したとみなされ、GET リクエストを通じてアクセスできなくなります。したがって、デフォルトでは割り込みが true であるかのように動作します。

ワークフローのタイムアウトは、トップレベルの timeouts プロパティーで定義されます。stringobject の 2 つのタイプを使用できます。string 型は、ワークフローのタイムアウト定義を含む JSON または YAML ファイルを指す URI を定義します。object 型は、タイムアウト定義をインラインで定義するために使用されます。

たとえば、ワークフローを 1 時間実行した後にキャンセルするには、次の設定を使用します。

ワークフロータイムアウトの例

  {
  "id": "workflow_timeouts",
  "version": "1.0",
  "name": "Workflow Timeouts",
  "description": "Simple workflow to show the workflowExecTimeout working",
  "start": "PrintStartMessage",
  "timeouts": {
    "workflowExecTimeout": "PT1H"
  } ...
}
Copy to Clipboard Toggle word wrap

6.7.2. イベントのタイムアウト

ワークフローで状態を定義するときに、timeouts プロパティーを使用して、この状態を完了するまでの最大時間を設定できます。その時間が過ぎると、状態はタイムアウトしたとみなされ、エンジンはこの状態から実行を続行します。実行フローは状態の種類によって異なります。たとえば、次の状態への遷移が実行される場合があります。

イベントベースの状態では、eventTimeout サブプロパティーを使用して、イベントの到達を待機するまでの最大時間を設定できます。これは現在の実装でサポートされている唯一のプロパティーです。

イベントタイムアウトは、callback 状態タイムアウト、switch 状態タイムアウト、および even 状態タイムアウトをサポートします。

6.7.2.1. Callback 状態のタイムアウト

Callback 状態は、一般に外部サービスを呼び出すアクションを実行し、イベントの形式で非同期応答を待機する必要がある場合に使用できます。

応答イベントが消費されると、ワークフローは実行を継続し、通常は遷移プロパティーで定義された次の状態に移動します。

Callback 状態では、イベントが消費されるまで実行が停止されるため、これに対して eventTimeout を設定できます。設定された時間内にイベントが到達しない場合、ワークフローは実行を継続し、遷移で定義された次の状態に移動します。

タイムアウトのある Callback 状態の例

{
 "name": "CallbackState",
 "type": "callback",
 "action": {
   "name": "callbackAction",
   "functionRef": {
     "refName": "callbackFunction",
     "arguments": {
       "input": "${\"callback-state-timeouts: \" + $WORKFLOW.instanceId + \" has executed the callbackFunction.\"}"
     }
   }
 },
 "eventRef": "callbackEvent",
 "transition": "CheckEventArrival",
 "onErrors": [
   {
     "errorRef": "callbackError",
     "transition": "FinalizeWithError"
   }
 ],
 "timeouts": {
   "eventTimeout": "PT30S"
 }
}
Copy to Clipboard Toggle word wrap

6.7.2.2. Switch 状態のタイムアウト

特定の条件に応じてアクションを実行する必要がある場合は、Switch の状態を使用できます。これらの条件は、ワークフローデータ (dataConditions) またはイベント (eventConditions) をベースにできます。

eventConditions を使用すると、ワークフロー実行は、設定されたイベントのいずれかが到達して条件に一致するまで待ってから決定を下します。このような状況では、イベントが条件に一致するまで最大待機する時間を制御するイベントタイムアウトを設定できます。

この時間が経過すると、ワークフローは defaultCondition プロパティーに定義された状態に移行します。

タイムアウトのある Switch 状態の例

{
    "name": "ChooseOnEvent",
    "type": "switch",
    "eventConditions": [
    {
        "eventRef": "visaApprovedEvent",
        "transition": "ApprovedVisa"
    },
    {
        "eventRef": "visaDeniedEvent",
        "transition": "DeniedVisa"
    }
    ],
        "defaultCondition": {
        "transition": "HandleNoVisaDecision"
    },
        "timeouts": {
        "eventTimeout": "PT5S"
    }
}
Copy to Clipboard Toggle word wrap

6.7.2.3. Event 状態のタイムアウト

Event 状態は、ワークフローで 1 つ以上のイベントが受信されるまで待機し、一連のアクションを実行してから実行を継続するために使用されます。Event 状態が開始状態の場合は、新しいワークフローインスタンスが作成されます。

この状態では、timeouts プロパティーを使用して、設定されたイベントが到達するまでワークフローが最大待機する時間を設定します。

この時間が経過してもイベントが受信されない場合、ワークフローは遷移プロパティーで定義された状態に移行するか、終了状態の場合はアクションを実行せずにワークフローインスタンスを終了します。

timeout のある Event 状態の例

{
  "name": "WaitForEvent",
  "type": "event",
  "onEvents": [
    {
      "eventRefs": [
        "event1"
      ],
      "eventDataFilter": {
        "data": "${ \"The event1 was received.\" }",
        "toStateData": "${ .exitMessage }"
      },
      "actions": [
        {
          "name": "printAfterEvent1",
          "functionRef": {
            "refName": "systemOut",
            "arguments": {
              "message": "${\"event-state-timeouts: \" + $WORKFLOW.instanceId + \" executing actions for event1.\"}"
            }
          }
        }
      ]
    },
    {
      "eventRefs": [
        "event2"
      ],
      "eventDataFilter": {
        "data": "${ \"The event2 was received.\" }",
        "toStateData": "${ .exitMessage }"
      },
      "actions": [
        {
          "name": "printAfterEvent2",
          "functionRef": {
            "refName": "systemOut",
            "arguments": {
              "message": "${\"event-state-timeouts: \" + $WORKFLOW.instanceId + \" executing actions for event2.\"}"
            }
          }
        }
      ]
    }
  ],
  "timeouts": {
    "eventTimeout": "PT30S"
  },
  "transition": "PrintExitMessage"
}
Copy to Clipboard Toggle word wrap

6.8. Parallelism

OpenShift Serverless Logic は並列タスクの実行をシリアル化します。parallel という言葉は同時実行を意味するのではなく、分岐の実行間に論理的な依存関係がないことを意味します。アクティブブランチが実行を中断した場合、非アクティブブランチはアクティブブランチが完了するのを待たずにタスクの実行を開始または再開できます。たとえば、アクティブなブランチは、イベントの受信を待機している間、実行を一時停止する場合があります。

並列状態は、現在のワークフローインスタンス実行パスを、各ブランチごとに 1 つずつ複数のパスに分割する状態です。これらの実行パスは並列で実行され、定義された completionType パラメーター値に応じて現在の実行パスに結合されます。

JSON 形式の並列ワークフローの例

 {
     "name":"ParallelExec",
     "type":"parallel",
     "completionType": "allOf",
     "branches": [
        {
          "name": "Branch1",
          "actions": [
            {
                "functionRef": {
                    "refName": "functionNameOne",
                    "arguments": {
                        "order": "${ .someParam }"
                    }
                }
            }
        ]
        },
        {
          "name": "Branch2",
          "actions": [
              {
                  "functionRef": {
                      "refName": "functionNameTwo",
                      "arguments": {
                          "order": "${ .someParam }"
                      }
                  }
              }
          ]
        }
     ],
     "end": true
}
Copy to Clipboard Toggle word wrap

YAML 形式の並列ワークフローの例

name: ParallelExec
type: parallel
completionType: allOf
branches:
- name: Branch1
  actions:
  - functionRef:
      refName: functionNameOne
      arguments:
        order: "${ .someParam }"
- name: Branch2
  actions:
  - functionRef:
      refName: functionNameTwo
      arguments:
        order: "${ .someParam }"
end: true
Copy to Clipboard Toggle word wrap

前の例では、allOf は、状態が遷移または終了する前にすべてのブランチの実行が完了する必要があることを定義しています。このパラメーターが設定されていない場合、これがデフォルト値です。

第7章 OpenShift Serverless のサポート

このドキュメントで説明されている手順で問題が発生した場合は、Red Hat カスタマーポータル (http://access.redhat.com) にアクセスしてください。Red Hat Customer Portal を使用して、Red Hat 製品に関するテクニカルサポート記事の Red Hat ナレッジベースを検索または閲覧できます。Red Hat Global Support Services (GSS) にサポートケースを送信したり、他の製品ドキュメントにアクセスしたりすることもできます。

このガイドを改善するための提案がある場合、またはエラーを見つけた場合は、最も関連性の高いドキュメントコンポーネントの Jira イシュー を送信できます。コンテンツを簡単に見つけられるよう、セクション番号、ガイド名、OpenShift Serverless のバージョンなどの詳細情報を記載してください。

注記

クラスターサイズ要件の定義に関する次のセクションは、これらのディストリビューションに適用されます。

  • OpenShift Container Platform
  • OpenShift Dedicated

7.1. Red Hat ナレッジベースについて

Red Hat ナレッジベース は、お客様が Red Hat の製品やテクノロジーを最大限に活用できるようにするための豊富なコンテンツを提供します。Red Hat ナレッジベースは、Red Hat 製品のインストール、設定、および使用に関する記事、製品ドキュメント、および動画で構成されています。さらに、既知の問題に対する解決策を検索でき、それぞれに根本原因の簡潔な説明と修復手順が記載されています。

7.2. Red Hat ナレッジベースの検索

OpenShift Container Platform の問題が発生した場合には、初期検索を実行して、解決策を Red Hat ナレッジベース内ですでに見つけることができるかどうかを確認できます。

前提条件

  • Red Hat カスタマーポータルのアカウントがある。

手順

  1. Red Hat カスタマーポータル にログインします。
  2. 主な Red Hat カスタマーポータルの検索フィールドには、問題に関連する入力キーワードおよび文字列を入力します。これらには、以下が含まれます。

    • OpenShift Container Platform コンポーネント (etcd など)
    • 関連する手順 (installation など)
    • 明示的な失敗に関連する警告、エラーメッセージ、およびその他の出力
  3. Search をクリックします。
  4. OpenShift Container Platform 製品フィルターを選択します。
  5. ナレッジベース のコンテンツタイプフィルターを選択します。

7.3. サポートケースの送信

前提条件

  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • OpenShift CLI (oc) がインストールされている。
  • Red Hat カスタマーポータルのアカウントがある。
  • Red Hat の標準またはプレミアムサブスクリプションがある。

手順

  1. Red Hat カスタマーポータル にログインし、SUPPORT CASESOpen a case を選択します。
  2. 問題の該当するカテゴリー (Defect / Bug など)、製品 (OpenShift Container Platform)、およびすでに自動入力されていない場合は製品バージョンを選択します。
  3. Red Hat ナレッジベースで推奨されるソリューション一覧を確認してください。この一覧に上げられているソリューションは、報告しようとしている問題に適用される可能性があります。提案されている記事が問題に対応していない場合は、Continue をクリックします。
  4. 問題の簡潔で説明的な概要と、確認されている現象および予想される動作の詳細情報を入力します。
  5. 報告している問題に対する一致に基づいて推奨される Red Hat ナレッジベースソリューションの一覧が更新されることを確認してください。ケース作成プロセスでより多くの情報を提供すると、このリストの絞り込みが行われます。提案されている記事が問題に対応していない場合は、Continue をクリックします。
  6. アカウント情報が予想通りに表示されていることを確認し、そうでない場合は適宜修正します。
  7. 自動入力された OpenShift Container Platform クラスター ID が正しいことを確認します。正しくない場合は、クラスター ID を手動で取得します。

    • OpenShift Container Platform Web コンソールを使用してクラスター ID を手動で取得するには、以下を実行します。

      1. HomeDashboardsOverview に移動します。
      2. Details セクションの Cluster ID フィールドで値を見つけます。
    • または、OpenShift Container Platform Web コンソールで新規サポートケースを作成し、クラスター ID を自動的に入力することができます。

      1. ツールバーから、(?)HelpOpen Support Case に移動します。
      2. Cluster ID 値が自動的に入力されます。
    • OpenShift CLI (oc) を使用してクラスター ID を取得するには、以下のコマンドを実行します。

      $ oc get clusterversion -o jsonpath='{.items[].spec.clusterID}{"\n"}'
      Copy to Clipboard Toggle word wrap
  8. プロンプトが表示されたら、以下の質問に入力し、Continue をクリックします。

    • 動作はどこで発生しているか。どの環境を使用しているか。
    • 動作はいつ発生するか。頻度は。繰り返すか。特定のタイミングで発生するか。
    • 時間枠およびビジネスへの影響に関して提供できるどのような情報があるか ?
  9. 関連する診断データファイルをアップロードし、Continue をクリックします。

まずは、oc adm must-gather コマンドを使用して収集されるデータと、そのコマンドによって収集されない問題に固有のデータを含めることが推奨されます。

  1. 関連するケース管理の詳細情報を入力し、Continue をクリックします。
  2. ケースの詳細をプレビューし、Submit をクリックします。

7.4. サポート用の診断情報の収集

サポートケースを作成する際、ご使用のクラスターのデバッグ情報を Red Hat サポートに提供していただくと、Red Hat サポートの解決の糸口になります。must-gather ツールを使用すると、OpenShift Serverless に関連するデータを含む、OpenShift Container Platform クラスターの診断情報を収集できます。サポート対応を迅速に進めるためには、OpenShift Container Platform と OpenShift Serverless の両方の診断情報を提供してください。

7.4.1. must-gather ツールについて

oc adm must-gather CLI コマンドは、以下のような問題のデバッグに必要となる可能性のあるクラスターからの情報を収集します。

  • リソース定義
  • サービスログ

デフォルトで、oc adm must-gather コマンドはデフォルトのプラグインイメージを使用し、./must-gather.local に書き込みを行います。

または、以下のセクションで説明されているように、適切な引数を指定してコマンドを実行すると、特定の情報を収集できます。

  • 1 つ以上の特定の機能に関連するデータを収集するには、以下のセクションに示すように、イメージと共に --image 引数を使用します。

    以下に例を示します。

    $ oc adm must-gather  --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v4.13.0
    Copy to Clipboard Toggle word wrap
  • 監査ログを収集するには、以下のセクションで説明されているように -- /usr/bin/gather_audit_logs 引数を使用します。

    以下に例を示します。

    $ oc adm must-gather -- /usr/bin/gather_audit_logs
    Copy to Clipboard Toggle word wrap
    注記

    ファイルのサイズを小さくするために、監査ログはデフォルトの情報セットの一部として収集されません。

oc adm must-gather を実行すると、ランダムな名前を持つ新規 Pod がクラスターの新規プロジェクトに作成されます。データは Pod で収集され、must-gather.local で始まる新規ディレクトリーに保存されます。このディレクトリーは、現行の作業ディレクトリーに作成されます。

以下に例を示します。

NAMESPACE                      NAME                 READY   STATUS      RESTARTS      AGE
...
openshift-must-gather-5drcj    must-gather-bklx4    2/2     Running     0             72s
openshift-must-gather-5drcj    must-gather-s8sdh    2/2     Running     0             72s
...
Copy to Clipboard Toggle word wrap

任意で、--run-namespace オプションを使用して、特定の namespace で oc adm must-gather コマンドを実行できます。

以下に例を示します。

$ oc adm must-gather --run-namespace <namespace> --image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel8:v4.13.0
Copy to Clipboard Toggle word wrap

7.4.2. OpenShift Serverless データの収集について

oc adm must-gather CLI コマンドを使用してクラスターに関する情報を収集できます。これには、OpenShift Serverless の機能およびオブジェクトが含まれます。must-gather を使用して OpenShift Serverless データを収集するには、インストールされたバージョンの OpenShift Serverless イメージおよびイメージタグを指定する必要があります。

前提条件

  • OpenShift CLI (oc) がインストールされている。

手順

  • oc adm must-gather コマンドを使用してデータを収集します。

    $ oc adm must-gather --image=registry.redhat.io/openshift-serverless-1/svls-must-gather-rhel8:<image_version_tag>
    Copy to Clipboard Toggle word wrap

    コマンドの例

    $ oc adm must-gather --image=registry.redhat.io/openshift-serverless-1/svls-must-gather-rhel8:1.14.0
    Copy to Clipboard Toggle word wrap

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat