Configure Broker defaults

    The default config-br-defaults ConfigMap is as follows:

    The following example shows a Broker object where the spec.config configuration is specified in a config-br-default-channel ConfigMap:

    1. apiVersion: eventing.knative.dev/v1
    2. kind: Broker
    3. metadata:
    4. annotations:
    5. eventing.knative.dev/broker.class: MTChannelBasedBroker
    6. name: default
    7. spec:
    8. # Configuration specific to this broker.
    9. config:
    10. apiVersion: v1
    11. kind: ConfigMap
    12. name: config-br-default-channel
    13. namespace: knative-eventing

    A Broker object that does not have a spec.config specified uses the config-br-default-channel ConfigMap dy default because this is specified in the config-br-defaults ConfigMap.

    However, if you have installed a different Channel implementation, for example, Kafka, and would like this to be used as the default Channel implementation for any Broker that is created, you can change the config-br-defaults ConfigMap to look as follows:

    1. apiVersion: v1
    2. kind: ConfigMap
    3. metadata:
    4. name: config-br-defaults
    5. namespace: knative-eventing
    6. labels:
    7. data:
    8. # Configuration for defaulting Channels that do not specify CRD implementations.
    9. default-br-config: |
    10. clusterDefault:
    11. brokerClass: MTChannelBasedBroker
    12. apiVersion: v1
    13. name: kafka-channel
    14. namespace: knative-eventing

    Now every Broker created in the cluster that does not have a spec.config will be configured to use the kafka-channel ConfigMap.

    You can modify the default Broker creation behavior for one or more namespaces.

    For example, if you wanted to use the kafka-channel ConfigMap for all other Brokers created, but wanted to use config-br-default-channel ConfigMap for namespace-1 and namespace-2, you would use the following ConfigMap settings:

    Broker class options

    When a Broker is created without a specified BrokerClass annotation, the default MTChannelBasedBroker Broker class is used, as specified in the config-br-defaults ConfigMap.

    The following example creates a Broker called default in the default namespace, and uses MTChannelBasedBroker as the implementation:

    1. kubectl create -f - <<EOF
    2. apiVersion: eventing.knative.dev/v1
    3. kind: Broker
    4. metadata:
    5. name: default
    6. namespace: default
    7. EOF

    To configure a Broker class, you can modify the eventing.knative.dev/broker.class annotation and spec.config for the Broker object. MTChannelBasedBroker is the Broker class default.

      1. apiVersion: eventing.knative.dev/v1
      2. kind: Broker
      3. metadata:
      4. annotations:
      5. eventing.knative.dev/broker.class: MTChannelBasedBroker
      6. name: default
      7. namespace: default
    1. Configure the with the details of the ConfigMap that defines the backing Channel for the Broker class:

    ​ You can configure the clusterDefault Broker class so that any Broker created in the cluster that does not have a BrokerClass annotation uses this default class.

    Example

    1. apiVersion: v1
    2. metadata:
    3. name: config-br-defaults
    4. namespace: knative-eventing
    5. labels:
    6. eventing.knative.dev/release: devel
    7. data:
    8. # Configuration for defaulting Channels that do not specify CRD implementations.
    9. default-br-config: |
    10. clusterDefault:
    11. brokerClass: MTChannelBasedBroker

    ​ You can modify the default Broker class for one or more namespaces.

    For example, if you want to use a KafkaBroker class for all other Brokers created on the cluster, but you want to use the MTChannelBasedBroker class for Brokers created in namespace-1 and namespace-2, you would use the following ConfigMap settings: ​

    1. apiVersion: v1
    2. kind: ConfigMap
    3. metadata:
    4. name: config-br-defaults
    5. namespace: knative-eventing
    6. labels:
    7. eventing.knative.dev/release: devel
    8. data:
    9. # Configuration for defaulting Channels that do not specify CRD implementations.
    10. default-br-config: |
    11. clusterDefault:
    12. brokerClass: KafkaBroker
    13. namespaceDefaults:
    14. namespace1:
    15. brokerClass: MTChannelBasedBroker