Integrating with Event Endpoint Management

Event Endpoint Management provides the capability to describe and catalog your Kafka topics as event sources, and to share the details of the topics with application developers within the organization. Application developers can discover the event sources and configure their applications to subscribe to the stream of events, providing self-service access to the message content from the event stream.

The following methods are available to integrate Event Endpoint Management with Event Streams:

  • Share all topics in your Event Streams instance with an Event Endpoint Management instance. You must have administrator access to the Event Endpoint Management UI and your Event Endpoint Management instance must have access to your Event Streams bootstrap endpoint. The procedure is described in the Event Endpoint Management documentation.
  • Share specific topics from your Event Streams instance with an Event Endpoint Management instance. The procedure is described in this topic.

Prerequisites

Ensure that your environment meets the following prerequisites:

  • To authenticate Event Endpoint Management to access Event Streams, ensure that an external listener is configured with SCRAM authentication.
  • Keycloak users must be authenticated to the OpenShift Container Platform UI.
  • SCRAM users must have an administrator role with the cluster.alter permission enabled.
  • Kafka Proxy is not enabled.
  • Event Endpoint Management version 11.1.1 or later is installed.
  • You have an access token from the Event Endpoint Management UI.
  • You downloaded the TLS CA certificate of your Event Endpoint Management instance as a PEM file and then formatted the certificate to be a single line by running the following command:

    awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' cluster-ca.pem
    

Setting up the connection

To set up a connection between your Event Streams and Event Endpoint Management instances, complete the following steps:

  1. Log in to your Kubernetes cluster as a cluster administrator by setting your kubectl context.
  2. Create a file that is called es-eem-configmap.yaml and copy the following YAML content into the file to create the ConfigMap that has the details for creating a server connection to your Event Endpoint Management instance:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: <event streams instance>-ibm-es-discovery-endpoints
      namespace: <event streams namespace>
    data:
      endpoints.json: |-
        {
          "instances": [
            {
              "name": "<event endpoint management instance>",
              "type": "event-endpoint-manager",
              "server": {
                "host": "<eem admin endpoint>",
                "port": 443,
                "ssl": true,
                "certificates": ["<event manager CA certificate>"]
              },
              "additional-info": {
                "eem-ui-url": "<event manager UI FQDN>"
              }
            }
          ]
        }
    

    Where:

    • <event streams instance> is the name of the Event Streams instance.
    • <event streams namespace> is the namespace where your Event Streams instance is installed.
    • <event endpoint management instance> is the name of the Event Endpoint Management instance. To get this name, run kubectl get eventendpointmanagement in your Event Endpoint Management namespace.
    • <eem admin endpoint> is the Event Endpoint Management admin API endpoint. For example: eeminst-eem-admin-1.test.example.com.
    • <event manager CA certificate> is the CA certificate of the Event Endpoint Management instance that you downloaded earlier, and formatted as a single line. For example:

       "certificates": ["-----BEGIN CERTIFICATE-----\nMIIDbTCCAlWgAwIBAgIRAOfIo8zI8tnbTM/k5yJ0P6gwDQYJKoZIhvcNAQELBQAw\nUD...sY=\n-----END CERTIFICATE-----\n"]
      
    • <event manager UI FQDN> is the fully qualified domain name of the Event Endpoint Management UI. For example: eeminst-eem-ui-1.test.example.com
  3. Create the ConfigMap by running the following command:

    kubectl apply -f es-eem-configmap.yaml
    

    The <event streams instance>-ibm-es-ui and <event streams instance>-ibm-es-admapi pods restart.

After the ConfigMap is created, you can share your topics with Event Endpoint Management from the Event Streams UI.

Note: To update the ConfigMap, restart the <event streams instance>-ibm-es-ui and <event streams instance>-ibm-es-admapi pods after the ConfigMap is created.