You are viewing the documentation for the container-native version of IBM Event Streams.
Looking for the managed service on IBM Cloud? Click here.

Prerequisites

Ensure your environment meets the following prerequisites before installing IBM Event Streams.

Container environment

IBM Event Streams 10.2.x is supported on the Red Hat OpenShift Container Platform.

  • Version 10.2.1 is installed by the Event Streams operator 2.2.1 by using operand version 10.2.1-eus, and includes Kafka version 2.6.2.
  • Version 10.2.0 is installed by the Event Streams operator 2.2.0 by using operand version 10.2.0-eus, and includes Kafka version 2.6.0.

For an overview of supported component and platform versions, see the support matrix.

Ensure you have the following set up for your environment:

Hardware requirements

Ensure your hardware can accommodate the resource requirements for your planned deployment.

Kubernetes manages the allocation of containers within your cluster. This allows resources to be available for other Event Streams components which might be required to reside on the same node.

For production systems, it is recommended to have Event Streams configured with at least 3 Kafka brokers, and to have one worker node for each Kafka broker. This requires a minimum of 3 worker nodes available for use by Event Streams. Ensure each worker node runs on a separate physical server. See the guidance about Kafka high availability for more information.

Resource requirements

Event Streams resource requirements depend on several factors. The following sections provide guidance about minimum requirements for a starter deployment, and options for initial production configurations.

Minimum resource requirements are as follows. Always ensure you have sufficient resources in your environment to deploy the Event Streams operator together with a development or a production Event Streams operand configuration.

Deployment CPU (cores) Memory (Gi) VPCs (see licensing)
Operator 1.0 1.0 N/A
Development 8.2 8.2 0.5
Production 12.2 14.2 3.0

Note: Event Streams provides samples to help you get started with deployments. The resource requirements for these specific samples are detailed in the planning section. If you do not have an Event Streams installation on your system yet, always ensure you include the resource requirements for the operator together with the intended Event Streams instance requirements (development or production).

Important: Licensing is based on the number of Virtual Processing Cores (VPCs) used by your Event Streams instance. See licensing considerations for more information. For a production installation of Event Streams, the ratio is 1 license required for every 1 VPC being used. For a non-production installation of Event Streams, the ratio is 1 license required for every 2 VPCs being used.

Event Streams is a Kubernetes operator-based release and uses custom resources to define your Event Streams configurations. The Event Streams operator uses the declared required state of your Event Streams in the custom resources to deploy and manage the entire lifecycle of your Event Streams instances. Custom resources are presented as YAML configuration documents that define instances of the EventStreams custom resource type.

The provided samples define typical configuration settings for your Event Streams instance, including broker configurations, security settings, and default values for resources such as CPU and memory defined as “request” and “limit” settings. Requests and limits are Kubernetes concepts for controlling resource types such as CPU and memory.

  • Requests set the minimum requirements a container requires to be scheduled. If your system does not have the required request value, then the services will not start up.
  • Limits set the value beyond which a container cannot consume the resource. It is the upper limit within your system for the service. Containers that exceed a CPU resource limit are throttled, and containers that exceed a memory resource limit are terminated by the system.

Ensure you have sufficient CPU capacity and physical memory in your environment to service these requirements. Your Event Streams instance can be dynamically updated later through the configuration options provided in the custom resource.

Installing Event Streams has two phases:

  1. Install the Event Streams operator: this will deploy the operator that will install and manage your Event Streams instances.
  2. Install one or more instances of Event Streams by applying configured custom resources.

Operator requirements

The Event Streams operator requires the following minimum resource requirements. Ensure you always include sufficient CPU capacity and physical memory in your environment to service the operator requirements.

CPU request (cores) CPU limit (cores) Memory request (Gi) Memory limit (Gi)
0.2 1.0 1.0 1.0

The Event Streams operator will automatically deploy the required IBM Cloud Platform Common Services if not present. Ensure you include in your calculations the resource requirements for the following Common Services components:

  • Catalog UI
  • Certificate Manager
  • Common Web UI
  • IAM
  • Ingress NGINX
  • Installer
  • Licensing
  • Management ingress
  • Metering
  • Mongo DB
  • Monitoring Exporters
  • Monitoring Grafana
  • Monitoring Prometheus Ext
  • Platform API

