サブスクリプション¶
ChannelとSinkを作成した後、イベント配信を有効にするためにSubscriptionを作成できます。
Subscriptionは、イベントを配信するChannelとSink(Subscriberとも呼ばれます)を指定するSubscriptionオブジェクトで構成されます。 障害の処理方法など、Sink固有のオプションも指定できます。
Subscriptionオブジェクトの詳細については、Subscriptionを参照してください。
Subscriptionの作成¶
以下を実行して、ChannelとSinkの間にSubscriptionを作成します。
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タイプの<Group:Version:Kind>をChannel名の前に付ける必要があります。たとえば、KafkaがバッキングするChannelの場合はmessaging.knative.dev:v1beta1:KafkaChannelです。 -
--sinkは、イベントの配信先となるターゲットを指定します。デフォルトでは、<sink-name>は、Subscriptionと同じ名前空間にある、この名前の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を指定します。
このコマンド例では、mychannelという名前のChannelからmyserviceという名前のKnativeサービスにイベントをルーティングする、mysubscriptionという名前のSubscriptionを作成します。
注記
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>は前の手順で作成したファイルの名前です。
Subscriptionの一覧表示¶
kn CLIツールを使用して、既存のすべてのSubscriptionを一覧表示できます。
-
すべてのSubscriptionを一覧表示する
kn subscription list -
YAML形式でSubscriptionを一覧表示する
kn subscription list -o yaml
Subscriptionの説明¶
kn CLIツールを使用して、Subscriptionに関する詳細を出力できます。
kn subscription describe <subscription-name>
Subscriptionの削除¶
knまたはkubectl CLIツールを使用して、Subscriptionを削除できます。
kn subscription delete <subscription-name>
kubectl subscription delete <subscription-name>