Event Endpoint Management continues to be enhanced

Event Endpoint Management continues to be available and enhanced as part of IBM's integration platforms.

End of Marketing announcement for IBM Event Automation

Event Streams and Event Processing are deprecated and no enhancements will be provided. Support and security fixes will be provided in line with published support lifecycle policies. Future event-driven solutions that make use of Apache Kafka and Apache Flink will be delivered by IBM Confluent.

For more information, see how you can plan your transition.

Setting up Confluent Platform

Before setting up Confluent Platform, complete setting up certificates. If your cluster uses a multi-zone deployment, also complete configuring rack awareness. In this phase, install the Confluent for Kubernetes (CFK) operator and deploy the required component custom resources in your target namespace.

Setup checklist

Review the following setup tasks:

Determining components to deploy

Deploy only the Confluent Platform components that match your existing Event Streams deployment.

Component CFK custom resource When to deploy
Kafka Kafka Always
Schema Registry SchemaRegistry If you are using Apicurio Registry
Control Center ControlCenter To replace the Event Streams UI
Kafka Connect Connect If you are using Kafka Connect
REST Proxy KafkaRestProxy If you are using the Kafka Bridge or REST producer
Self-Balancing Clusters Setting on the Kafka custom resource If you are replacing Cruise Control

Installing CFK and deploying custom resources

Install the CFK operator in your target namespace by following the Confluent documentation, and then create the component custom resources by running kubectl apply -f. Confluent Platform 8.x uses KRaft mode for cluster metadata management. Deploy the custom resources in the following order:

Step Custom resource Notes
1 KRaftController Manages cluster metadata. Deploy 3 replicas for high availability.
2 Kafka The broker component. References the KRaftController through spec.dependencies.kRaftController.clusterRef.
3 SchemaRegistry Deploy if you are using Apicurio Registry.
4 Connect Deploy if you are using Kafka Connect.
5 ControlCenter Replaces the Event Streams UI.
6 KafkaRestClass Required for destination-initiated ClusterLink resources and for KafkaTopic resources on RBAC-enabled clusters.

Wait for each resource to reach a Ready state before deploying the next. Run the following command to check the rollout status:

kubectl rollout status statefulset/kafka -n <cp-namespace>

Where:

  • <cp-namespace> is the Kubernetes namespace where you are deploying Confluent Platform.

Use a Confluent Platform image that includes the same Kafka version as your Event Streams deployment. Verify the exact versions by checking the Confluent Platform and Kafka interoperability matrix.

Configuring listeners and security

Configure the Confluent Platform listeners and security settings to match your Event Streams security configuration. For more information, see the Confluent security documentation.

Layer Event Streams Confluent Platform equivalent
Wire encryption TLS 1.2+ TLS 1.2+
External authentication SCRAM-SHA-512 SASL/PLAIN over TLS (type: plain, tls.enabled: true)
External authentication (mTLS) Mutual TLS (authentication: tls) mTLS (type: mtls) with principalMappingRules
External authentication (OAuth) OAUTHBEARER (strimzi-kafka-oauth library) OAUTHBEARER (native Kafka OAuthBearerLoginCallbackHandler, type: oauth listener)
Internal authentication Mutual TLS (mTLS) mTLS or TLS without client authentication
Authorization Kafka ACLs (KafkaUser custom resource) Kafka ACLs (type: simple, with superUsers)
Authorization (OAuth) KeycloakAuthorizer (Keycloak RBAC rules) AclAuthorizer or Confluent RBAC
Schema Registry authentication SCRAM or mTLS TLS (typically no authentication on the internal listener)

Note: CFK’s primary external listener authentication method is SASL/PLAIN over TLS, so external client applications connect securely by using a username and password. You can configure SCRAM-SHA-512 on a CFK listener through configOverrides, but this configuration is not supported through the CFK API and is outside the scope of Confluent Support. Plan to update your external client applications from SCRAM-SHA-512 to SASL/PLAIN. For more information, see component mapping.

mTLS listener configuration

If your Event Streams deployment uses mTLS-authenticated external clients, configure the Confluent Platform external listener for mTLS. This requires two certificates: one for internal Kafka/KRaft communication and one for the external listener. The following examples use cert-manager to issue these certificates. If you are using a different certificate management mechanism, issue equivalent certificates with the same SANs and usages through your chosen tooling.

