コンテンツにスキップ

サブスクリプション

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プレフィックスを省略することもできます。

  1. 次の例を使用して、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>
    
  2. コマンドを実行して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>

次の手順

サイトのトラフィックを理解するために、アナリティクスとCookieを使用しています。お客様のサイトの利用に関する情報は、その目的のためにGoogleと共有されます。詳細はこちら