チャネルの種類とデフォルト値¶
Knativeは2種類のチャネルを使用します。
- 汎用的なチャネルオブジェクト。
- それぞれに独自のCustom Resource Definition(CRD)を持つチャネル実装(InMemoryChannelやKafkaChannelなど)。KafkaChannelは、順序付けられたコンシューマー配信保証をサポートしており、これは、CloudEventサブスクライバーからの正常な応答を待つ、パーティションごとのブロッキングコンシューマーです。これにより、パーティションの次のメッセージが配信される前に、そのパーティションの前のメッセージが正しく処理されることが保証されます。
カスタムチャネル実装は、インメモリやブローカーベースなど、それぞれ独自のイベント配信メカニズムを持っています。ブローカーの例としては、KafkaBrokerやGCP Pub/Sub Brokerなどがあります。
KnativeはデフォルトでInMemoryChannelチャネル実装を提供します。このデフォルト実装は、Apache KafkaやNATSSチャネルなどの特定の実装タイプを構成したくない開発者にとって便利です。
どのチャネル実装CRDを使用するかを指定せずにチャネルを作成したい場合は、汎用的なチャネルオブジェクトを使用できます。これは、順序付けや永続性など、特定のチャネル実装が提供するプロパティを気にせず、クラスタ管理者によって選択された実装を使用したい場合に便利です。
クラスタ管理者は、`knative-eventing`名前空間内の`default-ch-webhook` ConfigMapを編集することで、デフォルトのチャネル実装設定を変更できます。
ConfigMapの変更の詳細については、Eventing Operatorカスタムリソースの構成を参照してください。
デフォルトチャネルは、クラスタ、クラスタ上の名前空間、またはその両方に対して設定できます。
注意
名前空間にデフォルトのチャネル実装が設定されている場合、クラスタの設定を上書きします。
次の例では、クラスタのデフォルトチャネル実装はInMemoryChannelですが、`example-namespace`の名前空間のデフォルトチャネル実装はKafkaChannelです。
apiVersion: v1
kind: ConfigMap
metadata:
name: default-ch-webhook
namespace: knative-eventing
data:
default-ch-config: |
clusterDefault:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
namespaceDefaults:
example-namespace:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
spec:
numPartitions: 2
replicationFactor: 1
注意
InMemoryChannelチャネルは、本番環境で使用しないでください。