訂閱¶
建立 Channel 和 Sink 後,您可以建立訂閱以啟用事件傳遞。
訂閱包含一個 Subscription 物件,該物件指定要將事件傳遞到的 Channel 和 Sink(也稱為訂閱者)。 您還可以指定一些 Sink 特定的選項,例如如何處理失敗。
有關 Subscription 物件的詳細資訊,請參閱Subscription。
建立訂閱¶
執行以下命令,在 Channel 和 Sink 之間建立訂閱
kn subscription create <subscription-name> \
--channel <Group:Version:Kind>:<channel-name> \
--sink <sink-prefix>:<sink-name> \
--sink-reply <sink-prefix>:<sink-name> \
--sink-dead-letter <sink-prefix>:<sink-name>
-
--channel
指定應處理的雲端事件的來源。 您必須提供 Channel 名稱。如果您沒有使用 Channel 資源支援的預設 Channel,則必須在 Channel 名稱前面加上指定 Channel 類型的<Group:Version:Kind>
。 例如,對於 Kafka 支援的 Channel,這是messaging.knative.dev:v1beta1:KafkaChannel
。 -
--sink
指定事件應傳遞到的目標目的地。 預設情況下,<sink-name>
會被解讀為與訂閱位於相同命名空間的此名稱的 Knative 服務。 您可以使用以下其中一個前綴來指定 Sink 的類型ksvc
:Knative 服務。svc
:Kubernetes 服務。channel
:應用作目的地的 Channel。 您只能在這裡參考預設的 Channel 類型。broker
:Eventing Broker。--sink-reply
是一個可選的引數,您可以使用它來指定將 Sink 回覆傳送到的位置。 它使用與--sink
旗標相同的命名慣例來指定 Sink。-
--sink-dead-letter
是一個可選的引數,您可以使用它來指定在發生故障時將 CloudEvent 傳送到的位置。 它使用與--sink
旗標相同的命名慣例來指定 Sink。ksvc
:Knative 服務。svc
:Kubernetes 服務。channel
:應用作目的地的 Channel。 這裡只能參考預設的 Channel 類型。broker
:Eventing Broker。
-
--sink-reply
和--sink-dead-letter
是可選的引數。 它們可用於指定將 Sink 回覆傳送到的位置,以及在發生故障時將 CloudEvent 傳送到的位置。 兩者都使用與--sink
旗標相同的命名慣例來指定 Sink。
此範例命令會建立一個名為 mysubscription
的訂閱,該訂閱會將來自名為 mychannel
的 Channel 的事件路由到名為 myservice
的 Knative 服務。
注意
Sink 前綴是可選的。您也可以將 --sink
的服務指定為 --sink <service-name>
,並省略 ksvc
前綴。
-
使用以下範例為 Subscription 物件建立 YAML 檔案
apiVersion: messaging.knative.dev/v1 kind: Subscription metadata: name: <subscription-name> # Name of the Subscription. namespace: default spec: channel: apiVersion: messaging.knative.dev/v1 kind: Channel name: <channel-name> # Name of the Channel that the Subscription connects to. delivery: # Optional delivery configuration settings for events. deadLetterSink: # When this is configured, events that failed to be consumed are sent to the deadLetterSink. # The event is dropped, no re-delivery of the event is attempted, and an error is logged in the system. # The deadLetterSink value must be a Destination. ref: apiVersion: serving.knative.dev/v1 kind: Service name: <service-name> reply: # Optional configuration settings for the reply event. # This is the event Sink that events replied from the subscriber are delivered to. ref: apiVersion: messaging.knative.dev/v1 kind: InMemoryChannel name: <service-name> subscriber: # Required configuration settings for the Subscriber. This is the event Sink that events are delivered to from the Channel. ref: apiVersion: serving.knative.dev/v1 kind: Service name: <service-name>
-
執行以下命令來套用 YAML 檔案
其中kubectl apply -f <filename>.yaml
<filename>
是您在上一步中建立的檔案名稱。
列出訂閱¶
您可以使用 kn
CLI 工具列出所有現有的訂閱。
-
列出所有訂閱
kn subscription list
-
以 YAML 格式列出訂閱
kn subscription list -o yaml
描述訂閱¶
您可以使用 kn
CLI 工具列印有關訂閱的詳細資訊
kn subscription describe <subscription-name>
刪除訂閱¶
您可以使用 kn
或 kubectl
CLI 工具刪除訂閱。
kn subscription delete <subscription-name>
kubectl subscription delete <subscription-name>