シーケンス¶
シーケンス CRD は、呼び出される関数の順序付きリストを定義する方法を提供します。各ステップで、イベントを修正、フィルタリング、または新しい種類のイベントを作成できます。シーケンスは、内部で Channel と Subscription を作成します。
情報
シーケンスには「ヘアピン」トラフィックが必要です。ポッドがサービス IP 経由で自身に到達できることを確認してください。「ヘアピン」トラフィックが利用できない場合は、クラスターレベル(通常は CNI)の設定であるため、クラスター管理者に問い合わせることができます。
使用法¶
シーケンス仕様¶
シーケンスの仕様には3つの部分があります。
Stepsは、Subscriberの順序付きリストを定義します。つまり、リストされた順序で実行される関数です。これらは、Subscriptionを作成する場合と同様に、messaging.v1.SubscriberSpecを使用して指定します。各ステップはAddressableである必要があります。ChannelTemplateは、ステップ間のChannelの作成に使用されるテンプレートを定義します。Reply(オプション) シーケンスの最後のステップの結果が送信される場所への参照。
シーケンスの状態¶
シーケンスの状態には4つの部分があります。
- シーケンスオブジェクト全体のステータスを詳しく示す条件
- このシーケンスの一部として作成された基礎となる
Channelリソースのステータスを伝える ChannelStatuses。これは配列であり、各ステータスはステップ番号に対応するため、配列内の最初のエントリは、最初のステップの前のChannelのステータスです。 - このシーケンスの一部として作成された基礎となる
Subscriptionリソースのステータスを伝える SubscriptionStatuses。これは配列であり、各ステータスはステップ番号に対応するため、配列内の最初のエントリは、最初のチャネルをSteps配列の最初のステップに接続するために作成されるSubscriptionです。 - AddressStatus は、Addressable を使用できる場所でシーケンスを使用できるように公開されます。このアドレスに送信すると、シーケンスの最初のステップの正面にある
Channelがターゲットになります。
例¶
次の各例では、イベントのソースとしてPingSourceを使用します。
また、各ステージを通過したことを示すために、受信イベントの非常に簡単な変換を実行する非常にシンプルなトランスフォーマーも使用します。
応答のないシーケンス¶
最初の例では、PingSource に直接接続された 3 ステップの Sequence を使用します。各ステップでは、単純に「- ハンドルされたSequence の最初のステップでは、受信メッセージを取得し、「- ハンドルされた 0」を受信メッセージに追加します。
応答のないシーケンス (最後のステップがターミナル) を参照してください。
応答のあるシーケンス¶
次の例では、PingSource に直接接続された同じ 3 ステップの Sequence を使用します。各ステップでは、単純に「- ハンドルされたSequence の最初のステップでは、受信メッセージを取得し、「- ハンドルされた 0」を受信メッセージに追加します。
」を追加します。唯一の違いは、Subscriber.Spec.Reply フィールドを使用して、最後のステップの出力をイベント表示ポッドに接続することです。
応答のあるシーケンス (最後のステップが出力を生成) を参照してください。
シーケンスの連結¶
次の例では、PingSource に直接接続された同じ 3 ステップの Sequence を使用します。各ステップでは、単純に「- ハンドルされたSequence の最初のステップでは、受信メッセージを取得し、「- ハンドルされた 0」を受信メッセージに追加します。
唯一の違いは、Subscriber.Spec.Reply フィールドを使用して、最後のステップの出力を、最初のパイプラインと同じメッセージ変更を行う別の Sequence (ただし、ステップは異なります) に接続することです。
シーケンスの連結を参照してください。
ブローカー/トリガーモデルでのシーケンスの使用¶
Sequence をターゲットとするトリガーを作成することもできます。今回は、PingSource を接続して Broker にイベントを送信し、Sequence に結果のイベントをブローカーに再度送信させ、Sequence の結果を他のトリガーで監視できるようにします。
ブローカー/トリガーモデルでのシーケンスの使用を参照してください。