Note: If you are installing Event Streams in an existing IBM Cloud Pak for Integration deployment, the required Common Services might already be installed.

Important: Before installing the Event Streams operator, ensure you meet the prerequisites for installing foundational services and review the steps for preparing to install.

Cluster-scoped permissions required

The Event Streams operator requires the following cluster-scoped permissions:

  • Permission to list nodes in the cluster: When the Event Streams operator is deploying a Kafka cluster that spans multiple availability zones, it needs to label the pods with zone information. The permission to list nodes in the cluster is required to retrieve the information for these labels.
  • Permission to manage admission webhooks: The Event Streams operator uses admission webhooks to provide immediate validation and feedback about the creation and modification of Event Streams instances. The permission to manage webhooks is required for the operator to register these actions.
  • Permission to manage ConsoleYAMLSamples: ConsoleYAMLSamples are used to provide samples for Event Streams resources in the OpenShift Container Platform web console. The permission to manage ConsoleYAMLSamples is required for the operator to register the setting up of samples.
  • Permission to view ConfigMaps: Event Streams uses authentication services from IBM Cloud Platform Common Services. The status of these services is maintained in ConfigMaps, so the permission to view the contents of the ConfigMaps allows Event Streams to monitor the availability of the Common Services dependencies.
  • Permission to list specific CustomResourceDefinitions: This allows Event Streams to identify whether other optional dependencies have been installed into the cluster.
  • Permission to list ClusterRoles and ClusterRoleBindings: The Event Streams operator uses ClusterRoles created by the Operator Lifecycle Manager (OLM) as parents for supporting resources that the Event Streams operator creates. This is needed so that the supporting resources are correctly cleaned up when Event Streams is uninstalled. The permission to list ClusterRoles is required to allow the operator to identify the appropriate cluster role to use for this purpose.

Adding Event Streams geo-replication to a deployment

The Event Streams geo-replicator allows messages sent to a topic on one Event Streams cluster to be automatically replicated to another Event Streams cluster. This capability ensures messages are available on a separate system to form part of a disaster recovery plan.

To use this feature, ensure you have the following additional resources available. The following table shows the prerequisites for each geo-replicator node.

CPU request (cores) CPU limit (cores) Memory request (Gi) Memory limit (Gi) VPCs (see licensing)
1.0 2.0 2.0 2.0 1.0

For instructions about installing geo-replication, see configuring.

Red Hat OpenShift Security Context Constraints

Event Streams requires a Security Context Constraint (SCC) to be bound to the target namespace prior to installation.

By default, Event Streams uses the default restricted SCC that comes with the OpenShift Container Platform.

If you use a custom SCC (for example, one that is more restrictive), or have an operator that updates the default SCC, the changes might interfere with the functioning of your Event Streams deployment. To resolve any issues, apply the SCC provided by Event Streams as described in troubleshooting.

Network requirements

IBM Event Streams is supported for use with IPv4 networks only.

Data storage requirements

If you want to set up persistent storage, Event Streams requires block storage configured to use the XFS or ext4 file system. The use of file storage (for example, NFS) is not recommended.

For example, you can use one of the following systems:

IBM Event Streams UI

The IBM Event Streams user interface (UI) is supported on the following web browsers:

  • Google Chrome version 65 or later
  • Mozilla Firefox version 59 or later
  • Safari version 11.1 or later

IBM Event Streams CLI

The IBM Event Streams command line interface (CLI) is supported on the following systems:

  • Windows 10 or later
  • Linux® Ubuntu 16.04 or later
  • macOS 10.13 (High Sierra) or later

See the post-installation tasks for information about installing the CLI

Kafka clients

The Apache Kafka Java client included with IBM Event Streams is supported for use with the following Java versions:

  • IBM Java 8 or later
  • Oracle Java 8 or later

You can also use other Kafka version 2.0 or later clients when connecting to Event Streams. If you encounter client-side issues, IBM can assist you to resolve those issues (see our support policy).

Event Streams is designed for use with clients based on the librdkafka implementation of the Apache Kafka protocol.