Before you create these certificates, choose your certificate migration path and set up your certificate authorities. For the instructions, see setting up certificates. The issuer names referenced in the following section (cluster-ca-issuer and client-ca-issuer) represent the mechanism you use to sign certificates from your CAs, whether that is cert-manager, your corporate PKI, or another tool.

Broker replication certificate (cluster-tls): Issue a certificate signed by your Cluster CA issuer, with secretName: cluster-tls. The SANs must cover the internal cluster DNS for each CFK component you deploy, including *.<namespace>.svc.cluster.local, *.<kafka-cr-name>.<namespace>.svc.cluster.local, and *.<kraftcontroller-cr-name>.<namespace>.svc.cluster.local. Add equivalent entries for any other components (SchemaRegistry, Connect, ControlCenter) you deploy. Set usages to server auth and client auth. For the cert-manager Certificate field reference, see the cert-manager API documentation.

External listener certificate (client-tls): Issue a certificate signed by your Client CA issuer, with secretName: client-tls. The SANs must cover the internal cluster DNS (*.<namespace>.svc.cluster.local, *.<kafka-cr-name>.<namespace>.svc.cluster.local) and the external broker addresses that clients connect to. Set usages to server auth only. This certificate is the broker TLS server certificate on the external listener. Client certificates used for mTLS authentication are separate and must have client auth. The ca.crt embedded in this secret is the trust anchor the broker uses to verify incoming mTLS client certificates. It must be the Client CA, not the Cluster CA.

Run the following command to verify both certificates are issued before deploying the Kafka custom resource:

kubectl get certificate -n <cp-namespace>
# Both certificates must show READY=True

Where:

  • <cp-namespace> is the Kubernetes namespace where you are deploying Confluent Platform.

Configure the external listener on the Kafka custom resource to use mTLS and reference these secrets:

listeners:
  external:
    authentication:
      type: mtls
      mtls:
        principalMappingRules:
          - 'RULE:.*CN[\s]?=[\s]?([a-zA-Z0-9.-]*)?.*/$1/'
        sslClientAuthentication: required
    externalAccess:
      type: route
      route:
        bootstrapPrefix: kafka-bootstrap
        brokerPrefix: kafka-broker
        domain: apps.<openshift-domain>
    tls:
      enabled: true
      secretRef: client-tls      # external listener trusts the Client CA
  replication:
    tls:
      enabled: true
      secretRef: cluster-tls

The principalMappingRules regular expression extracts the CN value from the client certificate DN and uses it as the Kafka principal (for example, User:admin). Set the commonName in each client certificate to match the original Event Streams KafkaUser name to preserve ACLs. For the full mTLS user migration workflow, including CA setup, user certificate creation, and client configuration, see migrating mTLS users.

Note: If you used the brokerCertChainAndKey listener certificate override in Event Streams, you can reuse your existing PKI broker certificate on the CFK external listener so that client truststores require no changes. Follow the steps in migrating listener certificate override to build the client-tls secret from your existing PKI certificate before you deploy the Kafka custom resource.

Configuring tiered storage

Event Streams uses the Aiven Remote Storage Manager plugin for tiered storage. Confluent Platform uses its own native tiered storage implementation. Because the two implementations use different storage formats, you must create a separate object-storage bucket for Confluent Platform. Do not point Confluent Platform at the bucket used by Event Streams.

Enable Confluent tiered storage on the Kafka custom resource through configOverrides and a mounted credentials secret. For configuration details, see the Confluent Tiered Storage documentation.

Your existing remote data on Event Streams does not need to be copied separately. Cluster Linking accesses and migrates the remote data through the source broker during replication. After you promote a topic on Confluent Platform, enable tiered storage for that topic so that Confluent Platform starts offloading data to its own bucket. For step-by-step instructions, see migrating topic configuration and data.

Verifying cluster readiness

Run the following command to check the status of all deployed resources:

kubectl get kraftcontrollers.platform.confluent.io,kafkas.platform.confluent.io,schemaregistries.platform.confluent.io,connects.platform.confluent.io,controlcenters.platform.confluent.io,kafkarestclasses.platform.confluent.io -n <cp-namespace>

Where:

  • <cp-namespace> is the Kubernetes namespace where you are deploying Confluent Platform.

Each deployed resource must show READY = True before you proceed with migration.