序列¶
序列 CRD 提供定義將被調用的函數依序列表的方法。每個步驟都可以修改、篩選或建立新的事件類型。序列會在底層建立 Channel
和 Subscription
。
資訊
序列需要「髮夾彎」流量。請驗證您的 Pod 可以透過服務 IP 連線到自身。如果「髮夾彎」流量不可用,您可以聯絡您的叢集管理員,因為這是叢集層級(通常是 CNI)設定。
用法¶
序列規格¶
序列的規格有三個部分
Steps
定義Subscriber
的依序列表,也就是以列出的順序執行的函數。這些是使用messaging.v1.SubscriberSpec
指定的,就像您在建立Subscription
時一樣。每個步驟都應為Addressable
。ChannelTemplate
定義將用於在步驟之間建立Channel
的範本。Reply
(可選) 參考序列中最後一個步驟的結果傳送到的位置。
序列狀態¶
序列的狀態有四個部分
- 條件,詳細說明序列物件的整體狀態
- ChannelStatuses,傳達作為此序列一部分建立的基礎
Channel
資源的狀態。它是一個陣列,每個狀態都對應於步驟編號,因此陣列中的第一個條目是第一個步驟之前的Channel
狀態。 - SubscriptionStatuses,傳達作為此序列一部分建立的基礎
Subscription
資源的狀態。它是一個陣列,每個狀態都對應於步驟編號,因此陣列中的第一個條目是建立來將第一個通道連接到Steps
陣列中第一個步驟的Subscription
。 - AddressStatus,它被公開,以便可以使用 Addressable 的地方可以使用序列。傳送到此位址將會以序列中第一個步驟前面的
Channel
作為目標。
範例¶
對於以下每個範例,您都使用 PingSource
作為事件的來源。
我們還使用一個非常簡單的 轉換器,它對傳入事件執行非常簡單的轉換,以示範它們已通過每個階段。
沒有回覆的序列¶
在第一個範例中,我們將使用一個直接連接到 PingSource
的 3 步驟 Sequence
。每個步驟只是簡單地附加 "- Handled bySequence
中的第一個步驟會將傳入訊息附加 "- Handled by 0" 到傳入訊息。
請參閱 沒有回覆的序列 (最後一個步驟為終端)。
有回覆的序列¶
在下一個範例中,我們將使用相同的直接連接到 PingSource
的 3 步驟 Sequence
。每個步驟只是簡單地附加 "- Handled bySequence
中的第一個步驟會將傳入訊息附加 "- Handled by 0" 到傳入訊息。
唯一的區別是,我們將使用 Subscriber.Spec.Reply
欄位將最後一個步驟的輸出連接到事件顯示 Pod。
請參閱 有回覆的序列 (最後一個步驟產生輸出)。
串聯序列¶
在下一個範例中,我們將使用相同的直接連接到 PingSource
的 3 步驟 Sequence
。每個步驟只是簡單地附加 "- Handled bySequence
中的第一個步驟會將傳入訊息附加 "- Handled by 0" 到傳入訊息。
唯一的區別是,我們將使用 Subscriber.Spec.Reply
欄位將最後一個步驟的輸出連接到另一個 Sequence
,該序列執行與第一個管道相同的訊息修改 (但步驟不同)。
請參閱 串聯序列。
搭配 Broker/Trigger 模型使用序列¶
您還可以建立以 Sequence
為目標的 Trigger。這次,我們將連接 PingSource
以將事件傳送到 Broker
,然後讓 Sequence
將產生的事件發回 Broker,以便其他 Triggers 可以觀察到 Sequence
的結果。