Creating a Broker¶
Once you have installed Knative Eventing and a Broker implementation, you can create an instance of a Broker.
Knative Eventing provides by default the MTChannelBasedBroker. Its default backing channel is the
InMemoryChannel should not be used in production. Other Broker types and their configuration options can be found under Available Broker types.
You can create a Broker by using the
kn CLI or by applying YAML files using
You can create a Broker by entering the following command:
kn broker create <broker-name> -n <namespace>
This will create a new Broker of your default Broker class and default Broker configuration (both defined in the
If you choose not to specify a namespace, the Broker will be created in the current namespace.
If you have multiple Broker classes installed in your cluster, you can specify the Broker class via the
kn broker create <broker-name> -n <namespace> --class MTChannelBasedBroker
Optional: Verify that the Broker was created by listing existing Brokers:
kn broker list
Optional: You can also verify the Broker exists by describing the Broker you have created:
kn broker describe <broker-name>
The YAML in the following example creates a Broker named
Create a Broker by creating a YAML file using the following template:
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: name: <broker-name> namespace: <namespace>
This creates a new Broker using the default Broker class and default Broker configuration, both of which are defined in the
Apply the YAML file:Where
kubectl apply -f <filename>.yaml
<filename>is the name of the file you created in the previous step.
Optional: Verify that the Broker is working correctly:
kubectl -n <namespace> get broker <broker-name>
This shows information about your Broker. If the Broker is working correctly, it shows a
NAME READY REASON URL AGE default True http://broker-ingress.knative-eventing.svc.cluster.local/default/default 1m
False, wait a few moments and then run the command again.
Broker class options¶
When a Broker is created without a specified
eventing.knative.dev/broker.class annotation, the default
MTChannelBasedBroker Broker class is used, as specified by default in the
In case you have multiple Broker classes installed in your cluster and want to use a non-default Broker class for a Broker, you can modify the
eventing.knative.dev/broker.class annotation and
spec.config for the Broker object.
MTChannelBasedBrokerin the following example with the class type you want to use. Be aware that the Broker class annoation is immutable and thus can't be updated after the Broker got created:
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: annotations: eventing.knative.dev/broker.class: MTChannelBasedBroker name: default namespace: default
spec.configwith the details of the ConfigMap that defines the required configuration for the Broker class (e.g. with some Channel configurations in case of the
apiVersion: eventing.knative.dev/v1 kind: Broker metadata: annotations: eventing.knative.dev/broker.class: MTChannelBasedBroker name: default namespace: default spec: config: apiVersion: v1 kind: ConfigMap name: config-br-default-channel namespace: knative-eventing
For further information about configuring a default Broker class cluster wide or on a per namespace basis, check the Administrator configuration options.