From ccaeb68ae36dfaf7ef58c947d2aec9f3d76e8f72 Mon Sep 17 00:00:00 2001 From: Tom Bentley Date: Mon, 24 Jun 2019 14:43:44 +0100 Subject: [PATCH] Release 0.12.1 (#76) --- _data/releases.yaml | 2 + charts/index.yaml | 27 +- docs/0.12.1/0.12.1.html | 31302 +++++++++++++++ docs/0.12.1/full.html | 31750 ++++++++++++++++ docs/0.12.1/images/cluster-operator.png | Bin 0 -> 59301 bytes docs/0.12.1/images/cluster_operator.png | Bin 0 -> 47073 bytes docs/0.12.1/images/grafana_home.png | Bin 0 -> 11209 bytes .../images/grafana_import_dashboard.png | Bin 0 -> 68172 bytes .../0.12.1/images/grafana_kafka_dashboard.png | Bin 0 -> 1422724 bytes docs/0.12.1/images/grafana_login.png | Bin 0 -> 34562 bytes .../images/grafana_prometheus_data_source.png | Bin 0 -> 124583 bytes .../images/grafana_zookeeper_dashboard.png | Bin 0 -> 860854 bytes docs/0.12.1/images/operators.png | Bin 0 -> 107821 bytes docs/0.12.1/images/secure_communication.png | Bin 0 -> 55371 bytes docs/0.12.1/images/topic-operator.png | Bin 0 -> 59729 bytes docs/0.12.1/images/topic_operator.png | Bin 0 -> 48734 bytes docs/0.12.1/index.md | 8 + 17 files changed, 63088 insertions(+), 1 deletion(-) create mode 100644 docs/0.12.1/0.12.1.html create mode 100644 docs/0.12.1/full.html create mode 100644 docs/0.12.1/images/cluster-operator.png create mode 100644 docs/0.12.1/images/cluster_operator.png create mode 100644 docs/0.12.1/images/grafana_home.png create mode 100644 docs/0.12.1/images/grafana_import_dashboard.png create mode 100644 docs/0.12.1/images/grafana_kafka_dashboard.png create mode 100644 docs/0.12.1/images/grafana_login.png create mode 100644 docs/0.12.1/images/grafana_prometheus_data_source.png create mode 100644 docs/0.12.1/images/grafana_zookeeper_dashboard.png create mode 100644 docs/0.12.1/images/operators.png create mode 100644 docs/0.12.1/images/secure_communication.png create mode 100644 docs/0.12.1/images/topic-operator.png create mode 100644 docs/0.12.1/images/topic_operator.png create mode 100644 docs/0.12.1/index.md diff --git a/_data/releases.yaml b/_data/releases.yaml index f7f2c3eee..b6f0c88e5 100644 --- a/_data/releases.yaml +++ b/_data/releases.yaml @@ -1,4 +1,6 @@ operator: + - version: 0.12.1 + defaultKafkaVersion: 2.2.1 - version: 0.12.0 defaultKafkaVersion: 2.2.1 - version: 0.11.4 diff --git a/charts/index.yaml b/charts/index.yaml index 06c84d333..70459b491 100644 --- a/charts/index.yaml +++ b/charts/index.yaml @@ -1,6 +1,31 @@ apiVersion: v1 entries: strimzi-kafka-operator: + - apiVersion: v1 + appVersion: 0.12.1 + created: 2019-06-24T11:35:41.042200072+01:00 + description: 'Strimzi: Kafka as a Service' + digest: a9e82303e02d412e4e1b5e13d2b9b2d5c6290d6411f3aa78cd7647cd617dfd89 + home: http://strimzi.io/ + icon: https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/master/documentation/logo/strimzi_logo.png + keywords: + - kafka + - queue + - stream + - event + - messaging + - datastore + - topic + maintainers: + - name: ppatierno + - name: scholzj + - name: tombentley + name: strimzi-kafka-operator + sources: + - https://github.com/strimzi/strimzi-kafka-operator + urls: + - https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.12.1/strimzi-kafka-operator-helm-chart-0.12.1.tgz + version: 0.12.1 - apiVersion: v1 appVersion: 0.12.0 created: 2019-06-14T16:28:55.590731075+01:00 @@ -326,4 +351,4 @@ entries: urls: - https://github.com/strimzi/strimzi-kafka-operator/releases/download/0.6.0/strimzi-kafka-operator-0.6.0.tgz version: 0.6.0 -generated: 2019-06-14T16:28:55.588702439+01:00 +generated: 2019-06-24T11:35:41.040280826+01:00 diff --git a/docs/0.12.1/0.12.1.html b/docs/0.12.1/0.12.1.html new file mode 100644 index 000000000..f40a381f5 --- /dev/null +++ b/docs/0.12.1/0.12.1.html @@ -0,0 +1,31302 @@ +
+
Table of Contents
+ +
+
+

1. Overview of Strimzi

+
+
+

Strimzi is based on Apache Kafka, a popular platform for streaming data delivery and processing. Strimzi makes it easy to run Apache Kafka on OpenShift or Kubernetes.

+
+
+

Strimzi provides three operators:

+
+
+
+
Cluster Operator
+
+

Responsible for deploying and managing Apache Kafka clusters within an OpenShift or Kubernetes cluster.

+
+
Topic Operator
+
+

Responsible for managing Kafka topics within a Kafka cluster running within an OpenShift or Kubernetes cluster.

+
+
User Operator
+
+

Responsible for managing Kafka users within a Kafka cluster running within an OpenShift or Kubernetes cluster.

+
+
+
+
+
Operators within the Strimzi architecture
+

Operators

+
+
+

This guide describes how to install and use Strimzi.

+
+
+

1.1. Kafka Key Features

+
+
    +
  • +

    Designed for horizontal scalability

    +
  • +
  • +

    Message ordering guarantee at the partition level

    +
  • +
  • +

    Message rewind/replay

    +
    +
      +
    • +

      "Long term" storage allows the reconstruction of an application state by replaying the messages

      +
    • +
    • +

      Combines with compacted topics to use Kafka as a key-value store

      +
    • +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+

1.2. Document Conventions

+
+
Replaceables
+

In this document, replaceable text is styled in monospace and italics.

+
+
+

For example, in the following code, you will want to replace my-namespace with the name of your namespace:

+
+
+
+
sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
+
+
+
+
+
+
+

2. Getting started with Strimzi

+
+
+

Strimzi works on all types of clusters, from public and private clouds to local deployments intended for development. +This guide expects that an OpenShift or Kubernetes cluster is available and the +kubectl and +oc command-line tools are installed and configured to connect to the running cluster.

+
+
+

When no existing OpenShift or Kubernetes cluster is available, Minikube or Minishift can be used to create a local +cluster. More details can be found in Installing Kubernetes and OpenShift clusters.

+
+
+ + + + + +
+
Note
+
+To run the commands in this guide, your +Kubernetes and +OpenShift Origin user must have the rights to manage role-based access control (RBAC). +
+
+
+

For more information about OpenShift and setting up OpenShift cluster, see OpenShift documentation.

+
+
+

2.1. Installing Strimzi and deploying components

+
+

To install Strimzi, download the release artefacts from GitHub.

+
+
+

The folder contains several YAML files to help you deploy the components of Strimzi to OpenShift or Kubernetes, perform common operations, and configure your Kafka cluster. The YAML files are referenced throughout this documentation.

+
+
+

Additionally, a Helm Chart is provided for deploying the Cluster Operator using Helm. The container images are available through the Docker Hub.

+
+
+

The remainder of this chapter provides an overview of each component and instructions for deploying the components to OpenShift or Kubernetes using the YAML files provided.

+
+
+ + + + + +
+
Note
+
+Although container images for Strimzi are available in the Docker Hub, we recommend that you use the YAML files provided instead. +
+
+
+
+

2.2. Custom resources

+
+

Custom resource definitions (CRDs) extend the Kubernetes API, providing definitions to create and modify custom resources to an OpenShift or Kubernetes cluster. Custom resources are created as instances of CRDs.

+
+
+

In Strimzi, CRDs introduce custom resources specific to Strimzi to an OpenShift or Kubernetes cluster, such as Kafka, Kafka Connect, Kafka Mirror Maker, and users and topics custom resources. CRDs provide configuration instructions, defining the schemas used to instantiate and manage the Strimzi-specific resources. CRDs also allow Strimzi resources to benefit from native OpenShift or Kubernetes features like CLI accessibility and configuration validation.

+
+
+

CRDs require a one-time installation in a cluster. Depending on the cluster setup, installation typically requires cluster admin privileges.

+
+
+ + + + + +
+
Note
+
+Access to manage custom resources is limited to Strimzi administrators. +
+
+
+

CRDs and custom resources are defined as YAML files.

+
+
+

A CRD defines a new kind of resource, such as kind:Kafka, within an OpenShift or Kubernetes cluster.

+
+
+

The OpenShift or Kubernetes API server allows custom resources to be created based on the kind and understands from the CRD how to validate and store the custom resource when it is added to the OpenShift or Kubernetes cluster.

+
+
+ + + + + +
+
Warning
+
+When CRDs are deleted, custom resources of that type are also deleted. Additionally, the resources created by the custom resource, such as pods and statefulsets are also deleted. +
+
+ +
+

2.2.1. Strimzi custom resource example

+
+

Each Strimzi-specific custom resource conforms to the schema defined by the CRD for the resource’s kind.

+
+
+

To understand the relationship between a CRD and a custom resource, let’s look at a sample of the CRD for a Kafka topic.

+
+
+
Kafka topic CRD
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: CustomResourceDefinition
+metadata: (1)
+  name: kafkatopics.kafka.strimzi.io
+  labels:
+    app: strimzi
+spec: (2)
+  group: kafka.strimzi.io
+  versions:
+    v1beta1
+  scope: Namespaced
+  names:
+    # ...
+    singular: kafkatopic
+    plural: kafkatopics
+    shortNames:
+    - kt (3)
+  additionalPrinterColumns: (4)
+      # ...
+  validation: (5)
+    openAPIV3Schema:
+      properties:
+        spec:
+          type: object
+          properties:
+            partitions:
+              type: integer
+              minimum: 1
+            replicas:
+              type: integer
+              minimum: 1
+              maximum: 32767
+      # ...
+
+
+
+
    +
  1. +

    The metadata for the topic CRD, its name and a label to identify the CRD.

    +
  2. +
  3. +

    The specification for this CRD, including the group (domain) name, the plural name and the supported schema version, which are used in the URL to access the API of the topic. The other names are used to identify instance resources in the CLI. For example, kubectl get kafkatopic my-topic or kubectl get kafkatopics.

    +
  4. +
  5. +

    The shortname can be used in CLI commands. For example, kubectl get kt can be used as an abbreviation instead of kubectl get kafkatopic.

    +
  6. +
  7. +

    The information presented when using a get command on the custom resource.

    +
  8. +
  9. +

    openAPIV3Schema validation provides validation for the creation of topic custom resources. For example, a topic requires at least one partition and one replica.

    +
  10. +
+
+
+ + + + + +
+
Note
+
+You can identify the CRD YAML files supplied with the Strimzi installation files, because the file names contain an index number followed by ‘Crd’. +
+
+
+

Here is a corresponding example of a KafkaTopic custom resource.

+
+
+
Kafka topic custom resource
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaTopic (1)
+metadata:
+  name: my-topic
+  labels:
+    strimzi.io/cluster: my-cluster
+spec: (2)
+  partitions: 1
+  replicas: 1
+  config:
+    retention.ms: 7200000
+    segment.bytes: 1073741824
+
+
+
+
    +
  1. +

    The kind and apiVersion identify the CRD of which the custom resource is an instance.

    +
  2. +
  3. +

    The spec shows the number of partitions and replicas for the topic as well as configuration for the retention period for a message to remain in the topic and the segment file size for the log.

    +
  4. +
+
+
+

Custom resources can be applied to a cluster through the platform CLI. When the custom resource is created, it uses the same validation as the built-in resources of the Kubernetes API.

+
+
+

After a KafkaTopic custom resource is created, the Topic Operator is notified and corresponding Kafka topics are created in Strimzi.

+
+
+
+

2.2.2. Strimzi custom resource status

+
+

The status property of a Strimzi-specific custom resource publishes the current state of the resource to users and tools that need the information.

+
+
+

Status information is useful for tracking progress related to a resource achieving its desired state, as defined by the spec property. The status provides the time and reason the state of the resource changed and details of events preventing or delaying the Operator from realizing the desired state.

+
+
+

Strimzi creates and maintains the status of custom resources, periodically evaluating the current state of the custom resource and updating its status accordingly.

+
+
+

When performing an update on a custom resource using kubectl edit, for example, its status is not editable. Moreover, changing the status would not affect the configuration of the Kafka cluster.

+
+
+ + + + + +
+
Important
+
+The status property feature for Strimzi-specific custom resources is still under development and only available for Kafka resources. +
+
+
+

Here we see the status property specified for a Kafka custom resource.

+
+
+
Kafka custom resource with status
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+spec:
+  # ...
+status:
+  conditions: (1)
+  - lastTransitionTime: 2019-06-02T23:46:57+0000
+    status: "True"
+    type: Ready (2)
+  listeners: (3)
+  - addresses:
+    - host: my-cluster-kafka-bootstrap.myproject.svc
+      port: 9092
+    type: plain
+  - addresses:
+    - host: my-cluster-kafka-bootstrap.myproject.svc
+      port: 9093
+    type: tls
+  - addresses:
+    - host: 172.29.49.180
+      port: 9094
+    type: external
+    # ...
+
+
+
+
    +
  1. +

    Status conditions describe criteria related to the status that cannot be deduced from the existing resource information, or are specific to the instance of a resource.

    +
  2. +
  3. +

    The Ready condition indicates whether the Cluster Operator currently considers the Kafka cluster able to handle traffic.

    +
  4. +
  5. +

    The listeners describe the current Kafka bootstrap addresses by type.

    +
    + + + + + +
    +
    Important
    +
    +The status for external listeners is still under development and does not provide a specific IP address for external listeners of type nodeport. +
    +
    +
  6. +
+
+
+ + + + + +
+
Note
+
+The Kafka bootstrap addresses listed in the status do not signify that those endpoints or the Kafka cluster is in a ready state. +
+
+
+
Accessing status information
+

You can access status information for a resource from the command line. For more information, see Checking the status of a custom resource.

+
+
+
+
+

2.3. Cluster Operator

+
+

Strimzi uses the Cluster Operator to deploy and manage Kafka (including Zookeeper) and Kafka Connect clusters. +The Cluster Operator is deployed inside of the +Kubernetes or +OpenShift cluster. +To deploy a Kafka cluster, a Kafka resource with the cluster configuration has to be created within the +Kubernetes or +OpenShift cluster. +Based on what is declared inside of the Kafka resource, the Cluster Operator deploys a corresponding Kafka cluster. +For more information about the different configuration options supported by the Kafka resource, see Kafka cluster configuration

+
+
+ + + + + +
+
Note
+
+Strimzi contains example YAML files, which make deploying a Cluster Operator easier. +
+
+
+

2.3.1. Overview of the Cluster Operator component

+
+

The Cluster Operator is in charge of deploying a Kafka cluster alongside a Zookeeper ensemble. +As part of the Kafka cluster, it can also deploy the topic operator which provides operator-style topic management via KafkaTopic custom resources. +The Cluster Operator is also able to deploy a Kafka Connect cluster which connects to an existing Kafka cluster. +On OpenShift such a cluster can be deployed using the Source2Image feature, providing an easy way of including more connectors.

+
+
+
Example architecture for the Cluster Operator
+

Cluster Operator

+
+
+

When the Cluster Operator is up, it starts to watch for certain OpenShift or Kubernetes resources containing the desired Kafka, Kafka Connect, or Kafka Mirror Maker cluster configuration. +By default, it watches only in the same namespace or project where it is installed. +The Cluster Operator can be configured to watch for more OpenShift projects or Kubernetes namespaces. +Cluster Operator watches the following resources:

+
+
+
    +
  • +

    A Kafka resource for the Kafka cluster.

    +
  • +
  • +

    A KafkaConnect resource for the Kafka Connect cluster.

    +
  • +
  • +

    A KafkaConnectS2I resource for the Kafka Connect cluster with Source2Image support.

    +
  • +
  • +

    A KafkaMirrorMaker resource for the Kafka Mirror Maker instance.

    +
  • +
+
+
+

When a new Kafka, KafkaConnect, KafkaConnectS2I, or Kafka Mirror Maker resource is created in the OpenShift or Kubernetes cluster, the operator gets the cluster description from the desired resource and starts creating a new Kafka, Kafka Connect, or Kafka Mirror Maker cluster by creating the necessary other OpenShift or Kubernetes resources, such as StatefulSets, Services, ConfigMaps, and so on.

+
+
+

Every time the desired resource is updated by the user, the operator performs corresponding updates on the OpenShift or Kubernetes resources which make up the Kafka, Kafka Connect, or Kafka Mirror Maker cluster. +Resources are either patched or deleted and then re-created in order to make the Kafka, Kafka Connect, or Kafka Mirror Maker cluster reflect the state of the desired cluster resource. +This might cause a rolling update which might lead to service disruption.

+
+
+

Finally, when the desired resource is deleted, the operator starts to undeploy the cluster and delete all the related OpenShift or Kubernetes resources.

+
+
+
+

2.3.2. Deploying the Cluster Operator to Kubernetes

+
+
Prerequisites
+
    +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    kubectl apply -f install/cluster-operator -n _my-namespace_
    +
    +
    +
  • +
+
+
+
+

2.3.3. Deploying the Cluster Operator to OpenShift

+
+
Prerequisites
+
    +
  • +

    A user with cluster-admin role needs to be used, for example, system:admin.

    +
  • +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    oc apply -f install/cluster-operator -n _my-project_
    +oc apply -f examples/templates/cluster-operator -n _my-project_
    +
    +
    +
  • +
+
+
+
+

2.3.4. Deploying the Cluster Operator to watch multiple namespaces

+
+
Prerequisites
+
    +
  • +

    Edit the installation files according to the OpenShift project or Kubernetes namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the file install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml and in the environment variable STRIMZI_NAMESPACE list all the OpenShift projects or Kubernetes namespaces where Cluster Operator should watch for resources. +For example:

    +
    +
    +
    apiVersion: extensions/v1beta1
    +kind: Deployment
    +spec:
    +  template:
    +    spec:
    +      serviceAccountName: strimzi-cluster-operator
    +      containers:
    +      - name: strimzi-cluster-operator
    +        image: strimzi/operator:0.12.1
    +        imagePullPolicy: IfNotPresent
    +        env:
    +        - name: STRIMZI_NAMESPACE
    +          value: myproject,myproject2,myproject3
    +
    +
    +
  2. +
  3. +

    For all namespaces or projects which should be watched by the Cluster Operator, install the RoleBindings. +Replace the my-namespace or my-project with the OpenShift project or Kubernetes namespace used in the previous step.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-project
    +oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-project
    +oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-project
    +
    +
    +
  4. +
  5. +

    Deploy the Cluster Operator

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
  6. +
+
+
+
+

2.3.5. Deploying the Cluster Operator to watch all namespaces

+
+

You can configure the Cluster Operator to watch Strimzi resources across all OpenShift projects or Kubernetes namespaces in your OpenShift or Kubernetes cluster. When running in this mode, the Cluster Operator automatically manages clusters in any new projects or namespaces that are created.

+
+
+
Prerequisites
+
    +
  • +

    Your OpenShift or Kubernetes cluster is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Configure the Cluster Operator to watch all namespaces:

    +
    +
      +
    1. +

      Edit the 050-Deployment-strimzi-cluster-operator.yaml file.

      +
    2. +
    3. +

      Set the value of the STRIMZI_NAMESPACE environment variable to *.

      +
      +
      +
      apiVersion: extensions/v1beta1
      +kind: Deployment
      +spec:
      +  template:
      +    spec:
      +      # ...
      +      serviceAccountName: strimzi-cluster-operator
      +      containers:
      +      - name: strimzi-cluster-operator
      +        image: strimzi/operator:0.12.1
      +        imagePullPolicy: IfNotPresent
      +        env:
      +        - name: STRIMZI_NAMESPACE
      +          value: "*"
      +        # ...
      +
      +
      +
    4. +
    +
    +
  2. +
  3. +

    Create ClusterRoleBindings that grant cluster-wide access to all OpenShift projects or Kubernetes namespaces to the Cluster Operator.

    +
    +

    On OpenShift, use the oc adm policy command:

    +
    +
    +
    +
    oc adm policy add-cluster-role-to-user strimzi-cluster-operator-namespaced --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-entity-operator --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-topic-operator --serviceaccount strimzi-cluster-operator -n my-project
    +
    +
    +
    +

    Replace my-project with the project in which you want to install the Cluster Operator.

    +
    +
    +

    On Kubernetes, use the kubectl create command:

    +
    +
    +
    +
    kubectl create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-topic-operator-delegation --clusterrole=strimzi-topic-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +
    +
    +
    +

    Replace my-namespace with the namespace in which you want to install the Cluster Operator.

    +
    +
  4. +
  5. +

    Deploy the Cluster Operator to your OpenShift or Kubernetes cluster.

    +
    +

    On OpenShift, use the oc apply command:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
    +

    On Kubernetes, use the kubectl apply command:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
  6. +
+
+
+
+

2.3.6. Deploying the Cluster Operator using Helm Chart

+
+
Prerequisites
+
    +
  • +

    Helm client has to be installed on the local machine.

    +
  • +
  • +

    Helm has to be installed in the OpenShift or Kubernetes cluster.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add the Strimzi Helm Chart repository:

    +
    +
    +
    helm repo add strimzi http://strimzi.io/charts/
    +
    +
    +
  2. +
  3. +

    Deploy the Cluster Operator using the Helm command line tool:

    +
    +
    +
    helm install strimzi/strimzi-kafka-operator
    +
    +
    +
  4. +
  5. +

    Verify whether the Cluster Operator has been deployed successfully using the Helm command line tool:

    +
    +
    +
    helm ls
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about Helm, see the Helm website.

    +
  • +
+
+
+
+

2.3.7. Deploying the Cluster Operator from OperatorHub.io

+
+

OperatorHub.io is a catalog of Kubernetes Operators sourced from multiple providers. +It offers you an alternative way to install stable versions of Strimzi using the Strimzi Kafka Operator.

+
+
+

The Operator Lifecycle Manager is used for the installation and management of all Operators published on OperatorHub.io.

+
+
+

To install Strimzi from OperatorHub.io, locate the Strimzi Kafka Operator and follow the instructions provided.

+
+
+
+
+

2.4. Kafka cluster

+
+

You can use Strimzi to deploy an ephemeral or persistent Kafka cluster to OpenShift or Kubernetes. When installing Kafka, Strimzi also installs a Zookeeper cluster and adds the necessary configuration to connect Kafka with Zookeeper.

+
+
+
+
Ephemeral cluster
+
+

In general, an ephemeral (that is, temporary) Kafka cluster is suitable for development and testing purposes, not for production. This deployment uses emptyDir volumes for storing broker information (for Zookeeper) and topics or partitions (for Kafka). Using an emptyDir volume means that its content is strictly related to the pod life cycle and is deleted when the pod goes down.

+
+
Persistent cluster
+
+

A persistent Kafka cluster uses PersistentVolumes to store Zookeeper and Kafka data. The PersistentVolume is +acquired using a PersistentVolumeClaim to make it independent of the actual type of the PersistentVolume. For example, it can use +HostPath volumes on Minikube or +Amazon EBS volumes in Amazon AWS deployments without any changes in the YAML files. The PersistentVolumeClaim can use a StorageClass to trigger automatic volume provisioning.

+
+
+
+
+

Strimzi includes two templates for deploying a Kafka cluster:

+
+
+
    +
  • +

    kafka-ephemeral.yaml deploys an ephemeral cluster, named my-cluster by default.

    +
  • +
  • +

    kafka-persistent.yaml deploys a persistent cluster, named my-cluster by default.

    +
  • +
+
+
+

The cluster name is defined by the name of the resource and cannot be changed after the cluster has been deployed. To change the cluster name before you deploy the cluster, edit the Kafka.metadata.name property of the resource in the relevant YAML file.

+
+
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+# ...
+
+
+
+

2.4.1. Deploying the Kafka cluster to Kubernetes

+
+

You can deploy an ephemeral or persistent Kafka cluster to Kubernetes on the command line.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is deployed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    If you plan to use the cluster for development or testing purposes, you can create and deploy an ephemeral cluster using kubectl apply.

    +
    +
    +
    kubectl apply -f examples/kafka/kafka-ephemeral.yaml
    +
    +
    +
  2. +
  3. +

    If you plan to use the cluster in production, create and deploy a persistent cluster using kubectl apply.

    +
    +
    +
    kubectl apply -f examples/kafka/kafka-persistent.yaml
    +
    +
    +
  4. +
+
+
+
Additional resources
+
    +
  • +

    For more information on deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information on the different configuration options supported by the Kafka resource, see Kafka cluster configuration.

    +
  • +
+
+
+
+

2.4.2. Deploying the Kafka cluster to OpenShift

+
+

The following procedure describes how to deploy an ephemeral or persistent Kafka cluster to OpenShift on the command line. You can also deploy clusters in the OpenShift console.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is deployed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    If you plan to use the cluster for development or testing purposes, create and deploy an ephemeral cluster using oc apply.

    +
    +
    +
    oc apply -f examples/kafka/kafka-ephemeral.yaml
    +
    +
    +
  2. +
  3. +

    If you plan to use the cluster in production, create and deploy a persistent cluster using oc apply.

    +
    +
    +
    oc apply -f examples/kafka/kafka-persistent.yaml
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

2.5. Kafka Connect

+
+

Kafka Connect is a tool for streaming data between Apache Kafka and external systems. It provides a framework for moving large amounts of data into and out of your Kafka cluster while maintaining scalability and reliability. Kafka Connect is typically used to integrate Kafka with external databases and storage and messaging systems.

+
+
+

You can use Kafka Connect to:

+
+
+
    +
  • +

    Build connector plug-ins (as JAR files) for your Kafka cluster

    +
  • +
  • +

    Run connectors

    +
  • +
+
+
+

Kafka Connect includes the following built-in connectors for moving file-based data into and out of your Kafka cluster.

+
+ ++++ + + + + + + + + + + + + + + + + +
File ConnectorDescription

FileStreamSourceConnector

Transfers data to your Kafka cluster from a file (the source).

FileStreamSinkConnector

Transfers data from your Kafka cluster to a file (the sink).

+
+

In Strimzi, you can use the Cluster Operator to deploy a Kafka Connect or Kafka Connect Source-2-Image (S2I) cluster to your OpenShift or Kubernetes cluster.

+
+
+

A Kafka Connect cluster is implemented as a Deployment with a configurable number of workers. The Kafka Connect REST API is available on port 8083, as the <connect-cluster-name>-connect-api service.

+
+
+

For more information on deploying a Kafka Connect S2I cluster, see Creating a container image using OpenShift builds and Source-to-Image.

+
+
+

2.5.1. Deploying Kafka Connect to your Kubernetes cluster

+
+

You can deploy a Kafka Connect cluster to your Kubernetes cluster by using the Cluster Operator.

+
+ +
+
Procedure
+
    +
  • +

    Use the kubectl apply command to create a KafkaConnect resource based on the kafka-connect.yaml file:

    +
    +
    +
    kubectl apply -f examples/kafka-connect/kafka-connect.yaml
    +
    +
    +
  • +
+
+ +
+
+

2.5.2. Deploying Kafka Connect to your OpenShift cluster

+
+

You can deploy a Kafka Connect cluster to your OpenShift cluster by using the Cluster Operator. Kafka Connect is provided as an OpenShift template that you can deploy from the command line or the OpenShift console.

+
+ +
+
Procedure
+
    +
  • +

    Use the oc apply command to create a KafkaConnect resource based on the kafka-connect.yaml file:

    +
    +
    +
    oc apply -f examples/kafka-connect/kafka-connect.yaml
    +
    +
    +
  • +
+
+ +
+
+

2.5.3. Extending Kafka Connect with connector plug-ins

+
+

The Strimzi container images for Kafka Connect include the two built-in file connectors: FileStreamSourceConnector and FileStreamSinkConnector. You can add your own connectors by using one of the following methods:

+
+
+
    +
  • +

    Create a Docker image from the Kafka Connect base image.

    +
  • +
  • +

    Create a container image using OpenShift builds and Source-to-Image (S2I).

    +
  • +
+
+
+
Creating a Docker image from the Kafka Connect base image
+
+

You can use the Kafka container image on Docker Hub as a base image for creating your own custom image with additional connector plug-ins.

+
+
+

The following procedure explains how to create your custom image and add it to the /opt/kafka/plugins directory. At startup, the Strimzi version of Kafka Connect loads any third-party connector plug-ins contained in the /opt/kafka/plugins directory.

+
+ +
+
Procedure
+
    +
  1. +

    Create a new Dockerfile using strimzi/kafka:0.12.1-kafka-2.2.1 as the base image:

    +
    +
    +
    FROM strimzi/kafka:0.12.1-kafka-2.2.1
    +USER root:root
    +COPY ./my-plugins/ /opt/kafka/plugins/
    +USER 1001
    +
    +
    +
  2. +
  3. +

    Build the container image.

    +
  4. +
  5. +

    Push your custom image to your container registry.

    +
  6. +
  7. +

    Edit the KafkaConnect.spec.image property of the KafkaConnect custom resource to point to the new container image. If set, this property overrides the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE variable referred to in the next step.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect-cluster
    +spec:
    +  #...
    +  image: my-new-container-image
    +
    +
    +
  8. +
  9. +

    In the install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml file, edit the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE variable to point to the new container image.

    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
Creating a container image using OpenShift builds and Source-to-Image
+
+

You can use OpenShift builds and the Source-to-Image (S2I) framework to create new container images. An OpenShift build takes a builder image with S2I support, together with source code and binaries provided by the user, and uses them to build a new container image. Once built, container images are stored in OpenShift’s local container image repository and are available for use in deployments.

+
+
+

A Kafka Connect builder image with S2I support is provided on the Docker Hub as part of the strimzi/kafka:0.12.1-kafka-2.2.1 image. This S2I image takes your binaries (with plug-ins and connectors) and stores them in the /tmp/kafka-plugins/s2i directory. It creates a new Kafka Connect image from this directory, which can then be used with the Kafka Connect deployment. When started using the enhanced image, Kafka Connect loads any third-party plug-ins from the /tmp/kafka-plugins/s2i directory.

+
+
+
Procedure
+
    +
  1. +

    On the command line, use the oc apply command to create and deploy a Kafka Connect S2I cluster:

    +
    +
    +
    oc apply -f examples/kafka-connect/kafka-connect-s2i.yaml
    +
    +
    +
  2. +
  3. +

    Create a directory with Kafka Connect plug-ins:

    +
    +
    +
    $ tree ./my-plugins/
    +./my-plugins/
    +├── debezium-connector-mongodb
    +│   ├── bson-3.4.2.jar
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mongodb-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mongodb-driver-3.4.2.jar
    +│   ├── mongodb-driver-core-3.4.2.jar
    +│   └── README.md
    +├── debezium-connector-mysql
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mysql-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mysql-binlog-connector-java-0.13.0.jar
    +│   ├── mysql-connector-java-5.1.40.jar
    +│   ├── README.md
    +│   └── wkb-1.0.2.jar
    +└── debezium-connector-postgres
    +    ├── CHANGELOG.md
    +    ├── CONTRIBUTE.md
    +    ├── COPYRIGHT.txt
    +    ├── debezium-connector-postgres-0.7.1.jar
    +    ├── debezium-core-0.7.1.jar
    +    ├── LICENSE.txt
    +    ├── postgresql-42.0.0.jar
    +    ├── protobuf-java-2.6.1.jar
    +    └── README.md
    +
    +
    +
  4. +
  5. +

    Use the oc start-build command to start a new build of the image using the prepared directory:

    +
    +
    +
    oc start-build my-connect-cluster-connect --from-dir ./my-plugins/
    +
    +
    +
    + + + + + +
    +
    Note
    +
    +The name of the build is the same as the name of the deployed Kafka Connect cluster. +
    +
    +
  6. +
  7. +

    Once the build has finished, the new image is used automatically by the Kafka Connect deployment.

    +
  8. +
+
+
+
+
+
+

2.6. Kafka Mirror Maker

+
+

The Cluster Operator deploys one or more Kafka Mirror Maker replicas to replicate data between Kafka clusters. +This process is called mirroring to avoid confusion with the Kafka partitions replication concept. +The Mirror Maker consumes messages from the source cluster and republishes those messages to the target cluster.

+
+
+

For information about example resources and the format for deploying Kafka Mirror Maker, see Kafka Mirror Maker configuration.

+
+
+

2.6.1. Deploying Kafka Mirror Maker to Kubernetes

+
+
Prerequisites
+
    +
  • +

    Before deploying Kafka Mirror Maker, the Cluster Operator must be deployed.

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy Kafka Mirror Maker on Kubernetes by creating the corresponding KafkaMirrorMaker resource.

    +
    +
    +
    kubectl apply -f examples/kafka-mirror-maker/kafka-mirror-maker.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator

    +
  • +
+
+
+
+

2.6.2. Deploying Kafka Mirror Maker to OpenShift

+
+

On OpenShift, Kafka Mirror Maker is provided in the form of a template. It can be deployed from the template using the command-line or through the OpenShift console.

+
+
+
Prerequisites
+
    +
  • +

    Before deploying Kafka Mirror Maker, the Cluster Operator must be deployed.

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Create a Kafka Mirror Maker cluster from the command-line:

    +
    +
    +
    oc apply -f examples/kafka-mirror-maker/kafka-mirror-maker.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator

    +
  • +
+
+
+
+
+

2.7. Kafka Bridge

+
+

The Cluster Operator deploys one or more Kafka bridge replicas to send data between Kafka clusters and clients via HTTP API.

+
+
+

For information about example resources and the format for deploying Kafka Bridge, see Kafka Bridge configuration.

+
+
+

2.7.1. Deploying Kafka Bridge to your Kubernetes cluster

+
+

You can deploy a Kafka Bridge cluster to your Kubernetes cluster by using the Cluster Operator.

+
+ +
+
Procedure
+
    +
  • +

    Use the kubectl apply command to create a KafkaBridge resource based on the kafka-bridge.yaml file:

    +
    +
    +
    kubectl apply -f examples/kafka-bridge/kafka-bridge.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+

2.7.2. Deploying Kafka Bridge to your OpenShift cluster

+
+

You can deploy a Kafka Bridge cluster to your OpenShift cluster by using the Cluster Operator. Kafka Bridge is provided as an OpenShift template that you can deploy from the command line or the OpenShift console.

+
+ +
+
Procedure
+
    +
  • +

    Use the oc apply command to create a KafkaBridge resource based on the kafka-bridge.yaml file:

    +
    +
    +
    oc apply -f examples/kafka-bridge/kafka-bridge.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+
+

2.8. Deploying example clients

+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster for the client to connect to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy the producer.

    +
    +

    On Kubernetes, use kubectl run:

    +
    +
    +
    +
    kubectl run kafka-producer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list cluster-name-kafka-bootstrap:9092 --topic my-topic
    +
    +
    +
    +

    On OpenShift, use oc run:

    +
    +
    +
    +
    oc run kafka-producer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list cluster-name-kafka-bootstrap:9092 --topic my-topic
    +
    +
    +
  2. +
  3. +

    Type your message into the console where the producer is running.

    +
  4. +
  5. +

    Press Enter to send the message.

    +
  6. +
  7. +

    Deploy the consumer.

    +
    +

    On Kubernetes, use kubectl run:

    +
    +
    +
    +
    kubectl run kafka-consumer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server cluster-name-kafka-bootstrap:9092 --topic my-topic --from-beginning
    +
    +
    +
    +

    On OpenShift, use oc run:

    +
    +
    +
    +
    oc run kafka-consumer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server cluster-name-kafka-bootstrap:9092 --topic my-topic --from-beginning
    +
    +
    +
  8. +
  9. +

    Confirm that you see the incoming messages in the consumer console.

    +
  10. +
+
+
+
+

2.9. Topic Operator

+
+

2.9.1. Overview of the Topic Operator component

+
+

The Topic Operator provides a way of managing topics in a Kafka cluster via OpenShift or Kubernetes resources.

+
+
+
Example architecture for the Topic Operator
+

Topic Operator

+
+
+

The role of the Topic Operator is to keep a set of KafkaTopic OpenShift or Kubernetes resources describing Kafka topics in-sync with corresponding Kafka topics.

+
+
+

Specifically, if a KafkaTopic is:

+
+
+
    +
  • +

    Created, the operator will create the topic it describes

    +
  • +
  • +

    Deleted, the operator will delete the topic it describes

    +
  • +
  • +

    Changed, the operator will update the topic it describes

    +
  • +
+
+
+

And also, in the other direction, if a topic is:

+
+
+
    +
  • +

    Created within the Kafka cluster, the operator will create a KafkaTopic describing it

    +
  • +
  • +

    Deleted from the Kafka cluster, the operator will delete the KafkaTopic describing it

    +
  • +
  • +

    Changed in the Kafka cluster, the operator will update the KafkaTopic describing it

    +
  • +
+
+
+

This allows you to declare a KafkaTopic as part of your application’s deployment and the Topic Operator will take care of creating the topic for you. +Your application just needs to deal with producing or consuming from the necessary topics.

+
+
+

If the topic is reconfigured or reassigned to different Kafka nodes, the KafkaTopic will always be up to date.

+
+
+

For more details about creating, modifying and deleting topics, see Using the Topic Operator.

+
+
+
+

2.9.2. Deploying the Topic Operator using the Cluster Operator

+
+

This procedure describes how to deploy the Topic Operator using the Cluster Operator. +If you want to use the Topic Operator with a Kafka cluster that is not managed by Strimzi, you must deploy the Topic Operator as a standalone component. For more information, see Deploying the standalone Topic Operator.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Ensure that the Kafka.spec.entityOperator object exists in the Kafka resource. This configures the Entity Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  #...
    +  entityOperator:
    +    topicOperator: {}
    +    userOperator: {}
    +
    +
    +
  2. +
  3. +

    Configure the Topic Operator using the fields described in EntityTopicOperatorSpec schema reference.

    +
  4. +
  5. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about deploying the Entity Operator, see Entity Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the Topic Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+
+

2.10. User Operator

+
+

The User Operator provides a way of managing Kafka users via OpenShift or Kubernetes resources.

+
+
+

2.10.1. Overview of the User Operator component

+
+

The User Operator manages Kafka users for a Kafka cluster by watching for KafkaUser OpenShift or Kubernetes resources that describe Kafka users and ensuring that they are configured properly in the Kafka cluster. +For example:

+
+
+
    +
  • +

    if a KafkaUser is created, the User Operator will create the user it describes

    +
  • +
  • +

    if a KafkaUser is deleted, the User Operator will delete the user it describes

    +
  • +
  • +

    if a KafkaUser is changed, the User Operator will update the user it describes

    +
  • +
+
+
+

Unlike the Topic Operator, the User Operator does not sync any changes from the Kafka cluster with the OpenShift or Kubernetes resources. +Unlike the Kafka topics which might be created by applications directly in Kafka, it is not expected that the users will be managed directly in the Kafka cluster in parallel with the User Operator, so this should not be needed.

+
+
+

The User Operator allows you to declare a KafkaUser as part of your application’s deployment. +When the user is created, the credentials will be created in a Secret. +Your application needs to use the user and its credentials for authentication and to produce or consume messages.

+
+
+

In addition to managing credentials for authentication, the User Operator also manages authorization rules by including a description of the user’s rights in the KafkaUser declaration.

+
+
+
+

2.10.2. Deploying the User Operator using the Cluster Operator

+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the Kafka resource ensuring it has a Kafka.spec.entityOperator.userOperator object that configures the User Operator how you want.

    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the User Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+
+

2.11. Strimzi Administrators

+
+

Strimzi includes several custom resources. +By default, permission to create, edit, and delete these resources is limited to OpenShift or Kubernetes cluster administrators. +If you want to allow non-cluster administators to manage Strimzi resources, you must assign them the Strimzi Administrator role.

+
+
+

2.11.1. Designating Strimzi Administrators

+
+
Prerequisites
+
    +
  • +

    Strimzi CustomResourceDefinitions are installed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create the strimzi-admin cluster role in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/strimzi-admin
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f install/strimzi-admin
    +
    +
    +
  2. +
  3. +

    Assign the strimzi-admin ClusterRole to one or more existing users in the OpenShift or Kubernetes cluster.

    +
    +

    On Kubernetes, use kubectl create:

    +
    +
    +
    +
    kubectl create clusterrolebinding strimzi-admin --clusterrole=strimzi-admin --user=user1 --user=user2
    +
    +
    +
    +

    On OpenShift, use oc adm:

    +
    +
    +
    +
    oc adm policy add-cluster-role-to-user strimzi-admin user1 user2
    +
    +
    +
  4. +
+
+
+
+
+

2.12. Container images

+
+

Container images for Strimzi are available in the Docker Hub. +The installation YAML files provided by Strimzi will pull the images directly from the Docker Hub.

+
+
+

If you do not have access to the Docker Hub or want to use your own container repository:

+
+
+
    +
  1. +

    Pull all container images listed here

    +
  2. +
  3. +

    Push them into your own registry

    +
  4. +
  5. +

    Update the image names in the installation YAML files

    +
  6. +
+
+
+ + + + + +
+
Note
+
+Each Kafka version supported for the release has a separate image. +
+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
Container imageNamespace/RepositoryDescription

Kafka

+
    +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.1.0

    +
  • +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.1.1

    +
  • +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.2.0

    +
  • +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.2.1

    +
  • +
+
+

Strimzi image for running Kafka, including:

+
+
+
    +
  • +

    Kafka Broker

    +
  • +
  • +

    Kafka Connect / S2I

    +
  • +
  • +

    Kafka Mirror Maker

    +
  • +
  • +

    Zookeeper

    +
  • +
  • +

    TLS Sidecars

    +
  • +
+

Operator

+
    +
  • +

    docker.io/strimzi/operator:0.12.1

    +
  • +
+
+

Strimzi image for running the operators:

+
+
+
    +
  • +

    Cluster Operator

    +
  • +
  • +

    Topic Operator

    +
  • +
  • +

    User Operator

    +
  • +
  • +

    Kafka Initializer

    +
  • +
+

Kafka Bridge

+
    +
  • +

    docker.io/strimzi/kafka-bridge:0.12.1

    +
  • +
+
+

Strimzi image for running the Strimzi kafka Bridge

+
+
+
+
+
+

3. Deployment configuration

+
+
+

This chapter describes how to configure different aspects of the supported deployments:

+
+
+
    +
  • +

    Kafka clusters

    +
  • +
  • +

    Kafka Connect clusters

    +
  • +
  • +

    Kafka Connect clusters with Source2Image support

    +
  • +
  • +

    Kafka Mirror Maker

    +
  • +
+
+
+

3.1. Kafka cluster configuration

+
+

The full schema of the Kafka resource is described in the Kafka schema reference. +All labels that are applied to the desired Kafka resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka cluster. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.1.1. Data storage considerations

+
+

An efficient data storage infrastructure is essential to the optimal performance of Strimzi.

+
+
+

Strimzi requires block storage and is designed to work optimally with cloud-based block storage solutions, including Amazon Elastic Block Store (EBS). The use of file storage (for example, NFS) is not recommended.

+
+
+

Choose local storage (local persistent volumes) when possible. If local storage is not available, you can use a Storage Area Network (SAN) accessed by a protocol such as Fibre Channel or iSCSI.

+
+
+
Apache Kafka and Zookeeper storage
+
+

Use separate disks for Apache Kafka and Zookeeper.

+
+
+

Three types of data storage are supported:

+
+
+
    +
  • +

    Ephemeral (Recommended for development only)

    +
  • +
  • +

    Persistent

    +
  • +
  • +

    JBOD (Just a Bunch of Disks, suitable for Kafka only)

    +
  • +
+
+
+

For more information, see Kafka and Zookeeper storage.

+
+
+

Solid-state drives (SSDs), though not essential, can improve the performance of Kafka in large clusters where data is sent to and received from multiple topics asynchronously. SSDs are particularly effective with Zookeeper, which requires fast, low latency data access.

+
+
+ + + + + +
+
Note
+
+You do not need to provision replicated storage because Kafka and Zookeeper both have built-in data replication. +
+
+
+
+
File systems
+
+

It is recommended that you configure your storage system to use the XFS file system. Strimzi is also compatible with the ext4 file system, but this might require additional configuration for best results.

+
+
+
+
+

3.1.2. Kafka and Zookeeper storage types

+
+

As stateful applications, Kafka and Zookeeper need to store data on disk. Strimzi supports three storage types for this data:

+
+
+
    +
  • +

    Ephemeral

    +
  • +
  • +

    Persistent

    +
  • +
  • +

    JBOD storage

    +
  • +
+
+
+ + + + + +
+
Note
+
+JBOD storage is supported only for Kafka, not for Zookeeper. +
+
+
+

When configuring a Kafka resource, you can specify the type of storage used by the Kafka broker and its corresponding Zookeeper node. You configure the storage type using the storage property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
+
+
+

The storage type is configured in the type field.

+
+
+ + + + + +
+
Warning
+
+The storage type cannot be changed after a Kafka cluster is deployed. +
+
+
+
Ephemeral storage
+
+

Ephemeral storage uses the `emptyDir` volumes to store data. +To use ephemeral storage, the type field should be set to ephemeral.

+
+
+ + + + + +
+
Important
+
+EmptyDir volumes are not persistent and the data stored in them will be lost when the Pod is restarted. +After the new pod is started, it has to recover all data from other nodes of the cluster. +Ephemeral storage is not suitable for use with single node Zookeeper clusters and for Kafka topics with replication factor 1, because it will lead to data loss. +
+
+
+
An example of Ephemeral storage
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    storage:
+      type: ephemeral
+    # ...
+  zookeeper:
+    # ...
+    storage:
+      type: ephemeral
+    # ...
+
+
+
+
Log directories
+
+

The ephemeral volume will be used by the Kafka brokers as log directories mounted into the following path:

+
+
+
+
/var/lib/kafka/data/kafka-log_idx_
+
+

Where idx is the Kafka broker pod index. For example /var/lib/kafka/data/kafka-log0.

+
+
+
+
+
+
+
Persistent storage
+
+

Persistent storage uses Persistent Volume Claims to provision persistent volumes for storing data. +Persistent Volume Claims can be used to provision volumes of many different types, depending on the Storage Class which will provision the volume. +The data types which can be used with persistent volume claims include many types of SAN storage as well as Local persistent volumes.

+
+
+

To use persistent storage, the type has to be set to persistent-claim. +Persistent storage supports additional configuration options:

+
+
+
+
id (optional)
+
+

Storage identification number. This option is mandatory for storage volumes defined in a JBOD storage declaration. +Default is 0.

+
+
size (required)
+
+

Defines the size of the persistent volume claim, for example, "1000Gi".

+
+
class (optional)
+
+

The OpenShift or Kubernetes Storage Class to use for dynamic volume provisioning.

+
+
selector (optional)
+
+

Allows selecting a specific persistent volume to use. +It contains key:value pairs representing labels for selecting such a volume.

+
+
deleteClaim (optional)
+
+

Boolean value which specifies if the Persistent Volume Claim has to be deleted when the cluster is undeployed. +Default is false.

+
+
+
+
+ + + + + +
+
Warning
+
+Increasing the size of persistent volumes in an existing Strimzi cluster is only supported in OpenShift or Kubernetes versions that support persistent volume resizing. The persistent volume to be resized must use a storage class that supports volume expansion. +For other versions of OpenShift or Kubernetes and storage classes which do not support volume expansion, you must decide the necessary storage size before deploying the cluster. +Decreasing the size of existing persistent volumes is not possible. +
+
+
+
Example fragment of persistent storage configuration with 1000Gi size
+
+
# ...
+storage:
+  type: persistent-claim
+  size: 1000Gi
+# ...
+
+
+
+

The following example demonstrates the use of a storage class.

+
+
+
Example fragment of persistent storage configuration with specific Storage Class
+
+
# ...
+storage:
+  type: persistent-claim
+  size: 1Gi
+  class: my-storage-class
+# ...
+
+
+
+

Finally, a selector can be used to select a specific labeled persistent volume to provide needed features such as an SSD.

+
+
+
Example fragment of persistent storage configuration with selector
+
+
# ...
+storage:
+  type: persistent-claim
+  size: 1Gi
+  selector:
+    hdd-type: ssd
+  deleteClaim: true
+# ...
+
+
+
+
Storage class overrides
+
+

You can specify a different storage class for one or more Kafka brokers, instead of using the default storage class. +This is useful if, for example, storage classes are restricted to different availability zones or data centers. +You can use the overrides field for this purpose.

+
+
+

In this example, the default storage class is named my-storage-class:

+
+
+
Example Strimzi cluster using storage class overrides
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  labels:
+    app: my-cluster
+  name: my-cluster
+  namespace: myproject
+spec:
+  # ...
+  kafka:
+    replicas: 3
+    storage:
+      deleteClaim: true
+      size: 100Gi
+      type: persistent-claim
+      class: my-storage-class
+      overrides:
+        - broker: 0
+          class: my-storage-class-zone-1a
+        - broker: 1
+          class: my-storage-class-zone-1b
+        - broker: 2
+          class: my-storage-class-zone-1c
+  # ...
+
+
+
+

As a result of the configured overrides property, the broker volumes use the following storage classes:

+
+
+
    +
  • +

    The persistent volumes of broker 0 will use my-storage-class-zone-1a.

    +
  • +
  • +

    The persistent volumes of broker 1 will use my-storage-class-zone-1b.

    +
  • +
  • +

    The persistent volumes of broker 2 will use my-storage-class-zone-1c.

    +
  • +
+
+
+

The overrides property is currently used only to override storage class configurations. Overriding other storage configuration fields is not currently supported. +Other fields from the storage configuration are currently not supported.

+
+
+
+
Persistent Volume Claim naming
+
+

When persistent storage is used, it creates Persistent Volume Claims with the following names:

+
+
+
+
data-cluster-name-kafka-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Kafka broker pod idx.

+
+
data-cluster-name-zookeeper-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Zookeeper node pod idx.

+
+
+
+
+
+
Log directories
+
+

The persistent volume will be used by the Kafka brokers as log directories mounted into the following path:

+
+
+
+
/var/lib/kafka/data/kafka-log_idx_
+
+

Where idx is the Kafka broker pod index. For example /var/lib/kafka/data/kafka-log0.

+
+
+
+
+
+
+
Resizing persistent volumes
+
+

You can provision increased storage capacity by increasing the size of the persistent volumes used by an existing Strimzi cluster. +Resizing persistent volumes is supported in clusters that use either a single persistent volume or multiple persistent volumes in a JBOD storage configuration.

+
+
+ + + + + +
+
Note
+
+You can increase but not decrease the size of persistent volumes. +Decreasing the size of persistent volumes is not currently supported in OpenShift or Kubernetes. +
+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster with support for volume resizing.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka cluster using persistent volumes created using a storage class that supports volume expansion.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    In a Kafka resource, increase the size of the persistent volume allocated to the Kafka cluster, the Zookeeper cluster, or both.

    +
    +
      +
    • +

      To increase the volume size allocated to the Kafka cluster, edit the spec.kafka.storage property.

      +
    • +
    • +

      To increase the volume size allocated to the Zookeeper cluster, edit the spec.zookeeper.storage property.

      +
      +

      For example, to increase the volume size from 1000Gi to 2000Gi:

      +
      +
      +
      +
      apiVersion: kafka.strimzi.io/v1beta1
      +kind: Kafka
      +metadata:
      +  name: my-cluster
      +spec:
      +  kafka:
      +    # ...
      +    storage:
      +      type: persistent-claim
      +      size: 2000Gi
      +      class: my-storage-class
      +    # ...
      +  zookeeper:
      +    # ...
      +
      +
      +
    • +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
    +

    OpenShift or Kubernetes increases the capacity of the selected persistent volumes in response to a request from the Cluster Operator. +When the resizing is complete, the Cluster Operator restarts all pods that use the resized persistent volumes. +This happens automatically.

    +
    +
  4. +
+
+
+
Additional resources
+

For more information about resizing persistent volumes in OpenShift or Kubernetes, see Resizing Persistent Volumes using Kubernetes.

+
+
+
+
JBOD storage overview
+
+

You can configure Strimzi to use JBOD, a data storage configuration of multiple disks or volumes. JBOD is one approach to providing increased data storage for Kafka brokers. It can also improve performance.

+
+
+

A JBOD configuration is described by one or more volumes, each of which can be either ephemeral or persistent. The rules and constraints for JBOD volume declarations are the same as those for ephemeral and persistent storage. For example, you cannot change the size of a persistent storage volume after it has been provisioned.

+
+
+
JBOD configuration
+
+

To use JBOD with Strimzi, the storage type must be set to jbod. The volumes property allows you to describe the disks that make up your JBOD storage array or configuration. The following fragment shows an example JBOD configuration:

+
+
+
+
# ...
+storage:
+  type: jbod
+  volumes:
+  - id: 0
+    type: persistent-claim
+    size: 100Gi
+    deleteClaim: false
+  - id: 1
+    type: persistent-claim
+    size: 100Gi
+    deleteClaim: false
+# ...
+
+
+
+

The ids cannot be changed once the JBOD volumes are created.

+
+
+

Users can add or remove volumes from the JBOD configuration.

+
+
+
+
JBOD and Persistent Volume Claims
+
+

When persistent storage is used to declare JBOD volumes, the naming scheme of the resulting Persistent Volume Claims is as follows:

+
+
+
+
data-id-cluster-name-kafka-idx
+
+

Where id is the ID of the volume used for storing data for Kafka broker pod idx.

+
+
+
+
+
+
Log directories
+
+

The JBOD volumes will be used by the Kafka brokers as log directories mounted into the following path:

+
+
+
+
/var/lib/kafka/data-id/kafka-log_idx_
+
+

Where id is the ID of the volume used for storing data for Kafka broker pod idx. For example /var/lib/kafka/data-0/kafka-log0.

+
+
+
+
+
+
+
Adding volumes to JBOD storage
+
+

This procedure describes how to add volumes to a Kafka cluster configured to use JBOD storage. +It cannot be applied to Kafka clusters configured to use any other storage type.

+
+
+ + + + + +
+
Note
+
+When adding a new volume under an id which was already used in the past and removed, you have to make sure that the previously used PersistentVolumeClaims have been deleted. +
+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka cluster with JBOD storage

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the spec.kafka.storage.volumes property in the Kafka resource. +Add the new volumes to the volumes array. +For example, add the new volume with id 2:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    storage:
    +      type: jbod
    +      volumes:
    +      - id: 0
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +      - id: 1
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +      - id: 2
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Create new topics or reassign existing partitions to the new disks.

    +
  6. +
+
+
+
Additional resources
+

For more information about reassigning topics, see Partition reassignment.

+
+
+
+
Removing volumes from JBOD storage
+
+

This procedure describes how to remove volumes from Kafka cluster configured to use JBOD storage. +It cannot be applied to Kafka clusters configured to use any other storage type. +The JBOD storage always has to contain at least one volume.

+
+
+ + + + + +
+
Important
+
+To avoid data loss, you have to move all partitions before removing the volumes. +
+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka cluster with JBOD storage with two or more volumes

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Reassign all partitions from the disks which are you going to remove. +Any data in partitions still assigned to the disks which are going to be removed might be lost.

    +
  2. +
  3. +

    Edit the spec.kafka.storage.volumes property in the Kafka resource. +Remove one or more volumes from the volumes array. +For example, remove the volumes with ids 1 and 2:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    storage:
    +      type: jbod
    +      volumes:
    +      - id: 0
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+

For more information about reassigning topics, see Partition reassignment.

+
+
+
Additional resources
+ +
+
+
+
+

3.1.3. Kafka broker replicas

+
+

A Kafka cluster can run with many brokers. +You can configure the number of brokers used for the Kafka cluster in Kafka.spec.kafka.replicas. +The best number of brokers for your cluster has to be determined based on your specific use case.

+
+
+
Configuring the number of broker nodes
+
+

This procedure describes how to configure the number of Kafka broker nodes in a new cluster. +It only applies to new clusters with no partitions. +If your cluster already has topics defined, see +Scaling clusters.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka cluster with no topics defined yet

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the Kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    replicas: 3
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+

If your cluster already has topics defined, see +Scaling clusters.

+
+
+
+
+

3.1.4. Kafka broker configuration

+
+

Strimzi allows you to customize the configuration of the Kafka brokers in your Kafka cluster. +You can specify and configure most of the options listed in the "Broker Configs" section of the Apache Kafka documentation. You cannot configure options that are related to the following areas:

+
+
+
    +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener configuration

    +
  • +
  • +

    Broker ID configuration

    +
  • +
  • +

    Configuration of log data directories

    +
  • +
  • +

    Inter-broker communication

    +
  • +
  • +

    Zookeeper connectivity

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka broker configuration
+
+

A Kafka broker can be configured using the config property in Kafka.spec.kafka.

+
+
+

This property should contain the Kafka broker configuration options as keys with values in one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

You can specify and configure all of the options in the "Broker Configs" section of the Apache Kafka documentation apart from those managed directly by Strimzi. +Specifically, you are prevented from modifying all configuration options with keys equal to or starting with one of the following strings:

+
+
+
    +
  • +

    listeners

    +
  • +
  • +

    advertised.

    +
  • +
  • +

    broker.

    +
  • +
  • +

    listener.

    +
  • +
  • +

    host.name

    +
  • +
  • +

    port

    +
  • +
  • +

    inter.broker.listener.name

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    ssl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    password.

    +
  • +
  • +

    principal.builder.class

    +
  • +
  • +

    log.dir

    +
  • +
  • +

    zookeeper.connect

    +
  • +
  • +

    zookeeper.set.acl

    +
  • +
  • +

    authorizer.

    +
  • +
  • +

    super.user

    +
  • +
+
+
+

If the config property specifies a restricted option, it is ignored and a warning message is printed to the Cluster Operator log file. +All other supported options are passed to Kafka.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the provided config object. +If invalid configuration is provided, the Kafka cluster might not start or might become unstable. +In such cases, you must fix the configuration in the Kafka.spec.kafka.config object and the Cluster Operator will roll out the new configuration to all Kafka brokers. +
+
+
+
An example Kafka broker configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    config:
+      num.partitions: 1
+      num.recovery.threads.per.data.dir: 1
+      default.replication.factor: 3
+      offsets.topic.replication.factor: 3
+      transaction.state.log.replication.factor: 3
+      transaction.state.log.min.isr: 1
+      log.retention.hours: 168
+      log.segment.bytes: 1073741824
+      log.retention.check.interval.ms: 300000
+      num.network.threads: 3
+      num.io.threads: 8
+      socket.send.buffer.bytes: 102400
+      socket.receive.buffer.bytes: 102400
+      socket.request.max.bytes: 104857600
+      group.initial.rebalance.delay.ms: 0
+    # ...
+
+
+
+
+
Configuring Kafka brokers
+
+

You can configure an existing Kafka broker, or create a new Kafka broker with a specified configuration.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.kafka.config property in the Kafka resource, enter one or more Kafka configuration settings. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    config:
    +      default.replication.factor: 3
    +      offsets.topic.replication.factor: 3
    +      transaction.state.log.replication.factor: 3
    +      transaction.state.log.min.isr: 1
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
+
+

3.1.5. Kafka broker listeners

+
+

Strimzi allows users to configure the listeners which will be enabled in Kafka brokers. +Three types of listener are supported:

+
+
+
    +
  • +

    Plain listener on port 9092 (without encryption)

    +
  • +
  • +

    TLS listener on port 9093 (with encryption)

    +
  • +
  • +

    External listener on port 9094 for access from outside of OpenShift or Kubernetes

    +
  • +
+
+
+
Mutual TLS authentication for clients
+
+
Mutual TLS authentication
+
+

Mutual TLS authentication is always used for the communication between Kafka brokers and Zookeeper pods.Mutual authentication or two-way authentication is when both the server and the client present certificates. Strimzi can configure Kafka to use TLS (Transport Layer Security) to provide encrypted communication between Kafka brokers and clients either with or without mutual authentication. When you configure mutual authentication, the broker authenticates the client and the client authenticates the broker.

+
+
+ + + + + +
+
Note
+
+TLS authentication is more commonly one-way, with one party authenticating the identity of another. For example, when HTTPS is used between a web browser and a web server, the server obtains proof of the identity of the browser. +
+
+
+
+
When to use mutual TLS authentication for clients
+
+

Mutual TLS authentication is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using mutual TLS authentication

    +
  • +
  • +

    It is necessary to use the TLS certificates rather than passwords

    +
  • +
  • +

    You can reconfigure and restart client applications periodically so that they do not use expired certificates.

    +
  • +
+
+
+
+
+
SCRAM-SHA authentication
+
+

SCRAM (Salted Challenge Response Authentication Mechanism) is an authentication protocol that can establish mutual authentication using passwords. Strimzi can configure Kafka to use SASL (Simple Authentication and Security Layer) SCRAM-SHA-512 to provide authentication on both unencrypted and TLS-encrypted client connections. TLS authentication is always used internally between Kafka brokers and Zookeeper nodes. When used with a TLS client connection, the TLS protocol provides encryption, but is not used for authentication.

+
+
+

The following properties of SCRAM make it safe to use SCRAM-SHA even on unencrypted connections:

+
+
+
    +
  • +

    The passwords are not sent in the clear over the communication channel. +Instead the client and the server are each challenged by the other to offer proof that they know the password of the authenticating user.

    +
  • +
  • +

    The server and client each generate a new challenge for each authentication exchange. +This means that the exchange is resilient against replay attacks.

    +
  • +
+
+
+
Supported SCRAM credentials
+
+

Strimzi supports SCRAM-SHA-512 only. +When a KafkaUser.spec.authentication.type is configured with scram-sha-512 the User Operator will generate a random 12 character password consisting of upper and lowercase ASCII letters and numbers.

+
+
+
+
When to use SCRAM-SHA authentication for clients
+
+

SCRAM-SHA is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using SCRAM-SHA-512

    +
  • +
  • +

    It is necessary to use passwords rather than the TLS certificates

    +
  • +
  • +

    Authentication for unencrypted communication is required

    +
  • +
+
+
+
+
+
Kafka listeners
+
+

You can configure Kafka broker listeners using the listeners property in the Kafka.spec.kafka resource. +The listeners property contains three sub-properties:

+
+
+
    +
  • +

    plain

    +
  • +
  • +

    tls

    +
  • +
  • +

    external

    +
  • +
+
+
+

When none of these properties are defined, the listener will be disabled.

+
+
+
An example of listeners property with all listeners enabled
+
+
# ...
+listeners:
+  plain: {}
+  tls: {}
+  external:
+    type: loadbalancer
+# ...
+
+
+
+
An example of listeners property with only the plain listener enabled
+
+
# ...
+listeners:
+  plain: {}
+# ...
+
+
+
+
External listener
+
+

The external listener is used to connect to a Kafka cluster from outside of an OpenShift or Kubernetes environment. +Strimzi supports three types of external listeners:

+
+
+
    +
  • +

    route

    +
  • +
  • +

    loadbalancer

    +
  • +
  • +

    nodeport

    +
  • +
  • +

    ingress

    +
  • +
+
+
+Exposing Kafka using OpenShift Routes +
+

An external listener of type route exposes Kafka by using OpenShift Routes and the HAProxy router. +A dedicated Route is created for every Kafka broker pod. +An additional Route is created to serve as a Kafka bootstrap address. +Kafka clients can use these Routes to connect to Kafka on port 443.

+
+
+ + + + + +
+
Note
+
+Routes are available only on OpenShift. External listeners of type route cannot be used on Kubernetes. +
+
+
+

When exposing Kafka using OpenShift Routes, TLS encryption is always used.

+
+
+

By default, the route hosts are automatically assigned by OpenShift. +However, you can override the assigned route hosts by specifying the requested hosts in the overrides property. +Strimzi will not perform any validation that the requested hosts are available; you must ensure that they are free and can be used.

+
+
+
Example of an external listener of type routes configured with overrides for OpenShift route hosts
+
+
# ...
+listeners:
+  external:
+    type: route
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        host: bootstrap.myrouter.com
+      brokers:
+      - broker: 0
+        host: broker-0.myrouter.com
+      - broker: 1
+        host: broker-1.myrouter.com
+      - broker: 2
+        host: broker-2.myrouter.com
+# ...
+
+
+
+

For more information on using Routes to access Kafka, see Accessing Kafka using OpenShift routes.

+
+
+
+Exposing Kafka using loadbalancers +
+

External listeners of type loadbalancer expose Kafka by using Loadbalancer type Services. +A new loadbalancer service is created for every Kafka broker pod. +An additional loadbalancer is created to serve as a Kafka bootstrap address. +Loadbalancers listen to connections on port 9094.

+
+
+

By default, TLS encryption is enabled. +To disable it, set the tls field to false.

+
+
+

For more information on using loadbalancers to access Kafka, see Accessing Kafka using loadbalancers.

+
+
+
+Exposing Kafka using node ports +
+

External listeners of type nodeport expose Kafka by using NodePort type Services. +When exposing Kafka in this way, Kafka clients connect directly to the nodes of OpenShift or Kubernetes. +You must enable access to the ports on the OpenShift or Kubernetes nodes for each client (for example, in firewalls or security groups). +Each Kafka broker pod is then accessible on a separate port. +Additional NodePort type Service is created to serve as a Kafka bootstrap address.

+
+
+

When configuring the advertised addresses for the Kafka broker pods, Strimzi uses the address of the node on which the given pod is running. +When selecting the node address, the different address types are used with the following priority:

+
+
+
    +
  1. +

    ExternalDNS

    +
  2. +
  3. +

    ExternalIP

    +
  4. +
  5. +

    Hostname

    +
  6. +
  7. +

    InternalDNS

    +
  8. +
  9. +

    InternalIP

    +
  10. +
+
+
+

By default, TLS encryption is enabled. +To disable it, set the tls field to false.

+
+
+ + + + + +
+
Note
+
+TLS hostname verification is not currently supported when exposing Kafka clusters using node ports. +
+
+
+

By default, the port numbers used for the bootstrap and broker services are automatically assigned by OpenShift or Kubernetes. +However, you can override the assigned node ports by specifying the requested port numbers in the overrides property. +Strimzi does not perform any validation on the requested ports; you must ensure that they are free and available for use.

+
+
+
Example of an external listener configured with overrides for node ports
+
+
# ...
+listeners:
+  external:
+    type: nodeport
+    tls: true
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        nodePort: 32100
+      brokers:
+      - broker: 0
+        nodePort: 32000
+      - broker: 1
+        nodePort: 32001
+      - broker: 2
+        nodePort: 32002
+# ...
+
+
+
+

For more information on using node ports to access Kafka, see Accessing Kafka using node ports.

+
+
+
+Exposing Kafka using Kubernetes Ingress +
+

An external listener of type ingress exposes Kafka by using Kubernetes Ingress and the NGINX Ingress Controller for Kubernetes. +A dedicated Ingress resource is created for every Kafka broker pod. +An additional Ingress resource is created to serve as a Kafka bootstrap address. +Kafka clients can use these Ingress resources to connect to Kafka on port 443.

+
+
+ + + + + +
+
Note
+
+External listeners using Ingress have been currently tested only with the NGINX Ingress Controller for Kubernetes. +
+
+
+

Strimzi uses the TLS passthrough feature of the NGINX Ingress Controller for Kubernetes. +Make sure TLS passthrough is enabled in your NGINX Ingress Controller for Kubernetes deployment. +For more information about enabling TLS passthrough see TLS passthrough documentation. +Because it is using the TLS passthrough functionality, TLS encryption cannot be disabled when exposing Kafka using Ingress.

+
+
+

The Ingress controller does not assign any hostnames automatically. +You have to specify the hostnames which should be used by the bootstrap and per-broker services in the spec.kafka.listeners.external.configuration section. +You also have to make sure that the hostnames resolve to the Ingress endpoints. +Strimzi will not perform any validation that the requested hosts are available and properly routed to the Ingress endpoints.

+
+
+
Example of an external listener of type ingress
+
+
# ...
+listeners:
+  external:
+    type: ingress
+    authentication:
+      type: tls
+    configuration:
+      bootstrap:
+        host: bootstrap.myingress.com
+      brokers:
+      - broker: 0
+        host: broker-0.myingress.com
+      - broker: 1
+        host: broker-1.myingress.com
+      - broker: 2
+        host: broker-2.myingress.com
+# ...
+
+
+
+

For more information on using Ingress to access Kafka, see Accessing Kafka using Kubernetes ingress.

+
+
+
+Customizing advertised addresses on external listeners +
+

By default, Strimzi tries to automatically determine the hostnames and ports that your Kafka cluster advertises to its clients. +This is not sufficient in all situations, because the infrastructure on which Strimzi is running might not provide the right hostname or port through which Kafka can be accessed. +You can customize the advertised hostname and port in the overrides property of the external listener. +Strimzi will then automatically configure the advertised address in the Kafka brokers and add it to the broker certificates so it can be used for TLS hostname verification. +Overriding the advertised host and ports is available for all types of external listeners.

+
+
+
Example of an external listener configured with overrides for advertised addresses
+
+
# ...
+listeners:
+  external:
+    type: route
+    authentication:
+      type: tls
+    overrides:
+      brokers:
+      - broker: 0
+        advertisedHost: example.hostname.0
+        advertisedPort: 12340
+      - broker: 1
+        advertisedHost: example.hostname.1
+        advertisedPort: 12341
+      - broker: 2
+        advertisedHost: example.hostname.2
+        advertisedPort: 12342
+# ...
+
+
+
+

Additionally, you can specify the name of the bootstrap service. +This name will be added to the broker certificates and can be used for TLS hostname verification. +Adding the additional bootstrap address is available for all types of external listeners.

+
+
+
Example of an external listener configured with an additional bootstrap address
+
+
# ...
+listeners:
+  external:
+    type: route
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        address: example.hostname
+# ...
+
+
+
+
+Customizing DNS names of external listeners +
+

On loadbalancer +and ingress +listeners, you can use the dnsAnnotations property to add additional annotations to the +ingress resources or +load balancer services. +You can use these annotations to instrument DNS tooling such as External DNS, which automatically assigns DNS names to the +ingress resources or +services.

+
+
+
Example of an external listener of type loadbalancer using link:https://github.com/kubernetes-incubator/external-dns[External DNS^] annotations
+
+
# ...
+listeners:
+  external:
+    type: loadbalancer
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-bootstrap.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+      brokers:
+      - broker: 0
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-broker-0.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+      - broker: 1
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-broker-1.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+      - broker: 2
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-broker-2.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+# ...
+
+
+
+
Example of an external listener of type ingress using link:https://github.com/kubernetes-incubator/external-dns[External DNS^] annotations
+
+
# ...
+listeners:
+  external:
+    type: ingress
+    authentication:
+      type: tls
+    configuration:
+      bootstrap:
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: bootstrap.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: bootstrap.myingress.com
+      brokers:
+      - broker: 0
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: broker-0.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: broker-0.myingress.com
+      - broker: 1
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: broker-1.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: broker-1.myingress.com
+      - broker: 2
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: broker-2.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: broker-2.myingress.com
+# ...
+
+
+
+
+
+
Listener authentication
+
+

The listener sub-properties can also contain additional configuration. +Both listeners support the authentication property. This is used to specify an authentication mechanism specific to that listener:

+
+
+
    +
  • +

    mutual TLS authentication (only on the listeners with TLS encryption)

    +
  • +
  • +

    SCRAM-SHA authentication

    +
  • +
+
+
+

If no authentication property is specified then the listener does not authenticate clients which connect though that listener.

+
+
+
An example where the plain listener is configured for SCRAM-SHA authentication and the tls listener with mutual TLS authentication
+
+
# ...
+listeners:
+  plain:
+    authentication:
+      type: scram-sha-512
+  tls:
+    authentication:
+      type: tls
+  external:
+    type: loadbalancer
+    tls: true
+    authentication:
+      type: tls
+# ...
+
+
+
+

Authentication must be configured when using the User Operator to manage KafkaUsers.

+
+
+
+
Network policies
+
+

Strimzi automatically creates a NetworkPolicy resource for every listener that is enabled on a Kafka broker. +By default, a NetworkPolicy grants access to a listener to all applications and namespaces. +If you want to restrict access to a listener to only selected applications or namespaces, use the networkPolicyPeers field. +Each listener can have a different networkPolicyPeers configuration.

+
+
+

The following example shows a networkPolicyPeers configuration for a plain and a tls listener:

+
+
+
+
# ...
+listeners:
+      plain:
+        authentication:
+          type: scram-sha-512
+        networkPolicyPeers:
+          - podSelector:
+              matchLabels:
+                app: kafka-sasl-consumer
+          - podSelector:
+              matchLabels:
+                app: kafka-sasl-producer
+      tls:
+        authentication:
+          type: tls
+        networkPolicyPeers:
+          - namespaceSelector:
+              matchLabels:
+                project: myproject
+          - namespaceSelector:
+              matchLabels:
+                project: myproject2
+# ...
+
+
+
+

In the above example:

+
+
+
    +
  • +

    Only application pods matching the labels app: kafka-sasl-consumer and app: kafka-sasl-producer can connect to the plain listener. +The application pods must be running in the same namespace as the Kafka broker.

    +
  • +
  • +

    Only application pods running in namespaces matching the labels project: myproject and project: myproject2 can connect to the tls listener.

    +
  • +
+
+
+

The syntax of the networkPolicyPeers field is the same as the from field in the NetworkPolicy resource in Kubernetes. +For more information about the schema, see NetworkPolicyPeer API reference and the KafkaListeners schema reference.

+
+
+ + + + + +
+
Note
+
+Your configuration of OpenShift or Kubernetes must support Ingress NetworkPolicies in order to use network policies in Strimzi. +
+
+
+
+
+
Configuring Kafka listeners
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the listeners property in the Kafka.spec.kafka resource.

    +
    +

    An example configuration of the plain (unencrypted) listener without authentication:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      plain: {}
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using OpenShift routes
+
+
Prerequisites
+
    +
  • +

    An OpenShift cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type route.

    +
    +

    An example configuration with an external listener configured to use Routes:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: route
    +        # ...
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Find the address of the bootstrap Route.

    +
    +
    +
    oc get routes _cluster-name_-kafka-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'
    +
    +
    +
    +

    Use the address together with port 443 in your Kafka client as the bootstrap address.

    +
    +
  6. +
  7. +

    Extract the public certificate of the broker certification authority

    +
    +
    +
    oc extract secret/_cluster-name_-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
    +

    Use the extracted certificate in your Kafka client to configure TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication.

    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using loadbalancers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type loadbalancer.

    +
    +

    An example configuration with an external listener configured to use loadbalancers:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: loadbalancer
    +        tls: true
    +        # ...
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Find the hostname of the bootstrap loadbalancer.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].hostname}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].hostname}{"\n"}'
    +
    +
    +
    +

    If no hostname was found (nothing was returned by the command), use the loadbalancer IP address.

    +
    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].ip}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].ip}{"\n"}'
    +
    +
    +
    +

    Use the hostname or IP address together with port 9094 in your Kafka client as the bootstrap address.

    +
    +
  6. +
  7. +

    Unless TLS encryption was disabled, extract the public certificate of the broker certification authority.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get secret cluster-name-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc extract:

    +
    +
    +
    +
    oc extract secret/cluster-name-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
    +

    Use the extracted certificate in your Kafka client to configure TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication.

    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using node ports
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type nodeport.

    +
    +

    An example configuration with an external listener configured to use node ports:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: nodeport
    +        tls: true
    +        # ...
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Find the port number of the bootstrap service.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.spec.ports[0].nodePort}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.spec.ports[0].nodePort}{"\n"}'
    +
    +
    +
    +

    The port should be used in the Kafka bootstrap address.

    +
    +
  6. +
  7. +

    Find the address of the OpenShift or Kubernetes node.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get node node-name -o=jsonpath='{range .status.addresses[*]}{.type}{"\t"}{.address}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get node node-name -o=jsonpath='{range .status.addresses[*]}{.type}{"\t"}{.address}{"\n"}'
    +
    +
    +
    +

    If several different addresses are returned, select the address type you want based on the following order:

    +
    +
    +
      +
    1. +

      ExternalDNS

      +
    2. +
    3. +

      ExternalIP

      +
    4. +
    5. +

      Hostname

      +
    6. +
    7. +

      InternalDNS

      +
    8. +
    9. +

      InternalIP

      +
      +

      Use the address with the port found in the previous step in the Kafka bootstrap address.

      +
      +
    10. +
    +
    +
  8. +
  9. +

    Unless TLS encryption was disabled, extract the public certificate of the broker certification authority.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get secret cluster-name-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc extract:

    +
    +
    +
    +
    oc extract secret/cluster-name-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
    +

    Use the extracted certificate in your Kafka client to configure TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication.

    +
    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using Kubernetes ingress
+
+

This procedure shows how to access Strimzi Kafka clusters from outside of Kubernetes using Ingress.

+
+
+
Prerequisites
+ +
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type ingress.

    +
    +

    An example configuration with an external listener configured to use Ingress:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: ingress
    +        authentication:
    +          type: tls
    +        configuration:
    +          bootstrap:
    +            host: bootstrap.myingress.com
    +          brokers:
    +          - broker: 0
    +            host: broker-0.myingress.com
    +          - broker: 1
    +            host: broker-1.myingress.com
    +          - broker: 2
    +            host: broker-2.myingress.com
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Make sure the hosts in the configuration section properly resolve to the Ingress endpoints.

    +
  4. +
  5. +

    Create or update the resource.

    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
  7. +

    Extract the public certificate of the broker certificate authority

    +
    +
    +
    oc extract secret/_cluster-name_-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
  8. +
  9. +

    Use the extracted certificate in your Kafka client to configure the TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication. +Connect with your client to the host you specified in the configuration on port 443.

    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
Restricting access to Kafka listeners using networkPolicyPeers
+
+

You can restrict access to a listener to only selected applications by using the networkPolicyPeers field.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster with support for Ingress NetworkPolicies.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the Kafka resource.

    +
  2. +
  3. +

    In the networkPolicyPeers field, define the application pods or namespaces that will be allowed to access the Kafka cluster.

    +
    +

    For example, to configure a tls listener to allow connections only from application pods with the label app set to kafka-client:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      tls:
    +        networkPolicyPeers:
    +          - podSelector:
    +              matchLabels:
    +                app: kafka-client
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.6. Authentication and Authorization

+
+

Strimzi supports authentication and authorization. +Authentication can be configured independently for each listener. +Authorization is always configured for the whole Kafka cluster.

+
+
+
Authentication
+
+

Authentication is configured as part of the listener configuration in the authentication property. +The authentication mechanism is defined by the type field.

+
+
+

When the authentication property is missing, no authentication is enabled on a given listener. +The listener will accept all connections without authentication.

+
+
+

Supported authentication mechanisms:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL SCRAM-SHA-512

    +
  • +
+
+
+
TLS client authentication
+
+

TLS Client authentication is enabled by specifying the type as tls. +The TLS client authentication is supported only on the tls listener.

+
+
+
An example of authentication with type tls
+
+
# ...
+authentication:
+  type: tls
+# ...
+
+
+
+
+
+
Configuring authentication in Kafka brokers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.kafka.listeners property in the Kafka resource, add the authentication field to the listeners for which you want to enable authentication. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      tls:
    +        authentication:
    +          type: tls
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
Authorization
+
+

Authorization can be configured using the authorization property in the Kafka.spec.kafka resource. +When the authorization property is missing, no authorization will be enabled. +When authorization is enabled it will be applied for all enabled listeners. +The authorization method is defined by the type field.

+
+
+

Currently, the only supported authorization method is the Simple authorization.

+
+
+
Simple authorization
+
+

Simple authorization is using the SimpleAclAuthorizer plugin. +SimpleAclAuthorizer is the default authorization plugin which is part of Apache Kafka. +To enable simple authorization, the type field should be set to simple.

+
+
+
An example of Simple authorization
+
+
# ...
+authorization:
+  type: simple
+# ...
+
+
+
+
+
+
Configuring authorization in Kafka brokers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add or edit the authorization property in the Kafka.spec.kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    authorization:
    +      type: simple
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.7. Zookeeper replicas

+
+

Zookeeper clusters or ensembles usually run with an odd number of nodes, typically three, five, or seven.

+
+
+

The majority of nodes must be available in order to maintain an effective quorum. If the Zookeeper cluster loses its quorum, it will stop responding to clients and the Kafka brokers will stop working. Having a stable and highly available Zookeeper cluster is crucial for Strimzi.

+
+
+
+
Three-node cluster
+
+

A three-node Zookeeper cluster requires at least two nodes to be up and running in order to maintain the quorum. +It can tolerate only one node being unavailable.

+
+
Five-node cluster
+
+

A five-node Zookeeper cluster requires at least three nodes to be up and running in order to maintain the quorum. +It can tolerate two nodes being unavailable.

+
+
Seven-node cluster
+
+

A seven-node Zookeeper cluster requires at least four nodes to be up and running in order to maintain the quorum. +It can tolerate three nodes being unavailable.

+
+
+
+
+ + + + + +
+
Note
+
+For development purposes, it is also possible to run Zookeeper with a single node. +
+
+
+

Having more nodes does not necessarily mean better performance, as the costs to maintain the quorum will rise with the number of nodes in the cluster. +Depending on your availability requirements, you can decide for the number of nodes to use.

+
+
+
Number of Zookeeper nodes
+
+

The number of Zookeeper nodes can be configured using the replicas property in Kafka.spec.zookeeper.

+
+
+
An example showing replicas configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+    replicas: 3
+    # ...
+
+
+
+
+
Changing the number of Zookeeper replicas
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.zookeeper.replicas property in the Kafka resource, enter the number of replicated Zookeeper servers. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    replicas: 3
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
+
+

3.1.8. Zookeeper configuration

+
+

Strimzi allows you to customize the configuration of Apache Zookeeper nodes. +You can specify and configure most of the options listed in the Zookeeper documentation.

+
+
+

Options which cannot be configured are those related to the following areas:

+
+
+
    +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener configuration

    +
  • +
  • +

    Configuration of data directories

    +
  • +
  • +

    Zookeeper cluster composition

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Zookeeper configuration
+
+

Zookeeper nodes are configured using the config property in Kafka.spec.zookeeper. +This property contains the Zookeeper configuration options as keys. +The values can be described using one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in Zookeeper documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    server.

    +
  • +
  • +

    dataDir

    +
  • +
  • +

    dataLogDir

    +
  • +
  • +

    clientPort

    +
  • +
  • +

    authProvider

    +
  • +
  • +

    quorum.auth

    +
  • +
  • +

    requireClientAuthScheme

    +
  • +
+
+
+

When one of the forbidden options is present in the config property, it is ignored and a warning message is printed to the Custer Operator log file. +All other options are passed to Zookeeper.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the provided config object. +When invalid configuration is provided, the Zookeeper cluster might not start or might become unstable. +In such cases, the configuration in the Kafka.spec.zookeeper.config object should be fixed and the cluster operator will roll out the new configuration to all Zookeeper nodes. +
+
+
+

Selected options have default values:

+
+
+
    +
  • +

    timeTick with default value 2000

    +
  • +
  • +

    initLimit with default value 5

    +
  • +
  • +

    syncLimit with default value 2

    +
  • +
  • +

    autopurge.purgeInterval with default value 1

    +
  • +
+
+
+

These options will be automatically configured when they are not present in the Kafka.spec.zookeeper.config property.

+
+
+
An example showing Zookeeper configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+    config:
+      autopurge.snapRetainCount: 3
+      autopurge.purgeInterval: 1
+    # ...
+
+
+
+
+
Configuring Zookeeper
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.zookeeper.config property in the Kafka resource, enter one or more Zookeeper configuration settings. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    config:
    +      autopurge.snapRetainCount: 3
    +      autopurge.purgeInterval: 1
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
+
+

3.1.9. Zookeeper connection

+
+

Zookeeper services are secured with encryption and authentication and are not intended to be used by external applications that are not part of Strimzi.

+
+
+

However, if you want to use Kafka CLI tools that require a connection to Zookeeper, such as the kafka-topics tool, you can use a terminal inside a Kafka container and connect to the local end of the TLS tunnel to Zookeeper by using localhost:2181 as the Zookeeper address.

+
+
+
Connecting to Zookeeper from a terminal
+
+

Open a terminal inside a Kafka container to use Kafka CLI tools that require a Zookeeper connection.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    A kafka cluster is running.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the terminal using the OpenShift or Kubernetes console or run the exec command from your CLI.

    +
    +

    For example:

    +
    +
    +
    +
    kubectl exec -ti my-cluster-kafka-0 -- bin/kafka-topics.sh --list --zookeeper localhost:2181
    +
    +
    +
    +

    Be sure to use localhost:2181.

    +
    +
    +

    You can now run Kafka commands to Zookeeper.

    +
    +
  2. +
+
+
+
+
+

3.1.10. Entity Operator

+
+

The Entity Operator is responsible for managing different entities in a running Kafka cluster. +The currently supported entities are:

+
+
+
+
Kafka topics
+
+

managed by the Topic Operator.

+
+
Kafka users
+
+

managed by the User Operator

+
+
+
+
+

Both Topic and User Operators can be deployed on their own. +But the easiest way to deploy them is together with the Kafka cluster as part of the Entity Operator. +The Entity Operator can include either one or both of them depending on the configuration. +They will be automatically configured to manage the topics and users of the Kafka cluster with which they are deployed.

+
+
+

For more information about Topic Operator, see Topic Operator. +For more information about how to use Topic Operator to create or delete topics, see Using the Topic Operator.

+
+
+
Configuration
+
+

The Entity Operator can be configured using the entityOperator property in Kafka.spec

+
+
+

The entityOperator property supports several sub-properties:

+
+
+
    +
  • +

    tlsSidecar

    +
  • +
  • +

    topicOperator

    +
  • +
  • +

    userOperator

    +
  • +
  • +

    template

    +
  • +
+
+
+

The tlsSidecar property can be used to configure the TLS sidecar container which is used to communicate with Zookeeper. +For more details about configuring the TLS sidecar, see TLS sidecar.

+
+
+

The template property can be used to configure details of the Entity Operator pod, such as labels, annotations, affinity, tolerations and so on.

+
+
+

The topicOperator property contains the configuration of the Topic Operator. +When this option is missing, the Entity Operator is deployed without the Topic Operator.

+
+
+

The userOperator property contains the configuration of the User Operator. +When this option is missing, the Entity Operator is deployed without the User Operator.

+
+
+
Example of basic configuration enabling both operators
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+  entityOperator:
+    topicOperator: {}
+    userOperator: {}
+
+
+
+

When both topicOperator and userOperator properties are missing, the Entity Operator will be not deployed.

+
+
+
Topic Operator
+
+

Topic Operator deployment can be configured using additional options inside the topicOperator object. +The following options are supported:

+
+
+
+
watchedNamespace
+
+

The OpenShift or Kubernetes namespace in which the topic operator watches for KafkaTopics. +Default is the namespace where the Kafka cluster is deployed.

+
+
reconciliationIntervalSeconds
+
+

The interval between periodic reconciliations in seconds. +Default 90.

+
+
zookeeperSessionTimeoutSeconds
+
+

The Zookeeper session timeout in seconds. +Default 20.

+
+
topicMetadataMaxAttempts
+
+

The number of attempts at getting topic metadata from Kafka. +The time between each attempt is defined as an exponential back-off. +Consider increasing this value when topic creation could take more time due to the number of partitions or replicas. +Default 6.

+
+
image
+
+

The image property can be used to configure the container image which will be used. +For more details about configuring custom container images, see Container images.

+
+
resources
+
+

The resources property configures the amount of resources allocated to the Topic Operator. +For more details about resource request and limit configuration, see CPU and memory resources.

+
+
logging
+
+

The logging property configures the logging of the Topic Operator.

+
+

The Topic Operator has its own configurable logger:

+
+
+
    +
  • +

    rootLogger.level

    +
  • +
+
+
+
+
+
+
Example of Topic Operator configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+  entityOperator:
+    # ...
+    topicOperator:
+      watchedNamespace: my-topic-namespace
+      reconciliationIntervalSeconds: 60
+    # ...
+
+
+
+
+
User Operator
+
+

User Operator deployment can be configured using additional options inside the userOperator object. +The following options are supported:

+
+
+
+
watchedNamespace
+
+

The OpenShift or Kubernetes namespace in which the topic operator watches for KafkaUsers. +Default is the namespace where the Kafka cluster is deployed.

+
+
reconciliationIntervalSeconds
+
+

The interval between periodic reconciliations in seconds. +Default 120.

+
+
zookeeperSessionTimeoutSeconds
+
+

The Zookeeper session timeout in seconds. +Default 6.

+
+
image
+
+

The image property can be used to configure the container image which will be used. +For more details about configuring custom container images, see Container images.

+
+
resources
+
+

The resources property configures the amount of resources allocated to the User Operator. +For more details about resource request and limit configuration, see CPU and memory resources.

+
+
logging
+
+

The logging property configures the logging of the User Operator.

+
+

The User Operator has its own configurable logger:

+
+
+
    +
  • +

    rootLogger.level

    +
  • +
+
+
+
+
+
+
Example of Topic Operator configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+  entityOperator:
+    # ...
+    userOperator:
+      watchedNamespace: my-user-namespace
+      reconciliationIntervalSeconds: 60
+    # ...
+
+
+
+
+
+
Configuring Entity Operator
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the entityOperator property in the Kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +  entityOperator:
    +    topicOperator:
    +      watchedNamespace: my-topic-namespace
    +      reconciliationIntervalSeconds: 60
    +    userOperator:
    +      watchedNamespace: my-user-namespace
    +      reconciliationIntervalSeconds: 60
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.11. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.12. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka loggers
+
+

Kafka has its own configurable loggers:

+
+
+
    +
  • +

    kafka.root.logger.level

    +
  • +
  • +

    log4j.logger.org.I0Itec.zkclient.ZkClient

    +
  • +
  • +

    log4j.logger.org.apache.zookeeper

    +
  • +
  • +

    log4j.logger.kafka

    +
  • +
  • +

    log4j.logger.org.apache.kafka

    +
  • +
  • +

    log4j.logger.kafka.request.logger

    +
  • +
  • +

    log4j.logger.kafka.network.Processor

    +
  • +
  • +

    log4j.logger.kafka.server.KafkaApis

    +
  • +
  • +

    log4j.logger.kafka.network.RequestChannel$

    +
  • +
  • +

    log4j.logger.kafka.controller

    +
  • +
  • +

    log4j.logger.kafka.log.LogCleaner

    +
  • +
  • +

    log4j.logger.state.change.logger

    +
  • +
  • +

    log4j.logger.kafka.authorizer.logger

    +
  • +
  • +

    Zookeeper

    +
    +
      +
    • +

      zookeeper.root.logger

      +
    • +
    +
    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    logging:
    +      type: inline
    +      loggers:
    +        logger.name: "INFO"
    +    # ...
    +  zookeeper:
    +    # ...
    +    logging:
    +      type: inline
    +      loggers:
    +        logger.name: "INFO"
    +    # ...
    +  entityOperator:
    +    # ...
    +    topicOperator:
    +      # ...
    +      logging:
    +        type: inline
    +        loggers:
    +          logger.name: "INFO"
    +    # ...
    +    # ...
    +    userOperator:
    +      # ...
    +      logging:
    +        type: inline
    +        loggers:
    +          logger.name: "INFO"
    +    # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    logging:
    +      type: external
    +      name: customConfigMap
    +    # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.1.13. Kafka rack awareness

+
+

The rack awareness feature in Strimzi helps to spread the Kafka broker pods and Kafka topic replicas across different racks. +Enabling rack awareness helps to improve availability of Kafka brokers and the topics they are hosting.

+
+
+ + + + + +
+
Note
+
+"Rack" might represent an availability zone, data center, or an actual rack in your data center. +
+
+
+
Configuring rack awareness in Kafka brokers
+
+

Kafka rack awareness can be configured in the rack property of Kafka.spec.kafka. +The rack object has one mandatory field named topologyKey. +This key needs to match one of the labels assigned to the OpenShift or Kubernetes cluster nodes. +The label is used by OpenShift or Kubernetes when scheduling the Kafka broker pods to nodes. +If the OpenShift or Kubernetes cluster is running on a cloud provider platform, that label should represent the availability zone where the node is running. +Usually, the nodes are labeled with failure-domain.beta.kubernetes.io/zone that can be easily used as the topologyKey value. +This has the effect of spreading the broker pods across zones, and also setting the brokers' broker.rack configuration parameter inside Kafka broker.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Consult your OpenShift or Kubernetes administrator regarding the node label that represents the zone / rack into which the node is deployed.

    +
  2. +
  3. +

    Edit the rack property in the Kafka resource using the label as the topology key.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    rack:
    +      topologyKey: failure-domain.beta.kubernetes.io/zone
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional Resources
+
    +
  • +

    For information about Configuring init container image for Kafka rack awareness, see Container images.

    +
  • +
+
+
+
+
+

3.1.14. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.15. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.16. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.17. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.18. TLS sidecar

+
+

A sidecar is a container that runs in a pod but serves a supporting purpose. +In Strimzi, the TLS sidecar uses TLS to encrypt and decrypt all communication between the various components and Zookeeper. +Zookeeper does not have native TLS support.

+
+
+

The TLS sidecar is used in:

+
+
+
    +
  • +

    Kafka brokers

    +
  • +
  • +

    Zookeeper nodes

    +
  • +
  • +

    Entity Operator

    +
  • +
+
+
+
TLS sidecar configuration
+
+

The TLS sidecar can be configured using the tlsSidecar property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.entityOperator

    +
  • +
+
+
+

The TLS sidecar supports the following additional options:

+
+
+
    +
  • +

    image

    +
  • +
  • +

    resources

    +
  • +
  • +

    logLevel

    +
  • +
  • +

    readinessProbe

    +
  • +
  • +

    livenessProbe

    +
  • +
+
+
+

The resources property can be used to specify the memory and CPU resources allocated for the TLS sidecar.

+
+
+

The image property can be used to configure the container image which will be used. +For more details about configuring custom container images, see Container images.

+
+
+

The logLevel property is used to specify the logging level. +Following logging levels are supported:

+
+
+
    +
  • +

    emerg

    +
  • +
  • +

    alert

    +
  • +
  • +

    crit

    +
  • +
  • +

    err

    +
  • +
  • +

    warning

    +
  • +
  • +

    notice

    +
  • +
  • +

    info

    +
  • +
  • +

    debug

    +
  • +
+
+
+

The default value is notice.

+
+
+

For more information about configuring the readinessProbe and livenessProbe properties for the healthchecks, see Healthcheck configurations.

+
+
+
Example of TLS sidecar configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    tlsSidecar:
+      image: my-org/my-image:latest
+      resources:
+        requests:
+          cpu: 200m
+          memory: 64Mi
+        limits:
+          cpu: 500m
+          memory: 128Mi
+      logLevel: debug
+      readinessProbe:
+        initialDelaySeconds: 15
+        timeoutSeconds: 5
+      livenessProbe:
+        initialDelaySeconds: 15
+        timeoutSeconds: 5
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring TLS sidecar
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the tlsSidecar property in the Kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    tlsSidecar:
    +      resources:
    +        requests:
    +          cpu: 200m
    +          memory: 64Mi
    +        limits:
    +          cpu: 500m
    +          memory: 128Mi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.19. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.1.20. Performing a rolling update of a Kafka cluster

+
+

This procedure describes how to manually trigger a rolling update of an existing Kafka cluster by using an OpenShift or Kubernetes annotation.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the StatefulSet that controls the Kafka pods you want to manually update.

    +
    +

    For example, if your Kafka cluster is named my-cluster, the corresponding StatefulSet is named my-cluster-kafka.

    +
    +
  2. +
  3. +

    Annotate a StatefulSet resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate statefulset cluster-name-kafka strimzi.io/manual-rolling-update=true
    +
    +
    +
    +

    On OpenShift, use oc annotate:

    +
    +
    +
    +
    oc annotate statefulset cluster-name-kafka strimzi.io/manual-rolling-update=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation to occur (every two minutes by default). +A rolling update of all pods within the annotated StatefulSet is triggered, as long as the annotation was detected by the reconciliation process. +When the rolling update of all the pods is complete, the annotation is removed from the StatefulSet.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.21. Performing a rolling update of a Zookeeper cluster

+
+

This procedure describes how to manually trigger a rolling update of an existing Zookeeper cluster by using an OpenShift or Kubernetes annotation.

+
+
+
Prerequisites
+
    +
  • +

    A running Zookeeper cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the StatefulSet that controls the Zookeeper pods you want to manually update.

    +
    +

    For example, if your Kafka cluster is named my-cluster, the corresponding StatefulSet is named my-cluster-zookeeper.

    +
    +
  2. +
  3. +

    Annotate a StatefulSet resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate statefulset cluster-name-zookeeper strimzi.io/manual-rolling-update=true
    +
    +
    +
    +

    On OpenShift, use oc annotate:

    +
    +
    +
    +
    oc annotate statefulset cluster-name-zookeeper strimzi.io/manual-rolling-update=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation to occur (every two minutes by default). +A rolling update of all pods within the annotated StatefulSet is triggered, as long as the annotation was detected by the reconciliation process. +When the rolling update of all the pods is complete, the annotation is removed from the StatefulSet.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.22. Scaling clusters

+
+
Scaling Kafka clusters
+
+
Adding brokers to a cluster
+
+

The primary way of increasing throughput for a topic is to increase the number of partitions for that topic. +That works because the extra partitions allow the load of the topic to be shared between the different brokers in the cluster. +However, in situations where every broker is constrained by a particular resource (typically I/O) using more partitions will not result in increased throughput. +Instead, you need to add brokers to the cluster.

+
+
+

When you add an extra broker to the cluster, Kafka does not assign any partitions to it automatically. +You must decide which partitions to move from the existing brokers to the new broker.

+
+
+

Once the partitions have been redistributed between all the brokers, the resource utilization of each broker should be reduced.

+
+
+
+
Removing brokers from a cluster
+
+

Because Strimzi uses StatefulSets to manage broker pods, you cannot remove any pod from the cluster. +You can only remove one or more of the highest numbered pods from the cluster. +For example, in a cluster of 12 brokers the pods are named cluster-name-kafka-0 up to cluster-name-kafka-11. +If you decide to scale down by one broker, the cluster-name-kafka-11 will be removed.

+
+
+

Before you remove a broker from a cluster, ensure that it is not assigned to any partitions. +You should also decide which of the remaining brokers will be responsible for each of the partitions on the broker being decommissioned. +Once the broker has no assigned partitions, you can scale the cluster down safely.

+
+
+
+
+
Partition reassignment
+
+

The Topic Operator does not currently support reassigning replicas to different brokers, so it is necessary to connect directly to broker pods to reassign replicas to brokers.

+
+
+

Within a broker pod, the kafka-reassign-partitions.sh utility allows you to reassign partitions to different brokers.

+
+
+

It has three different modes:

+
+
+
+
--generate
+
+

Takes a set of topics and brokers and generates a reassignment JSON file which will result in the partitions of those topics being assigned to those brokers. +Because this operates on whole topics, it cannot be used when you just need to reassign some of the partitions of some topics.

+
+
--execute
+
+

Takes a reassignment JSON file and applies it to the partitions and brokers in the cluster. +Brokers that gain partitions as a result become followers of the partition leader. +For a given partition, once the new broker has caught up and joined the ISR (in-sync replicas) the old broker will stop being a follower and will delete its replica.

+
+
--verify
+
+

Using the same reassignment JSON file as the --execute step, --verify checks whether all of the partitions in the file have been moved to their intended brokers. +If the reassignment is complete, --verify also removes any throttles that are in effect. +Unless removed, throttles will continue to affect the cluster even after the reassignment has finished.

+
+
+
+
+

It is only possible to have one reassignment running in a cluster at any given time, and it is not possible to cancel a running reassignment. +If you need to cancel a reassignment, wait for it to complete and then perform another reassignment to revert the effects of the first reassignment. +The kafka-reassign-partitions.sh will print the reassignment JSON for this reversion as part of its output. +Very large reassignments should be broken down into a number of smaller reassignments in case there is a need to stop in-progress reassignment.

+
+
+
Reassignment JSON file
+
+

The reassignment JSON file has a specific structure:

+
+
+
+
{
+  "version": 1,
+  "partitions": [
+    <PartitionObjects>
+  ]
+}
+
+
+
+

Where <PartitionObjects> is a comma-separated list of objects like:

+
+
+
+
{
+  "topic": <TopicName>,
+  "partition": <Partition>,
+  "replicas": [ <AssignedBrokerIds> ]
+}
+
+
+
+ + + + + +
+
Note
+
+Although Kafka also supports a "log_dirs" property this should not be used in Strimzi. +
+
+
+

The following is an example reassignment JSON file that assigns topic topic-a, partition 4 to brokers 2, 4 and 7, and topic topic-b partition 2 to brokers 1, 5 and 7:

+
+
+
+
{
+  "version": 1,
+  "partitions": [
+    {
+      "topic": "topic-a",
+      "partition": 4,
+      "replicas": [2,4,7]
+    },
+    {
+      "topic": "topic-b",
+      "partition": 2,
+      "replicas": [1,5,7]
+    }
+  ]
+}
+
+
+
+

Partitions not included in the JSON are not changed.

+
+
+
+
Reassigning partitions between JBOD volumes
+
+

When using JBOD storage in your Kafka cluster, you can choose to reassign the partitions between specific volumes and their log directories (each volume has a single log directory). +To reassign a partition to a specific volume, add the log_dirs option to <PartitionObjects> in the reassignment JSON file.

+
+
+
+
{
+  "topic": <TopicName>,
+  "partition": <Partition>,
+  "replicas": [ <AssignedBrokerIds> ],
+  "log_dirs": [ <AssignedLogDirs> ]
+}
+
+
+
+

The log_dirs object should contain the same number of log directories as the number of replicas specified in the replicas object. +The value should be either an absolute path to the log directory, or the any keyword.

+
+
+

For example:

+
+
+
+
{
+      "topic": "topic-a",
+      "partition": 4,
+      "replicas": [2,4,7].
+      "log_dirs": [ "/var/lib/kafka/data-0/kafka-log2", "/var/lib/kafka/data-0/kafka-log4", "/var/lib/kafka/data-0/kafka-log7" ]
+}
+
+
+
+
+
+
Generating reassignment JSON files
+
+

This procedure describes how to generate a reassignment JSON file that reassigns all the partitions for a given set of topics using the kafka-reassign-partitions.sh tool.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource

    +
  • +
  • +

    A set of topics to reassign the partitions of

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a JSON file named topics.json that lists the topics to move. +It must have the following structure:

    +
    +
    +
    {
    +  "version": 1,
    +  "topics": [
    +    <TopicObjects>
    +  ]
    +}
    +
    +
    +
    +

    where <TopicObjects> is a comma-separated list of objects like:

    +
    +
    +
    +
    {
    +  "topic": <TopicName>
    +}
    +
    +
    +
    +

    For example if you want to reassign all the partitions of topic-a and topic-b, you would need to prepare a topics.json file like this:

    +
    +
    +
    +
    {
    +  "version": 1,
    +  "topics": [
    +    { "topic": "topic-a"},
    +    { "topic": "topic-b"}
    +  ]
    +}
    +
    +
    +
  2. +
  3. +

    Copy the topics.json file to one of the broker pods:

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    cat topics.json | kubectl exec -c kafka <BrokerPod> -i -- \
    +  /bin/bash -c \
    +  'cat > /tmp/topics.json'
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    cat topics.json | oc rsh -c kafka <BrokerPod> /bin/bash -c \
    +  'cat > /tmp/topics.json'
    +
    +
    +
  4. +
  5. +

    Use the kafka-reassign-partitions.sh` command to generate the reassignment JSON.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec <BrokerPod> -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --topics-to-move-json-file /tmp/topics.json \
    +  --broker-list <BrokerList> \
    +  --generate
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka <BrokerPod> \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --topics-to-move-json-file /tmp/topics.json \
    +  --broker-list <BrokerList> \
    +  --generate
    +
    +
    +
    +

    For example, to move all the partitions of topic-a and topic-b to brokers 4 and 7

    +
    +
    +
    +
    oc rsh -c kafka _<BrokerPod>_ \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --topics-to-move-json-file /tmp/topics.json \
    +  --broker-list 4,7 \
    +  --generate
    +
    +
    +
  6. +
+
+
+
+
Creating reassignment JSON files manually
+
+

You can manually create the reassignment JSON file if you want to move specific partitions.

+
+
+
+
Reassignment throttles
+
+

Partition reassignment can be a slow process because it involves transferring large amounts of data between brokers. +To avoid a detrimental impact on clients, you can throttle the reassignment process. +This might cause the reassignment to take longer to complete.

+
+
+
    +
  • +

    If the throttle is too low then the newly assigned brokers will not be able to keep up with records being published and the reassignment will never complete.

    +
  • +
  • +

    If the throttle is too high then clients will be impacted.

    +
  • +
+
+
+

For example, for producers, this could manifest as higher than normal latency waiting for acknowledgement. For consumers, this could manifest as a drop in throughput caused by higher latency between polls.

+
+
+
+
Scaling up a Kafka cluster
+
+

This procedure describes how to increase the number of brokers in a Kafka cluster.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster.

    +
  • +
  • +

    A reassignment JSON file named reassignment.json that describes how partitions should be reassigned to brokers in the enlarged cluster.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add as many new brokers as you need by increasing the Kafka.spec.kafka.replicas configuration option.

    +
  2. +
  3. +

    Verify that the new broker pods have started.

    +
  4. +
  5. +

    Copy the reassignment.json file to the broker pod on which you will later execute the commands:

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    cat reassignment.json | \
    +  kubectl exec broker-pod -c kafka -i -- /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka broker-pod /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    For example:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka my-cluster-kafka-0 /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
  6. +
  7. +

    Execute the partition reassignment using the kafka-reassign-partitions.sh command line tool from the same broker pod.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    If you are going to throttle replication you can also pass the --throttle option with an inter-broker throttled rate in bytes per second. For example:

    +
    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    This command will print out two reassignment JSON objects. +The first records the current assignment for the partitions being moved. +You should save this to a local file (not a file in the pod) in case you need to revert the reassignment later on. +The second JSON object is the target reassignment you have passed in your reassignment JSON file.

    +
    +
  8. +
  9. +

    If you need to change the throttle during reassignment you can use the same command line with a different throttled rate. For example:

    +
    +

    On Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
  10. +
  11. +

    Periodically verify whether the reassignment has completed using the kafka-reassign-partitions.sh command line tool from any of the broker pods. This is the same command as the previous step but with the --verify option instead of the --execute option.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on OpenShift,

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
  12. +
  13. +

    The reassignment has finished when the --verify command reports each of the partitions being moved as completed successfully. +This final --verify will also have the effect of removing any reassignment throttles. +You can now delete the revert file if you saved the JSON for reverting the assignment to their original brokers.

    +
  14. +
+
+
+
+
Scaling down a Kafka cluster
+
+
Additional resources
+

This procedure describes how to decrease the number of brokers in a Kafka cluster.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster.

    +
  • +
  • +

    A reassignment JSON file named reassignment.json describing how partitions should be reassigned to brokers in the cluster once the broker(s) in the highest numbered Pod(s) have been removed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Copy the reassignment.json file to the broker pod on which you will later execute the commands:

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    cat reassignment.json | \
    +  kubectl exec broker-pod -c kafka -i -- /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka broker-pod /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    For example:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka my-cluster-kafka-0 /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
  2. +
  3. +

    Execute the partition reassignment using the kafka-reassign-partitions.sh command line tool from the same broker pod.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    If you are going to throttle replication you can also pass the --throttle option with an inter-broker throttled rate in bytes per second. For example:

    +
    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    This command will print out two reassignment JSON objects. +The first records the current assignment for the partitions being moved. +You should save this to a local file (not a file in the pod) in case you need to revert the reassignment later on. +The second JSON object is the target reassignment you have passed in your reassignment JSON file.

    +
    +
  4. +
  5. +

    If you need to change the throttle during reassignment you can use the same command line with a different throttled rate. For example:

    +
    +

    On Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
  6. +
  7. +

    Periodically verify whether the reassignment has completed using the kafka-reassign-partitions.sh command line tool from any of the broker pods. This is the same command as the previous step but with the --verify option instead of the --execute option.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on OpenShift,

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
  8. +
  9. +

    The reassignment has finished when the --verify command reports each of the partitions being moved as completed successfully. +This final --verify will also have the effect of removing any reassignment throttles. +You can now delete the revert file if you saved the JSON for reverting the assignment to their original brokers.

    +
  10. +
  11. +

    Once all the partition reassignments have finished, the broker(s) being removed should not have responsibility for any of the partitions in the cluster. +You can verify this by checking that the broker’s data log directory does not contain any live partition logs. +If the log directory on the broker contains a directory that does not match the extended regular expression [a-zA-Z0-9.-]+\.[a-z0-9]+-delete$ then the broker still has live partitions and it should not be stopped.

    +
    +

    You can check this by executing the command:

    +
    +
    +
    +
    oc rsh <BrokerN> -c kafka /bin/bash -c \
    +  "ls -l /var/lib/kafka/kafka-log_<N>_ | grep -E '^d' | grep -vE '[a-zA-Z0-9.-]+\.[a-z0-9]+-delete$'"
    +
    +
    +
    +

    where N is the number of the Pod(s) being deleted.

    +
    +
    +

    If the above command prints any output then the broker still has live partitions. +In this case, either the reassignment has not finished, or the reassignment JSON file was incorrect.

    +
    +
  12. +
  13. +

    Once you have confirmed that the broker has no live partitions you can edit the Kafka.spec.kafka.replicas of your Kafka resource, which will scale down the StatefulSet, deleting the highest numbered broker Pod(s).

    +
  14. +
+
+
+
+
+

3.1.23. Deleting Kafka nodes manually

+
+
Additional resources
+

This procedure describes how to delete an existing Kafka node by using an OpenShift or Kubernetes annotation. +Deleting a Kafka node consists of deleting both the Pod on which the Kafka broker is running and the related PersistentVolumeClaim (if the cluster was deployed with persistent storage). +After deletion, the Pod and its related PersistentVolumeClaim are recreated automatically.

+
+
+ + + + + +
+
Warning
+
+Deleting a PersistentVolumeClaim can cause permanent data loss. The following procedure should only be performed if you have encountered storage issues. +
+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the Pod that you want to delete.

    +
    +

    For example, if the cluster is named cluster-name, the pods are named cluster-name-kafka-index, where index starts at zero and ends at the total number of replicas.

    +
    +
  2. +
  3. +

    Annotate the Pod resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate pod cluster-name-kafka-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
    +

    On OpenShift use oc annotate:

    +
    +
    +
    +
    oc annotate pod cluster-name-kafka-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation, when the annotated pod with the underlying persistent volume claim will be deleted and then recreated.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.24. Deleting Zookeeper nodes manually

+
+

This procedure describes how to delete an existing Zookeeper node by using an OpenShift or Kubernetes annotation. +Deleting a Zookeeper node consists of deleting both the Pod on which Zookeeper is running and the related PersistentVolumeClaim (if the cluster was deployed with persistent storage). +After deletion, the Pod and its related PersistentVolumeClaim are recreated automatically.

+
+
+ + + + + +
+
Warning
+
+Deleting a PersistentVolumeClaim can cause permanent data loss. The following procedure should only be performed if you have encountered storage issues. +
+
+
+
Prerequisites
+
    +
  • +

    A running Zookeeper cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the Pod that you want to delete.

    +
    +

    For example, if the cluster is named cluster-name, the pods are named cluster-name-zookeeper-index, where index starts at zero and ends at the total number of replicas.

    +
    +
  2. +
  3. +

    Annotate the Pod resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate pod cluster-name-zookeeper-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
    +

    On OpenShift use oc annotate:

    +
    +
    +
    +
    oc annotate pod cluster-name-zookeeper-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation, when the annotated pod with the underlying persistent volume claim will be deleted and then recreated.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.25. Maintenance time windows for rolling updates

+
+

Maintenance time windows allow you to schedule certain rolling updates of your Kafka and Zookeeper clusters to start at a convenient time.

+
+
+
Maintenance time windows overview
+
+

In most cases, the Cluster Operator only updates your Kafka or Zookeeper clusters in response to changes to the corresponding Kafka resource. +This enables you to plan when to apply changes to a Kafka resource to minimize the impact on Kafka client applications.

+
+
+

However, some updates to your Kafka and Zookeeper clusters can happen without any corresponding change to the Kafka resource. +For example, the Cluster Operator will need to perform a rolling restart if a CA (Certificate Authority) certificate that it manages is close to expiry.

+
+
+

While a rolling restart of the pods should not affect availability of the service (assuming correct broker and topic configurations), it could affect performance of the Kafka client applications. +Maintenance time windows allow you to schedule such spontaneous rolling updates of your Kafka and Zookeeper clusters to start at a convenient time. +If maintenance time windows are not configured for a cluster then it is possible that such spontaneous rolling updates will happen at an inconvenient time, such as during a predictable period of high load.

+
+
+
+
Maintenance time window definition
+
+

You configure maintenance time windows by entering an array of strings in the Kafka.spec.maintenanceTimeWindows property. +Each string is a cron expression interpreted as being in UTC (Coordinated Universal Time, which for practical purposes is the same as Greenwich Mean Time).

+
+
+

The following example configures a single maintenance time window that starts at midnight and ends at 01:59am (UTC), on Sundays, Mondays, Tuesdays, Wednesdays, and Thursdays:

+
+
+
+
# ...
+maintenanceTimeWindows:
+  - "* * 0-1 ? * SUN,MON,TUE,WED,THU *"
+# ...
+
+
+
+

In practice, maintenance windows should be set in conjunction with the Kafka.spec.clusterCa.renewalDays and Kafka.spec.clientsCa.renewalDays properties of the Kafka resource, to ensure that the necessary CA certificate renewal can be completed in the configured maintenance time windows.

+
+
+ + + + + +
+
Note
+
+Strimzi does not schedule maintenance operations exactly according to the given windows. Instead, for each reconciliation, it checks whether a maintenance window is currently "open". +This means that the start of maintenance operations within a given time window can be delayed by up to the Cluster Operator reconciliation interval. +Maintenance time windows must therefore be at least this long. +
+
+
+
Additional resources
+ +
+
+
+
Configuring a maintenance time window
+
+

You can configure a maintenance time window for rolling updates triggered by supported processes.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add or edit the maintenanceTimeWindows property in the Kafka resource. +For example to allow maintenance between 0800 and 1059 and between 1400 and 1559 you would set the maintenanceTimeWindows as shown below:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +  maintenanceTimeWindows:
    +    - "* * 8-10 * * ?"
    +    - "* * 14-15 * * ?"
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.26. List of resources created as part of Kafka cluster

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
cluster-name-kafka
+
+

StatefulSet which is in charge of managing the Kafka broker pods.

+
+
cluster-name-kafka-brokers
+
+

Service needed to have DNS resolve the Kafka broker pods IP addresses directly.

+
+
cluster-name-kafka-bootstrap
+
+

Service can be used as bootstrap servers for Kafka clients.

+
+
cluster-name-kafka-external-bootstrap
+
+

Bootstrap service for clients connecting from outside of the OpenShift or Kubernetes cluster. This resource will be created only when external listener is enabled.

+
+
cluster-name-kafka-pod-id
+
+

Service used to route traffic from outside of the OpenShift or Kubernetes cluster to individual pods. This resource will be created only when external listener is enabled.

+
+
cluster-name-kafka-external-bootstrap
+
+

Bootstrap route for clients connecting from outside of the OpenShift or Kubernetes cluster. This resource will be created only when external listener is enabled and set to type route.

+
+
cluster-name-kafka-pod-id
+
+

Route for traffic from outside of the OpenShift or Kubernetes cluster to individual pods. This resource will be created only when external listener is enabled and set to type route.

+
+
cluster-name-kafka-config
+
+

ConfigMap which contains the Kafka ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
cluster-name-kafka-brokers
+
+

Secret with Kafka broker keys.

+
+
cluster-name-kafka
+
+

Service account used by the Kafka brokers.

+
+
cluster-name-kafka
+
+

Pod Disruption Budget configured for the Kafka brokers.

+
+
strimzi-namespace-name-cluster-name-kafka-init
+
+

Cluster role binding used by the Kafka brokers.

+
+
cluster-name-zookeeper
+
+

StatefulSet which is in charge of managing the Zookeeper node pods.

+
+
cluster-name-zookeeper-nodes
+
+

Service needed to have DNS resolve the Zookeeper pods IP addresses directly.

+
+
cluster-name-zookeeper-client
+
+

Service used by Kafka brokers to connect to Zookeeper nodes as clients.

+
+
cluster-name-zookeeper-config
+
+

ConfigMap which contains the Zookeeper ancillary configuration and is mounted as a volume by the Zookeeper node pods.

+
+
cluster-name-zookeeper-nodes
+
+

Secret with Zookeeper node keys.

+
+
cluster-name-zookeeper
+
+

Pod Disruption Budget configured for the Zookeeper nodes.

+
+
cluster-name-entity-operator
+
+

Deployment with Topic and User Operators. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-topic-operator-config
+
+

Configmap with ancillary configuration for Topic Operators. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-user-operator-config
+
+

Configmap with ancillary configuration for User Operators. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-operator-certs
+
+

Secret with Entitiy operators keys for communication with Kafka and Zookeeper. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-operator
+
+

Service account used by the Entity Operator.

+
+
strimzi-cluster-name-topic-operator
+
+

Role binding used by the Entity Operator.

+
+
strimzi-cluster-name-user-operator
+
+

Role binding used by the Entity Operator.

+
+
cluster-name-cluster-ca
+
+

Secret with the Cluster CA used to encrypt the cluster communication.

+
+
cluster-name-cluster-ca-cert
+
+

Secret with the Cluster CA public key. This key can be used to verify the identity of the Kafka brokers.

+
+
cluster-name-clients-ca
+
+

Secret with the Clients CA used to encrypt the communication between Kafka brokers and Kafka clients.

+
+
cluster-name-clients-ca-cert
+
+

Secret with the Clients CA public key. This key can be used to verify the identity of the Kafka brokers.

+
+
cluster-name-cluster-operator-certs
+
+

Secret with Cluster operators keys for communication with Kafka and Zookeeper.

+
+
data-cluster-name-kafka-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Kafka broker pod idx. This resource will be created only if persistent storage is selected for provisioning persistent volumes to store data.

+
+
data-id-cluster-name-kafka-idx
+
+

Persistent Volume Claim for the volume id used for storing data for the Kafka broker pod idx. This resource is only created if persistent storage is selected for JBOD volumes when provisioning persistent volumes to store data.

+
+
data-cluster-name-zookeeper-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Zookeeper node pod idx. This resource will be created only if persistent storage is selected for provisioning persistent volumes to store data.

+
+
+
+
+
+
+

3.2. Kafka Connect cluster configuration

+
+

The full schema of the KafkaConnect resource is described in the KafkaConnect schema reference. +All labels that are applied to the desired KafkaConnect resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka Connect cluster. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.2.1. Replicas

+
+

Kafka Connect clusters can run multiple of nodes. +The number of nodes is defined in the KafkaConnect and KafkaConnectS2I resources. +Running a Kafka Connect cluster with multiple nodes can provide better availability and scalability. +However, when running Kafka Connect on OpenShift or Kubernetes it is not absolutely necessary to run multiple nodes of Kafka Connect for high availability. +If a node where Kafka Connect is deployed to crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Connect pod to a different node. +However, running Kafka Connect with multiple nodes can provide faster failover times, because the other nodes will be up and running already.

+
+
+
Configuring the number of nodes
+
+

The number of Kafka Connect nodes is configured using the replicas property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.2. Bootstrap servers

+
+

A Kafka Connect cluster always works in combination with a Kafka cluster. +A Kafka cluster is specified as a list of bootstrap servers. +On OpenShift or Kubernetes, the list must ideally contain the Kafka cluster bootstrap service named cluster-name-kafka-bootstrap, and a port of 9092 for plain traffic or 9093 for encrypted traffic.

+
+
+

The list of bootstrap servers is configured in the bootstrapServers property in KafkaConnect.spec and KafkaConnectS2I.spec. The servers must be defined as a comma-separated list specifying one or more Kafka brokers, or a service pointing to Kafka brokers specified as a hostname:_port_ pairs.

+
+
+

When using Kafka Connect with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the bootstrapServers property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka-bootstrap:9092
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.3. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Connect tries to connect to Kafka brokers using a plain text connection. +If you prefer to use TLS, additional configuration is required.

+
+
+
TLS support in Kafka Connect
+
+

TLS support is configured in the tls property in KafkaConnect.spec and KafkaConnectS2I.spec. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates must be stored in X509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-other-secret
+        certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnectS2I
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-secret
+        certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication, and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used in authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
  2. +
  3. +

    Edit the tls property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  tls:
    +    trustedCertificates:
    +      - secretName: my-cluster-cluster-cert
    +        certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.2.4. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Connect will try to connect to Kafka brokers without authentication. +Authentication is enabled through the KafkaConnect and KafkaConnectS2I resources.

+
+
+
Authentication support in Kafka Connect
+
+

Authentication is configured through the authentication property in KafkaConnect.spec and KafkaConnectS2I.spec. +The authentication property specifies the type of the authentication mechanisms which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Connect see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: tls
+    certificateAndKey:
+      secretName: my-secret
+      certificate: public.crt
+      key: private.key
+  # ...
+
+
+
+
+
SASL based SCRAM-SHA-512 authentication
+
+

To configure Kafka Connect to use SASL-based SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SASL based SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: scram-sha-512
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
SASL based PLAIN authentication
+
+

To configure Kafka Connect to use SASL-based PLAIN authentication, set the type property to plain. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of such a Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example showing SASL based PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: plain
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: tls
    +    certificateAndKey:
    +      secretName: my-secret
    +      certificate: my-public.crt
    +      key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    Username of the user which should be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication and the key under which the password is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used in authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password>.txt
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: scram-sha-512
    +    username: _<my-username>_
    +    passwordSecret:
    +      secretName: _<my-secret>_
    +      password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.2.5. Kafka Connect configuration

+
+

Strimzi allows you to customize the configuration of Apache Kafka Connect nodes by editing certain options listed in Apache Kafka documentation.

+
+
+

Configuration options that cannot be configured relate to:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener / REST interface configuration

    +
  • +
  • +

    Plugin path configuration

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka Connect configuration
+
+

Kafka Connect is configured using the config property in KafkaConnect.spec and KafkaConnectS2I.spec. +This property contains the Kafka Connect configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

You can specify and configure the options listed in the Apache Kafka documentation with the exception of those options that are managed directly by Strimzi. +Specifically, configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    listeners

    +
  • +
  • +

    plugin.path

    +
  • +
  • +

    rest.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
+
+
+

When a forbidden option is present in the config property, it is ignored and a warning message is printed to the Custer Operator log file. +All other options are passed to Kafka Connect.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Connect cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config object, then the Cluster Operator can roll out the new configuration to all Kafka Connect nodes. +
+
+
+

Certain options have default values:

+
+
+
    +
  • +

    group.id with default value connect-cluster

    +
  • +
  • +

    offset.storage.topic with default value connect-cluster-offsets

    +
  • +
  • +

    config.storage.topic with default value connect-cluster-configs

    +
  • +
  • +

    status.storage.topic with default value connect-cluster-status

    +
  • +
  • +

    key.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
  • +

    value.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
+
+
+

These options are automatically configured in case they are not present in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config properties.

+
+
+
Example Kafka Connect configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  config:
+    group.id: my-connect-cluster
+    offset.storage.topic: my-connect-cluster-offsets
+    config.storage.topic: my-connect-cluster-configs
+    status.storage.topic: my-connect-cluster-status
+    key.converter: org.apache.kafka.connect.json.JsonConverter
+    value.converter: org.apache.kafka.connect.json.JsonConverter
+    key.converter.schemas.enable: true
+    value.converter.schemas.enable: true
+    config.storage.replication.factor: 3
+    offset.storage.replication.factor: 3
+    status.storage.replication.factor: 3
+  # ...
+
+
+
+
+
Configuring Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the config property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    group.id: my-connect-cluster
    +    offset.storage.topic: my-connect-cluster-offsets
    +    config.storage.topic: my-connect-cluster-configs
    +    status.storage.topic: my-connect-cluster-status
    +    key.converter: org.apache.kafka.connect.json.JsonConverter
    +    value.converter: org.apache.kafka.connect.json.JsonConverter
    +    key.converter.schemas.enable: true
    +    value.converter.schemas.enable: true
    +    config.storage.replication.factor: 3
    +    offset.storage.replication.factor: 3
    +    status.storage.replication.factor: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.6. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.2.7. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka Connect loggers
+
+

Kafka Connect has its own configurable loggers:

+
+
+
    +
  • +

    connect.root.logger.level

    +
  • +
  • +

    log4j.logger.org.apache.zookeeper

    +
  • +
  • +

    log4j.logger.org.I0Itec.zkclient

    +
  • +
  • +

    log4j.logger.org.reflections

    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +spec:
    +  # ...
    +  logging:
    +    type: inline
    +    loggers:
    +      logger.name: "INFO"
    +  # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +spec:
    +  # ...
    +  logging:
    +    type: external
    +    name: customConfigMap
    +  # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.2.8. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.9. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.10. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.11. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.12. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.2.13. Using external configuration and secrets

+
+

Kafka Connect connectors are configured using an HTTP REST interface. +The connector configuration is passed to Kafka Connect as part of an HTTP request and stored within Kafka itself.

+
+
+

Some parts of the configuration of a Kafka Connect connector can be externalized using ConfigMaps or Secrets. +You can then reference the configuration values in HTTP REST commands (this keeps the configuration separate and more secure, if needed). +This method applies especially to confidential data, such as usernames, passwords, or certificates.

+
+
+

ConfigMaps and Secrets are standard OpenShift or Kubernetes resources used for storing of configurations and confidential data.

+
+
+
Storing connector configurations externally
+
+

You can mount ConfigMaps or Secrets into a Kafka Connect pod as volumes or environment variables. +Volumes and environment variables are configured in the externalConfiguration property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
External configuration as environment variables
+
+

The env property is used to specify one or more environment variables. +These variables can contain a value from either a ConfigMap or a Secret.

+
+
+ + + + + +
+
Note
+
+The names of user-defined environment variables cannot start with KAFKA_ or STRIMZI_. +
+
+
+

To mount a value from a Secret to an environment variable, use the valueFrom property and the secretKeyRef as shown in the following example.

+
+
+
Example of an environment variable set to a value from a Secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          secretKeyRef:
+            name: my-secret
+            key: my-key
+
+
+
+

A common use case for mounting Secrets to environment variables is when your connector needs to communicate with Amazon AWS and needs to read the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables with credentials.

+
+
+

To mount a value from a ConfigMap to an environment variable, use configMapKeyRef in the valueFrom property as shown in the following example.

+
+
+
Example of an environment variable set to a value from a ConfigMap
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          configMapKeyRef:
+            name: my-config-map
+            key: my-key
+
+
+
+
+
External configuration as volumes
+
+

You can also mount ConfigMaps or Secrets to a Kafka Connect pod as volumes. +Using volumes instead of environment variables is useful in the following scenarios:

+
+
+
    +
  • +

    Mounting truststores or keystores with TLS certificates

    +
  • +
  • +

    Mounting a properties file that is used to configure Kafka Connect connectors

    +
  • +
+
+
+

In the volumes property of the externalConfiguration resource, list the ConfigMaps or Secrets that will be mounted as volumes. +Each volume must specify a name in the name property and a reference to ConfigMap or Secret.

+
+
+
Example of volumes with external configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    volumes:
+      - name: connector1
+        configMap:
+          name: connector1-configuration
+      - name: connector1-certificates
+        secret:
+          secretName: connector1-certificates
+
+
+
+

The volumes will be mounted inside the Kafka Connect containers in the path /opt/kafka/external-configuration/<volume-name>. +For example, the files from a volume named connector1 would appear in the directory /opt/kafka/external-configuration/connector1.

+
+
+

The FileConfigProvider has to be used to read the values from the mounted properties files in connector configurations.

+
+
+
+
+
Mounting Secrets as environment variables
+
+

You can create an OpenShift or Kubernetes Secret and mount it to Kafka Connect as an environment variable.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing the information that will be mounted as an environment variable. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: aws-creds
    +type: Opaque
    +data:
    +  awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
    +  awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  externalConfiguration:
    +    env:
    +      - name: AWS_ACCESS_KEY_ID
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsAccessKey
    +      - name: AWS_SECRET_ACCESS_KEY
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsSecretAccessKey
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+

The environment variables are now available for use when developing your connectors.

+
+
+
Additional resources
+ +
+
+
+
Mounting Secrets as volumes
+
+

You can create an OpenShift or Kubernetes Secret, mount it as a volume to Kafka Connect, and then use it to configure a Kafka Connect connector.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing a properties file that defines the configuration options for your connector configuration. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: mysecret
    +type: Opaque
    +stringData:
    +  connector.properties: |-
    +    dbUsername: my-user
    +    dbPassword: my-password
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the FileConfigProvider in the config section and the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    config.providers: file
    +    config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider
    +  #...
    +  externalConfiguration:
    +    volumes:
    +      - name: connector-config
    +        secret:
    +          secretName: mysecret
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
  7. +

    Use the values from the mounted properties file in your JSON payload with connector configuration. +For example:

    +
    +
    +
    {
    +   "name":"my-connector",
    +   "config":{
    +      "connector.class":"MyDbConnector",
    +      "tasks.max":"3",
    +      "database": "my-postgresql:5432"
    +      "username":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbUsername}",
    +      "password":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbPassword}",
    +      # ...
    +   }
    +}
    +
    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
+

3.2.14. List of resources created as part of Kafka Connect cluster

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
connect-cluster-name-connect
+
+

Deployment which is in charge to create the Kafka Connect worker node pods.

+
+
connect-cluster-name-connect-api
+
+

Service which exposes the REST interface for managing the Kafka Connect cluster.

+
+
connect-cluster-name-config
+
+

ConfigMap which contains the Kafka Connect ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
connect-cluster-name-connect
+
+

Pod Disruption Budget configured for the Kafka Connect worker nodes.

+
+
+
+
+
+
+

3.3. Kafka Connect cluster with Source2Image support

+
+

The full schema of the KafkaConnectS2I resource is described in the KafkaConnectS2I schema reference. +All labels that are applied to the desired KafkaConnectS2I resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka Connect cluster with Source2Image support. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.3.1. Replicas

+
+

Kafka Connect clusters can run multiple of nodes. +The number of nodes is defined in the KafkaConnect and KafkaConnectS2I resources. +Running a Kafka Connect cluster with multiple nodes can provide better availability and scalability. +However, when running Kafka Connect on OpenShift or Kubernetes it is not absolutely necessary to run multiple nodes of Kafka Connect for high availability. +If a node where Kafka Connect is deployed to crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Connect pod to a different node. +However, running Kafka Connect with multiple nodes can provide faster failover times, because the other nodes will be up and running already.

+
+
+
Configuring the number of nodes
+
+

The number of Kafka Connect nodes is configured using the replicas property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.2. Bootstrap servers

+
+

A Kafka Connect cluster always works in combination with a Kafka cluster. +A Kafka cluster is specified as a list of bootstrap servers. +On OpenShift or Kubernetes, the list must ideally contain the Kafka cluster bootstrap service named cluster-name-kafka-bootstrap, and a port of 9092 for plain traffic or 9093 for encrypted traffic.

+
+
+

The list of bootstrap servers is configured in the bootstrapServers property in KafkaConnect.spec and KafkaConnectS2I.spec. The servers must be defined as a comma-separated list specifying one or more Kafka brokers, or a service pointing to Kafka brokers specified as a hostname:_port_ pairs.

+
+
+

When using Kafka Connect with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the bootstrapServers property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka-bootstrap:9092
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.3. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Connect tries to connect to Kafka brokers using a plain text connection. +If you prefer to use TLS, additional configuration is required.

+
+
+
TLS support in Kafka Connect
+
+

TLS support is configured in the tls property in KafkaConnect.spec and KafkaConnectS2I.spec. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates must be stored in X509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-other-secret
+        certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnectS2I
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-secret
+        certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication, and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used in authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
  2. +
  3. +

    Edit the tls property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  tls:
    +    trustedCertificates:
    +      - secretName: my-cluster-cluster-cert
    +        certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.3.4. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Connect will try to connect to Kafka brokers without authentication. +Authentication is enabled through the KafkaConnect and KafkaConnectS2I resources.

+
+
+
Authentication support in Kafka Connect
+
+

Authentication is configured through the authentication property in KafkaConnect.spec and KafkaConnectS2I.spec. +The authentication property specifies the type of the authentication mechanisms which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Connect see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: tls
+    certificateAndKey:
+      secretName: my-secret
+      certificate: public.crt
+      key: private.key
+  # ...
+
+
+
+
+
SASL based SCRAM-SHA-512 authentication
+
+

To configure Kafka Connect to use SASL-based SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SASL based SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: scram-sha-512
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
SASL based PLAIN authentication
+
+

To configure Kafka Connect to use SASL-based PLAIN authentication, set the type property to plain. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of such a Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example showing SASL based PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: plain
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: tls
    +    certificateAndKey:
    +      secretName: my-secret
    +      certificate: my-public.crt
    +      key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    Username of the user which should be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication and the key under which the password is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used in authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password>.txt
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: scram-sha-512
    +    username: _<my-username>_
    +    passwordSecret:
    +      secretName: _<my-secret>_
    +      password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.3.5. Kafka Connect configuration

+
+

Strimzi allows you to customize the configuration of Apache Kafka Connect nodes by editing certain options listed in Apache Kafka documentation.

+
+
+

Configuration options that cannot be configured relate to:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener / REST interface configuration

    +
  • +
  • +

    Plugin path configuration

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka Connect configuration
+
+

Kafka Connect is configured using the config property in KafkaConnect.spec and KafkaConnectS2I.spec. +This property contains the Kafka Connect configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

You can specify and configure the options listed in the Apache Kafka documentation with the exception of those options that are managed directly by Strimzi. +Specifically, configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    listeners

    +
  • +
  • +

    plugin.path

    +
  • +
  • +

    rest.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
+
+
+

When a forbidden option is present in the config property, it is ignored and a warning message is printed to the Custer Operator log file. +All other options are passed to Kafka Connect.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Connect cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config object, then the Cluster Operator can roll out the new configuration to all Kafka Connect nodes. +
+
+
+

Certain options have default values:

+
+
+
    +
  • +

    group.id with default value connect-cluster

    +
  • +
  • +

    offset.storage.topic with default value connect-cluster-offsets

    +
  • +
  • +

    config.storage.topic with default value connect-cluster-configs

    +
  • +
  • +

    status.storage.topic with default value connect-cluster-status

    +
  • +
  • +

    key.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
  • +

    value.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
+
+
+

These options are automatically configured in case they are not present in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config properties.

+
+
+
Example Kafka Connect configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  config:
+    group.id: my-connect-cluster
+    offset.storage.topic: my-connect-cluster-offsets
+    config.storage.topic: my-connect-cluster-configs
+    status.storage.topic: my-connect-cluster-status
+    key.converter: org.apache.kafka.connect.json.JsonConverter
+    value.converter: org.apache.kafka.connect.json.JsonConverter
+    key.converter.schemas.enable: true
+    value.converter.schemas.enable: true
+    config.storage.replication.factor: 3
+    offset.storage.replication.factor: 3
+    status.storage.replication.factor: 3
+  # ...
+
+
+
+
+
Configuring Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the config property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    group.id: my-connect-cluster
    +    offset.storage.topic: my-connect-cluster-offsets
    +    config.storage.topic: my-connect-cluster-configs
    +    status.storage.topic: my-connect-cluster-status
    +    key.converter: org.apache.kafka.connect.json.JsonConverter
    +    value.converter: org.apache.kafka.connect.json.JsonConverter
    +    key.converter.schemas.enable: true
    +    value.converter.schemas.enable: true
    +    config.storage.replication.factor: 3
    +    offset.storage.replication.factor: 3
    +    status.storage.replication.factor: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.6. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.3.7. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka Connect with Source2Image loggers
+
+

Kafka Connect with Source2Image support has its own configurable loggers:

+
+
+
    +
  • +

    connect.root.logger.level

    +
  • +
  • +

    log4j.logger.org.apache.zookeeper

    +
  • +
  • +

    log4j.logger.org.I0Itec.zkclient

    +
  • +
  • +

    log4j.logger.org.reflections

    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +spec:
    +  # ...
    +  logging:
    +    type: inline
    +    loggers:
    +      logger.name: "INFO"
    +  # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +spec:
    +  # ...
    +  logging:
    +    type: external
    +    name: customConfigMap
    +  # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.3.8. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.9. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.10. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.11. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.12. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.3.13. Using external configuration and secrets

+
+

Kafka Connect connectors are configured using an HTTP REST interface. +The connector configuration is passed to Kafka Connect as part of an HTTP request and stored within Kafka itself.

+
+
+

Some parts of the configuration of a Kafka Connect connector can be externalized using ConfigMaps or Secrets. +You can then reference the configuration values in HTTP REST commands (this keeps the configuration separate and more secure, if needed). +This method applies especially to confidential data, such as usernames, passwords, or certificates.

+
+
+

ConfigMaps and Secrets are standard OpenShift or Kubernetes resources used for storing of configurations and confidential data.

+
+
+
Storing connector configurations externally
+
+

You can mount ConfigMaps or Secrets into a Kafka Connect pod as volumes or environment variables. +Volumes and environment variables are configured in the externalConfiguration property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
External configuration as environment variables
+
+

The env property is used to specify one or more environment variables. +These variables can contain a value from either a ConfigMap or a Secret.

+
+
+ + + + + +
+
Note
+
+The names of user-defined environment variables cannot start with KAFKA_ or STRIMZI_. +
+
+
+

To mount a value from a Secret to an environment variable, use the valueFrom property and the secretKeyRef as shown in the following example.

+
+
+
Example of an environment variable set to a value from a Secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          secretKeyRef:
+            name: my-secret
+            key: my-key
+
+
+
+

A common use case for mounting Secrets to environment variables is when your connector needs to communicate with Amazon AWS and needs to read the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables with credentials.

+
+
+

To mount a value from a ConfigMap to an environment variable, use configMapKeyRef in the valueFrom property as shown in the following example.

+
+
+
Example of an environment variable set to a value from a ConfigMap
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          configMapKeyRef:
+            name: my-config-map
+            key: my-key
+
+
+
+
+
External configuration as volumes
+
+

You can also mount ConfigMaps or Secrets to a Kafka Connect pod as volumes. +Using volumes instead of environment variables is useful in the following scenarios:

+
+
+
    +
  • +

    Mounting truststores or keystores with TLS certificates

    +
  • +
  • +

    Mounting a properties file that is used to configure Kafka Connect connectors

    +
  • +
+
+
+

In the volumes property of the externalConfiguration resource, list the ConfigMaps or Secrets that will be mounted as volumes. +Each volume must specify a name in the name property and a reference to ConfigMap or Secret.

+
+
+
Example of volumes with external configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    volumes:
+      - name: connector1
+        configMap:
+          name: connector1-configuration
+      - name: connector1-certificates
+        secret:
+          secretName: connector1-certificates
+
+
+
+

The volumes will be mounted inside the Kafka Connect containers in the path /opt/kafka/external-configuration/<volume-name>. +For example, the files from a volume named connector1 would appear in the directory /opt/kafka/external-configuration/connector1.

+
+
+

The FileConfigProvider has to be used to read the values from the mounted properties files in connector configurations.

+
+
+
+
+
Mounting Secrets as environment variables
+
+

You can create an OpenShift or Kubernetes Secret and mount it to Kafka Connect as an environment variable.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing the information that will be mounted as an environment variable. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: aws-creds
    +type: Opaque
    +data:
    +  awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
    +  awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  externalConfiguration:
    +    env:
    +      - name: AWS_ACCESS_KEY_ID
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsAccessKey
    +      - name: AWS_SECRET_ACCESS_KEY
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsSecretAccessKey
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+

The environment variables are now available for use when developing your connectors.

+
+
+
Additional resources
+ +
+
+
+
Mounting Secrets as volumes
+
+

You can create an OpenShift or Kubernetes Secret, mount it as a volume to Kafka Connect, and then use it to configure a Kafka Connect connector.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing a properties file that defines the configuration options for your connector configuration. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: mysecret
    +type: Opaque
    +stringData:
    +  connector.properties: |-
    +    dbUsername: my-user
    +    dbPassword: my-password
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the FileConfigProvider in the config section and the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    config.providers: file
    +    config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider
    +  #...
    +  externalConfiguration:
    +    volumes:
    +      - name: connector-config
    +        secret:
    +          secretName: mysecret
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
  7. +

    Use the values from the mounted properties file in your JSON payload with connector configuration. +For example:

    +
    +
    +
    {
    +   "name":"my-connector",
    +   "config":{
    +      "connector.class":"MyDbConnector",
    +      "tasks.max":"3",
    +      "database": "my-postgresql:5432"
    +      "username":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbUsername}",
    +      "password":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbPassword}",
    +      # ...
    +   }
    +}
    +
    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
+

3.3.14. List of resources created as part of Kafka Connect cluster with Source2Image support

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
connect-cluster-name-connect-source
+
+

ImageStream which is used as the base image for the newly-built Docker images.

+
+
connect-cluster-name-connect
+
+

BuildConfig which is responsible for building the new Kafka Connect Docker images.

+
+
connect-cluster-name-connect
+
+

ImageStream where the newly built Docker images will be pushed.

+
+
connect-cluster-name-connect
+
+

DeploymentConfig which is in charge of creating the Kafka Connect worker node pods.

+
+
connect-cluster-name-connect-api
+
+

Service which exposes the REST interface for managing the Kafka Connect cluster.

+
+
connect-cluster-name-config
+
+

ConfigMap which contains the Kafka Connect ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
connect-cluster-name-connect
+
+

Pod Disruption Budget configured for the Kafka Connect worker nodes.

+
+
+
+
+
+

3.3.15. Creating a container image using OpenShift builds and Source-to-Image

+
+

You can use OpenShift builds and the Source-to-Image (S2I) framework to create new container images. An OpenShift build takes a builder image with S2I support, together with source code and binaries provided by the user, and uses them to build a new container image. Once built, container images are stored in OpenShift’s local container image repository and are available for use in deployments.

+
+
+

A Kafka Connect builder image with S2I support is provided on the Docker Hub as part of the strimzi/kafka:0.12.1-kafka-2.2.1 image. This S2I image takes your binaries (with plug-ins and connectors) and stores them in the /tmp/kafka-plugins/s2i directory. It creates a new Kafka Connect image from this directory, which can then be used with the Kafka Connect deployment. When started using the enhanced image, Kafka Connect loads any third-party plug-ins from the /tmp/kafka-plugins/s2i directory.

+
+
+
Procedure
+
    +
  1. +

    On the command line, use the oc apply command to create and deploy a Kafka Connect S2I cluster:

    +
    +
    +
    oc apply -f examples/kafka-connect/kafka-connect-s2i.yaml
    +
    +
    +
  2. +
  3. +

    Create a directory with Kafka Connect plug-ins:

    +
    +
    +
    $ tree ./my-plugins/
    +./my-plugins/
    +├── debezium-connector-mongodb
    +│   ├── bson-3.4.2.jar
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mongodb-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mongodb-driver-3.4.2.jar
    +│   ├── mongodb-driver-core-3.4.2.jar
    +│   └── README.md
    +├── debezium-connector-mysql
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mysql-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mysql-binlog-connector-java-0.13.0.jar
    +│   ├── mysql-connector-java-5.1.40.jar
    +│   ├── README.md
    +│   └── wkb-1.0.2.jar
    +└── debezium-connector-postgres
    +    ├── CHANGELOG.md
    +    ├── CONTRIBUTE.md
    +    ├── COPYRIGHT.txt
    +    ├── debezium-connector-postgres-0.7.1.jar
    +    ├── debezium-core-0.7.1.jar
    +    ├── LICENSE.txt
    +    ├── postgresql-42.0.0.jar
    +    ├── protobuf-java-2.6.1.jar
    +    └── README.md
    +
    +
    +
  4. +
  5. +

    Use the oc start-build command to start a new build of the image using the prepared directory:

    +
    +
    +
    oc start-build my-connect-cluster-connect --from-dir ./my-plugins/
    +
    +
    +
    + + + + + +
    +
    Note
    +
    +The name of the build is the same as the name of the deployed Kafka Connect cluster. +
    +
    +
  6. +
  7. +

    Once the build has finished, the new image is used automatically by the Kafka Connect deployment.

    +
  8. +
+
+
+
+
+

3.4. Kafka Mirror Maker configuration

+
+

The full schema of the KafkaMirrorMaker resource is described in the KafkaMirrorMaker schema reference. +All labels that apply to the desired KafkaMirrorMaker resource will also be applied to the OpenShift or Kubernetes resources making up Mirror Maker. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.4.1. Replicas

+
+

It is possible to run multiple Mirror Maker replicas. +The number of replicas is defined in the KafkaMirrorMaker resource. +You can run multiple Mirror Maker replicas to provide better availability and scalability. +However, when running Kafka Mirror Maker on OpenShift or Kubernetes it is not absolutely necessary to run multiple replicas of the Kafka Mirror Maker for high availability. +When the node where the Kafka Mirror Maker has deployed crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Mirror Maker pod to a different node. +However, running Kafka Mirror Maker with multiple replicas can provide faster failover times as the other nodes will be up and running.

+
+
+
Configuring the number of replicas
+
+

The number of Kafka Mirror Maker replicas can be configured using the replicas property in KafkaMirrorMaker.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaMirrorMaker resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.2. Bootstrap servers

+
+

Kafka Mirror Maker always works together with two Kafka clusters (source and target). +The source and the target Kafka clusters are specified in the form of two lists of comma-separated list of <hostname>:‍<port> pairs. +The bootstrap server lists can refer to Kafka clusters which do not need to be deployed in the same OpenShift or Kubernetes cluster. +They can even refer to any Kafka cluster not deployed by Strimzi or even deployed by Strimzi but on a different OpenShift or Kubernetes cluster and accessible from outside.

+
+
+

If on the same OpenShift or Kubernetes cluster, each list must ideally contain the Kafka cluster bootstrap service which is named <cluster-name>-kafka-bootstrap and a port of 9092 for plain traffic or 9093 for encrypted traffic. +If deployed by Strimzi but on different OpenShift or Kubernetes clusters, the list content depends on the way used for exposing the clusters (routes, nodeports or loadbalancers).

+
+
+

The list of bootstrap servers can be configured in the KafkaMirrorMaker.spec.consumer.bootstrapServers and KafkaMirrorMaker.spec.producer.bootstrapServers properties. The servers should be a comma-separated list containing one or more Kafka brokers or a Service pointing to Kafka brokers specified as a <hostname>:<port> pairs.

+
+
+

When using Kafka Mirror Maker with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the given cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.bootstrapServers and KafkaMirrorMaker.spec.producer.bootstrapServers properties. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    bootstrapServers: my-source-cluster-kafka-bootstrap:9092
    +  # ...
    +  producer:
    +    bootstrapServers: my-target-cluster-kafka-bootstrap:9092
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.3. Whitelist

+
+

You specify the list topics that the Kafka Mirror Maker has to mirror from the source to the target Kafka cluster in the KafkaMirrorMaker resource using the whitelist option. +It allows any regular expression from the simplest case with a single topic name to complex patterns. +For example, you can mirror topics A and B using "A|B" or all topics using "*". +You can also pass multiple regular expressions separated by commas to the Kafka Mirror Maker.

+
+
+
Configuring the topics whitelist
+
+

Specify the list topics that have to be mirrored by the Kafka Mirror Maker from source to target Kafka cluster using the whitelist property in KafkaMirrorMaker.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the whitelist property in the KafkaMirrorMaker resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  whitelist: "my-topic|other-topic"
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.4. Consumer group identifier

+
+

The Kafka Mirror Maker uses Kafka consumer to consume messages and it behaves like any other Kafka consumer client. +It is in charge to consume the messages from the source Kafka cluster which will be mirrored to the target Kafka cluster. +The consumer needs to be part of a consumer group for being assigned partitions.

+
+
+
Configuring the consumer group identifier
+
+

The consumer group identifier can be configured in the KafkaMirrorMaker.spec.consumer.groupId property.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.groupId property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    groupId: "my-group"
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.5. Number of consumer streams

+
+

You can increase the throughput in mirroring topics by increase the number of consumer threads. +More consumer threads will belong to the same configured consumer group. +The topic partitions will be assigned across these consumer threads which will consume messages in parallel.

+
+
+
Configuring the number of consumer streams
+
+

The number of consumer streams can be configured using the KafkaMirrorMaker.spec.consumer.numStreams property.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.numStreams property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    numStreams: 2
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.6. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Mirror Maker will try to connect to Kafka brokers, in the source and target clusters, using a plain text connection. +You must make additional configurations to use TLS.

+
+
+
TLS support in Kafka Mirror Maker
+
+

TLS support is configured in the tls sub-property of consumer and producer properties in KafkaMirrorMaker.spec. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates should be stored in X.509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    tls:
+      trustedCertificates:
+        - secretName: my-source-secret
+          certificate: ca.crt
+        - secretName: my-other-source-secret
+          certificate: certificate.crt
+  # ...
+  producer:
+    tls:
+      trustedCertificates:
+        - secretName: my-target-secret
+          certificate: ca.crt
+        - secretName: my-other-target-secret
+          certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    tls:
+      trustedCertificates:
+        - secretName: my-source-secret
+          certificate: ca.crt
+        - secretName: my-source-secret
+          certificate: ca2.crt
+  # ...
+  producer:
+    tls:
+      trustedCertificates:
+        - secretName: my-target-secret
+          certificate: ca.crt
+        - secretName: my-target-secret
+          certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS encryption in Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+

As the Kafka Mirror Maker connects to two Kafka clusters (source and target), you can choose to configure TLS for one or both the clusters. +The following steps describe how to configure TLS on the consumer side for connecting to the source Kafka cluster:

+
+
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used for authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic <my-secret> --from-file=<my-file.crt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic <my-secret> --from-file=<my-file.crt>
    +
    +
    +
  2. +
  3. +

    Edit the KafkaMirrorMaker.spec.consumer.tls property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    tls:
    +      trustedCertificates:
    +        - secretName: my-cluster-cluster-cert
    +          certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  6. +
+
+
+

Repeat the above steps for configuring TLS on the target Kafka cluster. +In this case, the secret containing the certificate has to be configured in the KafkaMirrorMaker.spec.producer.tls property.

+
+
+
+
+

3.4.7. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Mirror Maker will try to connect to Kafka brokers without any authentication. +Authentication is enabled through the KafkaMirrorMaker resource.

+
+
+
Authentication support in Kafka Mirror Maker
+
+

Authentication can be configured in the KafkaMirrorMaker.spec.consumer.authentication and KafkaMirrorMaker.spec.producer.authentication properties. +The authentication property specifies the type of the authentication method which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+

You can use different authentication mechanisms for the Kafka Mirror Maker producer and consumer.

+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Mirror Maker see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    authentication:
+      type: tls
+      certificateAndKey:
+        secretName: my-source-secret
+        certificate: public.crt
+        key: private.key
+  # ...
+  producer:
+    authentication:
+      type: tls
+      certificateAndKey:
+        secretName: my-target-secret
+        certificate: public.crt
+        key: private.key
+  # ...
+
+
+
+
+
SCRAM-SHA-512 authentication
+
+

To configure Kafka Mirror Maker to use SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +The broker listener to which clients will connect must also be configured to use SCRAM-SHA-512 SASL authentication. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    authentication:
+      type: scram-sha-512
+      username: my-source-user
+      passwordSecret:
+        secretName: my-source-user
+        password: my-source-password-key
+  # ...
+  producer:
+    authentication:
+      type: scram-sha-512
+      username: my-producer-user
+      passwordSecret:
+        secretName: my-producer-user
+        password: my-producer-password-key
+  # ...
+
+
+
+
+
PLAIN authentication
+
+

To configure Kafka Mirror Maker to use PLAIN authentication, set the type property to plain. +The broker listener to which clients will connect must also be configured to use SASL PLAIN authentication. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. +The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    authentication:
+      type: plain
+      username: my-source-user
+      passwordSecret:
+        secretName: my-source-user
+        password: my-source-password-key
+  # ...
+  producer:
+    authentication:
+      type: plain
+      username: my-producer-user
+      passwordSecret:
+        secretName: my-producer-user
+        password: my-producer-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator with a tls listener with tls authentication enabled

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+

As the Kafka Mirror Maker connects to two Kafka clusters (source and target), you can choose to configure TLS client authentication for one or both the clusters. +The following steps describe how to configure TLS client authentication on the consumer side for connecting to the source Kafka cluster:

+
+
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic <my-secret> --from-file=<my-public.crt> --from-file=<my-private.key>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic <my-secret> --from-file=<my-public.crt> --from-file=<my-private.key>
    +
    +
    +
  2. +
  3. +

    Edit the KafkaMirrorMaker.spec.consumer.authentication property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    authentication:
    +      type: tls
    +      certificateAndKey:
    +        secretName: my-secret
    +        certificate: my-public.crt
    +        key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  6. +
+
+
+

Repeat the above steps for configuring TLS client authentication on the target Kafka cluster. +In this case, the secret containing the certificate has to be configured in the KafkaMirrorMaker.spec.producer.authentication property.

+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator with a listener configured for SCRAM-SHA-512 authentication

    +
  • +
  • +

    Username to be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication, and the key under which it is stored in the Secret

    +
  • +
+
+
+
Procedure
+

As the Kafka Mirror Maker connects to two Kafka clusters (source and target), you can choose to configure SCRAM-SHA-512 authentication for one or both the clusters. +The following steps describe how to configure SCRAM-SHA-512 authentication on the consumer side for connecting to the source Kafka cluster:

+
+
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used for authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password.txt>
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the KafkaMirrorMaker.spec.consumer.authentication property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    authentication:
    +      type: scram-sha-512
    +      username: _<my-username>_
    +      passwordSecret:
    +        secretName: _<my-secret>_
    +        password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  6. +
+
+
+

Repeat the above steps for configuring SCRAM-SHA-512 authentication on the target Kafka cluster. +In this case, the secret containing the certificate has to be configured in the KafkaMirrorMaker.spec.producer.authentication property.

+
+
+
+
+

3.4.8. Kafka Mirror Maker configuration

+
+

Strimzi allows you to customize the configuration of the Kafka Mirror Maker by editing most of the options for the related consumer and producer. +Producer options are listed in Apache Kafka documentation. +Consumer options are listed in Apache Kafka documentation.

+
+
+

The only options which cannot be configured are those related to the following areas:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Consumer group identifier

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka Mirror Maker configuration
+
+

Kafka Mirror Maker can be configured using the config sub-property in KafkaMirrorMaker.spec.consumer and KafkaMirrorMaker.spec.producer. +This property should contain the Kafka Mirror Maker consumer and producer configuration options as keys. +The values could be in one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in the Apache Kafka documentation and Apache Kafka documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
  • +

    group.id

    +
  • +
+
+
+

When one of the forbidden options is present in the config property, it will be ignored and a warning message will be printed to the Custer Operator log file. +All other options will be passed to Kafka Mirror Maker.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the provided config object. +When an invalid configuration is provided, the Kafka Mirror Maker might not start or might become unstable. +In such cases, the configuration in the KafkaMirrorMaker.spec.consumer.config or KafkaMirrorMaker.spec.producer.config object should be fixed and the cluster operator will roll out the new configuration for Kafka Mirror Maker. +
+
+
+
An example showing Kafka Mirror Maker configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirroMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    config:
+      max.poll.records: 100
+      receive.buffer.bytes: 32768
+  producer:
+    config:
+      compression.type: gzip
+      batch.size: 8192
+  # ...
+
+
+
+
+
Configuring Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    Two running Kafka clusters (source and target)

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.config and KafkaMirrorMaker.spec.producer.config properties. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirroMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    config:
    +      max.poll.records: 100
    +      receive.buffer.bytes: 32768
    +  producer:
    +    config:
    +      compression.type: gzip
    +      batch.size: 8192
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.9. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.4.10. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka Mirror Maker loggers
+
+

Kafka Mirror Maker has its own configurable logger:

+
+
+
    +
  • +

    mirrormaker.root.logger

    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +spec:
    +  # ...
    +  logging:
    +    type: inline
    +    loggers:
    +      logger.name: "INFO"
    +  # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +spec:
    +  # ...
    +  logging:
    +    type: external
    +    name: customConfigMap
    +  # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.4.11. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.4.12. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.4.13. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.4.14. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.4.15. List of resources created as part of Kafka Mirror Maker

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
<mirror-maker-name>-mirror-maker
+
+

Deployment which is in charge to create the Kafka Mirror Maker pods.

+
+
<mirror-maker-name>-config
+
+

ConfigMap which contains the Kafka Mirror Maker ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
<mirror-maker-name>-mirror-maker
+
+

Pod Disruption Budget configured for the Kafka Mirror Maker worker nodes.

+
+
+
+
+
+
+

3.5. Kafka Bridge cluster configuration

+
+

The full schema of the KafkaBridge resource is described in the KafkaBridge schema reference. +All labels that are applied to the desired KafkaBridge resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka Bridge cluster. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.5.1. Replicas

+
+

Kafka Bridge can run multiple nodes. +The number of nodes is defined in the KafkaBridge resource. +Running a Kafka Bridge with multiple nodes can provide better availability and scalability. +However, when running Kafka Bridge on OpenShift or Kubernetes it is not absolutely necessary to run multiple nodes of Kafka Bridge for high availability.

+
+
+ + + + + +
+
Important
+
+If a node where Kafka Bridge is deployed to crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Bridge pod to a different node. +In order to prevent issues arising when client consumer requests are processed by different Kafka Bridge instances, addressed-based routing must be employed to ensure that requests are routed to the right Kafka Bridge instance. +Additionally, each independent Kafka Bridge instance must have a replica. A Kafka Bridge instance has its own state which is not shared with another instances. +
+
+
+
Configuring the number of nodes
+
+

The number of Kafka Bridge nodes is configured using the replicas property in KafkaBridge.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.2. Bootstrap servers

+
+

A Kafka Bridge always works in combination with a Kafka cluster. +A Kafka cluster is specified as a list of bootstrap servers. +On OpenShift or Kubernetes, the list must ideally contain the Kafka cluster bootstrap service named cluster-name-kafka-bootstrap, and a port of 9092 for plain traffic or 9093 for encrypted traffic.

+
+
+

The list of bootstrap servers is configured in the bootstrapServers property in KafkaBridge.kafka.spec. The servers must be defined as a comma-separated list specifying one or more Kafka brokers, or a service pointing to Kafka brokers specified as a hostname:_port_ pairs.

+
+
+

When using Kafka Bridge with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the bootstrapServers property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka-bootstrap:9092
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.3. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Bridge tries to connect to Kafka brokers using a plain text connection. +If you prefer to use TLS, additional configuration is required.

+
+
+
TLS support for Kafka connection to the Kafka Bridge
+
+

TLS support for Kafka connection is configured in the tls property in KafkaBridge.spec.kafka. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates must be stored in X509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+    - secretName: my-secret
+      certificate: ca.crt
+    - secretName: my-other-secret
+      certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+    - secretName: my-secret
+      certificate: ca.crt
+    - secretName: my-secret
+      certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS in Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication, and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used in authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
  2. +
  3. +

    Edit the tls property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  tls:
    +	  trustedCertificates:
    +	  - secretName: my-cluster-cluster-cert
    +	    certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.5.4. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Bridge will try to connect to Kafka brokers without authentication. +Authentication is enabled through the KafkaBridge resources.

+
+
+
Authentication support in Kafka Bridge
+
+

Authentication is configured through the authentication property in KafkaBridge.spec.kafka. +The authentication property specifies the type of the authentication mechanisms which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Bridge see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  authentication:
+    type: tls
+    certificateAndKey:
+      secretName: my-secret
+      certificate: public.crt
+      key: private.key
+  # ...
+
+
+
+
+
SCRAM-SHA-512 authentication
+
+

To configure Kafka Bridge to use SASL-based SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SASL based SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  authentication:
+    type: scram-sha-512
+    username: my-bridge-user
+    passwordSecret:
+      secretName: my-bridge-user
+      password: my-bridge-password-key
+  # ...
+
+
+
+
+
SASL-based PLAIN authentication
+
+

To configure Kafka Bridge to use SASL-based PLAIN authentication, set the type property to plain. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example showing SASL based PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  authentication:
+    type: plain
+    username: my-bridge-user
+    passwordSecret:
+      secretName: my-bridge-user
+      password: my-bridge-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  authentication:
    +  type: tls
    +  certificateAndKey:
    +    secretName: my-secret
    +    certificate: my-public.crt
    +    key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    Username of the user which should be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication and the key under which the password is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used in authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password>.txt
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  authentication:
    +    type: scram-sha-512
    +    username: _<my-username>_
    +    passwordSecret:
    +      secretName: _<my-secret>_
    +      password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.5.5. Kafka Bridge configuration

+
+

Strimzi allows you to customize the configuration of Apache Kafka Bridge nodes by editing certain options listed in Apache Kafka documentation and Apache Kafka documentation.

+
+
+

Configuration options that can be configured relate to:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Consumer configuration

    +
  • +
  • +

    Producer configuration

    +
  • +
  • +

    HTTP configuration

    +
  • +
+
+
+
Kafka Bridge Consumer configuration
+
+

Kafka Bridge consumer is configured using the properties in KafkaBridge.spec.consumer. +This property contains the Kafka Bridge consumer configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in the Apache Kafka documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
  • +

    group.id

    +
  • +
+
+
+

When one of the forbidden options is present in the config property, it will be ignored and a warning message will be printed to the Custer Operator log file. +All other options will be passed to Kafka

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Bridge cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaBridge.spec.consumer.config object, then the Cluster Operator can roll out the new configuration to all Kafka Bridge nodes. +
+
+
+
Example Kafka Bridge consumer configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  consumer:
+    config:
+      auto.offset.reset: earliest
+      enable.auto.commit: true
+  # ...
+
+
+
+
+
Kafka Bridge Producer configuration
+
+

Kafka Bridge producer is configured using the properties in KafkaBridge.spec.producer. +This property contains the Kafka Bridge producer configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in the Apache Kafka documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Bridge cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaBridge.spec.producer.config object, then the Cluster Operator can roll out the new configuration to all Kafka Bridge nodes. +
+
+
+
Example Kafka Bridge producer configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  producer:
+    config:
+      acks: 1
+      delivery.timeout.ms: 300000
+  # ...
+
+
+
+
+
Kafka Bridge HTTP configuration
+
+

Kafka Bridge HTTP configuration is set using the properties in KafkaBridge.spec.http. +This property contains the Kafka Bridge HTTP configuration options.

+
+
+
    +
  • +

    port

    +
  • +
+
+
+

When configuring port property avoid the value 8081. This port is used for the health checks.

+
+
+
Example Kafka Bridge HTTP configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  http:
+    port: 8080
+  # ...
+
+
+
+ + + + + +
+
Important
+
+The port must not be set to 8081 as that will cause a conflict with the healthcheck settings. +
+
+
+
+
Configuring Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the kafka, http, consumer or producer property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka:9092
    +  http:
    +    port: 8080
    +  consumer:
    +    config:
    +      auto.offset.reset: earliest
    +  producer:
    +    config:
    +      delivery.timeout.ms: 300000
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.6. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.7. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.8. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.5.9. List of resources created as part of Kafka Bridge cluster

+
+

The following resources are created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
bridge-cluster-name-bridge
+
+

Deployment which is in charge to create the Kafka Bridge worker node pods.

+
+
bridge-cluster-name-bridge-service
+
+

Service which exposes the REST interface of the Kafka Bridge cluster.

+
+
bridge-cluster-name-bridge-config
+
+

ConfigMap which contains the Kafka Bridge ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
bridge-cluster-name-bridge
+
+

Pod Disruption Budget configured for the Kafka Bridge worker nodes.

+
+
+
+
+
+
+

3.6. Customizing deployments

+
+

Strimzi creates several OpenShift or Kubernetes resources, such as Deployments, StatefulSets, Pods, and Services, which are managed by OpenShift or Kubernetes operators. +Only the operator that is responsible for managing a particular OpenShift or Kubernetes resource can change that resource. +If you try to manually change an operator-managed OpenShift or Kubernetes resource, the operator will revert your changes back.

+
+
+

However, changing an operator-managed OpenShift or Kubernetes resource can be useful if you want to perform certain tasks, such as:

+
+
+
    +
  • +

    Adding custom labels or annotations that control how Pods are treated by Istio or other services;

    +
  • +
  • +

    Managing how Loadbalancer-type Services are created by the cluster.

    +
  • +
+
+
+

You can make these types of changes using the template property in the Strimzi custom resources.

+
+
+

3.6.1. Template properties

+
+

You can use the template property to configure aspects of the resource creation process. +You can include it in the following resources and properties:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.entityOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaMirrorMakerSpec

    +
  • +
+
+
+

In the following example, the template property is used to modify the labels in a Kafka broker’s StatefulSet:

+
+
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+  labels:
+    app: my-cluster
+spec:
+  kafka:
+    # ...
+    template:
+      statefulset:
+        metadata:
+          labels:
+            mylabel: myvalue
+    # ...
+
+
+
+
Supported resources in Kafka cluster
+

When defined in a Kafka cluster, the template object can have the following fields:

+
+
+
+
statefulset
+
+

Configures the StatefulSet used by the Kafka broker.

+
+
pod
+
+

Configures the Kafka broker Pods created by the StatefulSet.

+
+
bootstrapService
+
+

Configures the bootstrap service used by clients running within OpenShift or Kubernetes to connect to the Kafka broker.

+
+
brokersService
+
+

Configures the headless service.

+
+
externalBootstrapService
+
+

Configures the bootstrap service used by clients connecting to Kafka brokers from outside of OpenShift or Kubernetes.

+
+
perPodService
+
+

Configures the per-Pod services used by clients connecting to the Kafka broker from outside OpenShift or Kubernetes to access individual brokers.

+
+
externalBootstrapRoute
+
+

Configures the bootstrap route used by clients connecting to the Kafka brokers from outside of OpenShift using OpenShift Routes.

+
+
perPodRoute
+
+

Configures the per-Pod routes used by clients connecting to the Kafka broker from outside OpenShift to access individual brokers using OpenShift Routes.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Kafka broker StatefulSet.

+
+
+
+
+
Supported resources in Zookeeper cluster
+

When defined in a Zookeeper cluster, the template object can have the following fields:

+
+
+
+
statefulset
+
+

Configures the Zookeeper StatefulSet.

+
+
pod
+
+

Configures the Zookeeper Pods created by the StatefulSet.

+
+
clientsService
+
+

Configures the service used by clients to access Zookeeper.

+
+
nodesService
+
+

Configures the headless service.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Zookeeper StatefulSet.

+
+
+
+
+
Supported resources in Entity Operator
+

When defined in an Entity Operator , the template object can have the following fields:

+
+
+
+
deployment
+
+

Configures the Deployment used by the Entity Operator.

+
+
pod
+
+

Configures the Entity Operator Pod created by the Deployment.

+
+
+
+
+
Supported resources in Kafka Connect and Kafka Connect with Source2Image support
+

When used with Kafka Connect and Kafka Connect with Source2Image support , the template object can have the following fields:

+
+
+
+
deployment
+
+

Configures the Kafka Connect Deployment.

+
+
pod
+
+

Configures the Kafka Connect Pods created by the Deployment.

+
+
apiService
+
+

Configures the service used by the Kafka Connect REST API.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Kafka Connect Deployment.

+
+
+
+
+
Supported resource in Kafka Mirror Maker
+

When used with Kafka Mirror Maker , the template object can have the following fields:

+
+
+
+
deployment
+
+

Configures the Kafka Mirror Maker Deployment.

+
+
pod
+
+

Configures the Kafka Mirror Maker Pods created by the Deployment.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Kafka Mirror Maker Deployment.

+
+
+
+
+
+

3.6.2. Labels and Annotations

+
+

For every resource, you can configure additional Labels and Annotations. +Labels and Annotations are configured in the metadata property. +For example:

+
+
+
+
# ...
+template:
+    statefulset:
+        metadata:
+            labels:
+                label1: value1
+                label2: value2
+            annotations:
+                annotation1: value1
+                annotation2: value2
+# ...
+
+
+
+

The labels and annotations fields can contain any labels or annotations that do not contain the reserved string strimzi.io. +Labels and annotations containing strimzi.io are used internally by Strimzi and cannot be configured by the user.

+
+
+
+

3.6.3. Customizing Pods

+
+

In addition to Labels and Annotations, you can customize some other fields on Pods. +These fields are described in the following table and affect how the Pod is created.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
FieldDescription

terminationGracePeriodSeconds

Defines the period of time, in seconds, by which the Pod must have terminated gracefully. +After the grace period, the Pod and its containers are forcefully terminated (killed). +The default value is 30 seconds.

+

NOTE: You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated.

imagePullSecrets

Defines a list of references to OpenShift or Kubernetes Secrets that can be used for pulling container images from private repositories. +For more information about how to create a Secret with the credentials, see Pull an Image from a Private Registry.

+

NOTE: When the STRIMZI_IMAGE_PULL_SECRETS environment variable in Cluster Operator and the imagePullSecrets option are specified, only the imagePullSecrets variable is used. The STRIMZI_IMAGE_PULL_SECRETS variable is ignored.

securityContext

Configures pod-level security attributes for containers running as part of a given Pod. +For more information about configuring SecurityContext, see Configure a Security Context for a Pod or Container.

+
+

These fields are effective on each type of cluster (Kafka and Zookeeper; Kafka Connect and Kafka Connect with S2I support; and Kafka Mirror Maker).

+
+
+

The following example shows these customized fields on a template property:

+
+
+
+
# ...
+template:
+    pod:
+        metadata:
+            labels:
+                label1: value1
+        imagePullSecrets:
+             - name: my-docker-credentials
+        securityContext:
+             runAsUser: 1000001
+             fsGroup: 0
+        terminationGracePeriodSeconds: 120
+# ...
+
+
+
+
Additional resources
+ +
+
+
+

3.6.4. Customizing the image pull policy

+
+

Strimzi allows you to customize the image pull policy for containers in all pods deployed by the Cluster Operator. +The image pull policy is configured using the environment variable STRIMZI_IMAGE_PULL_POLICY in the Cluster Operator deployment. +The STRIMZI_IMAGE_PULL_POLICY environment variable can be set to three different values:

+
+
+
+
Always
+
+

Container images are pulled from the registry every time the pod is started or restarted.

+
+
IfNotPresent
+
+

Container images are pulled from the registry only when they were not pulled before.

+
+
Never
+
+

Container images are never pulled from the registry.

+
+
+
+
+

The image pull policy can be currently customized only for all Kafka, Kafka Connect, and Kafka Mirror Maker clusters at once. +Changing the policy will result in a rolling update of all your Kafka, Kafka Connect, and Kafka Mirror Maker clusters.

+
+
+
Additional resources
+
    +
  • +

    For more information about Cluster Operator configuration, see Cluster Operator.

    +
  • +
  • +

    For more information about Image Pull Policies, see Disruptions.

    +
  • +
+
+
+
+

3.6.5. Customizing Pod Disruption Budgets

+
+

Strimzi creates a pod disruption budget for every new StatefulSet or Deployment. +By default, these pod disruption budgets only allow a single pod to be unavailable at a given time by setting the maxUnavailable value in the`PodDisruptionBudget.spec` resource to 1. +You can change the amount of unavailable pods allowed by changing the default value of maxUnavailable in the pod disruption budget template. +This template applies to each type of cluster (Kafka and Zookeeper; Kafka Connect and Kafka Connect with S2I support; and Kafka Mirror Maker).

+
+
+

The following example shows customized podDisruptionBudget fields on a template property:

+
+
+
+
# ...
+template:
+    podDisruptionBudget:
+        metadata:
+            labels:
+                key1: label1
+                key2: label2
+            annotations:
+                key1: label1
+                key2: label2
+        maxUnavailable: 1
+# ...
+
+
+
+
Additional resources
+ +
+
+
+

3.6.6. Customizing deployments

+
+

This procedure describes how to customize Labels of a Kafka cluster.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the template property in the Kafka, KafkaConnect, KafkaConnectS2I, or KafkaMirrorMaker resource. +For example, to modify the labels for the Kafka broker StatefulSet, use:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +  labels:
    +    app: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      statefulset:
    +        metadata:
    +          labels:
    +            mylabel: myvalue
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    Alternatively, use kubectl edit:

    +
    +
    +
    +
    kubectl edit Resource ClusterName
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
    +

    Alternatively, use oc edit:

    +
    +
    +
    +
    oc edit Resource ClusterName
    +
    +
    +
  4. +
+
+
+
+
+
+
+

4. Operators

+
+
+

4.1. Cluster Operator

+
+

4.1.1. Overview of the Cluster Operator component

+
+

The Cluster Operator is in charge of deploying a Kafka cluster alongside a Zookeeper ensemble. +As part of the Kafka cluster, it can also deploy the topic operator which provides operator-style topic management via KafkaTopic custom resources. +The Cluster Operator is also able to deploy a Kafka Connect cluster which connects to an existing Kafka cluster. +On OpenShift such a cluster can be deployed using the Source2Image feature, providing an easy way of including more connectors.

+
+
+
Example architecture for the Cluster Operator
+

Cluster Operator

+
+
+

When the Cluster Operator is up, it starts to watch for certain OpenShift or Kubernetes resources containing the desired Kafka, Kafka Connect, or Kafka Mirror Maker cluster configuration. +By default, it watches only in the same namespace or project where it is installed. +The Cluster Operator can be configured to watch for more OpenShift projects or Kubernetes namespaces. +Cluster Operator watches the following resources:

+
+
+
    +
  • +

    A Kafka resource for the Kafka cluster.

    +
  • +
  • +

    A KafkaConnect resource for the Kafka Connect cluster.

    +
  • +
  • +

    A KafkaConnectS2I resource for the Kafka Connect cluster with Source2Image support.

    +
  • +
  • +

    A KafkaMirrorMaker resource for the Kafka Mirror Maker instance.

    +
  • +
+
+
+

When a new Kafka, KafkaConnect, KafkaConnectS2I, or Kafka Mirror Maker resource is created in the OpenShift or Kubernetes cluster, the operator gets the cluster description from the desired resource and starts creating a new Kafka, Kafka Connect, or Kafka Mirror Maker cluster by creating the necessary other OpenShift or Kubernetes resources, such as StatefulSets, Services, ConfigMaps, and so on.

+
+
+

Every time the desired resource is updated by the user, the operator performs corresponding updates on the OpenShift or Kubernetes resources which make up the Kafka, Kafka Connect, or Kafka Mirror Maker cluster. +Resources are either patched or deleted and then re-created in order to make the Kafka, Kafka Connect, or Kafka Mirror Maker cluster reflect the state of the desired cluster resource. +This might cause a rolling update which might lead to service disruption.

+
+
+

Finally, when the desired resource is deleted, the operator starts to undeploy the cluster and delete all the related OpenShift or Kubernetes resources.

+
+
+
+

4.1.2. Deploying the Cluster Operator to Kubernetes

+
+
Prerequisites
+
    +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    kubectl apply -f install/cluster-operator -n _my-namespace_
    +
    +
    +
  • +
+
+
+
+

4.1.3. Deploying the Cluster Operator to OpenShift

+
+
Prerequisites
+
    +
  • +

    A user with cluster-admin role needs to be used, for example, system:admin.

    +
  • +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    oc apply -f install/cluster-operator -n _my-project_
    +oc apply -f examples/templates/cluster-operator -n _my-project_
    +
    +
    +
  • +
+
+
+
+

4.1.4. Deploying the Cluster Operator to watch multiple namespaces

+
+
Prerequisites
+
    +
  • +

    Edit the installation files according to the OpenShift project or Kubernetes namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the file install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml and in the environment variable STRIMZI_NAMESPACE list all the OpenShift projects or Kubernetes namespaces where Cluster Operator should watch for resources. +For example:

    +
    +
    +
    apiVersion: extensions/v1beta1
    +kind: Deployment
    +spec:
    +  template:
    +    spec:
    +      serviceAccountName: strimzi-cluster-operator
    +      containers:
    +      - name: strimzi-cluster-operator
    +        image: strimzi/operator:0.12.1
    +        imagePullPolicy: IfNotPresent
    +        env:
    +        - name: STRIMZI_NAMESPACE
    +          value: myproject,myproject2,myproject3
    +
    +
    +
  2. +
  3. +

    For all namespaces or projects which should be watched by the Cluster Operator, install the RoleBindings. +Replace the my-namespace or my-project with the OpenShift project or Kubernetes namespace used in the previous step.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-project
    +oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-project
    +oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-project
    +
    +
    +
  4. +
  5. +

    Deploy the Cluster Operator

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
  6. +
+
+
+
+

4.1.5. Deploying the Cluster Operator to watch all namespaces

+
+

You can configure the Cluster Operator to watch Strimzi resources across all OpenShift projects or Kubernetes namespaces in your OpenShift or Kubernetes cluster. When running in this mode, the Cluster Operator automatically manages clusters in any new projects or namespaces that are created.

+
+
+
Prerequisites
+
    +
  • +

    Your OpenShift or Kubernetes cluster is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Configure the Cluster Operator to watch all namespaces:

    +
    +
      +
    1. +

      Edit the 050-Deployment-strimzi-cluster-operator.yaml file.

      +
    2. +
    3. +

      Set the value of the STRIMZI_NAMESPACE environment variable to *.

      +
      +
      +
      apiVersion: extensions/v1beta1
      +kind: Deployment
      +spec:
      +  template:
      +    spec:
      +      # ...
      +      serviceAccountName: strimzi-cluster-operator
      +      containers:
      +      - name: strimzi-cluster-operator
      +        image: strimzi/operator:0.12.1
      +        imagePullPolicy: IfNotPresent
      +        env:
      +        - name: STRIMZI_NAMESPACE
      +          value: "*"
      +        # ...
      +
      +
      +
    4. +
    +
    +
  2. +
  3. +

    Create ClusterRoleBindings that grant cluster-wide access to all OpenShift projects or Kubernetes namespaces to the Cluster Operator.

    +
    +

    On OpenShift, use the oc adm policy command:

    +
    +
    +
    +
    oc adm policy add-cluster-role-to-user strimzi-cluster-operator-namespaced --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-entity-operator --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-topic-operator --serviceaccount strimzi-cluster-operator -n my-project
    +
    +
    +
    +

    Replace my-project with the project in which you want to install the Cluster Operator.

    +
    +
    +

    On Kubernetes, use the kubectl create command:

    +
    +
    +
    +
    kubectl create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-topic-operator-delegation --clusterrole=strimzi-topic-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +
    +
    +
    +

    Replace my-namespace with the namespace in which you want to install the Cluster Operator.

    +
    +
  4. +
  5. +

    Deploy the Cluster Operator to your OpenShift or Kubernetes cluster.

    +
    +

    On OpenShift, use the oc apply command:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
    +

    On Kubernetes, use the kubectl apply command:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
  6. +
+
+
+
+

4.1.6. Deploying the Cluster Operator using Helm Chart

+
+
Prerequisites
+
    +
  • +

    Helm client has to be installed on the local machine.

    +
  • +
  • +

    Helm has to be installed in the OpenShift or Kubernetes cluster.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add the Strimzi Helm Chart repository:

    +
    +
    +
    helm repo add strimzi http://strimzi.io/charts/
    +
    +
    +
  2. +
  3. +

    Deploy the Cluster Operator using the Helm command line tool:

    +
    +
    +
    helm install strimzi/strimzi-kafka-operator
    +
    +
    +
  4. +
  5. +

    Verify whether the Cluster Operator has been deployed successfully using the Helm command line tool:

    +
    +
    +
    helm ls
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about Helm, see the Helm website.

    +
  • +
+
+
+
+

4.1.7. Deploying the Cluster Operator from OperatorHub.io

+
+

OperatorHub.io is a catalog of Kubernetes Operators sourced from multiple providers. +It offers you an alternative way to install stable versions of Strimzi using the Strimzi Kafka Operator.

+
+
+

The Operator Lifecycle Manager is used for the installation and management of all Operators published on OperatorHub.io.

+
+
+

To install Strimzi from OperatorHub.io, locate the Strimzi Kafka Operator and follow the instructions provided.

+
+
+
+

4.1.8. Reconciliation

+
+

Although the operator reacts to all notifications about the desired cluster resources received from the OpenShift or Kubernetes cluster, +if the operator is not running, or if a notification is not received for any reason, the desired resources will get out of sync with the state of the running OpenShift or Kubernetes cluster.

+
+
+

In order to handle failovers properly, a periodic reconciliation process is executed by the Cluster Operator so that it can compare the state of the desired resources with the current cluster deployments in order to have a consistent state across all of them. +You can set the time interval for the periodic reconciliations using the STRIMZI_FULL_RECONCILIATION_INTERVAL_MS variable.

+
+
+
+

4.1.9. Cluster Operator Configuration

+
+

The Cluster Operator can be configured through the following supported environment variables:

+
+
+
+
STRIMZI_NAMESPACE
+
+

A comma-separated list of OpenShift projects or Kubernetes namespaces that the operator should operate in. +When not set, set to empty string, or to * the cluster operator will operate in all OpenShift projects or Kubernetes namespaces. +The Cluster Operator deployment might use the Kubernetes Downward API +to set this automatically to the namespace the Cluster Operator is deployed in. See the example below:

+
+
+
env:
+  - name: STRIMZI_NAMESPACE
+    valueFrom:
+      fieldRef:
+        fieldPath: metadata.namespace
+
+
+
+
STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
+
+

Optional, default is 120000 ms. The interval between periodic reconciliations, in milliseconds.

+
+
STRIMZI_LOG_LEVEL
+
+

Optional, default INFO. +The level for printing logging messages. The value can be set to: ERROR, WARNING, INFO, DEBUG, and TRACE.

+
+
STRIMZI_OPERATION_TIMEOUT_MS
+
+

Optional, default 300000 ms. +The timeout for internal operations, in milliseconds. This value should be +increased when using Strimzi on clusters where regular OpenShift or Kubernetes operations take longer than usual (because of slow downloading of Docker images, for example).

+
+
STRIMZI_KAFKA_IMAGES
+
+

Required. +This provides a mapping from Kafka version to the corresponding Docker image containing a Kafka broker of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a Kafka.spec.kafka.version property is specified but not the Kafka.spec.kafka.image, as described in Container images.

+
+
STRIMZI_DEFAULT_KAFKA_INIT_IMAGE
+
+

Optional, default strimzi/operator:0.12.1. +The image name to use as default for the init container started before the broker for initial configuration work (that is, rack support), if no image is specified as the kafka-init-image in the Container images.

+
+
STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying the sidecar container which provides TLS support for Kafka, +if no image is specified as the Kafka.spec.kafka.tlsSidecar.image in the Container images.

+
+
STRIMZI_DEFAULT_ZOOKEEPER_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying Zookeeper, if +no image is specified as the Kafka.spec.zookeeper.image in the Container images.

+
+
STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying the sidecar container which provides TLS support for Zookeeper, if +no image is specified as the Kafka.spec.zookeeper.tlsSidecar.image in the Container images.

+
+
STRIMZI_KAFKA_CONNECT_IMAGES
+
+

Required. +This provides a mapping from the Kafka version to the corresponding Docker image containing a Kafka connect of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a KafkaConnect.spec.version property is specified but not the KafkaConnect.spec.image, as described in Container images.

+
+
STRIMZI_KAFKA_CONNECT_S2I_IMAGES
+
+

Required. +This provides a mapping from the Kafka version to the corresponding Docker image containing a Kafka connect of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a KafkaConnectS2I.spec.version property is specified but not the KafkaConnectS2I.spec.image, as described in Container images.

+
+
STRIMZI_KAFKA_MIRROR_MAKER_IMAGES
+
+

Required. +This provides a mapping from the Kafka version to the corresponding Docker image containing a Kafka mirror maker of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a KafkaMirrorMaker.spec.version property is specified but not the KafkaMirrorMaker.spec.image, as described in Container images.

+
+
STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE
+
+

Optional, default strimzi/operator:0.12.1. +The image name to use as the default when deploying the topic operator, +if no image is specified as the Kafka.spec.entityOperator.topicOperator.image in the Container images of the Kafka resource.

+
+
STRIMZI_DEFAULT_USER_OPERATOR_IMAGE
+
+

Optional, default strimzi/operator:0.12.1. +The image name to use as the default when deploying the user operator, +if no image is specified as the Kafka.spec.entityOperator.userOperator.image in the Container images of the Kafka resource.

+
+
STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying the sidecar container which provides TLS support for the Entity Operator, if +no image is specified as the Kafka.spec.entityOperator.tlsSidecar.image in the Container images.

+
+
STRIMZI_IMAGE_PULL_POLICY
+
+

Optional. +The ImagePullPolicy which will be applied to containers in all pods managed by Strimzi Cluster Operator. +The valid values are Always, IfNotPresent, and Never. +If not specified, the OpenShift or Kubernetes defaults will be used. +Changing the policy will result in a rolling update of all your Kafka, Kafka Connect, and Kafka Mirror Maker clusters.

+
+
STRIMZI_IMAGE_PULL_SECRETS
+
+

Optional. +A comma-separated list of Secret names. +The secrets referenced here contain the credentials to the container registries where the container images are pulled from. +The secrets are used in the imagePullSecrets field for all Pods created by the Cluster Operator. +Changing this list results in a rolling update of all your Kafka, Kafka Connect, and Kafka Mirror Maker clusters.

+
+
+
+
+
+

4.1.10. Role-Based Access Control (RBAC)

+
+
Provisioning Role-Based Access Control (RBAC) for the Cluster Operator
+
+

For the Cluster Operator to function it needs permission within the OpenShift or Kubernetes cluster to interact with resources such as Kafka, KafkaConnect, and so on, as well as the managed resources, such as ConfigMaps, Pods, Deployments, StatefulSets, Services, and so on. +Such permission is described in terms of OpenShift or Kubernetes role-based access control (RBAC) resources:

+
+
+
    +
  • +

    ServiceAccount,

    +
  • +
  • +

    Role and ClusterRole,

    +
  • +
  • +

    RoleBinding and ClusterRoleBinding.

    +
  • +
+
+
+

In addition to running under its own ServiceAccount with a ClusterRoleBinding, the Cluster Operator manages some RBAC resources for the components that need access to OpenShift or Kubernetes resources.

+
+
+

OpenShift or Kubernetes also includes privilege escalation protections that prevent components operating under one ServiceAccount from granting other ServiceAccounts privileges that the granting ServiceAccount does not have. +Because the Cluster Operator must be able to create the ClusterRoleBindings, and RoleBindings needed by resources it manages, the Cluster Operator must also have those same privileges.

+
+
+
+
Delegated privileges
+
+

When the Cluster Operator deploys resources for a desired Kafka resource it also creates ServiceAccounts, RoleBindings, and ClusterRoleBindings, as follows:

+
+
+
    +
  • +

    The Kafka broker pods use a ServiceAccount called cluster-name-kafka

    +
    +
      +
    • +

      When the rack feature is used, the strimzi-cluster-name-kafka-init ClusterRoleBinding is used to grant this ServiceAccount access to the nodes within the cluster via a ClusterRole called strimzi-kafka-broker

      +
    • +
    • +

      When the rack feature is not used no binding is created.

      +
    • +
    +
    +
  • +
  • +

    The Zookeeper pods use the default ServiceAccount, as they do not need access to the OpenShift or Kubernetes resources.

    +
  • +
  • +

    The Topic Operator pod uses a ServiceAccount called cluster-name-topic-operator

    +
    +
      +
    • +

      The Topic Operator produces OpenShift or Kubernetes events with status information, so the ServiceAccount is bound to a ClusterRole called strimzi-topic-operator which grants this access via the strimzi-topic-operator-role-binding RoleBinding.

      +
    • +
    +
    +
  • +
+
+
+

The pods for KafkaConnect and KafkaConnectS2I resources use the default ServiceAccount, as they do not require access to the OpenShift or Kubernetes resources.

+
+
+
+
ServiceAccount
+
+

The Cluster Operator is best run using a ServiceAccount:

+
+
+
Example ServiceAccount for the Cluster Operator
+
+
apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+
+
+
+

The Deployment of the operator then needs to specify this in its spec.template.spec.serviceAccountName:

+
+
+
Partial example of Deployment for the Cluster Operator
+
+
apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        name: strimzi-cluster-operator
+        strimzi.io/kind: cluster-operator
+      # ...
+
+
+
+

Note line 12, where the the strimzi-cluster-operator ServiceAccount is specified as the serviceAccountName.

+
+
+
+
ClusterRoles
+
+

The Cluster Operator needs to operate using ClusterRoles that gives access to the necessary resources. +Depending on the OpenShift or Kubernetes cluster setup, a cluster administrator might be needed to create the ClusterRoles.

+
+
+ + + + + +
+
Note
+
+Cluster administrator rights are only needed for the creation of the ClusterRoles. +The Cluster Operator will not run under the cluster admin account. +
+
+
+

The ClusterRoles follow the principle of least privilege and contain only those privileges needed by the Cluster Operator to operate Kafka, Kafka Connect, and Zookeeper clusters. The first set of assigned privileges allow the Cluster Operator to manage OpenShift or Kubernetes resources such as StatefulSets, Deployments, Pods, and ConfigMaps.

+
+
+

Cluster Operator uses ClusterRoles to grant permission at the namespace-scoped resources level and cluster-scoped resources level:

+
+
+
ClusterRole with namespaced resources for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-cluster-operator-namespaced
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - ""
+  resources:
+  - serviceaccounts
+  verbs:
+  - get
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - rbac.authorization.k8s.io
+  resources:
+  - rolebindings
+  verbs:
+  - get
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - configmaps
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - kafka.strimzi.io
+  resources:
+  - kafkas
+  - kafkas/status
+  - kafkaconnects
+  - kafkaconnects2is
+  - kafkamirrormakers
+  - kafkabridges
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - pods
+  verbs:
+  - get
+  - list
+  - watch
+  - delete
+- apiGroups:
+  - ""
+  resources:
+  - services
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - endpoints
+  verbs:
+  - get
+  - list
+  - watch
+- apiGroups:
+  - extensions
+  resources:
+  - deployments
+  - deployments/scale
+  - replicasets
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - apps
+  resources:
+  - deployments
+  - deployments/scale
+  - deployments/status
+  - statefulsets
+  - replicasets
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - create
+- apiGroups:
+  - extensions
+  resources:
+  - replicationcontrollers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - apps.openshift.io
+  resources:
+  - deploymentconfigs
+  - deploymentconfigs/scale
+  - deploymentconfigs/status
+  - deploymentconfigs/finalizers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - build.openshift.io
+  resources:
+  - buildconfigs
+  - builds
+  verbs:
+  - create
+  - delete
+  - get
+  - list
+  - patch
+  - watch
+  - update
+- apiGroups:
+  - image.openshift.io
+  resources:
+  - imagestreams
+  - imagestreams/status
+  verbs:
+  - create
+  - delete
+  - get
+  - list
+  - watch
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - replicationcontrollers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - secrets
+  verbs:
+  - get
+  - list
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - extensions
+  resources:
+  - networkpolicies
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - networking.k8s.io
+  resources:
+  - networkpolicies
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - route.openshift.io
+  resources:
+  - routes
+  - routes/custom-host
+  verbs:
+  - get
+  - list
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - persistentvolumeclaims
+  verbs:
+  - get
+  - list
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - policy
+  resources:
+  - poddisruptionbudgets
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - extensions
+  resources:
+  - ingresses
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+
+
+
+

The second includes the permissions needed for cluster-scoped resources.

+
+
+
ClusterRole with cluster-scoped resources for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-cluster-operator-global
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - rbac.authorization.k8s.io
+  resources:
+  - clusterrolebindings
+  verbs:
+  - get
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - storage.k8s.io
+  resources:
+  - storageclasses
+  verbs:
+  - get
+
+
+
+

The strimzi-kafka-broker ClusterRole represents the access needed by the init container in Kafka pods that is used for the rack feature. As described in the Delegated privileges section, this role is also needed by the Cluster Operator in order to be able to delegate this access.

+
+
+
ClusterRole for the Cluster Operator allowing it to delegate access to OpenShift or Kubernetes nodes to the Kafka broker pods
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-kafka-broker
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - ""
+  resources:
+  - nodes
+  verbs:
+  - get
+
+
+
+

The strimzi-topic-operator ClusterRole represents the access needed by the Topic Operator. As described in the Delegated privileges section, this role is also needed by the Cluster Operator in order to be able to delegate this access.

+
+
+
ClusterRole for the Cluster Operator allowing it to delegate access to events to the Topic Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-entity-operator
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - kafka.strimzi.io
+  resources:
+  - kafkatopics
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - patch
+  - update
+  - delete
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - create
+- apiGroups:
+  - kafka.strimzi.io
+  resources:
+  - kafkausers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - patch
+  - update
+  - delete
+- apiGroups:
+  - ""
+  resources:
+  - secrets
+  verbs:
+  - get
+  - list
+  - create
+  - patch
+  - update
+  - delete
+
+
+
+
+
ClusterRoleBindings
+
+

The operator needs ClusterRoleBindings and RoleBindings which associates its ClusterRole with its ServiceAccount: +ClusterRoleBindings are needed for ClusterRoles containing cluster-scoped resources.

+
+
+
Example ClusterRoleBinding for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-cluster-operator-global
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+

ClusterRoleBindings are also needed for the ClusterRoles needed for delegation:

+
+
+
Examples RoleBinding for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: strimzi-cluster-operator-kafka-broker-delegation
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-kafka-broker
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+

ClusterRoles containing only namespaced resources are bound using RoleBindings only.

+
+
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-cluster-operator-namespaced
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: strimzi-cluster-operator-entity-operator-delegation
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-entity-operator
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+
+
+
+

4.2. Topic Operator

+
+

4.2.1. Overview of the Topic Operator component

+
+

The Topic Operator provides a way of managing topics in a Kafka cluster via OpenShift or Kubernetes resources.

+
+
+
Example architecture for the Topic Operator
+

Topic Operator

+
+
+

The role of the Topic Operator is to keep a set of KafkaTopic OpenShift or Kubernetes resources describing Kafka topics in-sync with corresponding Kafka topics.

+
+
+

Specifically, if a KafkaTopic is:

+
+
+
    +
  • +

    Created, the operator will create the topic it describes

    +
  • +
  • +

    Deleted, the operator will delete the topic it describes

    +
  • +
  • +

    Changed, the operator will update the topic it describes

    +
  • +
+
+
+

And also, in the other direction, if a topic is:

+
+
+
    +
  • +

    Created within the Kafka cluster, the operator will create a KafkaTopic describing it

    +
  • +
  • +

    Deleted from the Kafka cluster, the operator will delete the KafkaTopic describing it

    +
  • +
  • +

    Changed in the Kafka cluster, the operator will update the KafkaTopic describing it

    +
  • +
+
+
+

This allows you to declare a KafkaTopic as part of your application’s deployment and the Topic Operator will take care of creating the topic for you. +Your application just needs to deal with producing or consuming from the necessary topics.

+
+
+

If the topic is reconfigured or reassigned to different Kafka nodes, the KafkaTopic will always be up to date.

+
+
+

For more details about creating, modifying and deleting topics, see Using the Topic Operator.

+
+
+
+

4.2.2. Understanding the Topic Operator

+
+

A fundamental problem that the operator has to solve is that there is no single source of truth: +Both the KafkaTopic resource and the topic within Kafka can be modified independently of the operator. +Complicating this, the Topic Operator might not always be able to observe changes at each end in real time (for example, the operator might be down).

+
+
+

To resolve this, the operator maintains its own private copy of the information about each topic. +When a change happens either in the Kafka cluster, or in OpenShift or Kubernetes, it looks at both the state of the other system and at its private copy in order to determine what needs to change to keep everything in sync. +The same thing happens whenever the operator starts, and periodically while it is running.

+
+
+

For example, suppose the Topic Operator is not running, and a KafkaTopic my-topic gets created. +When the operator starts it will lack a private copy of "my-topic", so it can infer that the KafkaTopic has been created since it was last running. +The operator will create the topic corresponding to "my-topic" and also store a private copy of the metadata for "my-topic".

+
+
+

The private copy allows the operator to cope with scenarios where the topic configuration gets changed both in Kafka and in OpenShift or Kubernetes, so long as the changes are not incompatible (for example, both changing the same topic config key, but to different values). +In the case of incompatible changes, the Kafka configuration wins, and the KafkaTopic will be updated to reflect that.

+
+
+

The private copy is held in the same ZooKeeper ensemble used by Kafka itself. +This mitigates availability concerns, because if ZooKeeper is not running then Kafka itself cannot run, so the operator will be no less available than it would even if it was stateless.

+
+
+
+

4.2.3. Deploying the Topic Operator using the Cluster Operator

+
+

This procedure describes how to deploy the Topic Operator using the Cluster Operator. +If you want to use the Topic Operator with a Kafka cluster that is not managed by Strimzi, you must deploy the Topic Operator as a standalone component. For more information, see Deploying the standalone Topic Operator.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Ensure that the Kafka.spec.entityOperator object exists in the Kafka resource. This configures the Entity Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  #...
    +  entityOperator:
    +    topicOperator: {}
    +    userOperator: {}
    +
    +
    +
  2. +
  3. +

    Configure the Topic Operator using the fields described in EntityTopicOperatorSpec schema reference.

    +
  4. +
  5. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about deploying the Entity Operator, see Entity Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the Topic Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+

4.2.4. Configuring the Topic Operator with resource requests and limits

+
+

You can allocate resources, such as CPU and memory, to the Topic Operator and set a limit on the amount of resources it can consume.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
  2. +
  3. +

    In the spec.entityOperator.topicOperator.resources property in the Kafka resource, set the resource requests and limits for the Topic Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  # kafka and zookeeper sections...
    +  entityOperator:
    +    topicOperator:
    +      resources:
    +        request:
    +          cpu: "1"
    +          memory: 500Mi
    +        limit:
    +          cpu: "1"
    +          memory: 500Mi
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

4.2.5. Deploying the standalone Topic Operator

+
+

Deploying the Topic Operator as a standalone component is more complicated than installing it using the Cluster Operator, but it is more flexible. +For instance, it can operate with any Kafka cluster, not necessarily one deployed by the Cluster Operator.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster for the Topic Operator to connect to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the install/topic-operator/05-Deployment-strimzi-topic-operator.yaml resource. You will need to change the following

    +
    +
      +
    1. +

      The STRIMZI_KAFKA_BOOTSTRAP_SERVERS environment variable in Deployment.spec.template.spec.containers[0].env should be set to a list of bootstrap brokers in your Kafka cluster, given as a comma-separated list of hostname:‍port pairs.

      +
    2. +
    3. +

      The STRIMZI_ZOOKEEPER_CONNECT environment variable in Deployment.spec.template.spec.containers[0].env should be set to a list of the Zookeeper nodes, given as a comma-separated list of hostname:‍port pairs. This should be the same Zookeeper cluster that your Kafka cluster is using.

      +
    4. +
    5. +

      The STRIMZI_NAMESPACE environment variable in Deployment.spec.template.spec.containers[0].env should be set to the OpenShift or Kubernetes namespace in which you want the operator to watch for KafkaTopic resources.

      +
    6. +
    +
    +
  2. +
  3. +

    Deploy the Topic Operator.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/topic-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/topic-operator
    +
    +
    +
  4. +
  5. +

    Verify that the Topic Operator has been deployed successfully.

    +
    +

    On Kubernetes this can be done using kubectl describe:

    +
    +
    +
    +
    kubectl describe deployment strimzi-topic-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc describe:

    +
    +
    +
    +
    oc describe deployment strimzi-topic-operator
    +
    +
    +
    +

    The Topic Operator is deployed once the Replicas: entry shows 1 available.

    +
    +
    + + + + + +
    +
    Note
    +
    +This could take some time if you have a slow connection to the OpenShift or Kubernetes and the images have not been downloaded before. +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

4.2.6. Topic Operator environment

+
+

When deployed standalone the Topic Operator can be configured using environment variables.

+
+
+ + + + + +
+
Note
+
+The Topic Operator should be configured using the Kafka.spec.entityOperator.topicOperator property when deployed by the Cluster Operator. +
+
+
+
+
STRIMZI_RESOURCE_LABELS
+
+

The label selector used to identify KafkaTopics to be managed by the operator.

+
+
STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS
+
+

The Zookeeper session timeout, in milliseconds. +For example, 10000. +Default 20000 (20 seconds).

+
+
STRIMZI_KAFKA_BOOTSTRAP_SERVERS
+
+

The list of Kafka bootstrap servers. +This variable is mandatory.

+
+
STRIMZI_ZOOKEEPER_CONNECT
+
+

The Zookeeper connection information. +This variable is mandatory.

+
+
STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
+
+

The interval between periodic reconciliations, in milliseconds.

+
+
STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS
+
+

The number of attempts at getting topic metadata from Kafka. +The time between each attempt is defined as an exponential back-off. +Consider increasing this value when topic creation could take more time due to the number of partitions or replicas. +Default 6.

+
+
STRIMZI_LOG_LEVEL
+
+

The level for printing logging messages. +The value can be set to: ERROR, WARNING, INFO, DEBUG, and TRACE. +Default INFO.

+
+
STRIMZI_TLS_ENABLED
+
+

For enabling the TLS support so encrypting the communication with Kafka brokers. +Default true.

+
+
STRIMZI_TRUSTSTORE_LOCATION
+
+

The path to the truststore containing certificates for enabling TLS based communication. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
STRIMZI_TRUSTSTORE_PASSWORD
+
+

The password for accessing the truststore defined by STRIMZI_TRUSTSTORE_LOCATION. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
STRIMZI_KEYSTORE_LOCATION
+
+

The path to the keystore containing private keys for enabling TLS based communication. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
STRIMZI_KEYSTORE_PASSWORD
+
+

The password for accessing the keystore defined by STRIMZI_KEYSTORE_LOCATION. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
+
+
+
+
+

4.3. User Operator

+
+

The User Operator provides a way of managing Kafka users via OpenShift or Kubernetes resources.

+
+
+

4.3.1. Overview of the User Operator component

+
+

The User Operator manages Kafka users for a Kafka cluster by watching for KafkaUser OpenShift or Kubernetes resources that describe Kafka users and ensuring that they are configured properly in the Kafka cluster. +For example:

+
+
+
    +
  • +

    if a KafkaUser is created, the User Operator will create the user it describes

    +
  • +
  • +

    if a KafkaUser is deleted, the User Operator will delete the user it describes

    +
  • +
  • +

    if a KafkaUser is changed, the User Operator will update the user it describes

    +
  • +
+
+
+

Unlike the Topic Operator, the User Operator does not sync any changes from the Kafka cluster with the OpenShift or Kubernetes resources. +Unlike the Kafka topics which might be created by applications directly in Kafka, it is not expected that the users will be managed directly in the Kafka cluster in parallel with the User Operator, so this should not be needed.

+
+
+

The User Operator allows you to declare a KafkaUser as part of your application’s deployment. +When the user is created, the credentials will be created in a Secret. +Your application needs to use the user and its credentials for authentication and to produce or consume messages.

+
+
+

In addition to managing credentials for authentication, the User Operator also manages authorization rules by including a description of the user’s rights in the KafkaUser declaration.

+
+
+
+

4.3.2. Deploying the User Operator using the Cluster Operator

+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the Kafka resource ensuring it has a Kafka.spec.entityOperator.userOperator object that configures the User Operator how you want.

    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the User Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+

4.3.3. Configuring the User Operator with resource requests and limits

+
+

You can allocate resources, such as CPU and memory, to the User Operator and set a limit on the amount of resources it can consume.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
  2. +
  3. +

    In the spec.entityOperator.userOperator.resources property in the Kafka resource, set the resource requests and limits for the User Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  # kafka and zookeeper sections...
    +  entityOperator:
    +    userOperator:
    +      resources:
    +        request:
    +          cpu: "1"
    +          memory: 500Mi
    +        limit:
    +          cpu: "1"
    +          memory: 500Mi
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

4.3.4. Deploying the standalone User Operator

+
+

Deploying the User Operator as a standalone component is more complicated than installing it using the Cluster Operator, but it is more flexible. +For instance, it can operate with any Kafka cluster, not only the one deployed by the Cluster Operator.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster for the User Operator to connect to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the install/user-operator/05-Deployment-strimzi-user-operator.yaml resource. You will need to change the following

    +
    +
      +
    1. +

      The STRIMZI_CA_CERT_NAME environment variable in Deployment.spec.template.spec.containers[0].env should be set to point to an OpenShift or Kubernetes Secret which should contain the public key of the Certificate Authority for signing new user certificates for TLS Client Authentication. +The Secret should contain the public key of the Certificate Authority under the key ca.crt.

      +
    2. +
    3. +

      The STRIMZI_CA_KEY_NAME environment variable in Deployment.spec.template.spec.containers[0].env should be set to point to an OpenShift or Kubernetes Secret which should contain the private key of the Certificate Authority for signing new user certificates for TLS Client Authentication. +The Secret should contain the private key of the Certificate Authority under the key ca.key.

      +
    4. +
    5. +

      The STRIMZI_ZOOKEEPER_CONNECT environment variable in Deployment.spec.template.spec.containers[0].env should be set to a list of the Zookeeper nodes, given as a comma-separated list of hostname:‍port pairs. This should be the same Zookeeper cluster that your Kafka cluster is using.

      +
    6. +
    7. +

      The STRIMZI_NAMESPACE environment variable in Deployment.spec.template.spec.containers[0].env should be set to the OpenShift or Kubernetes namespace in which you want the operator to watch for KafkaUser resources.

      +
    8. +
    +
    +
  2. +
  3. +

    Deploy the User Operator.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/user-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/user-operator
    +
    +
    +
  4. +
  5. +

    Verify that the User Operator has been deployed successfully.

    +
    +

    On Kubernetes this can be done using kubectl describe:

    +
    +
    +
    +
    kubectl describe deployment strimzi-user-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc describe:

    +
    +
    +
    +
    oc describe deployment strimzi-user-operator
    +
    +
    +
    +

    The User Operator is deployed once the Replicas: entry shows 1 available.

    +
    +
    + + + + + +
    +
    Note
    +
    +This could take some time if you have a slow connection to the OpenShift or Kubernetes and the images have not been downloaded before. +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
+
+
+

5. Using the Topic Operator

+
+
+

5.1. Topic Operator usage recommendations

+
+
    +
  • +

    Be consistent and always operate on KafkaTopic resources or always operate on topics directly. Avoid routinely using both methods for a given topic.

    +
  • +
  • +

    When creating a KafkaTopic resource:

    +
    +
      +
    • +

      Remember that the name cannot be changed later.

      +
    • +
    • +

      Choose a name for the KafkaTopic resource that reflects the name of the topic it describes.

      +
    • +
    • +

      Ideally the KafkaTopic.metadata.name should be the same as its spec.topicName. To do this, the topic name will have to be a valid Kubernetes resource name.

      +
    • +
    +
    +
  • +
  • +

    When creating a topic:

    +
    +
      +
    • +

      Remember that the name cannot be changed later.

      +
    • +
    • +

      It is best to use a name that is a valid Kubernetes resource name, otherwise the operator will have to modify the name when creating the corresponding KafkaTopic.

      +
    • +
    +
    +
  • +
+
+
+
+

5.2. Creating a topic

+
+

This procedure describes how to create a Kafka topic using a KafkaTopic OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Topic Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a file containing the KafkaTopic to be created

    +
    +
    An example KafkaTopic
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaTopic
    +metadata:
    +  name: orders
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  partitions: 10
    +  replicas: 2
    +
    +
    +
    + + + + + +
    +
    Note
    +
    +It is recommended that the topic name given is a valid OpenShift or Kubernetes resource name, as it is then not necessary to set the KafkaTopic.spec.topicName property. The KafkaTopic.spec.topicName cannot be changed after creation. +
    +
    +
    + + + + + +
    +
    Note
    +
    +The KafkaTopic.spec.partitions cannot be decreased. +
    +
    +
  2. +
  3. +

    Create the KafkaTopic resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+

5.3. Changing a topic

+
+

This procedure describes how to change the configuration of an existing Kafka topic by using a KafkaTopic OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Topic Operator.

    +
  • +
  • +

    An existing KafkaTopic to be changed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a file containing the desired KafkaTopic

    +
    +
    An example KafkaTopic
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaTopic
    +metadata:
    +  name: orders
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  partitions: 16
    +  replicas: 2
    +
    +
    +
    + + + + + +
    +
    Tip
    +
    +You can get the current version of the resource using oc get kafkatopic orders -o yaml. +
    +
    +
    + + + + + +
    +
    Note
    +
    +Changing topic names using the KafkaTopic.spec.topicName variable and decreasing partition size using the KafkaTopic.spec.partitions variable is not supported by Kafka. +
    +
    +
    + + + + + +
    +
    Caution
    +
    +Increasing spec.partitions for topics with keys will change how records are partitioned, which can be particularly problematic when the topic uses semantic partitioning. +
    +
    +
  2. +
  3. +

    Update the KafkaTopic resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+

5.4. Deleting a topic

+
+

This procedure describes how to delete a Kafka topic using a KafkaTopic OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Topic Operator.

    +
  • +
  • +

    An existing KafkaTopic to be deleted.

    +
  • +
  • +

    delete.topic.enable=true (default)

    +
  • +
+
+
+ + + + + +
+
Note
+
+The delete.topic.enable property must be set to true in Kafka.spec.kafka.config. Otherwise, the steps outlined here will delete the KafkaTopic resource, but the Kafka topic and its data will remain. After reconciliation by the Topic Operator, the custom resource is then recreated. +
+
+
+
Procedure
+
    +
  • +

    Delete the KafkaTopic resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl:

    +
    +
    +
    +
    kubectl delete kafkatopic your-topic-name
    +
    +
    +
    +

    On OpenShift this can be done using oc:

    +
    +
    +
    +
    oc delete kafkatopic your-topic-name
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+
+
+

6. Using the User Operator

+
+
+

The User Operator provides a way of managing Kafka users via OpenShift or Kubernetes resources.

+
+
+

6.1. Overview of the User Operator component

+
+

The User Operator manages Kafka users for a Kafka cluster by watching for KafkaUser OpenShift or Kubernetes resources that describe Kafka users and ensuring that they are configured properly in the Kafka cluster. +For example:

+
+
+
    +
  • +

    if a KafkaUser is created, the User Operator will create the user it describes

    +
  • +
  • +

    if a KafkaUser is deleted, the User Operator will delete the user it describes

    +
  • +
  • +

    if a KafkaUser is changed, the User Operator will update the user it describes

    +
  • +
+
+
+

Unlike the Topic Operator, the User Operator does not sync any changes from the Kafka cluster with the OpenShift or Kubernetes resources. +Unlike the Kafka topics which might be created by applications directly in Kafka, it is not expected that the users will be managed directly in the Kafka cluster in parallel with the User Operator, so this should not be needed.

+
+
+

The User Operator allows you to declare a KafkaUser as part of your application’s deployment. +When the user is created, the credentials will be created in a Secret. +Your application needs to use the user and its credentials for authentication and to produce or consume messages.

+
+
+

In addition to managing credentials for authentication, the User Operator also manages authorization rules by including a description of the user’s rights in the KafkaUser declaration.

+
+
+
+

6.2. Mutual TLS authentication for clients

+
+

6.2.1. Mutual TLS authentication

+
+

Mutual TLS authentication is always used for the communication between Kafka brokers and Zookeeper pods.Mutual authentication or two-way authentication is when both the server and the client present certificates. Strimzi can configure Kafka to use TLS (Transport Layer Security) to provide encrypted communication between Kafka brokers and clients either with or without mutual authentication. When you configure mutual authentication, the broker authenticates the client and the client authenticates the broker.

+
+
+ + + + + +
+
Note
+
+TLS authentication is more commonly one-way, with one party authenticating the identity of another. For example, when HTTPS is used between a web browser and a web server, the server obtains proof of the identity of the browser. +
+
+
+
+

6.2.2. When to use mutual TLS authentication for clients

+
+

Mutual TLS authentication is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using mutual TLS authentication

    +
  • +
  • +

    It is necessary to use the TLS certificates rather than passwords

    +
  • +
  • +

    You can reconfigure and restart client applications periodically so that they do not use expired certificates.

    +
  • +
+
+
+
+
+

6.3. Creating a Kafka user with mutual TLS authentication

+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster configured with a listener using TLS authentication.

    +
  • +
  • +

    A running User Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a YAML file containing the KafkaUser to be created.

    +
    +
    An example KafkaUser
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaUser
    +metadata:
    +  name: my-user
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  authentication:
    +    type: tls
    +  authorization:
    +    type: simple
    +    acls:
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Read
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Describe
    +      - resource:
    +          type: group
    +          name: my-group
    +          patternType: literal
    +        operation: Read
    +
    +
    +
  2. +
  3. +

    Create the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Use the credentials from the secret my-user in your application

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

6.4. SCRAM-SHA authentication

+
+

SCRAM (Salted Challenge Response Authentication Mechanism) is an authentication protocol that can establish mutual authentication using passwords. Strimzi can configure Kafka to use SASL (Simple Authentication and Security Layer) SCRAM-SHA-512 to provide authentication on both unencrypted and TLS-encrypted client connections. TLS authentication is always used internally between Kafka brokers and Zookeeper nodes. When used with a TLS client connection, the TLS protocol provides encryption, but is not used for authentication.

+
+
+

The following properties of SCRAM make it safe to use SCRAM-SHA even on unencrypted connections:

+
+
+
    +
  • +

    The passwords are not sent in the clear over the communication channel. +Instead the client and the server are each challenged by the other to offer proof that they know the password of the authenticating user.

    +
  • +
  • +

    The server and client each generate a new challenge for each authentication exchange. +This means that the exchange is resilient against replay attacks.

    +
  • +
+
+
+

6.4.1. Supported SCRAM credentials

+
+

Strimzi supports SCRAM-SHA-512 only. +When a KafkaUser.spec.authentication.type is configured with scram-sha-512 the User Operator will generate a random 12 character password consisting of upper and lowercase ASCII letters and numbers.

+
+
+
+

6.4.2. When to use SCRAM-SHA authentication for clients

+
+

SCRAM-SHA is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using SCRAM-SHA-512

    +
  • +
  • +

    It is necessary to use passwords rather than the TLS certificates

    +
  • +
  • +

    Authentication for unencrypted communication is required

    +
  • +
+
+
+
+
+

6.5. Creating a Kafka user with SCRAM SHA authentication

+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster configured with a listener using SCRAM SHA authentication.

    +
  • +
  • +

    A running User Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a YAML file containing the KafkaUser to be created.

    +
    +
    An example KafkaUser
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaUser
    +metadata:
    +  name: my-user
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  authentication:
    +    type: scram-sha-512
    +  authorization:
    +    type: simple
    +    acls:
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Read
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Describe
    +      - resource:
    +          type: group
    +          name: my-group
    +          patternType: literal
    +        operation: Read
    +
    +
    +
  2. +
  3. +

    Create the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Use the credentials from the secret my-user in your application

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

6.6. Editing a Kafka user

+
+

This procedure describes how to change the configuration of an existing Kafka user by using a KafkaUser OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running User Operator.

    +
  • +
  • +

    An existing KafkaUser to be changed

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a YAML file containing the desired KafkaUser.

    +
    +
    An example KafkaUser
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaUser
    +metadata:
    +  name: my-user
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  authentication:
    +    type: tls
    +  authorization:
    +    type: simple
    +    acls:
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Read
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Describe
    +      - resource:
    +          type: group
    +          name: my-group
    +          patternType: literal
    +        operation: Read
    +
    +
    +
  2. +
  3. +

    Update the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Use the updated credentials from the my-user secret in your application.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

6.7. Deleting a Kafka user

+
+

This procedure describes how to delete a Kafka user created with KafkaUser OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running User Operator.

    +
  • +
  • +

    An existing KafkaUser to be deleted.

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Delete the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl:

    +
    +
    +
    +
    kubectl delete kafkauser your-user-name
    +
    +
    +
    +

    On OpenShift this can be done using oc:

    +
    +
    +
    +
    oc delete kafkauser your-user-name
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+

6.8. Kafka User resource

+
+

The KafkaUser resource is used to declare a user with its authentication mechanism, authorization mechanism, and access rights.

+
+
+

6.8.1. Authentication

+
+

Authentication is configured using the authentication property in KafkaUser.spec. +The authentication mechanism enabled for this user will be specified using the type field. +Currently, the only supported authentication mechanisms are the TLS Client Authentication mechanism and the SCRAM-SHA-512 mechanism.

+
+
+

When no authentication mechanism is specified, User Operator will not create the user or its credentials.

+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type field to tls.

+
+
+
An example of KafkaUser with enabled TLS Client Authentication
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaUser
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/cluster: my-cluster
+spec:
+  authentication:
+    type: tls
+  # ...
+
+
+
+

When the user is created by the User Operator, it will create a new secret with the same name as the KafkaUser resource. +The secret will contain a public and private key which should be used for the TLS Client Authentication. +Bundled with them will be the public key of the client certification authority which was used to sign the user certificate. +All keys will be in X509 format.

+
+
+
An example of the Secret with user credentials
+
+
apiVersion: v1
+kind: Secret
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/kind: KafkaUser
+    strimzi.io/cluster: my-cluster
+type: Opaque
+data:
+  ca.crt: # Public key of the Clients CA
+  user.crt: # Public key of the user
+  user.key: # Private key of the user
+
+
+
+
+
SCRAM-SHA-512 Authentication
+
+

To use SCRAM-SHA-512 authentication mechanism, set the type field to scram-sha-512.

+
+
+
An example of KafkaUser with enabled SCRAM-SHA-512 authentication
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaUser
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/cluster: my-cluster
+spec:
+  authentication:
+    type: scram-sha-512
+  # ...
+
+
+
+

When the user is created by the User Operator, the User Operator will create a new secret with the same name as the KafkaUser resource. +The secret contains the generated password in the password key, which is encoded with base64. In order to use the password it must be decoded.

+
+
+
An example of the Secret with user credentials
+
+
apiVersion: v1
+kind: Secret
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/kind: KafkaUser
+    strimzi.io/cluster: my-cluster
+type: Opaque
+data:
+  password: Z2VuZXJhdGVkcGFzc3dvcmQ= # Generated password
+
+
+
+

For decode the generated password:

+
+
+
+
echo "Z2VuZXJhdGVkcGFzc3dvcmQ=" | base64 --decode
+
+
+
+
+
+

6.8.2. Authorization

+
+

Authorization is configured using the authorization property in KafkaUser.spec. +The authorization type enabled for this user will be specified using the type field. +Currently, the only supported authorization type is the Simple authorization.

+
+
+

When no authorization is specified, the User Operator will not provision any access rights for the user.

+
+
+
Simple Authorization
+
+

To use Simple Authorization, set the type property to simple. +Simple authorization is using the SimpleAclAuthorizer plugin. +SimpleAclAuthorizer is the default authorization plugin which is part of Apache Kafka. +Simple Authorization allows you to specify list of ACL rules in the acls property.

+
+
+

The acls property should contain a list of AclRule objects. +AclRule specifies the access rights whcih will be granted to the user. +The AclRule object contains following properties:

+
+
+
+
type
+
+

Specifies the type of the ACL rule. +The type can be either allow or deny. +The type field is optional and when not specified, the ACL rule will be treated as allow rule.

+
+
operation
+
+

Specifies the operation which will be allowed or denied. +Following operations are supported:

+
+
    +
  • +

    Read

    +
  • +
  • +

    Write

    +
  • +
  • +

    Delete

    +
  • +
  • +

    Alter

    +
  • +
  • +

    Describe

    +
  • +
  • +

    All

    +
  • +
  • +

    IdempotentWrite

    +
  • +
  • +

    ClusterAction

    +
  • +
  • +

    Create

    +
  • +
  • +

    AlterConfigs

    +
  • +
  • +

    DescribeConfigs

    +
    + + + + + +
    +
    Note
    +
    +Not every operation can be combined with every resource. +
    +
    +
  • +
+
+
+
host
+
+

Specifies a remote host from which is the rule allowed or denied. +Use * to allow or deny the operation from all hosts. +The host field is optional and when not specified, the value * will be used as default.

+
+
resource
+
+

Specifies the resource for which the rule applies. +Simple Authorization supports four different resource types:

+
+
    +
  • +

    Topics

    +
  • +
  • +

    Consumer Groups

    +
  • +
  • +

    Clusters

    +
  • +
  • +

    Transactional IDs

    +
    +

    The resource type can be specified in the type property. +Use topic for Topics, group for Consumer Groups, cluster for clusters, and transactionalId for Transactional IDs.

    +
    +
    +

    Additionally, Topic, Group, and Transactional ID resources allow you to specify the name of the resource for which the rule applies. +The name can be specified in the name property. +The name can be either specified as literal or as a prefix. +To specify the name as literal, set the patternType property to the value literal. +Literal names will be taken exactly as they are specified in the name field. +To specify the name as a prefix, set the patternType property to the value prefix. +Prefix type names will use the value from the name only a prefix and will apply the rule to all resources with names starting with the value. +The cluster type resources have no name.

    +
    +
  • +
+
+
+
+
+
+

For more details about SimpleAclAuthorizer, its ACL rules and the allowed combinations of resources and operations, see Authorization and ACLs.

+
+
+

For more information about the AclRule object, see AclRule schema reference.

+
+
+
An example KafkaUser
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaUser
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/cluster: my-cluster
+spec:
+  # ...
+  authorization:
+    type: simple
+    acls:
+      - resource:
+          type: topic
+          name: my-topic
+          patternType: literal
+        operation: Read
+      - resource:
+          type: topic
+          name: my-topic
+          patternType: literal
+        operation: Describe
+      - resource:
+          type: group
+          name: my-group
+          patternType: prefix
+        operation: Read
+
+
+
+
+
+

6.8.3. Additional resources

+
+ +
+
+
+
+
+
+

7. Security

+
+
+

Strimzi supports encrypted communication between the Kafka and Strimzi components using the TLS protocol. +Communication between Kafka brokers (interbroker communication), between Zookeeper nodes (internodal communication), and between these and the Strimzi operators is always encrypted. +Communication between Kafka clients and Kafka brokers is encrypted according to how the cluster is configured. +For the Kafka and Strimzi components, TLS certificates are also used for authentication.

+
+
+

The Cluster Operator automatically sets up TLS certificates to enable encryption and authentication within your cluster. +It also sets up other TLS certificates if you want to enable encryption or TLS authentication between Kafka brokers and clients.

+
+
+
+Secure Communication +
+
Figure 1. Example architecture diagram of the communication secured by TLS.
+
+
+

7.1. Certificate Authorities

+
+

To support encryption, each Strimzi component needs its own private keys and public key certificates. +All component certificates are signed by a Certificate Authority (CA) called the cluster CA.

+
+
+

Similarly, each Kafka client application connecting using TLS client authentication needs private keys and certificates. +The clients CA is used to sign the certificates for the Kafka clients.

+
+
+

7.1.1. CA certificates

+
+

Each CA has a self-signed public key certificate.

+
+
+

Kafka brokers are configured to trust certificates signed by either the clients CA or the cluster CA. Components to which clients do not need to connect, such as Zookeeper, only trust certificates signed by the cluster CA. Client applications that perform mutual TLS authentication have to trust the certificates signed by the cluster CA.

+
+
+

By default, Strimzi generates and renews CA certificates automatically. You can configure the management of CA certificates in the Kafka.spec.clusterCa and Kafka.spec.clientsCa objects.

+
+
+
+
+

7.2. Certificates and Secrets

+
+

Strimzi stores CA, component and Kafka client private keys and certificates in Secrets. +All keys are 2048 bits in size.

+
+
+

CA certificate validity periods, expressed as a number of days after certificate generation, can be configured in Kafka.spec.clusterCa.validityDays +and Kafka.spec.clusterCa.validityDays.

+
+
+

7.2.1. Cluster CA Secrets

+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1. Cluster CA Secrets managed by the Cluster Operator in <cluster>
Secret nameField within SecretDescription

<cluster>-cluster-ca

ca.key

The current private key for the cluster CA.

<cluster>-cluster-ca-cert

ca.crt

The current certificate for the cluster CA.

<cluster>-kafka-brokers

<cluster>-kafka-<num>.crt

Certificate for Kafka broker pod <num>. Signed by a current or former cluster CA private key in <cluster>-cluster-ca.

<cluster>-kafka-<num>.key

Private key for Kafka broker pod <num>.

<cluster>-zookeeper-nodes

<cluster>-zookeeper-<num>.crt

Certificate for Zookeeper node <num>. Signed by a current or former cluster CA private key in <cluster>-cluster-ca.

<cluster>-zookeeper-<num>.key

Private key for Zookeeper pod <num>.

<cluster>-entity-operator-certs

entity-operator_.crt

Certificate for TLS communication between the Entity Operator and Kafka or Zookeeper. + Signed by a current or former cluster CA private key in <cluster>-cluster-ca.

entity-operator.key

Private key for TLS communication between the Entity Operator and Kafka or Zookeeper

+
+

The CA certificates in <cluster>-cluster-ca-cert must be trusted by Kafka client applications so that they validate the Kafka broker certificates when connecting to Kafka brokers over TLS.

+
+
+ + + + + +
+
Note
+
+Only <cluster>-cluster-ca-cert needs to be used by clients. +All other Secrets in the table above only need to be accessed by the + Strimzi components. + You can enforce this using OpenShift or Kubernetes role-based access controls if necessary. +
+
+
+
+

7.2.2. Client CA Secrets

+ + +++++ + + + + + + + + + + + + + + + + + + + +
Table 2. Clients CA Secrets managed by the Cluster Operator in <cluster>
Secret nameField within SecretDescription

<cluster>-clients-ca

ca.key

The current private key for the clients CA.

<cluster>-clients-ca-cert

ca.crt

The current certificate for the clients CA.

+
+

The certificates in <cluster>-clients-ca-cert are those which the Kafka brokers trust.

+
+
+ + + + + +
+
Note
+
+<cluster>-cluster-ca is used to sign certificates of client applications. +It needs to be accessible to the Strimzi components and for administrative access if you are intending to issue application certificates without using the User Operator. +You can enforce this using OpenShift or Kubernetes role-based access controls if necessary. +
+
+
+
+

7.2.3. User Secrets

+ + +++++ + + + + + + + + + + + + + + + + + + +
Table 3. Secrets managed by the User Operator
Secret nameField within SecretDescription

<user>

user.crt

Certificate for the user, signed by the clients CA

user.key

Private key for the user

+
+
+
+

7.3. Installing your own CA certificates

+
+

This procedure describes how to install your own CA certificates and private keys instead of using CA certificates and private keys generated by the Cluster Operator.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka cluster is not yet deployed.

    +
  • +
  • +

    Your own X.509 certificates and keys in PEM format for the cluster CA or clients CA.

    +
    +
      +
    • +

      If you want to use a cluster or clients CA which is not a Root CA, you have to include the whole chain in the certificate file. +The chain should be in the following order:

      +
      +
        +
      1. +

        The cluster or clients CA

        +
      2. +
      3. +

        One or more intermediate CAs

        +
      4. +
      5. +

        The root CA

        +
      6. +
      +
      +
    • +
    • +

      All CAs in the chain should be configured as a CA in the X509v3 Basic Constraints.

      +
    • +
    +
    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Put your CA certificate in the corresponding Secret (<cluster>-cluster-ca-cert for the cluster CA or <cluster>-clients-ca-cert for the clients CA):

    +
    +

    On Kubernetes, run the following commands:

    +
    +
    +
    +
    # Delete any existing secret (ignore "Not Exists" errors)
    +kubectl delete secret <ca-cert-secret>
    +# Create and label the new one
    +kubectl create secret generic <ca-cert-secret> --from-file=ca.crt=<ca-cert-file>
    +
    +
    +
    +

    On OpenShift, run the following commands:

    +
    +
    +
    +
    # Delete any existing secret (ignore "Not Exists" errors)
    +oc delete secret <ca-cert-secret>
    +# Create the new one
    +oc create secret generic <ca-cert-secret> --from-file=ca.crt=<ca-cert-file>
    +
    +
    +
  2. +
  3. +

    Put your CA key in the corresponding Secret (<cluster>-cluster-ca for the cluster CA or <cluster>-clients-ca for the clients CA)

    +
    +

    On Kubernetes, run the following commands:

    +
    +
    +
    +
    # Delete the existing secret
    +kubectl delete secret <ca-key-secret>
    +# Create the new one
    +kubectl create secret generic <ca-key-secret> --from-file=ca.key=<ca-key-file>
    +
    +
    +
    +

    On OpenShift, run the following commands:

    +
    +
    +
    +
    # Delete the existing secret
    +oc delete secret <ca-key-secret>
    +# Create the new one
    +oc create secret generic <ca-key-secret> --from-file=ca.key=<ca-key-file>
    +
    +
    +
  4. +
  5. +

    Label both Secrets with labels strimzi.io/kind=Kafka and strimzi.io/cluster=<my-cluster>:

    +
    +

    On Kubernetes, run the following commands:

    +
    +
    +
    +
    kubectl label secret <ca-cert-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +kubectl label secret <ca-key-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +
    +
    +
    +

    On OpenShift, run the following commands:

    +
    +
    +
    +
    oc label secret <ca-cert-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +oc label secret <ca-key-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +
    +
    +
  6. +
  7. +

    Create the Kafka resource for your cluster, configuring either the Kafka.spec.clusterCa or the Kafka.spec.clientsCa object to not use generated CAs:

    +
    +
    Example fragment Kafka resource configuring the cluster CA to use certificates you supply for yourself
    +
    +
    kind: Kafka
    +version: kafka.strimzi.io/v1beta1
    +spec:
    +  # ...
    +  clusterCa:
    +    generateCertificateAuthority: false
    +
    +
    +
  8. +
+
+
+
+

7.4. Certificate renewal

+
+

The cluster CA and clients CA certificates are only valid for a limited time period, known as the validity period. +This is usually defined as a number of days since the certificate was generated. +For auto-generated CA certificates, you can configure the validity period in Kafka.spec.clusterCa.validityDays and Kafka.spec.clientsCa.validityDays. +The default validity period for both certificates is 365 days. +Manually-installed CA certificates should have their own validity period defined.

+
+
+

When a CA certificate expires, components and clients which still trust that certificate will not accept TLS connections from peers whose certificate were signed by the CA private key. +The components and clients need to trust the new CA certificate instead.

+
+
+

To allow the renewal of CA certificates without a loss of service, the Cluster Operator will initiate certificate renewal before the old CA certificates expire. +You can configure the renewal period in Kafka.spec.clusterCa.renewalDays and Kafka.spec.clientsCa.renewalDays (both default to 30 days). +The renewal period is measured backwards, from the expiry date of the current certificate.

+
+
+
+
Not Before                                     Not After
+    |                                              |
+    |<--------------- validityDays --------------->|
+                              <--- renewalDays --->|
+
+
+
+

The behavior of the Cluster Operator during the renewal period depends on whether the relevant setting is enabled, in either Kafka.spec.clusterCa.generateCertificateAuthority or Kafka.spec.clientsCa.generateCertificateAuthority.

+
+
+

7.4.1. Renewal process with generated CAs

+
+

The Cluster Operator performs the following process to renew CA certificates:

+
+
+
    +
  1. +

    Generate a new CA certificate, but retaining the existing key. The new certificate replaces the old one with the name ca.crt within the corresponding Secret.

    +
  2. +
  3. +

    Generate new client certificates (for Zookeeper nodes, Kafka brokers, and the Entity Operator). +This is not strictly necessary because the signing key has not changed, but it keeps the validity period of the client certificate in sync with the CA certificate.

    +
  4. +
  5. +

    Restart Zookeeper nodes so that they will trust the new CA certificate and use the new client certificates.

    +
  6. +
  7. +

    Restart Kafka brokers so that they will trust the new CA certificate and use the new client certificates.

    +
  8. +
  9. +

    Restart the Topic and User Operators so that they will trust the new CA certificate and use the new client certificates.

    +
  10. +
+
+
+
+

7.4.2. Client applications

+
+

The Cluster Operator is not aware of all the client applications using the Kafka cluster.

+
+
+ + + + + +
+
Important
+
+Depending on how your applications are configured, you might need take action to ensure they continue working after certificate renewal. +
+
+
+

Consider the following important points to ensure that client applications continue working.

+
+
+
    +
  • +

    When they connect to the cluster, client applications must trust the cluster CA certificate published in <cluster>-cluster-ca-cert.

    +
  • +
  • +

    When using the User Operator to provision client certificates, client applications must use the current user.crt and user.key published in their <user> Secret when they connect to the cluster. +For workloads running inside the same OpenShift or Kubernetes cluster this can be achieved by mounting the secrets as a volume and having the client Pods construct their key- and truststores from the current state of the Secrets. +For more details on this procedure, see Configuring internal clients to trust the cluster CA.

    +
  • +
  • +

    When renewing client certificates, if you are provisioning client certificates and keys manually, you must generate new client certificates and ensure the new certificates are used by clients within the renewal period. Failure to do this by the end of the renewal period could result in client applications being unable to connect.

    +
  • +
+
+
+
+
+

7.5. TLS connections

+
+

7.5.1. Zookeeper communication

+
+

Zookeeper does not support TLS itself. +By deploying a TLS sidecar within every Zookeeper pod, the Cluster Operator is able to provide data encryption and authentication between Zookeeper nodes in a cluster. +Zookeeper only communicates with the TLS sidecar over the loopback interface. +The TLS sidecar then proxies all Zookeeper traffic, TLS decrypting data upon entry into a Zookeeper pod, and TLS encrypting data upon departure from a Zookeeper pod.

+
+
+

This TLS encrypting stunnel proxy is instantiated from the spec.zookeeper.stunnelImage specified in the Kafka resource.

+
+
+
+

7.5.2. Kafka interbroker communication

+
+

Communication between Kafka brokers is done through the REPLICATION listener on port 9091, which is encrypted by default.

+
+
+

Communication between Kafka brokers and Zookeeper nodes uses a TLS sidecar, as described above.

+
+
+
+

7.5.3. Topic and User Operators

+
+

Like the Cluster Operator, the Topic and User Operators each use a TLS sidecar when communicating with Zookeeper. The Topic Operator connects to Kafka brokers on port 9091.

+
+
+
+

7.5.4. Kafka Client connections

+
+

Encrypted communication between Kafka brokers and clients running within the same OpenShift or Kubernetes cluster is provided through the CLIENTTLS listener on port 9093.

+
+
+

Encrypted communication between Kafka brokers and clients running outside the same OpenShift or Kubernetes cluster is provided through the EXTERNAL listener on port 9094.

+
+
+ + + + + +
+
Note
+
+You can use the CLIENT listener on port 9092 for unencrypted communication with brokers. +
+
+
+
+
+

7.6. Configuring internal clients to trust the cluster CA

+
+

This procedure describes how to configure a Kafka client that resides inside the OpenShift or Kubernetes cluster — connecting to the tls listener on port 9093 — to trust the cluster CA certificate.

+
+
+

The easiest way to achieve this for an internal client is to use a volume mount to access the Secrets containing the necessary certificates and keys.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka resource within the OpenShift or Kubernetes cluster.

    +
  • +
  • +

    A Kafka client application inside the OpenShift or Kubernetes cluster which will connect using TLS and needs to trust the cluster CA certificate.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    When defining the client Pod

    +
  2. +
  3. +

    The Kafka client has to be configured to trust certificates signed by this CA. +For the Java-based Kafka Producer, Consumer, and Streams APIs, you can do this by importing the CA certificate into the JVM’s truststore using the following keytool command:

    +
    +
    +
    keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
    +
    +
    +
  4. +
  5. +

    To configure the Kafka client, specify the following properties:

    +
    +
      +
    • +

      security.protocol: SSL when using TLS for encryption (with or without TLS authentication), or security.protocol: SASL_SSL when using SCRAM-SHA authentication over TLS.

      +
    • +
    • +

      ssl.truststore.location: the truststore location where the certificates were imported.

      +
    • +
    • +

      ssl.truststore.password: the password for accessing the truststore. This property can be omitted if it is not needed by the truststore.

      +
    • +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

7.7. Configuring external clients to trust the cluster CA

+
+

This procedure describes how to configure a Kafka client that resides outside the OpenShift or Kubernetes cluster – connecting to the external listener on port 9094 – to trust the cluster CA certificate.

+
+
+

You can use the same procedure to configure clients inside OpenShift or Kubernetes, which connect to the tls listener on port 9093, but it is usually more convenient to access the Secrets using a volume mount in the client Pod.

+
+
+

Follow this procedure when setting up the client and during the renewal period, when the old clients CA certificate is replaced.

+
+
+ + + + + +
+
Important
+
+The <cluster-name>-cluster-ca-cert Secret will contain more than one CA certificate during CA certificate renewal. Clients must add all of them to their truststores. +
+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka resource within the OpenShift or Kubernetes cluster.

    +
  • +
  • +

    A Kafka client application outside the OpenShift or Kubernetes cluster which will connect using TLS and needs to trust the cluster CA certificate.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Extract the cluster CA certificate from the generated <cluster-name>-cluster-ca-cert Secret.

    +
    +

    On Kubernetes, run the following command to extract the certificates:

    +
    +
    +
    +
    kubectl get secret <cluster-name>-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    +
    +
    +
    +

    On OpenShift, run the following command to extract the certificates:

    +
    +
    +
    +
    oc extract secret/<cluster-name>-cluster-ca-cert --keys ca.crt
    +
    +
    +
  2. +
  3. +

    The Kafka client has to be configured to trust certificates signed by this CA. +For the Java-based Kafka Producer, Consumer, and Streams APIs, you can do this by importing the CA certificates into the JVM’s truststore using the following keytool command:

    +
    +
    +
    keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
    +
    +
    +
  4. +
  5. +

    To configure the Kafka client, specify the following properties:

    +
    +
      +
    • +

      security.protocol: SSL when using TLS for encryption (with or without TLS authentication), or security.protocol: SASL_SSL when using SCRAM-SHA authentication over TLS.

      +
    • +
    • +

      ssl.truststore.location: the truststore location where the certificates were imported.

      +
    • +
    • +

      ssl.truststore.password: the password for accessing the truststore. This property can be omitted if it is not needed by the truststore.

      +
    • +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
+
+

8. Strimzi and Kafka upgrades

+
+
+

Strimzi can be upgraded with no cluster downtime. Each version of Strimzi supports one or more versions of Apache Kafka: you can upgrade to a higher Kafka version as long as it is supported by your version of Strimzi. +In some cases, you can also downgrade to a lower supported Kafka version.

+
+
+

Newer versions of Strimzi may support newer versions of Kafka, but you need to upgrade Strimzi before you can upgrade to a higher supported Kafka version.

+
+
+ + + + + +
+
Important
+
+Resource upgrades must be performed after upgrading Strimzi and Kafka. +
+
+
+

8.1. Upgrade process

+
+

Upgrading Strimzi is a two-stage process. To upgrade brokers and clients without downtime, you must complete the upgrade procedures in the following order:

+
+
+
    +
  1. +

    Update your Cluster Operator to the latest Strimzi version.

    + +
  2. +
  3. +

    Upgrade all Kafka brokers and client applications to the latest Kafka version.

    +
    + +
    +
  4. +
+
+
+
+

8.2. Kafka versions

+
+

Kafka’s log message format version and inter-broker protocol version specify the log format version appended to messages and the version of protocol used in a cluster. As a result, the upgrade process involves making configuration changes to existing Kafka brokers and code changes to client applications (consumers and producers) to ensure the correct versions are used.

+
+
+

The following table shows the differences between Kafka versions:

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Kafka versionInterbroker protocol versionLog message format versionZookeeper version

2.1.0

2.1

2.1

3.4.13

2.1.1

2.1

2.1

3.4.13

2.2.0

2.2

2.2

3.4.13

2.2.1

2.2

2.2

3.4.13

+
+
Message format version
+

When a producer sends a message to a Kafka broker, the message is encoded using a specific format. +The format can change between Kafka releases, so messages include a version identifying which version of the format they were encoded with. You can configure a Kafka broker to convert messages from newer format versions to a given older format version before the broker appends the message to the log.

+
+
+

In Kafka, there are two different methods for setting the message format version:

+
+
+
    +
  • +

    The message.format.version property is set on topics.

    +
  • +
  • +

    The log.message.format.version property is set on Kafka brokers.

    +
  • +
+
+
+

The default value of message.format.version for a topic is defined by the log.message.format.version that is set on the Kafka broker. You can manually set the message.format.version of a topic by modifying its topic configuration.

+
+
+

The upgrade tasks in this section assume that the message format version is defined by the log.message.format.version.

+
+
+
+

8.3. Upgrading the Cluster Operator

+
+

The steps to upgrade your Cluster Operator deployment to use Strimzi 0.12.1 are outlined in this section.

+
+
+

The availability of Kafka clusters managed by the Cluster Operator is not affected by the upgrade operation.

+
+
+ + + + + +
+
Note
+
+Refer to the documentation supporting a specific version of Strimzi for information on how to upgrade to that version. +
+
+
+

8.3.1. Upgrading the Cluster Operator to a later version

+
+

This procedure describes how to upgrade a Cluster Operator deployment to a later version.

+
+
+
Prerequisites
+
    +
  • +

    An existing Cluster Operator deployment.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Backup the existing Cluster Operator resources:

    +
    +
    +
    kubectl get all -l app=strimzi -o yaml > strimzi-backup.yaml
    +
    +
    +
  2. +
  3. +

    Update the Cluster Operator.

    +
    +

    Modify the installation files according to the OpenShift project or Kubernetes namespace the Cluster Operator is running in.

    +
    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    If you modified one or more environment variables in your existing Cluster Operator Deployment, edit the +install/cluster-operator/050-Deployment-cluster-operator.yaml file to reflect the changes that you made in the new version of the Cluster Operator.

    +
    +
  4. +
  5. +

    When you have an updated configuration, deploy it along with the rest of the install resources:

    +
    +
    +
    kubectl apply -f install/cluster-operator
    +
    +
    +
    +

    Wait for the rolling updates to complete.

    +
    +
  6. +
  7. +

    Get the image for the Kafka pod to ensure the upgrade was successful:

    +
    +
    +
    kubectl get po my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'
    +
    +
    +
    +

    The image tag shows the new Strimzi version followed by the Kafka version. For example, <New Strimzi version>-kafka-<Current Kafka version>.

    +
    +
  8. +
  9. +

    Update existing resources to handle deprecated custom resource properties.

    + +
  10. +
+
+
+

You now have an updated Cluster Operator, but the version of Kafka running in the cluster it manages is unchanged.

+
+
+
What to do next
+

Following the Cluster Operator upgrade, you can perform a Kafka upgrade.

+
+
+
+
+

8.4. Upgrading Kafka

+
+

After you have upgraded your Cluster Operator, you can upgrade your brokers to a higher supported version of Kafka.

+
+
+

Kafka upgrades are performed using the Cluster Operator. How the Cluster Operator performs an upgrade depends on the differences between versions of:

+
+
+
    +
  • +

    Interbroker protocol

    +
  • +
  • +

    Log message format

    +
  • +
  • +

    ZooKeeper

    +
  • +
+
+
+

When the versions are the same for the current and target Kafka version, as is typically the case for a patch level upgrade, the Cluster Operator can upgrade through a single rolling update of the Kafka brokers.

+
+
+

When one or more of these versions differ, the Cluster Operator requires two or three rolling updates of the Kafka brokers to perform the upgrade.

+
+
+
Additional resources
+ +
+
+

8.4.1. Kafka version and image mappings

+
+

When upgrading Kafka, consider your settings for the STRIMZI_KAFKA_IMAGES and Kafka.spec.kafka.version properties.

+
+
+
    +
  • +

    Each Kafka resource can be configured with a Kafka.spec.kafka.version.

    +
  • +
  • +

    The Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable provides a mapping between the Kafka version and the image to be used when that version is requested in a given Kafka resource.

    +
    +
      +
    • +

      If Kafka.spec.kafka.image is not configured, the default image for the given version is used.

      +
    • +
    • +

      If Kafka.spec.kafka.image is configured, the default image is overridden.

      +
    • +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+The Cluster Operator cannot validate that an image actually contains a Kafka broker of the expected version. +Take care to ensure that the given image corresponds to the given Kafka version. +
+
+
+
+

8.4.2. Strategies for upgrading clients

+
+

The best approach to upgrading your client applications (including Kafka Connect connectors) depends on your particular circumstances.

+
+
+

Consuming applications need to receive messages in a message format that they understand. You can ensure that this is the case in one of two ways:

+
+
+
    +
  • +

    By upgrading all the consumers for a topic before upgrading any of the producers.

    +
  • +
  • +

    By having the brokers down-convert messages to an older format.

    +
  • +
+
+
+

Using broker down-conversion puts extra load on the brokers, so it is not ideal to rely on down-conversion for all topics for a prolonged period of time. +For brokers to perform optimally they should not be down converting messages at all.

+
+
+

Broker down-conversion is configured in two ways:

+
+
+
    +
  • +

    The topic-level message.format.version configures it for a single topic.

    +
  • +
  • +

    The broker-level log.message.format.version is the default for topics that do not have the topic-level message.format.version configured.

    +
  • +
+
+
+

Messages published to a topic in a new-version format will be visible to consumers, because brokers perform down-conversion when they receive messages from producers, not when they are sent to consumers.

+
+
+

There are a number of strategies you can use to upgrade your clients:

+
+
+
+
Consumers first
+
+
+
    +
  1. +

    Upgrade all the consuming applications.

    +
  2. +
  3. +

    Change the broker-level log.message.format.version to the new version.

    +
  4. +
  5. +

    Upgrade all the producing applications.

    +
    +

    This strategy is straightforward, and avoids any broker down-conversion. +However, it assumes that all consumers in your organization can be upgraded in a coordinated way, and it does not work for applications that are both consumers and producers. +There is also a risk that, if there is a problem with the upgraded clients, new-format messages might get added to the message log so that you cannot revert to the previous consumer version.

    +
    +
  6. +
+
+
+
Per-topic consumers first
+
+

For each topic:

+
+
    +
  1. +

    Upgrade all the consuming applications.

    +
  2. +
  3. +

    Change the topic-level message.format.version to the new version.

    +
  4. +
  5. +

    Upgrade all the producing applications.

    +
    +

    This strategy avoids any broker down-conversion, and means you can proceed on a topic-by-topic basis. It does not work for applications that are both consumers and producers of the same topic. Again, it has the risk that, if there is a problem with the upgraded clients, new-format messages might get added to the message log.

    +
    +
  6. +
+
+
+
Per-topic consumers first, with down conversion
+
+

For each topic:

+
+
    +
  1. +

    Change the topic-level message.format.version to the old version +(or rely on the topic defaulting to the broker-level log.message.format.version).

    +
  2. +
  3. +

    Upgrade all the consuming and producing applications.

    +
  4. +
  5. +

    Verify that the upgraded applications function correctly.

    +
  6. +
  7. +

    Change the topic-level message.format.version to the new version.

    +
    +

    This strategy requires broker down-conversion, but the load on the brokers is minimized because it is only required for a single topic (or small group of topics) at a time. It also works for applications that are both consumers and producers of the same topic. This approach ensures that the upgraded producers and consumers are working correctly before you commit to using the new message format version.

    +
    +
    +

    The main drawback of this approach is that it can be complicated to manage in a cluster with many topics and applications.

    +
    +
  8. +
+
+
+
+
+
+

Other strategies for upgrading client applications are also possible.

+
+
+ + + + + +
+
Note
+
+It is also possible to apply multiple strategies. +For example, for the first few applications and topics the +"per-topic consumers first, with down conversion" strategy can be used. +When this has proved successful another, more efficient strategy can be considered acceptable to use instead. +
+
+
+
+

8.4.3. Upgrading Kafka brokers and client applications

+
+

This procedure describes how to upgrade a Strimzi Kafka cluster to a higher version of Kafka.

+
+
+
Prerequisites
+

For the Kafka resource to be upgraded, check:

+
+
+
    +
  • +

    The Cluster Operator, which supports both versions of Kafka, is up and running.

    +
  • +
  • +

    The Kafka.spec.kafka.config does not contain options that are not supported in the version of Kafka that you are upgrading to.

    +
  • +
  • +

    Whether the log.message.format.version for the current Kafka version needs to be updated for the new version.

    + +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
    +
      +
    1. +

      If the log.message.format.version of the current Kafka version is the same as that of the new Kafka version, proceed to the next step.

      +
      +

      Otherwise, ensure that Kafka.spec.kafka.config has the log.message.format.version configured to the default for the current version.

      +
      +
      +

      For example, if upgrading from Kafka 2.1.1:

      +
      +
      +
      +
      kind: Kafka
      +spec:
      +  # ...
      +  kafka:
      +    version: 2.1.1
      +    config:
      +      log.message.format.version: "2.1"
      +      # ...
      +
      +
      +
      +

      If the log.message.format.version is unset, set it to the current version.

      +
      +
      + + + + + +
      +
      Note
      +
      +The value of log.message.format.version must be a string to prevent it from being interpreted as a floating point number. +
      +
      +
    2. +
    3. +

      Change the Kafka.spec.kafka.version to specify the new version (leaving the log.message.format.version as the current version).

      +
      +

      For example, if upgrading from Kafka 2.1.1 to 2.2.1:

      +
      +
      +
      +
      apiVersion: v1alpha1
      +kind: Kafka
      +spec:
      +  # ...
      +  kafka:
      +    version: 2.2.1 (1)
      +    config:
      +      log.message.format.version: "2.1" (2)
      +      # ...
      +
      +
      +
      +
        +
      1. +

        This is changed to the new version

        +
      2. +
      3. +

        This remains at the current version

        +
      4. +
      +
      +
    4. +
    5. +

      If the image for the Kafka version is different from the image defined in STRIMZI_KAFKA_IMAGES for the Cluster Operator, update Kafka.spec.kafka.image.

      + +
    6. +
    +
    +
  2. +
  3. +

    Save and exit the editor, then wait for rolling updates to complete.

    +
    +

    Check the update in the logs or by watching the pod state transitions:

    +
    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl logs -f <cluster-operator-pod-name> | grep -E "Kafka version upgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    kubectl get po -w
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc logs -f <cluster-operator-pod-name> | grep -E "Kafka version upgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    oc get po -w
    +
    +
    +
    +
    +
    +

    If the current and new versions of Kafka have different interbroker protocol versions, check the Cluster Operator logs for an INFO level message:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version upgrade from <from-version> to <to-version>, phase 2 of 2 completed
    +
    +
    +
    +

    Alternatively, if the current and new versions of Kafka have the same interbroker protocol version, check for:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version upgrade from <from-version> to <to-version>, phase 1 of 1 completed
    +
    +
    +
    +
    +
    +

    The rolling updates:

    +
    +
    +
      +
    • +

      Ensure each pod is using the broker binaries for the new version of Kafka

      +
    • +
    • +

      Configure the brokers to send messages using the interbroker protocol of the new version of Kafka

      +
      + + + + + +
      +
      Note
      +
      +Clients are still using the old version, so brokers will convert messages to the old version before sending them to the clients. To minimize this additional load, updates the clients as quickly as possible. +
      +
      +
    • +
    +
    +
  4. +
  5. +

    Depending on your chosen strategy for upgrading clients, upgrade all client applications to use the new version of the client binaries.

    + +
    + + + + + +
    +
    Warning
    +
    +You cannot downgrade after completing this step. If you need to revert the update at this point, follow the procedure Downgrading Kafka brokers and client applications. +
    +
    +
    +

    If required, set the version property for Kafka Connect and Mirror Maker as the new version of Kafka:

    +
    +
    +
      +
    1. +

      For Kafka Connect, update KafkaConnect.spec.version

      +
    2. +
    3. +

      For MIrror Maker, update KafkaMirrorMaker.spec.version

      +
    4. +
    +
    +
  6. +
  7. +

    If the log.message.format.version identified in step 1 is the same as the new version proceed to the next step.

    +
    +

    Otherwise change the log.message.format.version in Kafka.spec.kafka.config to the default version for the new version of Kafka now being used.

    +
    +
    +

    For example, if upgrading to 2.2.1:

    +
    +
    +
    +
    apiVersion: v1alpha1
    +kind: Kafka
    +spec:
    +  # ...
    +  kafka:
    +    version: 2.2.1
    +    config:
    +      log.message.format.version: "2.2"
    +      # ...
    +
    +
    +
  8. +
  9. +

    Wait for the Cluster Operator to update the cluster.

    +
    +

    The Kafka cluster and clients are now using the new Kafka version.

    +
    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
+

8.5. Downgrading Kafka

+
+

Kafka version downgrades are performed using the Cluster Operator.

+
+
+

Whether and how the Cluster Operator performs a downgrade depends on the differences between versions of:

+
+
+
    +
  • +

    Interbroker protocol

    +
  • +
  • +

    Log message format

    +
  • +
  • +

    Zookeeper

    +
  • +
+
+
+

8.5.1. Target downgrade version

+
+

How the Cluster Operator handles a downgrade operation depends on the log.message.format.version.

+
+
+
    +
  • +

    If the target downgrade version of Kafka has the same log.message.format.version as the current version, the Cluster Operator downgrades by performing a single rolling restart of the brokers.

    +
  • +
  • +

    If the target downgrade version of Kafka has a different log.message.format.version, downgrading is only possible if the running cluster has always had log.message.format.version set to the version used by the downgraded version.

    +
    +

    This is typically only the case if the upgrade procedure was aborted before the log.message.format.version was changed. +In this case, the downgrade requires:

    +
    +
    +
      +
    • +

      Two rolling restarts of the brokers if the interbroker protocol of the two versions is different

      +
    • +
    • +

      A single rolling restart if they are the same

      +
    • +
    +
    +
  • +
+
+
+
+

8.5.2. Downgrading Kafka brokers and client applications

+
+

This procedure describes how you can downgrade a Strimzi Kafka cluster to a lower (previous) version of Kafka, such as downgrading from 2.2.1 to 2.1.1.

+
+
+ + + + + +
+
Important
+
+
+

Downgrading is not possible if the new version has ever used a log.message.format.version that is not supported by the previous version, including when the default value for log.message.format.version is used. For example, this resource can be downgraded to Kafka version 2.1.1 because the log.message.format.version has not been changed:

+
+
+
+
apiVersion: v1alpha1
+kind: Kafka
+spec:
+  # ...
+  kafka:
+    version: 2.2.1
+    config:
+      log.message.format.version: "2.1"
+      # ...
+
+
+
+

The downgrade would not be possible if the log.message.format.version was set at "2.2" or a value was absent (so that the parameter took the default value for a 2.2.1 broker of 2.2).

+
+
+
+
+
Prerequisites
+

For the Kafka resource to be downgraded, check:

+
+
+
    +
  • +

    The Cluster Operator, which supports both versions of Kafka, is up and running.

    +
  • +
  • +

    The Kafka.spec.kafka.config does not contain options that are not supported in the version of Kafka you are downgrading to.

    +
  • +
  • +

    The Kafka.spec.kafka.config has a log.message.format.version that is supported by the version being downgraded to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
    +
      +
    1. +

      Change the Kafka.spec.kafka.version to specify the previous version.

      +
      +

      For example, if downgrading from Kafka 2.2.1 to 2.1.1:

      +
      +
      +
      +
      apiVersion: v1alpha1
      +kind: Kafka
      +spec:
      +  # ...
      +  kafka:
      +    version: 2.1.1 (1)
      +    config:
      +      log.message.format.version: "2.1" (2)
      +      # ...
      +
      +
      +
      +
        +
      1. +

        This is changed to the previous version

        +
      2. +
      3. +

        This is unchanged

        +
      4. +
      +
      +
      + + + + + +
      +
      Note
      +
      +You must format the value of log.message.format.version as a string to prevent it from being interpreted as a floating point number. +
      +
      +
    2. +
    3. +

      If the image for the Kafka version is different from the image defined in STRIMZI_KAFKA_IMAGES for the Cluster Operator, update Kafka.spec.kafka.image.

      + +
    4. +
    +
    +
  2. +
  3. +

    Save and exit the editor, then wait for rolling updates to complete.

    +
    +

    Check the update in the logs or by watching the pod state transitions:

    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl logs -f <cluster-operator-pod-name> | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    kubectl get po -w
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc logs -f <cluster-operator-pod-name> | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    oc get po -w
    +
    +
    +
    +
    +
    +

    If the previous and current versions of Kafka have different interbroker protocol versions, check the Cluster Operator logs for an INFO level message:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version downgrade from <from-version> to <to-version>, phase 2 of 2 completed
    +
    +
    +
    +

    Alternatively, if the previous and current versions of Kafka have the same interbroker protocol version, check for:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version downgrade from <from-version> to <to-version>, phase 1 of 1 completed
    +
    +
    +
    +
    +
  4. +
  5. +

    Downgrade all client applications (consumers) to use the previous version of the client binaries.

    +
    +

    The Kafka cluster and clients are now using the previous Kafka version.

    +
    +
  6. +
+
+
+
+
+
+
+

9. Strimzi resource upgrades

+
+
+

For this release of Strimzi, resources that use the API version kafka.strimzi.io/v1alpha1 must be updated to use kafka.strimzi.io/v1beta1.

+
+
+

The kafka.strimzi.io/v1alpha1 API version is deprecated in release 0.12.1.

+
+
+

This section describes the upgrade steps for the resources.

+
+
+ + + + + +
+
Important
+
+The upgrade of resources must be performed after upgrading the Cluster Operator, so the Cluster Operator can understand the resources. +
+
+
+
What if the resource upgrade does not take effect?
+

If the upgrade does not take effect, a warning is given in the logs on reconciliation to indicate that the resource cannot be updated until the apiVersion is updated.

+
+
+

To trigger the update, make a cosmetic change to the custom resource, such as adding an annotation.

+
+
+

Example annotation:

+
+
+
+
metadata:
+  # ...
+  annotations:
+    upgrade: "Upgraded to kafka.strimzi.io/v1beta1"
+
+
+
+

9.1. Upgrading Kafka resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each Kafka resource in your deployment.

+
+
+
    +
  1. +

    Update the Kafka resource in an editor.

    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If the Kafka resource has:

    +
    +
    +
    Kafka.spec.topicOperator
    +
    +
    +
    +

    Replace it with:

    +
    +
    +
    +
    Kafka.spec.entityOperator.topicOperator
    +
    +
    +
    +

    For example, replace:

    +
    +
    +
    +
    spec:
    +  # ...
    +  topicOperator: {}
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    spec:
    +  # ...
    +  entityOperator:
    +    topicOperator: {}
    +
    +
    +
  6. +
  7. +

    If present, move:

    +
    +
    +
    Kafka.spec.entityOperator.affinity
    +
    +
    +
    +
    +
    Kafka.spec.entityOperator.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    Kafka.spec.entityOperator.template.pod.affinity
    +
    +
    +
    +
    +
    Kafka.spec.entityOperator.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  entityOperator:
    +    affinity {}
    +    tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  entityOperator:
    +    template:
    +      pod:
    +        affinity {}
    +        tolerations {}
    +
    +
    +
  8. +
  9. +

    If present, move:

    +
    +
    +
    Kafka.spec.kafka.affinity
    +
    +
    +
    +
    +
    Kafka.spec.kafka.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    Kafka.spec.kafka.template.pod.affinity
    +
    +
    +
    +
    +
    Kafka.spec.kafka.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  kafka:
    +    affinity {}
    +    tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  kafka:
    +    template:
    +      pod:
    +        affinity {}
    +        tolerations {}
    +
    +
    +
  10. +
  11. +

    If present, move:

    +
    +
    +
    Kafka.spec.zookeeper.affinity
    +
    +
    +
    +
    +
    Kafka.spec.zookeeper.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    Kafka.spec.zookeeper.template.pod.affinity
    +
    +
    +
    +
    +
    Kafka.spec.zookeeper.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  zookeeper:
    +    affinity {}
    +    tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  zookeeper:
    +    template:
    +      pod:
    +        affinity {}
    +        tolerations {}
    +
    +
    +
  12. +
  13. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  14. +
+
+
+
+

9.2. Upgrading Kafka Connect resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaConnect resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaConnect resource in an editor.

    +
    +
    +
    kubectl edit kafkaconnect my-connect
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If present, move:

    +
    +
    +
    KafkaConnect.spec.affinity
    +
    +
    +
    +
    +
    KafkaConnect.spec.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    KafkaConnect.spec.template.pod.affinity
    +
    +
    +
    +
    +
    KafkaConnect.spec.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  affinity {}
    +  tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  template:
    +    pod:
    +      affinity {}
    +      tolerations {}
    +
    +
    +
  6. +
  7. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  8. +
+
+
+
+

9.3. Upgrading Kafka Connect S2I resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaConnectS2I resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaConnectS2I resource in an editor.

    +
    +
    +
    kubectl edit kafkaconnects2i my-connect
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If present, move:

    +
    +
    +
    KafkaConnectS2I.spec.affinity
    +
    +
    +
    +
    +
    KafkaConnectS2I.spec.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    KafkaConnectS2I.spec.template.pod.affinity
    +
    +
    +
    +
    +
    KafkaConnectS2I.spec.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  affinity {}
    +  tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  template:
    +    pod:
    +      affinity {}
    +      tolerations {}
    +
    +
    +
  6. +
  7. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  8. +
+
+
+
+

9.4. Upgrading Kafka Mirror Maker resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaMirrorMaker resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaMirrorMaker resource in an editor.

    +
    +
    +
    kubectl edit kafkamirrormaker my-connect
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If present, move:

    +
    +
    +
    KafkaConnectMirrorMaker.spec.affinity
    +
    +
    +
    +
    +
    KafkaConnectMirrorMaker.spec.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    KafkaConnectMirrorMaker.spec.template.pod.affinity
    +
    +
    +
    +
    +
    KafkaConnectMirrorMaker.spec.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  affinity {}
    +  tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  template:
    +    pod:
    +      affinity {}
    +      tolerations {}
    +
    +
    +
  6. +
  7. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  8. +
+
+
+
+

9.5. Upgrading Kafka Topic resources

+
+
Prerequisites
+
    +
  • +

    A Topic Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaTopic resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaTopic resource in an editor.

    +
    +
    +
    kubectl edit kafkatopic my-topic
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  6. +
+
+
+
+

9.6. Upgrading Kafka User resources

+
+
Prerequisites
+
    +
  • +

    A User Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaUser resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaUser resource in an editor.

    +
    +
    +
    kubectl edit kafkauser my-user
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  6. +
+
+
+
+
+
+

10. Uninstalling Strimzi

+
+
+

This procedure describes how to uninstall Strimzi and remove resources related to the deployment.

+
+
+
Prerequisites
+

In order to perform this procedure, identify resources created specifically for a deployment and referenced from the Strimzi resource.

+
+
+

Such resources include:

+
+
+
    +
  • +

    Secrets (Custom CAs and certificates, Kafka Connect secrets, and other Kafka secrets)

    +
  • +
  • +

    Logging ConfigMaps (of type external)

    +
  • +
+
+
+

These are resources referenced by Kafka, KafkaConnect, KafkaConnectS2I, or KafkaMirrorMaker configuration.

+
+
+
Procedure
+
    +
  1. +

    Delete the cluster operator Deployment, related CustomResourceDefinitions, and RBAC resources:

    +
    +
    +
    kubectl delete -f install/cluster-operator
    +
    +
    +
    + + + + + +
    +
    Warning
    +
    +Deleting CustomResourceDefinitions results in the garbage collection of the corresponding custom resources (Kafka, KafkaConnect, KafkaConnectS2I, or KafkaMirrorMaker) and the resources dependent on them (Deployments, StatefulSets, and other dependent resources). +
    +
    +
  2. +
  3. +

    Delete the resources you identified in the prerequisites.

    +
  4. +
+
+
+
+
+

11. Checking the status of a custom resource

+
+
+

This procedure describes how to find the status of a custom resource.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Specify the custom resource and use -o jsonpath option to apply a standard JSONPath expression to select the status property:

    +
    +
    +
    kubectl get kafka <kafka_resource_name> -o jsonpath='{.status}'
    +
    +
    +
    +

    This expression returns all the status information for the specified custom resource. You can use dot notation, such as status.listeners, to fine-tune the status information you wish to see.

    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+
+

Appendix A: Configurable loggers

+
+
+

Logging allows you to diagnose error and performance issues for Strimzi.

+
+
+

The following logger implementations are used in Strimzi:

+
+
+
    +
  • +

    log4j logger for Kafka and Zookeeper

    +
  • +
  • +

    log4j2 logger for Topic Operator, User Operator, and other components

    +
  • +
+
+
+

Strimzi components have their own configurable loggers.

+
+ +
+
+
+

Appendix B: Frequently Asked Questions

+
+
+

B.1. Cluster Operator

+
+

B.1.1. Why do I need cluster admin privileges to install Strimzi?

+
+

To install Strimzi, you must have the ability to create Custom Resource Definitions (CRDs). +CRDs instruct OpenShift or Kubernetes about resources that are specific to Strimzi, such as Kafka, KafkaConnect, and so on. +Because CRDs are a cluster-scoped resource rather than being scoped to a particular OpenShift or Kubernetes namespace, they typically require cluster admin privileges to install.

+
+
+

In addition, you must also have the ability to create ClusterRoles and ClusterRoleBindings. Like CRDs, these are cluster-scoped resources that typically require cluster admin privileges.

+
+
+

The cluster administrator can inspect all the resources being installed (in the /install/ directory) to assure themselves that the ClusterRoles do not grant unnecessary privileges. For more information about why the Cluster Operator installation resources grant the ability to create ClusterRoleBindings see the following question.

+
+
+

After installation, the Cluster Operator will run as a regular Deployment; any non-admin user with privileges to access the Deployment can configure it.

+
+
+

By default, normal users will not have the privileges necessary to manipulate the custom resources, such as Kafka, KafkaConnect and so on, which the Cluster Operator deals with. +These privileges can be granted using normal RBAC resources by the cluster administrator. See this procedure for more details of how to do this.

+
+
+
+

B.1.2. Why does the Cluster Operator require the ability to create ClusterRoleBindings? Is that not a security risk?

+
+

OpenShift or Kubernetes has built-in privilege escalation prevention. +That means that the Cluster Operator cannot grant privileges it does not have itself. +Which in turn means that the Cluster Operator needs to have the privileges necessary for all the components it orchestrates.

+
+
+

In the context of this question there are two places where the Cluster Operator needs to create bindings to ClusterRoleBindings to ServiceAccounts:

+
+
+
    +
  1. +

    The Topic Operator and User Operator need to be able to manipulate KafkaTopics and KafkaUsers, respectively. +The Cluster Operator therefore needs to be able to grant them this access, which it does by creating a Role and RoleBinding. +For this reason the Cluster Operator itself needs to be able to create Roles and RoleBindings in the namespace that those operators will run in. +However, because of the privilege escalation prevention, the Cluster Operator cannot grant privileges it does not have itself (in particular it cannot grant such privileges in namespace it cannot access).

    +
  2. +
  3. +

    When using rack-aware partition assignment, Strimzi needs to be able to discover the failure domain (for example, the Availability Zone in AWS) of the node on which a broker pod is assigned. +To do this the broker pod needs to be able to get information about the Node it is running on. +A Node is a cluster-scoped resource, so access to it can only be granted via a ClusterRoleBinding (not a namespace-scoped RoleBinding). +Therefore the Cluster Operator needs to be able to create ClusterRoleBindings. +But again, because of privilege escalation prevention, the Cluster Operator cannot grant privileges it does not have itself (so it cannot, for example, create a ClusterRoleBinding to a ClusterRole to grant privileges that the Cluster Operator does not not already have).

    +
  4. +
+
+
+
+

B.1.3. Why can standard OpenShift or Kubernetes users not create the custom resource (Kafka, KafkaTopic, and so on)?

+
+

Because, when they installed Strimzi, the OpenShift or Kubernetes cluster administrator did not grant the necessary privileges to standard users.

+
+
+

See this FAQ answer for more details.

+
+
+
+

B.1.4. Log contains warnings about failing to acquire lock

+
+

For each cluster, the Cluster Operator always executes only one operation at a time. The Cluster Operator uses locks +to make sure that there are never two parallel operations running for the same cluster. In case an operation requires +more time to complete, other operations will wait until it is completed and the lock is released.

+
+
+
+
INFO
+
+

Examples of cluster operations are cluster creation, rolling update, scale down or scale up and so on.

+
+
+
+
+

If the wait for the lock takes too long, the operation times out and the following warning message will be printed to +the log:

+
+
+
+
2018-03-04 17:09:24 WARNING AbstractClusterOperations:290 - Failed to acquire lock for kafka cluster lock::kafka::myproject::my-cluster
+
+
+
+

Depending on the exact configuration of STRIMZI_FULL_RECONCILIATION_INTERVAL_MS and STRIMZI_OPERATION_TIMEOUT_MS, this +warning message may appear regularly without indicating any problems. The operations which time out will be picked up by +the next periodic reconciliation. It will try to acquire the lock again and execute.

+
+
+

Should this message appear periodically even in situations when there should be no other operations running for a given +cluster, it might indicate that due to some error the lock was not properly released. In such cases it is recommended to +restart the cluster operator.

+
+
+
+

B.1.5. Hostname verification fails when connecting to NodePorts using TLS

+
+

Currently, off-cluster access using NodePorts with TLS encryption enabled does not support TLS hostname verification. +As a result, the clients that verify the hostname will fail to connect. +For example, the Java client will fail with the following exception:

+
+
+
+
Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address 168.72.15.231 found
+    at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:168)
+    at sun.security.util.HostnameChecker.match(HostnameChecker.java:94)
+    at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
+    at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)
+    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252)
+    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
+    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1501)
+    ... 17 more
+
+
+
+

To connect, you must disable hostname verification. +In the Java client, you can do this by setting the configuration option ssl.endpoint.identification.algorithm to an empty string.

+
+
+

When configuring the client using a properties file, you can do it this way:

+
+
+
+
ssl.endpoint.identification.algorithm=
+
+
+
+

When configuring the client directly in Java, set the configuration option to an empty string:

+
+
+
+
props.put("ssl.endpoint.identification.algorithm", "");
+
+
+
+
+
+
+
+

Appendix C: Installing OpenShift or Kubernetes cluster

+
+
+

The easiest way to get started with OpenShift or Kubernetes is using the Minikube, Minishift or oc cluster up +utilities. This section provides basic guidance on how to use them. More details are provided on the websites of +the tools themselves.

+
+
+

C.1. Kubernetes

+
+

In order to interact with a Kubernetes cluster the kubectl +utility needs to be installed.

+
+
+

The easiest way to get a running Kubernetes cluster is using Minikube. Minikube can be downloaded and installed +from the Kubernetes website. Depending on the number of brokers +you want to deploy inside the cluster and if you need Kafka Connect running as well, it could be worth running Minikube +at least with 4 GB of RAM instead of the default 2 GB. +Once installed, it can be started using:

+
+
+
+
minikube start --memory 4096
+
+
+
+
+

C.2. OpenShift

+
+

In order to interact with an OpenShift cluster, the oc utility is needed.

+
+
+

An OpenShift cluster can be started in two different ways. The oc utility can start a cluster locally using the +command:

+
+
+
+
oc cluster up
+
+
+
+

This command requires Docker to be installed. More information about this way can be found +here.

+
+
+

Another option is to use Minishift. Minishift is an OpenShift installation within a VM. It can be downloaded and +installed from the Minishift website. Depending on the number of brokers +you want to deploy inside the cluster and if you need Kafka Connect running as well, it could be worth running Minishift +at least with 4 GB of RAM instead of the default 2 GB. +Once installed, Minishift can be started using the following command:

+
+
+
+
minishift start --memory 4GB
+
+
+
+
+
+
+

Appendix D: Metrics

+
+
+

This section describes how to monitor Strimzi Kafka and ZooKeeper clusters using Grafana dashboards. +To run the example dashboards you must configure a Prometheus server and add the appropriate metrics configuration to your Kafka cluster resource.

+
+
+ + + + + +
+
Warning
+
+The resources referenced in this section serve as a good starting point for setting up monitoring, but they are provided as an example only. +If you require further support on configuration and running Prometheus or Grafana in production then please reach out to their respective communities. +
+
+
+

When adding Prometheus and Grafana servers to an Apache Kafka deployment using minikube or minishift, the memory available to the virtual machine should be increased (to 4 GB of RAM, for example, instead of the default 2 GB). Information on how to increase the default amount of memory can be found in the following section Installing OpenShift or Kubernetes cluster.

+
+
+

D.1. Kafka Metrics Configuration

+
+

Strimzi uses the Prometheus JMX Exporter to export JMX metrics from Kafka and ZooKeeper to a Prometheus HTTP metrics endpoint that is scraped by Prometheus server. +The Grafana dashboard relies on the Kafka and ZooKeeper Prometheus JMX Exporter relabeling rules defined in the example Kafka resource configuration in kafka-metrics.yaml. +Copy this configuration to your own Kafka resource definition, or run this example, in order to use the provided Grafana dashboards.

+
+
+

D.1.1. Deploying on OpenShift

+
+

To deploy the example Kafka cluster the following command should be executed:

+
+
+
+
oc apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/kafka/kafka-metrics.yaml
+
+
+
+
+

D.1.2. Deploying on Kubernetes

+
+

To deploy the example Kafka cluster the following command should be executed:

+
+
+
+
kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/kafka/kafka-metrics.yaml
+
+
+
+
+
+

D.2. Prometheus

+
+

Prometheus is an open-source set of components for systems monitoring and alerting. +Strimzi uses the CoreOS Prometheus Operator to run Prometheus on Kubernetes. +This Operator enables you to run a highly available Prometheus server that is suitable for use in production environments.

+
+
+

D.2.1. Deploying the Prometheus Operator on Kubernetes

+
+

To deploy the Prometheus Operator in your Kafka cluster, apply the .yaml files from the Prometheus CoreOS repository.

+
+
+

To use a different namespace than that specified in the repository files (myproject), use the following commands to download and edit the files from the repository:

+
+
+

On Linux, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-deployment.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-cluster-role-binding.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-service-account.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml > prometheus-operator-cluster-role.yaml
+
+
+
+

On MacOS, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-deployment.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-cluster-role-binding.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-service-account.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml > prometheus-operator-cluster-role.yaml
+
+
+
+

If needed, you can remove the securityContext from the Prometheus Operator Deployment. +You can manually remove the spec.template.spec.securityContext property from the prometheus-operator-deployment.yaml file.

+
+
+

Next, apply all the files using the following commands:

+
+
+

On Kubernetes this can be done using kubectl apply:

+
+
+
+
kubectl apply -f prometheus-operator-service-account.yaml
+kubectl apply -f prometheus-operator-cluster-role.yaml
+kubectl apply -f prometheus-operator-cluster-role-binding.yaml
+kubectl apply -f prometheus-operator-deployment.yaml
+
+
+
+

On OpenShift this can be done using oc apply:

+
+
+
+
oc apply -f prometheus-operator-service-account.yaml
+oc apply -f prometheus-operator-cluster-role.yaml
+oc apply -f prometheus-operator-cluster-role-binding.yaml
+oc apply -f prometheus-operator-deployment.yaml
+
+
+
+

The Strimzi repository contains configuration files for the Prometheus server. When you apply these configuration files, the following resources are created in your Kubernetes cluster and managed by the Prometheus Operator.

+
+
+
    +
  • +

    A ClusterRole that grants permissions to read the Prometheus health endpoints of the Kubernetes system, including cAdvisor and the kubelet for container metrics. The Prometheus server configuration uses the Kubernetes service discovery feature in order to discover the pods in the cluster from which it gets metrics. For this feature to work correctly, the service account used for running the Prometheus service pod must have access to the API server so it can retrieve the pod list.

    +
  • +
  • +

    A ServiceAccount for the Prometheus pods to run under.

    +
  • +
  • +

    A ClusterRoleBinding which binds the aforementioned ClusterRole to the ServiceAccount.

    +
  • +
  • +

    A Deployment to manage the Prometheus Operator pod.

    +
  • +
  • +

    A ServiceMonitor to manage the configuration of the Prometheus pod.

    +
  • +
  • +

    A Secret to manage additional Prometheus settings.

    +
  • +
  • +

    A PrometheusRule to manage alert rules for the Prometheus pod.

    +
  • +
  • +

    A Prometheus to manage the configuration of the Prometheus pod.

    +
  • +
+
+
+
+

D.2.2. Deploying Prometheus

+
+

The provided prometheus.yaml file, together with the Prometheus related resources, creates a ClusterRoleBinding in the myproject namespace. +It also discovers an Alertmanager instance in the same namespace. +If you are using a different namespace, download the resource file and update it using the following command:

+
+
+

On Linux, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus.yaml
+
+
+
+

On MacOS, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus.yaml
+
+
+
+

To define Prometheus jobs that will scrape the metrics data, you must apply the ServiceMonitor resource located in the provided strimzi-service-monitor.yaml file. +Download this file using the following command:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/strimzi-service-monitor.yaml
+
+
+
+

Currently, the Prometheus Operator only supports jobs that include an endpoints role for service discovery. +To use another role, edit the additionalScrapeConfigs property in the prometheus.yaml configuration file. +This takes the name of the Secret and the name of the property in a given Secret in which additional configuration is stored. +To create this Secret resource, use the following command:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/additional-properties/prometheus-additional.yaml
+oc create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml
+
+
+
+

The provided prometheus-rules.yaml file creates a PrometheusRule with sample alerting rules. Download and update the resource file as follows:

+
+
+

On Linux, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus-rules.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-rules.yaml
+
+
+
+

On MacOS, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus-rules.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-rules.yaml
+
+
+
+

To deploy these resources, run the following commands:

+
+
+

On Kubernetes this can be done using kubectl apply:

+
+
+
+
kubectl apply -f strimzi-service-monitor.yaml
+kubectl apply -f prometheus-rules.yaml
+kubectl apply -f prometheus.yaml
+
+
+
+

On OpenShift this can be done using oc apply:

+
+
+
+
oc login -u system:admin
+oc apply -f strimzi-service-monitor.yaml
+oc apply -f prometheus-rules.yaml
+oc apply -f prometheus.yaml
+
+
+
+

Prometheus also provides an alerting system through the Alertmanager component. +To enable alerting, the provided prometheus-rules.yaml file describes a PrometheusRule resource that defines sample alerting rules for Kafka and Zookeeper metrics. +When an alert condition is evaluated as true on the Prometheus server, it sends the alert data to the Alertmanager which then uses the configured notification methods to notify the user.

+
+
+

For more information about setting up alerting rules, see Alerting Rules in the Prometheus documentation.

+
+
+
+
+

D.3. Grafana

+
+

A Grafana server is necessary to get a visualisation of the Prometheus metrics. The source for the Grafana docker image used can be found in the ./metrics/examples/grafana/grafana-openshift directory.

+
+
+

D.3.1. Deploying on OpenShift

+
+

To deploy Grafana the following commands should be executed:

+
+
+
+
oc apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/grafana/grafana.yaml
+
+
+
+
+

D.3.2. Deploying on Kubernetes

+
+

To deploy Grafana the following commands should be executed:

+
+
+
+
kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/grafana/grafana.yaml
+
+
+
+
+
+

D.4. Grafana dashboard

+
+

As an example, and in order to visualize the exported metrics in Grafana, two sample dashboards are provided strimzi-kafka.json and strimzi-zookeeper.json. +These dashboards represent a good starting point for key metrics to monitor Kafka and ZooKeeper clusters, but depending on your infrastructure you may need to update or add to them. +Please note that they are not representative of all the metrics available. +No alerting rules are defined.

+
+
+

The Grafana Prometheus data source, and the above dashboards, can be set up in Grafana by following these steps.

+
+
+ + + + + +
+
Note
+
+For accessing the dashboard, you can use the port-forward command for forwarding traffic from the Grafana pod to the host. For example, you can access the Grafana UI by running oc port-forward grafana-1-fbl7s 3000:3000 (or using kubectl instead of oc) and then pointing a browser to http://localhost:3000. +
+
+
+
    +
  1. +

    Access to the Grafana UI using admin/admin credentials. On the following view you can choose to skip resetting the admin password, or set it to a password you desire.

    +
    +
    +Grafana login +
    +
    +
  2. +
  3. +

    Click on the "Add data source" button from the Grafana home in order to add Prometheus as data source.

    +
    +
    +Grafana home +
    +
    +
  4. +
  5. +

    Fill in the information about the Prometheus data source, specifying a name and "Prometheus" as type. In the URL field, the connection string to the Prometheus server (that is, http://prometheus-operated:9090) should be specified. After "Add" is clicked, Grafana will test the connection to the data source.

    +
    +
    +Add Prometheus data source +
    +
    +
  6. +
  7. +

    From the top left menu, click on "Dashboards" and then "Import" to open the "Import Dashboard" window where the provided strimzi-kafka.json and strimzi-zookeeper.json files can be imported or their content pasted.

    +
    +
    +Add Grafana dashboard +
    +
    +
  8. +
  9. +

    After importing the dashboards, the Grafana dashboard homepage will now list two dashboards for you to choose from. After your Prometheus server has been collecting metrics for a Strimzi cluster for some time you should see a populated dashboard such as the examples list below.

    +
  10. +
+
+ + +
+

D.4.3. Metrics References

+
+

To learn more about what metrics are available to monitor for Kafka, ZooKeeper, and Kubernetes in general, please review the following resources.

+
+
+
    +
  • +

    Apache Kafka Monitoring - A list of JMX metrics exposed by Apache Kafka. +It includes a description, JMX mbean name, and in some cases a suggestion on what is a normal value returned.

    +
  • +
  • +

    ZooKeeper JMX - A list of JMX metrics exposed by Apache ZooKeeper.

    +
  • +
  • +

    Prometheus - Monitoring Docker Container Metrics using cAdvisor - cAdvisor (short for container Advisor) analyzes and exposes resource usage (such as CPU, Memory, and Disk) and performance data from running containers within pods on Kubernetes. +cAdvisor is bundled along with the kubelet binary so that it is automatically available within Kubernetes clusters. +This reference describes how to monitor cAdvisor metrics in various ways using Prometheus.

    +
    +
      +
    • +

      cAdvisor Metrics - A full list of cAdvisor metrics as exposed through Prometheus.

      +
    • +
    +
    +
  • +
+
+
+
+
+

D.5. Prometheus alerting

+
+

In the monitoring space, one of the useful aspects is to be notified when some metrics conditions are verified. +They allow a human operator to get notifications about problems in the monitored system.

+
+
+

Prometheus allows to write so called "alerting rules" which describe such a conditions using PromQL expressions that are continuously evaluated. +When an expression becomes true, the described condition is met and the Prometheus server fires an alert.

+
+
+

Prometheus itself is not responsible for sending notifications to the users when an alert is fired. +A different component, the Prometheus Alertmanager, is in charge to do so, sending emails, chat messages or using different notification methods. +When an alert condition is verified, the alert is fired and the Prometheus server sends it to the Alertmanager which will send notifications.

+
+
+
+

D.6. Prometheus Alertmanager

+
+

Other than a server for scraping metrics, Prometheus provides an alerting system through the Alertmanager component. +It is possible to declare alerting rules on the Prometheus server in order to be notified about specific conditions in the metrics. +When an alert condition is evaluated as true, Prometheus sends alert data to the Alertmanager which then sends notifications out. +Notifications can be sent via methods such as email, Slack, PagerDuty and HipChat

+
+
+

The provided Prometheus alert-manager.yaml file describes the resources required for deploying and configuring the Alertmanager. +The file alertmanager.yaml YAML file describes the hook for sending notifications.

+
+
+

The following resources are defined:

+
+
+
    +
  • +

    An Alertmanager to manage the Alertmanager pod.

    +
  • +
  • +

    A Secret to manage the configuration of the Alertmanager.

    +
  • +
  • +

    A Service to provide an easy to reference hostname for other services to connect to Alertmanager (such as Prometheus).

    +
  • +
+
+
+

The provided sample configuration configures the Alertmanager to send notification to a Slack channel. +Before deploying the Alertmanager it is needed to update the following parameters:

+
+
+
    +
  • +

    The slack_api_url field with the actual value of the Slack API URL related to the application for the Slack workspace.

    +
  • +
  • +

    The channel field with the actual Slack channel on which sending the notifications.

    +
  • +
+
+
+

D.6.1. Deploying Alertmanager

+
+

Download alert-manager.yaml by a command.

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/alert-manager.yaml
+
+
+
+

To configure Alert Manager hook for sending alerts we need to create a Secret resource with configuration. +Download the alertmanager.yaml file and create a Secret from it.

+
+
+

On Kubernetes this can be done using these commands:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/alertmanager-config/alertmanager.yaml
+kubectl create secret generic alertmanager-alertmanager --from-file=alertmanager.yaml
+
+
+
+

On OpenShift this can be done using these commands:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/alertmanager-config/alertmanager.yaml
+oc create secret generic alertmanager-alertmanager --from-file=alertmanager.yaml
+
+
+
+

To deploy the Alertmanager the following commands should be executed: +On Kubernetes this can be done using kubectl apply:

+
+
+
+
kubectl apply -f alert-manager.yaml
+
+
+
+

On OpenShift this can be done using oc apply:

+
+
+
+
oc apply -f alert-manager.yaml
+
+
+
+
+

D.6.2. Alerts examples

+
+

The provided prometheus-rules.yaml file provides the following sample alerting rules on Kafka and Zookeeper metrics.

+
+
+

Kafka alerts are:

+
+
+
    +
  • +

    UnderReplicatedPartitions: the under replicated partitions metric gives the number of partitions for which the current broker is the leader replica but the follower replicas are not caught up. +This metric provides insights about offline brokers which hosts the follower replicas. +This alert is raised when this value is greater than zero, providing the information of the under replicated partitions for each broker.

    +
  • +
  • +

    AbnormalControllerState: the active controller metric indicate if the current broker is the controller for the cluster. +It can just be 0 or 1. +During the life of a cluster, only one broker should be the controller and the cluster needs to have always an active controller. +Having two or more brokers saying that they are controllers indicates a problem. +This alert is raised when the sum of all the values for this metric on all broker is not equals to 1. +It means that there is no active controller (the sum is 0) or more than one controller (the sum is greater than 1).

    +
  • +
  • +

    UnderMinIsrPartitionCount: the Kafka broker min.insync.replicas allows to specify the minimum number of replicas that have to acknowledge a write operation for successful in order to be in-sync. +The under min ISR partition count metric defines the number of partitions that this broker leads for which in-sync replicas count is less than the min in-sync. +This alert is raised when this value is greater than zero, providing the information of the under min ISR partition count for each broker.

    +
  • +
  • +

    OfflineLogDirectoryCount: the offline log directory count metric indicate the number of log directories which are offline (due to an hardware failure for example) so that the broker cannot store incoming messages anymore. +This alert is raised when this value is greater than zero, providing the information of the number of offline log directories for each broker.

    +
  • +
  • +

    KafkaRunningOutOfSpace: the running out of space metric indicates the remaining amount of disk space that can be used for writing Kafka’s data. +This alert is raised when this value is lower than 5GiB. It provides information on the disk that is running out of space for each persistent volume claim. +NOTE: The availability of this metric and alert is dependent on your version of OpenShift or Kubernetes.

    +
  • +
+
+
+

Zookeeper alerts are:

+
+
+
    +
  • +

    AvgRequestLatency: the average request latency metric indicates the amount of time it takes for the server to respond to a client request. +This alert is raised when this value is greater than 10 (ticks), providing the actual value of the average request latency for each server.

    +
  • +
  • +

    OutstandingRequests: the outstanding requests metric indicates the number of queued requests in the server. +This value goes up when the server receives more requests than it can process. +This alert is raised when this value is greater than 10 (ticks), providing the actual number of outstanding requests for each server.

    +
  • +
  • +

    ZookeeperRunningOutOfSpace: the running out of space metric indicates the remaining amount of disk space that can be used for writing data to Zookeeper. +This alert is raised when this value is lower than 5GiB. It provides information on the disk that is running out of space for each persistent volume claim. +Note: The availability of this metric and alert is dependent on your version of OpenShift or Kubernetes.

    +
  • +
+
+
+
+
+
+
+

Appendix E: Custom Resource API Reference

+
+
+

E.1. Kafka schema reference

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka and Zookeeper clusters, and Topic Operator.

KafkaSpec

status

The status of the Kafka and Zookeeper clusters, and Topic Operator.

KafkaStatus

+
+
+

E.2. KafkaSpec schema reference

+
+

Used in: Kafka

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

kafka

Configuration of the Kafka cluster.

KafkaClusterSpec

zookeeper

Configuration of the Zookeeper cluster.

ZookeeperClusterSpec

topicOperator

The property topicOperator has been deprecated. This feature should now be configured at path spec.entityOerator.topicOperator. Configuration of the Topic Operator.

TopicOperatorSpec

entityOperator

Configuration of the Entity Operator.

EntityOperatorSpec

clusterCa

Configuration of the cluster certificate authority.

CertificateAuthority

clientsCa

Configuration of the clients certificate authority.

CertificateAuthority

maintenanceTimeWindows

A list of time windows for the maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression.

string array

+
+
+

E.3. KafkaClusterSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the cluster.

integer

image

The docker image for the pods. The default value depends on the configured Kafka.spec.kafka.version.

string

storage

Storage configuration (disk). Cannot be updated. The type depends on the value of the storage.type property within the given object, which must be one of [ephemeral, persistent-claim, jbod].

EphemeralStorage, PersistentClaimStorage, JbodStorage

listeners

Configures listeners of Kafka brokers.

KafkaListeners

authorization

Authorization configuration for Kafka brokers. The type depends on the value of the authorization.type property within the given object, which must be one of [simple].

KafkaAuthorizationSimple

config

The kafka broker config. Properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., principal.builder.class, log.dir, zookeeper.connect, zookeeper.set.acl, authorizer., super.user.

map

rack

Configuration of the broker.rack broker config.

Rack

brokerRackInitImage

The image of the init container used for initializing the broker.rack.

string

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.kafka.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.kafka.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

resources

Resource constraints (limits and requests).

ResourceRequirements

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

logging

Logging configuration for Kafka. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

tlsSidecar

TLS sidecar configuration.

TlsSidecar

template

Template for Kafka cluster resources. The template allows users to specify how are the StatefulSet, Pods and Services generated.

KafkaClusterTemplate

version

The kafka broker version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.4. EphemeralStorage schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type EphemeralStorage from PersistentClaimStorage. +It must have the value ephemeral for the type EphemeralStorage.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

id

Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'.

integer

type

Must be ephemeral.

string

+
+
+

E.5. PersistentClaimStorage schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type PersistentClaimStorage from EphemeralStorage. +It must have the value persistent-claim for the type PersistentClaimStorage.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be persistent-claim.

string

size

When type=persistent-claim, defines the size of the persistent volume claim (i.e 1Gi). Mandatory when type=persistent-claim.

string

selector

Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume.

map

deleteClaim

Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed.

boolean

class

The storage class to use for dynamic volume allocation.

string

id

Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'.

integer

overrides

Overrides for individual brokers. The overrides field allows to specify a different configuration for different brokers.

PersistentClaimStorageOverride array

+
+
+

E.6. PersistentClaimStorageOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

class

The storage class to use for dynamic volume allocation for this broker.

string

broker

Id of the kafka broker (broker identifier).

integer

+
+
+

E.7. JbodStorage schema reference

+
+

Used in: KafkaClusterSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type JbodStorage from EphemeralStorage, PersistentClaimStorage. +It must have the value jbod for the type JbodStorage.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be jbod.

string

volumes

List of volumes as Storage objects representing the JBOD disks array.

EphemeralStorage, PersistentClaimStorage array

+
+
+

E.8. KafkaListeners schema reference

+
+

Used in: KafkaClusterSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

plain

Configures plain listener on port 9092.

KafkaListenerPlain

tls

Configures TLS listener on port 9093.

KafkaListenerTls

external

Configures external listener on port 9094. The type depends on the value of the external.type property within the given object, which must be one of [route, loadbalancer, nodeport, ingress].

KafkaListenerExternalRoute, KafkaListenerExternalLoadBalancer, KafkaListenerExternalNodePort, KafkaListenerExternalIngress

+
+
+

E.9. KafkaListenerPlain schema reference

+
+

Used in: KafkaListeners

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

authentication

Authentication configuration for this listener. Since this listener does not use TLS transport you cannot configure an authentication with type: tls. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.10. KafkaListenerAuthenticationTls schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerAuthenticationTls from KafkaListenerAuthenticationScramSha512. +It must have the value tls for the type KafkaListenerAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be tls.

string

+
+
+

E.11. KafkaListenerAuthenticationScramSha512 schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerAuthenticationScramSha512 from KafkaListenerAuthenticationTls. +It must have the value scram-sha-512 for the type KafkaListenerAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be scram-sha-512.

string

+
+
+

E.12. KafkaListenerTls schema reference

+
+

Used in: KafkaListeners

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

authentication

Authentication configuration for this listener. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.13. KafkaListenerExternalRoute schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalRoute from KafkaListenerExternalLoadBalancer, KafkaListenerExternalNodePort, KafkaListenerExternalIngress. +It must have the value route for the type KafkaListenerExternalRoute.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be route.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

overrides

Overrides for external bootstrap and broker services and externally advertised addresses.

RouteListenerOverride

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.14. RouteListenerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap service configuration.

RouteListenerBootstrapOverride

brokers

External broker services configuration.

RouteListenerBrokerOverride array

+
+
+

E.15. RouteListenerBootstrapOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

host

Host for the bootstrap route. This field will be used in the spec.host field of the OpenShift Route.

string

+
+
+

E.16. RouteListenerBrokerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

host

Host for the broker route. This field will be used in the spec.host field of the OpenShift Route.

string

+
+
+

E.17. KafkaListenerExternalLoadBalancer schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalLoadBalancer from KafkaListenerExternalRoute, KafkaListenerExternalNodePort, KafkaListenerExternalIngress. +It must have the value loadbalancer for the type KafkaListenerExternalLoadBalancer.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be loadbalancer.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

overrides

Overrides for external bootstrap and broker services and externally advertised addresses.

LoadBalancerListenerOverride

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

tls

Enables TLS encryption on the listener. By default set to true for enabled TLS encryption.

boolean

+
+
+

E.18. LoadBalancerListenerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap service configuration.

LoadBalancerListenerBootstrapOverride

brokers

External broker services configuration.

LoadBalancerListenerBrokerOverride array

+
+
+

E.19. LoadBalancerListenerBootstrapOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

dnsAnnotations

Annotations which will be added to the Service resource. You can use this field to instrument DNS providers such as External DNS.

map

+
+
+

E.20. LoadBalancerListenerBrokerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

dnsAnnotations

Annotations which will be added to the Service resources for individual brokers. You can use this field to instrument DNS providers such as External DNS.

map

+
+
+

E.21. KafkaListenerExternalNodePort schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalNodePort from KafkaListenerExternalRoute, KafkaListenerExternalLoadBalancer, KafkaListenerExternalIngress. +It must have the value nodeport for the type KafkaListenerExternalNodePort.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be nodeport.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

overrides

Overrides for external bootstrap and broker services and externally advertised addresses.

NodePortListenerOverride

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

tls

Enables TLS encryption on the listener. By default set to true for enabled TLS encryption.

boolean

+
+
+

E.22. NodePortListenerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap service configuration.

NodePortListenerBootstrapOverride

brokers

External broker services configuration.

NodePortListenerBrokerOverride array

+
+
+

E.23. NodePortListenerBootstrapOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

nodePort

Node port for the bootstrap service.

integer

+
+
+

E.24. NodePortListenerBrokerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

nodePort

Node port for the broker service.

integer

+
+
+

E.25. KafkaListenerExternalIngress schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalIngress from KafkaListenerExternalRoute, KafkaListenerExternalLoadBalancer, KafkaListenerExternalNodePort. +It must have the value ingress for the type KafkaListenerExternalIngress.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be ingress.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

configuration

Overrides for external bootstrap and broker services and externally advertised addresses.

IngressListenerConfiguration

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.26. IngressListenerConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap ingress configuration.

IngressListenerBootstrapConfiguration

brokers

External broker ingress configuration.

IngressListenerBrokerConfiguration array

+
+
+

E.27. IngressListenerBootstrapConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

dnsAnnotations

Annotations which will be added to the Ingress resource. You can use this field to instrument DNS providers such as External DNS.

map

host

Host for the bootstrap route. This field will be used in the Ingress resource.

string

+
+
+

E.28. IngressListenerBrokerConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

host

Host for the broker ingress. This field will be used in the Ingress resource.

string

dnsAnnotations

Annotations which will be added to the Ingress resources for individual brokers. You can use this field to instrument DNS providers such as External DNS.

map

+
+
+

E.29. KafkaAuthorizationSimple schema reference

+
+

Used in: KafkaClusterSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaAuthorizationSimple from other subtypes which may be added in the future. +It must have the value simple for the type KafkaAuthorizationSimple.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be simple.

string

superUsers

List of super users. Should contain list of user principals which should get unlimited access rights.

string array

+
+
+

E.30. Rack schema reference

+
+

Used in: KafkaClusterSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

topologyKey

A key that matches labels assigned to the OpenShift or Kubernetes cluster nodes. The value of the label is used to set the broker’s broker.rack config.

string

+
+
+

E.31. Probe schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

failureThreshold

Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.

integer

initialDelaySeconds

The initial delay before first the health is first checked.

integer

periodSeconds

How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.

integer

successThreshold

Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.

integer

timeoutSeconds

The timeout for each attempted health check.

integer

+
+
+

E.32. JvmOptions schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

-XX

A map of -XX options to the JVM.

map

-Xms

-Xms option to to the JVM.

string

-Xmx

-Xmx option to to the JVM.

string

gcLoggingEnabled

Specifies whether the Garbage Collection logging is enabled. The default is true.

boolean

+
+ +
+

E.34. InlineLogging schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type InlineLogging from ExternalLogging. +It must have the value inline for the type InlineLogging.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be inline.

string

loggers

A Map from logger name to logger level.

map

+
+
+

E.35. ExternalLogging schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type ExternalLogging from InlineLogging. +It must have the value external for the type ExternalLogging.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be external.

string

name

The name of the ConfigMap from which to get the logging configuration.

string

+
+
+

E.36. TlsSidecar schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

image

The docker image for the container.

string

livenessProbe

Pod liveness checking.

Probe

logLevel

The log level for the TLS sidecar. Default value is notice.

string (one of [emerg, debug, crit, err, alert, warning, notice, info])

readinessProbe

Pod readiness checking.

Probe

resources

Resource constraints (limits and requests).

ResourceRequirements

+
+
+

E.37. KafkaClusterTemplate schema reference

+
+

Used in: KafkaClusterSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

statefulset

Template for Kafka StatefulSet.

ResourceTemplate

pod

Template for Kafka Pods.

PodTemplate

bootstrapService

Template for Kafka bootstrap Service.

ResourceTemplate

brokersService

Template for Kafka broker Service.

ResourceTemplate

externalBootstrapIngress

Template for Kafka external bootstrap Ingress.

ResourceTemplate

externalBootstrapRoute

Template for Kafka external bootstrap Route.

ResourceTemplate

externalBootstrapService

Template for Kafka external bootstrap Service.

ResourceTemplate

perPodIngress

Template for Kafka per-pod Ingress used for access from outside of Kubernetes.

ResourceTemplate

perPodRoute

Template for Kafka per-pod Routes used for access from outside of OpenShift.

ResourceTemplate

perPodService

Template for Kafka per-pod Services used for access from outside of Kubernetes.

ResourceTemplate

podDisruptionBudget

Template for Kafka PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.38. ResourceTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

metadata

Metadata which should be applied to the resource.

MetadataTemplate

+
+
+

E.39. MetadataTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

labels

Labels which should be added to the resource template. Can be applied to different resources such as StatefulSets, Deployments, Pods, and Services.

map

annotations

Annotations which should be added to the resource template. Can be applied to different resources such as StatefulSets, Deployments, Pods, and Services.

map

+
+
+

E.40. PodTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

metadata

Metadata which should be applied to the resource.

MetadataTemplate

imagePullSecrets

List of references to secrets in the same namespace to use for pulling any of the images used by this Pod.See external documentation of core/v1 localobjectreference.

LocalObjectReference array

securityContext

Configures pod-level security attributes and common container settings.See external documentation of core/v1 podsecuritycontext.

PodSecurityContext

terminationGracePeriodSeconds

The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process.Value must be non-negative integer. The value zero indicates delete immediately. Defaults to 30 seconds.

integer

affinity

The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

+
+
+

E.41. PodDisruptionBudgetTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

metadata

Metadata which should be applied to the PodDistruptionBugetTemplate resource.

MetadataTemplate

maxUnavailable

Maximum number of unavailable pods to allow voluntary Pod eviction. A Pod eviction will only be allowed when "maxUnavailable" or fewer pods are unavailable after the eviction. Setting this value to 0 will prevent all voluntary evictions and the pods will need to be evicted manually. Defaults to 1.

integer

+
+
+

E.42. ZookeeperClusterSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the cluster.

integer

image

The docker image for the pods.

string

storage

Storage configuration (disk). Cannot be updated. The type depends on the value of the storage.type property within the given object, which must be one of [ephemeral, persistent-claim].

EphemeralStorage, PersistentClaimStorage

config

The zookeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme.

map

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.zookeeper.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.zookeeper.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

resources

Resource constraints (limits and requests).

ResourceRequirements

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

logging

Logging configuration for Zookeeper. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

tlsSidecar

TLS sidecar configuration.

TlsSidecar

template

Template for Zookeeper cluster resources. The template allows users to specify how are the StatefulSet, Pods and Services generated.

ZookeeperClusterTemplate

+
+
+

E.43. ZookeeperClusterTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

statefulset

Template for Zookeeper StatefulSet.

ResourceTemplate

pod

Template for Zookeeper Pods.

PodTemplate

clientService

Template for Zookeeper client Service.

ResourceTemplate

nodesService

Template for Zookeeper nodes Service.

ResourceTemplate

podDisruptionBudget

Template for Zookeeper PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.44. TopicOperatorSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

watchedNamespace

The namespace the Topic Operator should watch.

string

image

The image to use for the Topic Operator.

string

reconciliationIntervalSeconds

Interval between periodic reconciliations.

integer

zookeeperSessionTimeoutSeconds

Timeout for the Zookeeper session.

integer

affinity

Pod affinity rules.See external documentation of core/v1 affinity.

Affinity

resources

Resource constraints (limits and requests).

ResourceRequirements

topicMetadataMaxAttempts

The number of attempts at getting topic metadata.

integer

tlsSidecar

TLS sidecar configuration.

TlsSidecar

logging

Logging configuration. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

jvmOptions

JVM Options for pods.

EntityOperatorJvmOptions

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

+
+
+

E.45. EntityOperatorJvmOptions schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

gcLoggingEnabled

Specifies whether the Garbage Collection logging is enabled. The default is true.

boolean

+
+
+

E.46. EntityOperatorSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

topicOperator

Configuration of the Topic Operator.

EntityTopicOperatorSpec

userOperator

Configuration of the User Operator.

EntityUserOperatorSpec

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

tlsSidecar

TLS sidecar configuration.

TlsSidecar

template

Template for Entity Operator resources. The template allows users to specify how is the Deployment and Pods generated.

EntityOperatorTemplate

+
+
+

E.47. EntityTopicOperatorSpec schema reference

+
+

Used in: EntityOperatorSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

watchedNamespace

The namespace the Topic Operator should watch.

string

image

The image to use for the Topic Operator.

string

reconciliationIntervalSeconds

Interval between periodic reconciliations.

integer

zookeeperSessionTimeoutSeconds

Timeout for the Zookeeper session.

integer

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

resources

Resource constraints (limits and requests).

ResourceRequirements

topicMetadataMaxAttempts

The number of attempts at getting topic metadata.

integer

logging

Logging configuration. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

jvmOptions

JVM Options for pods.

EntityOperatorJvmOptions

+
+
+

E.48. EntityUserOperatorSpec schema reference

+
+

Used in: EntityOperatorSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

watchedNamespace

The namespace the User Operator should watch.

string

image

The image to use for the User Operator.

string

reconciliationIntervalSeconds

Interval between periodic reconciliations.

integer

zookeeperSessionTimeoutSeconds

Timeout for the Zookeeper session.

integer

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

resources

Resource constraints (limits and requests).

ResourceRequirements

logging

Logging configuration. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

jvmOptions

JVM Options for pods.

EntityOperatorJvmOptions

+
+
+

E.49. EntityOperatorTemplate schema reference

+
+

Used in: EntityOperatorSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Entity Operator Deployment.

ResourceTemplate

pod

Template for Entity Operator Pods.

PodTemplate

+
+
+

E.50. CertificateAuthority schema reference

+
+

Used in: KafkaSpec

+
+
+

Configuration of how TLS certificates are used within the cluster. This applies to certificates used for both internal communication within the cluster and to certificates used for client access via Kafka.spec.kafka.listeners.tls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

generateCertificateAuthority

If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true.

boolean

validityDays

The number of days generated certificates should be valid for. The default is 365.

integer

renewalDays

The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When generateCertificateAuthority is true, this will cause the generation of a new certificate. When generateCertificateAuthority is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30.

integer

certificateExpirationPolicy

How should CA certificate expiration be handled when generateCertificateAuthority=true. The default is for a new CA certificate to be generated reusing the existing private key.

string (one of [replace-key, renew-certificate])

+
+
+

E.51. KafkaStatus schema reference

+
+

Used in: Kafka

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

conditions

List of status conditions.

Condition array

listeners

Addresses of the internal and external listeners.

ListenerStatus array

+
+
+

E.52. Condition schema reference

+
+

Used in: KafkaStatus

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

The unique identifier of a condition, used to distinguish between other conditions in the resource.

string

status

The status of the condition, one of True, False, Unknown.

string

lastTransitionTime

Last time the condition of a type changes from one status to another.The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone.

string

reason

One-word CamelCase reason for the condition’s last transition.

string

+
+
+

E.53. ListenerStatus schema reference

+
+

Used in: KafkaStatus

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

The type of the listener. Can be one of the following three types: plain, tls, and external.

string

addresses

A list of the addresses for this listener.

ListenerAddress array

+
+
+

E.54. ListenerAddress schema reference

+
+

Used in: ListenerStatus

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

host

The DNS name or IP address of Kafka bootstrap service.

string

port

The port of the Kafka bootstrap service.

integer

+
+
+

E.55. KafkaConnect schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka Connect deployment.

KafkaConnectSpec

+
+
+

E.56. KafkaConnectSpec schema reference

+
+

Used in: KafkaConnect

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Kafka Connect group.

integer

image

The docker image for the pods.

string

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

logging

Logging configuration for Kafka Connect. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

template

Template for Kafka Connect and Kafka Connect S2I resources. The template allows users to specify how is the Deployment, Pods and Service generated.

KafkaConnectTemplate

authentication

Authentication configuration for Kafka Connect. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaConnectAuthenticationTls, KafkaConnectAuthenticationScramSha512, KafkaConnectAuthenticationPlain

bootstrapServers

Bootstrap servers to connect to. This should be given as a comma separated list of <hostname>:‍<port> pairs.

string

config

The Kafka Connect configuration. Properties with the following prefixes cannot be set: ssl., sasl., security., listeners, plugin.path, rest., bootstrap.servers.

map

externalConfiguration

Pass data from Secrets or ConfigMaps to the Kafka Connect pods and use them to configure connectors.

ExternalConfiguration

resources

Resource constraints (limits and requests).

ResourceRequirements

tls

TLS configuration.

KafkaConnectTls

version

The Kafka Connect version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.57. KafkaConnectTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Kafka Connect Deployment.

ResourceTemplate

pod

Template for Kafka Connect Pods.

PodTemplate

apiService

Template for Kafka Connect API Service.

ResourceTemplate

podDisruptionBudget

Template for Kafka Connect PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.58. KafkaConnectAuthenticationTls schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaConnectAuthenticationTls from KafkaConnectAuthenticationScramSha512, KafkaConnectAuthenticationPlain. +It must have the value tls for the type KafkaConnectAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificateAndKey

Certificate and private key pair for TLS authentication.

CertAndKeySecretSource

type

Must be tls.

string

+
+
+

E.59. CertAndKeySecretSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificate

The name of the file certificate in the Secret.

string

key

The name of the private key in the Secret.

string

secretName

The name of the Secret containing the certificate.

string

+
+
+

E.60. KafkaConnectAuthenticationScramSha512 schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaConnectAuthenticationScramSha512 from KafkaConnectAuthenticationTls, KafkaConnectAuthenticationPlain. +It must have the value scram-sha-512 for the type KafkaConnectAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Password used for the authentication.

PasswordSecretSource

type

Must be scram-sha-512.

string

username

Username used for the authentication.

string

+
+
+

E.61. PasswordSecretSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

password

The name of the key in the Secret under which the password is stored.

string

secretName

The name of the Secret containing the password.

string

+
+
+

E.62. KafkaConnectAuthenticationPlain schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaConnectAuthenticationPlain from KafkaConnectAuthenticationTls, KafkaConnectAuthenticationScramSha512. +It must have the value plain for the type KafkaConnectAuthenticationPlain.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Password used for the authentication.

PasswordSecretSource

type

Must be plain.

string

username

Username used for the authentication.

string

+
+
+

E.63. ExternalConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

env

Allows to pass data from Secret or ConfigMap to the Kafka Connect pods as environment variables.

ExternalConfigurationEnv array

volumes

Allows to pass data from Secret or ConfigMap to the Kafka Connect pods as volumes.

ExternalConfigurationVolumeSource array

+
+
+

E.64. ExternalConfigurationEnv schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

name

Name of the environment variable which will be passed to the Kafka Connect pods. The name of the environment variable cannot start with KAFKA_ or STRIMZI_.

string

valueFrom

Value of the environment variable which will be passed to the Kafka Connect pods. It can be passed either as a reference to Secret or ConfigMap field. The field has to specify exactly one Secret or ConfigMap.

ExternalConfigurationEnvVarSource

+
+
+

E.65. ExternalConfigurationEnvVarSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

configMapKeyRef

Refernce to a key in a ConfigMap.See external documentation of core/v1 configmapkeyselector.

ConfigMapKeySelector

secretKeyRef

Reference to a key in a Secret.See external documentation of core/v1 secretkeyselector.

SecretKeySelector

+
+
+

E.66. ExternalConfigurationVolumeSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

configMap

Reference to a key in a ConfigMap. Exactly one Secret or ConfigMap has to be specified.See external documentation of core/v1 configmapvolumesource.

ConfigMapVolumeSource

name

Name of the volume which will be added to the Kafka Connect pods.

string

secret

Reference to a key in a Secret. Exactly one Secret or ConfigMap has to be specified.See external documentation of core/v1 secretvolumesource.

SecretVolumeSource

+
+
+

E.67. KafkaConnectTls schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

trustedCertificates

Trusted certificates for TLS connection.

CertSecretSource array

+
+
+

E.68. CertSecretSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificate

The name of the file certificate in the Secret.

string

secretName

The name of the Secret containing the certificate.

string

+
+
+

E.69. KafkaConnectS2I schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka Connect deployment.

KafkaConnectS2ISpec

+
+
+

E.70. KafkaConnectS2ISpec schema reference

+
+

Used in: KafkaConnectS2I

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Kafka Connect group.

integer

image

The docker image for the pods.

string

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

logging

Logging configuration for Kafka Connect. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

template

Template for Kafka Connect and Kafka Connect S2I resources. The template allows users to specify how is the Deployment, Pods and Service generated.

KafkaConnectTemplate

authentication

Authentication configuration for Kafka Connect. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaConnectAuthenticationTls, KafkaConnectAuthenticationScramSha512, KafkaConnectAuthenticationPlain

bootstrapServers

Bootstrap servers to connect to. This should be given as a comma separated list of <hostname>:‍<port> pairs.

string

config

The Kafka Connect configuration. Properties with the following prefixes cannot be set: ssl., sasl., security., listeners, plugin.path, rest., bootstrap.servers.

map

externalConfiguration

Pass data from Secrets or ConfigMaps to the Kafka Connect pods and use them to configure connectors.

ExternalConfiguration

insecureSourceRepository

When true this configures the source repository with the 'Local' reference policy and an import policy that accepts insecure source tags.

boolean

resources

Resource constraints (limits and requests).

ResourceRequirements

tls

TLS configuration.

KafkaConnectTls

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

version

The Kafka Connect version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.71. KafkaTopic schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the topic.

KafkaTopicSpec

+
+
+

E.72. KafkaTopicSpec schema reference

+
+

Used in: KafkaTopic

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

partitions

The number of partitions the topic should have. This cannot be decreased after topic creation. It can be increased after topic creation, but it is important to understand the consequences that has, especially for topics with semantic partitioning.

integer

replicas

The number of replicas the topic should have.

integer

config

The topic configuration.

map

topicName

The name of the topic. When absent this will default to the metadata.name of the topic. It is recommended to not set this unless the topic name is not a valid Kubernetes resource name.

string

+
+
+

E.73. KafkaUser schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the user.

KafkaUserSpec

+
+
+

E.74. KafkaUserSpec schema reference

+
+

Used in: KafkaUser

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

authentication

Authentication mechanism enabled for this Kafka user. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaUserTlsClientAuthentication, KafkaUserScramSha512ClientAuthentication

authorization

Authorization rules for this Kafka user. The type depends on the value of the authorization.type property within the given object, which must be one of [simple].

KafkaUserAuthorizationSimple

+
+
+

E.75. KafkaUserTlsClientAuthentication schema reference

+
+

Used in: KafkaUserSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaUserTlsClientAuthentication from KafkaUserScramSha512ClientAuthentication. +It must have the value tls for the type KafkaUserTlsClientAuthentication.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be tls.

string

+
+
+

E.76. KafkaUserScramSha512ClientAuthentication schema reference

+
+

Used in: KafkaUserSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaUserScramSha512ClientAuthentication from KafkaUserTlsClientAuthentication. +It must have the value scram-sha-512 for the type KafkaUserScramSha512ClientAuthentication.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be scram-sha-512.

string

+
+
+

E.77. KafkaUserAuthorizationSimple schema reference

+
+

Used in: KafkaUserSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaUserAuthorizationSimple from other subtypes which may be added in the future. +It must have the value simple for the type KafkaUserAuthorizationSimple.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be simple.

string

acls

List of ACL rules which should be applied to this user.

AclRule array

+
+
+

E.78. AclRule schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

host

The host from which the action described in the ACL rule is allowed or denied.

string

operation

Operation which will be allowed or denied. Supported operations are: Read, Write, Create, Delete, Alter, Describe, ClusterAction, AlterConfigs, DescribeConfigs, IdempotentWrite and All.

string (one of [Read, Write, Delete, Alter, Describe, All, IdempotentWrite, ClusterAction, Create, AlterConfigs, DescribeConfigs])

resource

Indicates the resource for which given ACL rule applies. The type depends on the value of the resource.type property within the given object, which must be one of [topic, group, cluster, transactionalId].

AclRuleTopicResource, AclRuleGroupResource, AclRuleClusterResource, AclRuleTransactionalIdResource

type

The type of the rule. Currently the only supported type is allow. ACL rules with type allow are used to allow user to execute the specified operations. Default value is allow.

string (one of [allow, deny])

+
+
+

E.79. AclRuleTopicResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleTopicResource from AclRuleGroupResource, AclRuleClusterResource, AclRuleTransactionalIdResource. +It must have the value topic for the type AclRuleTopicResource.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be topic.

string

name

Name of resource for which given ACL rule applies. Can be combined with patternType field to use prefix pattern.

string

patternType

Describes the pattern used in the resource field. The supported types are literal and prefix. With literal pattern type, the resource field will be used as a definition of a full topic name. With prefix pattern type, the resource name will be used only as a prefix. Default value is literal.

string (one of [prefix, literal])

+
+
+

E.80. AclRuleGroupResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleGroupResource from AclRuleTopicResource, AclRuleClusterResource, AclRuleTransactionalIdResource. +It must have the value group for the type AclRuleGroupResource.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be group.

string

name

Name of resource for which given ACL rule applies. Can be combined with patternType field to use prefix pattern.

string

patternType

Describes the pattern used in the resource field. The supported types are literal and prefix. With literal pattern type, the resource field will be used as a definition of a full topic name. With prefix pattern type, the resource name will be used only as a prefix. Default value is literal.

string (one of [prefix, literal])

+
+
+

E.81. AclRuleClusterResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleClusterResource from AclRuleTopicResource, AclRuleGroupResource, AclRuleTransactionalIdResource. +It must have the value cluster for the type AclRuleClusterResource.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be cluster.

string

+
+
+

E.82. AclRuleTransactionalIdResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleTransactionalIdResource from AclRuleTopicResource, AclRuleGroupResource, AclRuleClusterResource. +It must have the value transactionalId for the type AclRuleTransactionalIdResource.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be transactionalId.

string

name

Name of resource for which given ACL rule applies. Can be combined with patternType field to use prefix pattern.

string

patternType

Describes the pattern used in the resource field. The supported types are literal and prefix. With literal pattern type, the resource field will be used as a definition of a full name. With prefix pattern type, the resource name will be used only as a prefix. Default value is literal.

string (one of [prefix, literal])

+
+
+

E.83. KafkaMirrorMaker schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the mirror maker.

KafkaMirrorMakerSpec

+
+
+

E.84. KafkaMirrorMakerSpec schema reference

+
+

Used in: KafkaMirrorMaker

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Deployment.

integer

image

The docker image for the pods.

string

whitelist

List of topics which are included for mirroring. This option allows any regular expression using Java-style regular expressions. Mirroring two topics named A and B can be achieved by using the whitelist 'A|B'. Or, as a special case, you can mirror all topics using the whitelist '*'. Multiple regular expressions separated by commas can be specified as well.

string

consumer

Configuration of source cluster.

KafkaMirrorMakerConsumerSpec

producer

Configuration of target cluster.

KafkaMirrorMakerProducerSpec

resources

Resource constraints (limits and requests).

ResourceRequirements

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

jvmOptions

JVM Options for pods.

JvmOptions

logging

Logging configuration for Mirror Maker. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

The Prometheus JMX Exporter configuration. See JMX Exporter documentation for details of the structure of this configuration.

map

template

Template for Kafka Mirror Maker resources. The template allows users to specify how is the Deployment and Pods generated.

KafkaMirrorMakerTemplate

version

The Kafka Mirror Maker version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.85. KafkaMirrorMakerConsumerSpec schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

numStreams

Specifies the number of consumer stream threads to create.

integer

groupId

A unique string that identifies the consumer group this consumer belongs to.

string

bootstrapServers

A list of host:port pairs to use for establishing the initial connection to the Kafka cluster.

string

authentication

Authentication configuration for connecting to the cluster. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationScramSha512, KafkaMirrorMakerAuthenticationPlain

config

The mirror maker consumer config. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, group.id, sasl., security.

map

tls

TLS configuration for connecting to the cluster.

KafkaMirrorMakerTls

+
+
+

E.86. KafkaMirrorMakerAuthenticationTls schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaMirrorMakerAuthenticationTls from KafkaMirrorMakerAuthenticationScramSha512, KafkaMirrorMakerAuthenticationPlain. +It must have the value tls for the type KafkaMirrorMakerAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificateAndKey

Reference to the Secret which holds the certificate and private key pair.

CertAndKeySecretSource

type

Must be tls.

string

+
+
+

E.87. KafkaMirrorMakerAuthenticationScramSha512 schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaMirrorMakerAuthenticationScramSha512 from KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationPlain. +It must have the value scram-sha-512 for the type KafkaMirrorMakerAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be scram-sha-512.

string

username

Username used for the authentication.

string

+
+
+

E.88. KafkaMirrorMakerAuthenticationPlain schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaMirrorMakerAuthenticationPlain from KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationScramSha512. +It must have the value plain for the type KafkaMirrorMakerAuthenticationPlain.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be plain.

string

username

Username used for the authentication.

string

+
+
+

E.89. KafkaMirrorMakerTls schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

trustedCertificates

Trusted certificates for TLS connection.

CertSecretSource array

+
+
+

E.90. KafkaMirrorMakerProducerSpec schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrapServers

A list of host:port pairs to use for establishing the initial connection to the Kafka cluster.

string

authentication

Authentication configuration for connecting to the cluster. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationScramSha512, KafkaMirrorMakerAuthenticationPlain

config

The mirror maker producer config. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, sasl., security.

map

tls

TLS configuration for connecting to the cluster.

KafkaMirrorMakerTls

+
+
+

E.91. KafkaMirrorMakerTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Kafka Mirror Maker Deployment.

ResourceTemplate

pod

Template for Kafka Mirror Maker Pods.

PodTemplate

podDisruptionBudget

Template for Kafka Mirror Maker PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.92. KafkaBridge schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka Bridge.

KafkaBridgeSpec

+
+
+

E.93. KafkaBridgeSpec schema reference

+
+

Used in: KafkaBridge

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Deployment.

integer

image

The docker image for the pods.

string

bootstrapServers

A list of host:port pairs to use for establishing the initial connection to the Kafka cluster.

string

tls

TLS configuration for connecting to the cluster.

KafkaBridgeTls

authentication

Authentication configuration for connecting to the cluster. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaBridgeAuthenticationTls, KafkaBridgeAuthenticationScramSha512, KafkaBridgeAuthenticationPlain

http

The HTTP related configuration.

KafkaBridgeHttpConfig

consumer

Kafka consumer related configuration.

KafkaBridgeConsumerSpec

producer

Kafka producer related configuration.

KafkaBridgeProducerSpec

resources

Resource constraints (limits and requests).

ResourceRequirements

jvmOptions

Currently not supported JVM Options for pods.

JvmOptions

logging

Logging configuration for Kafka Bridge. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

Currently not supported The Prometheus JMX Exporter configuration. See JMX Exporter documentation for details of the structure of this configuration.

map

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

template

Template for Kafka Bridge resources. The template allows users to specify how is the Deployment and Pods generated.

KafkaBridgeTemplate

+
+
+

E.94. KafkaBridgeTls schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

trustedCertificates

Trusted certificates for TLS connection.

CertSecretSource array

+
+
+

E.95. KafkaBridgeAuthenticationTls schema reference

+
+

Used in: KafkaBridgeSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaBridgeAuthenticationTls from KafkaBridgeAuthenticationScramSha512, KafkaBridgeAuthenticationPlain. +It must have the value tls for the type KafkaBridgeAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificateAndKey

Reference to the Secret which holds the certificate and private key pair.

CertAndKeySecretSource

type

Must be tls.

string

+
+
+

E.96. KafkaBridgeAuthenticationScramSha512 schema reference

+
+

Used in: KafkaBridgeSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaBridgeAuthenticationScramSha512 from KafkaBridgeAuthenticationTls, KafkaBridgeAuthenticationPlain. +It must have the value scram-sha-512 for the type KafkaBridgeAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be scram-sha-512.

string

username

Username used for the authentication.

string

+
+
+

E.97. KafkaBridgeAuthenticationPlain schema reference

+
+

Used in: KafkaBridgeSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaBridgeAuthenticationPlain from KafkaBridgeAuthenticationTls, KafkaBridgeAuthenticationScramSha512. +It must have the value plain for the type KafkaBridgeAuthenticationPlain.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be plain.

string

username

Username used for the authentication.

string

+
+
+

E.98. KafkaBridgeHttpConfig schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

port

The port which is the server listening on. Avoid using port 8081 which is used for readiness checking.

integer

+
+
+

E.99. KafkaBridgeConsumerSpec schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

config

The Kafka consumer configuration used for consumer instances created by the bridge. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, group.id, sasl., security.

map

+
+
+

E.100. KafkaBridgeProducerSpec schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

config

The Kafka producer configuration used for producer instances created by the bridge. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, sasl., security.

map

+
+
+

E.101. KafkaBridgeTemplate schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Kafka Bridge Deployment.

ResourceTemplate

pod

Template for Kafka Bridge Pods.

PodTemplate

apiService

Template for Kafka Bridge API Service.

ResourceTemplate

podDisruptionBudget

Template for Kafka Bridge PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+
\ No newline at end of file diff --git a/docs/0.12.1/full.html b/docs/0.12.1/full.html new file mode 100644 index 000000000..93114bd6e --- /dev/null +++ b/docs/0.12.1/full.html @@ -0,0 +1,31750 @@ + + + + + + + +Using Strimzi + + + + + +
+
+

1. Overview of Strimzi

+
+
+

Strimzi is based on Apache Kafka, a popular platform for streaming data delivery and processing. Strimzi makes it easy to run Apache Kafka on OpenShift or Kubernetes.

+
+
+

Strimzi provides three operators:

+
+
+
+
Cluster Operator
+
+

Responsible for deploying and managing Apache Kafka clusters within an OpenShift or Kubernetes cluster.

+
+
Topic Operator
+
+

Responsible for managing Kafka topics within a Kafka cluster running within an OpenShift or Kubernetes cluster.

+
+
User Operator
+
+

Responsible for managing Kafka users within a Kafka cluster running within an OpenShift or Kubernetes cluster.

+
+
+
+
+
Operators within the Strimzi architecture
+

Operators

+
+
+

This guide describes how to install and use Strimzi.

+
+
+

1.1. Kafka Key Features

+
+
    +
  • +

    Designed for horizontal scalability

    +
  • +
  • +

    Message ordering guarantee at the partition level

    +
  • +
  • +

    Message rewind/replay

    +
    +
      +
    • +

      "Long term" storage allows the reconstruction of an application state by replaying the messages

      +
    • +
    • +

      Combines with compacted topics to use Kafka as a key-value store

      +
    • +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+

1.2. Document Conventions

+
+
Replaceables
+

In this document, replaceable text is styled in monospace and italics.

+
+
+

For example, in the following code, you will want to replace my-namespace with the name of your namespace:

+
+
+
+
sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
+
+
+
+
+
+
+

2. Getting started with Strimzi

+
+
+

Strimzi works on all types of clusters, from public and private clouds to local deployments intended for development. +This guide expects that an OpenShift or Kubernetes cluster is available and the +kubectl and +oc command-line tools are installed and configured to connect to the running cluster.

+
+
+

When no existing OpenShift or Kubernetes cluster is available, Minikube or Minishift can be used to create a local +cluster. More details can be found in Installing Kubernetes and OpenShift clusters.

+
+
+ + + + + +
+
Note
+
+To run the commands in this guide, your +Kubernetes and +OpenShift Origin user must have the rights to manage role-based access control (RBAC). +
+
+
+

For more information about OpenShift and setting up OpenShift cluster, see OpenShift documentation.

+
+
+

2.1. Installing Strimzi and deploying components

+
+

To install Strimzi, download the release artefacts from GitHub.

+
+
+

The folder contains several YAML files to help you deploy the components of Strimzi to OpenShift or Kubernetes, perform common operations, and configure your Kafka cluster. The YAML files are referenced throughout this documentation.

+
+
+

Additionally, a Helm Chart is provided for deploying the Cluster Operator using Helm. The container images are available through the Docker Hub.

+
+
+

The remainder of this chapter provides an overview of each component and instructions for deploying the components to OpenShift or Kubernetes using the YAML files provided.

+
+
+ + + + + +
+
Note
+
+Although container images for Strimzi are available in the Docker Hub, we recommend that you use the YAML files provided instead. +
+
+
+
+

2.2. Custom resources

+
+

Custom resource definitions (CRDs) extend the Kubernetes API, providing definitions to create and modify custom resources to an OpenShift or Kubernetes cluster. Custom resources are created as instances of CRDs.

+
+
+

In Strimzi, CRDs introduce custom resources specific to Strimzi to an OpenShift or Kubernetes cluster, such as Kafka, Kafka Connect, Kafka Mirror Maker, and users and topics custom resources. CRDs provide configuration instructions, defining the schemas used to instantiate and manage the Strimzi-specific resources. CRDs also allow Strimzi resources to benefit from native OpenShift or Kubernetes features like CLI accessibility and configuration validation.

+
+
+

CRDs require a one-time installation in a cluster. Depending on the cluster setup, installation typically requires cluster admin privileges.

+
+
+ + + + + +
+
Note
+
+Access to manage custom resources is limited to Strimzi administrators. +
+
+
+

CRDs and custom resources are defined as YAML files.

+
+
+

A CRD defines a new kind of resource, such as kind:Kafka, within an OpenShift or Kubernetes cluster.

+
+
+

The OpenShift or Kubernetes API server allows custom resources to be created based on the kind and understands from the CRD how to validate and store the custom resource when it is added to the OpenShift or Kubernetes cluster.

+
+
+ + + + + +
+
Warning
+
+When CRDs are deleted, custom resources of that type are also deleted. Additionally, the resources created by the custom resource, such as pods and statefulsets are also deleted. +
+
+ +
+

2.2.1. Strimzi custom resource example

+
+

Each Strimzi-specific custom resource conforms to the schema defined by the CRD for the resource’s kind.

+
+
+

To understand the relationship between a CRD and a custom resource, let’s look at a sample of the CRD for a Kafka topic.

+
+
+
Kafka topic CRD
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: CustomResourceDefinition
+metadata: (1)
+  name: kafkatopics.kafka.strimzi.io
+  labels:
+    app: strimzi
+spec: (2)
+  group: kafka.strimzi.io
+  versions:
+    v1beta1
+  scope: Namespaced
+  names:
+    # ...
+    singular: kafkatopic
+    plural: kafkatopics
+    shortNames:
+    - kt (3)
+  additionalPrinterColumns: (4)
+      # ...
+  validation: (5)
+    openAPIV3Schema:
+      properties:
+        spec:
+          type: object
+          properties:
+            partitions:
+              type: integer
+              minimum: 1
+            replicas:
+              type: integer
+              minimum: 1
+              maximum: 32767
+      # ...
+
+
+
+
    +
  1. +

    The metadata for the topic CRD, its name and a label to identify the CRD.

    +
  2. +
  3. +

    The specification for this CRD, including the group (domain) name, the plural name and the supported schema version, which are used in the URL to access the API of the topic. The other names are used to identify instance resources in the CLI. For example, kubectl get kafkatopic my-topic or kubectl get kafkatopics.

    +
  4. +
  5. +

    The shortname can be used in CLI commands. For example, kubectl get kt can be used as an abbreviation instead of kubectl get kafkatopic.

    +
  6. +
  7. +

    The information presented when using a get command on the custom resource.

    +
  8. +
  9. +

    openAPIV3Schema validation provides validation for the creation of topic custom resources. For example, a topic requires at least one partition and one replica.

    +
  10. +
+
+
+ + + + + +
+
Note
+
+You can identify the CRD YAML files supplied with the Strimzi installation files, because the file names contain an index number followed by ‘Crd’. +
+
+
+

Here is a corresponding example of a KafkaTopic custom resource.

+
+
+
Kafka topic custom resource
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaTopic (1)
+metadata:
+  name: my-topic
+  labels:
+    strimzi.io/cluster: my-cluster
+spec: (2)
+  partitions: 1
+  replicas: 1
+  config:
+    retention.ms: 7200000
+    segment.bytes: 1073741824
+
+
+
+
    +
  1. +

    The kind and apiVersion identify the CRD of which the custom resource is an instance.

    +
  2. +
  3. +

    The spec shows the number of partitions and replicas for the topic as well as configuration for the retention period for a message to remain in the topic and the segment file size for the log.

    +
  4. +
+
+
+

Custom resources can be applied to a cluster through the platform CLI. When the custom resource is created, it uses the same validation as the built-in resources of the Kubernetes API.

+
+
+

After a KafkaTopic custom resource is created, the Topic Operator is notified and corresponding Kafka topics are created in Strimzi.

+
+
+
+

2.2.2. Strimzi custom resource status

+
+

The status property of a Strimzi-specific custom resource publishes the current state of the resource to users and tools that need the information.

+
+
+

Status information is useful for tracking progress related to a resource achieving its desired state, as defined by the spec property. The status provides the time and reason the state of the resource changed and details of events preventing or delaying the Operator from realizing the desired state.

+
+
+

Strimzi creates and maintains the status of custom resources, periodically evaluating the current state of the custom resource and updating its status accordingly.

+
+
+

When performing an update on a custom resource using kubectl edit, for example, its status is not editable. Moreover, changing the status would not affect the configuration of the Kafka cluster.

+
+
+ + + + + +
+
Important
+
+The status property feature for Strimzi-specific custom resources is still under development and only available for Kafka resources. +
+
+
+

Here we see the status property specified for a Kafka custom resource.

+
+
+
Kafka custom resource with status
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+spec:
+  # ...
+status:
+  conditions: (1)
+  - lastTransitionTime: 2019-06-02T23:46:57+0000
+    status: "True"
+    type: Ready (2)
+  listeners: (3)
+  - addresses:
+    - host: my-cluster-kafka-bootstrap.myproject.svc
+      port: 9092
+    type: plain
+  - addresses:
+    - host: my-cluster-kafka-bootstrap.myproject.svc
+      port: 9093
+    type: tls
+  - addresses:
+    - host: 172.29.49.180
+      port: 9094
+    type: external
+    # ...
+
+
+
+
    +
  1. +

    Status conditions describe criteria related to the status that cannot be deduced from the existing resource information, or are specific to the instance of a resource.

    +
  2. +
  3. +

    The Ready condition indicates whether the Cluster Operator currently considers the Kafka cluster able to handle traffic.

    +
  4. +
  5. +

    The listeners describe the current Kafka bootstrap addresses by type.

    +
    + + + + + +
    +
    Important
    +
    +The status for external listeners is still under development and does not provide a specific IP address for external listeners of type nodeport. +
    +
    +
  6. +
+
+
+ + + + + +
+
Note
+
+The Kafka bootstrap addresses listed in the status do not signify that those endpoints or the Kafka cluster is in a ready state. +
+
+
+
Accessing status information
+

You can access status information for a resource from the command line. For more information, see Checking the status of a custom resource.

+
+
+
+
+

2.3. Cluster Operator

+
+

Strimzi uses the Cluster Operator to deploy and manage Kafka (including Zookeeper) and Kafka Connect clusters. +The Cluster Operator is deployed inside of the +Kubernetes or +OpenShift cluster. +To deploy a Kafka cluster, a Kafka resource with the cluster configuration has to be created within the +Kubernetes or +OpenShift cluster. +Based on what is declared inside of the Kafka resource, the Cluster Operator deploys a corresponding Kafka cluster. +For more information about the different configuration options supported by the Kafka resource, see Kafka cluster configuration

+
+
+ + + + + +
+
Note
+
+Strimzi contains example YAML files, which make deploying a Cluster Operator easier. +
+
+
+

2.3.1. Overview of the Cluster Operator component

+
+

The Cluster Operator is in charge of deploying a Kafka cluster alongside a Zookeeper ensemble. +As part of the Kafka cluster, it can also deploy the topic operator which provides operator-style topic management via KafkaTopic custom resources. +The Cluster Operator is also able to deploy a Kafka Connect cluster which connects to an existing Kafka cluster. +On OpenShift such a cluster can be deployed using the Source2Image feature, providing an easy way of including more connectors.

+
+
+
Example architecture for the Cluster Operator
+

Cluster Operator

+
+
+

When the Cluster Operator is up, it starts to watch for certain OpenShift or Kubernetes resources containing the desired Kafka, Kafka Connect, or Kafka Mirror Maker cluster configuration. +By default, it watches only in the same namespace or project where it is installed. +The Cluster Operator can be configured to watch for more OpenShift projects or Kubernetes namespaces. +Cluster Operator watches the following resources:

+
+
+
    +
  • +

    A Kafka resource for the Kafka cluster.

    +
  • +
  • +

    A KafkaConnect resource for the Kafka Connect cluster.

    +
  • +
  • +

    A KafkaConnectS2I resource for the Kafka Connect cluster with Source2Image support.

    +
  • +
  • +

    A KafkaMirrorMaker resource for the Kafka Mirror Maker instance.

    +
  • +
+
+
+

When a new Kafka, KafkaConnect, KafkaConnectS2I, or Kafka Mirror Maker resource is created in the OpenShift or Kubernetes cluster, the operator gets the cluster description from the desired resource and starts creating a new Kafka, Kafka Connect, or Kafka Mirror Maker cluster by creating the necessary other OpenShift or Kubernetes resources, such as StatefulSets, Services, ConfigMaps, and so on.

+
+
+

Every time the desired resource is updated by the user, the operator performs corresponding updates on the OpenShift or Kubernetes resources which make up the Kafka, Kafka Connect, or Kafka Mirror Maker cluster. +Resources are either patched or deleted and then re-created in order to make the Kafka, Kafka Connect, or Kafka Mirror Maker cluster reflect the state of the desired cluster resource. +This might cause a rolling update which might lead to service disruption.

+
+
+

Finally, when the desired resource is deleted, the operator starts to undeploy the cluster and delete all the related OpenShift or Kubernetes resources.

+
+
+
+

2.3.2. Deploying the Cluster Operator to Kubernetes

+
+
Prerequisites
+
    +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    kubectl apply -f install/cluster-operator -n _my-namespace_
    +
    +
    +
  • +
+
+
+
+

2.3.3. Deploying the Cluster Operator to OpenShift

+
+
Prerequisites
+
    +
  • +

    A user with cluster-admin role needs to be used, for example, system:admin.

    +
  • +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    oc apply -f install/cluster-operator -n _my-project_
    +oc apply -f examples/templates/cluster-operator -n _my-project_
    +
    +
    +
  • +
+
+
+
+

2.3.4. Deploying the Cluster Operator to watch multiple namespaces

+
+
Prerequisites
+
    +
  • +

    Edit the installation files according to the OpenShift project or Kubernetes namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the file install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml and in the environment variable STRIMZI_NAMESPACE list all the OpenShift projects or Kubernetes namespaces where Cluster Operator should watch for resources. +For example:

    +
    +
    +
    apiVersion: extensions/v1beta1
    +kind: Deployment
    +spec:
    +  template:
    +    spec:
    +      serviceAccountName: strimzi-cluster-operator
    +      containers:
    +      - name: strimzi-cluster-operator
    +        image: strimzi/operator:0.12.1
    +        imagePullPolicy: IfNotPresent
    +        env:
    +        - name: STRIMZI_NAMESPACE
    +          value: myproject,myproject2,myproject3
    +
    +
    +
  2. +
  3. +

    For all namespaces or projects which should be watched by the Cluster Operator, install the RoleBindings. +Replace the my-namespace or my-project with the OpenShift project or Kubernetes namespace used in the previous step.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-project
    +oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-project
    +oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-project
    +
    +
    +
  4. +
  5. +

    Deploy the Cluster Operator

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
  6. +
+
+
+
+

2.3.5. Deploying the Cluster Operator to watch all namespaces

+
+

You can configure the Cluster Operator to watch Strimzi resources across all OpenShift projects or Kubernetes namespaces in your OpenShift or Kubernetes cluster. When running in this mode, the Cluster Operator automatically manages clusters in any new projects or namespaces that are created.

+
+
+
Prerequisites
+
    +
  • +

    Your OpenShift or Kubernetes cluster is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Configure the Cluster Operator to watch all namespaces:

    +
    +
      +
    1. +

      Edit the 050-Deployment-strimzi-cluster-operator.yaml file.

      +
    2. +
    3. +

      Set the value of the STRIMZI_NAMESPACE environment variable to *.

      +
      +
      +
      apiVersion: extensions/v1beta1
      +kind: Deployment
      +spec:
      +  template:
      +    spec:
      +      # ...
      +      serviceAccountName: strimzi-cluster-operator
      +      containers:
      +      - name: strimzi-cluster-operator
      +        image: strimzi/operator:0.12.1
      +        imagePullPolicy: IfNotPresent
      +        env:
      +        - name: STRIMZI_NAMESPACE
      +          value: "*"
      +        # ...
      +
      +
      +
    4. +
    +
    +
  2. +
  3. +

    Create ClusterRoleBindings that grant cluster-wide access to all OpenShift projects or Kubernetes namespaces to the Cluster Operator.

    +
    +

    On OpenShift, use the oc adm policy command:

    +
    +
    +
    +
    oc adm policy add-cluster-role-to-user strimzi-cluster-operator-namespaced --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-entity-operator --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-topic-operator --serviceaccount strimzi-cluster-operator -n my-project
    +
    +
    +
    +

    Replace my-project with the project in which you want to install the Cluster Operator.

    +
    +
    +

    On Kubernetes, use the kubectl create command:

    +
    +
    +
    +
    kubectl create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-topic-operator-delegation --clusterrole=strimzi-topic-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +
    +
    +
    +

    Replace my-namespace with the namespace in which you want to install the Cluster Operator.

    +
    +
  4. +
  5. +

    Deploy the Cluster Operator to your OpenShift or Kubernetes cluster.

    +
    +

    On OpenShift, use the oc apply command:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
    +

    On Kubernetes, use the kubectl apply command:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
  6. +
+
+
+
+

2.3.6. Deploying the Cluster Operator using Helm Chart

+
+
Prerequisites
+
    +
  • +

    Helm client has to be installed on the local machine.

    +
  • +
  • +

    Helm has to be installed in the OpenShift or Kubernetes cluster.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add the Strimzi Helm Chart repository:

    +
    +
    +
    helm repo add strimzi http://strimzi.io/charts/
    +
    +
    +
  2. +
  3. +

    Deploy the Cluster Operator using the Helm command line tool:

    +
    +
    +
    helm install strimzi/strimzi-kafka-operator
    +
    +
    +
  4. +
  5. +

    Verify whether the Cluster Operator has been deployed successfully using the Helm command line tool:

    +
    +
    +
    helm ls
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about Helm, see the Helm website.

    +
  • +
+
+
+
+

2.3.7. Deploying the Cluster Operator from OperatorHub.io

+
+

OperatorHub.io is a catalog of Kubernetes Operators sourced from multiple providers. +It offers you an alternative way to install stable versions of Strimzi using the Strimzi Kafka Operator.

+
+
+

The Operator Lifecycle Manager is used for the installation and management of all Operators published on OperatorHub.io.

+
+
+

To install Strimzi from OperatorHub.io, locate the Strimzi Kafka Operator and follow the instructions provided.

+
+
+
+
+

2.4. Kafka cluster

+
+

You can use Strimzi to deploy an ephemeral or persistent Kafka cluster to OpenShift or Kubernetes. When installing Kafka, Strimzi also installs a Zookeeper cluster and adds the necessary configuration to connect Kafka with Zookeeper.

+
+
+
+
Ephemeral cluster
+
+

In general, an ephemeral (that is, temporary) Kafka cluster is suitable for development and testing purposes, not for production. This deployment uses emptyDir volumes for storing broker information (for Zookeeper) and topics or partitions (for Kafka). Using an emptyDir volume means that its content is strictly related to the pod life cycle and is deleted when the pod goes down.

+
+
Persistent cluster
+
+

A persistent Kafka cluster uses PersistentVolumes to store Zookeeper and Kafka data. The PersistentVolume is +acquired using a PersistentVolumeClaim to make it independent of the actual type of the PersistentVolume. For example, it can use +HostPath volumes on Minikube or +Amazon EBS volumes in Amazon AWS deployments without any changes in the YAML files. The PersistentVolumeClaim can use a StorageClass to trigger automatic volume provisioning.

+
+
+
+
+

Strimzi includes two templates for deploying a Kafka cluster:

+
+
+
    +
  • +

    kafka-ephemeral.yaml deploys an ephemeral cluster, named my-cluster by default.

    +
  • +
  • +

    kafka-persistent.yaml deploys a persistent cluster, named my-cluster by default.

    +
  • +
+
+
+

The cluster name is defined by the name of the resource and cannot be changed after the cluster has been deployed. To change the cluster name before you deploy the cluster, edit the Kafka.metadata.name property of the resource in the relevant YAML file.

+
+
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+# ...
+
+
+
+

2.4.1. Deploying the Kafka cluster to Kubernetes

+
+

You can deploy an ephemeral or persistent Kafka cluster to Kubernetes on the command line.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is deployed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    If you plan to use the cluster for development or testing purposes, you can create and deploy an ephemeral cluster using kubectl apply.

    +
    +
    +
    kubectl apply -f examples/kafka/kafka-ephemeral.yaml
    +
    +
    +
  2. +
  3. +

    If you plan to use the cluster in production, create and deploy a persistent cluster using kubectl apply.

    +
    +
    +
    kubectl apply -f examples/kafka/kafka-persistent.yaml
    +
    +
    +
  4. +
+
+
+
Additional resources
+
    +
  • +

    For more information on deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information on the different configuration options supported by the Kafka resource, see Kafka cluster configuration.

    +
  • +
+
+
+
+

2.4.2. Deploying the Kafka cluster to OpenShift

+
+

The following procedure describes how to deploy an ephemeral or persistent Kafka cluster to OpenShift on the command line. You can also deploy clusters in the OpenShift console.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is deployed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    If you plan to use the cluster for development or testing purposes, create and deploy an ephemeral cluster using oc apply.

    +
    +
    +
    oc apply -f examples/kafka/kafka-ephemeral.yaml
    +
    +
    +
  2. +
  3. +

    If you plan to use the cluster in production, create and deploy a persistent cluster using oc apply.

    +
    +
    +
    oc apply -f examples/kafka/kafka-persistent.yaml
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

2.5. Kafka Connect

+
+

Kafka Connect is a tool for streaming data between Apache Kafka and external systems. It provides a framework for moving large amounts of data into and out of your Kafka cluster while maintaining scalability and reliability. Kafka Connect is typically used to integrate Kafka with external databases and storage and messaging systems.

+
+
+

You can use Kafka Connect to:

+
+
+
    +
  • +

    Build connector plug-ins (as JAR files) for your Kafka cluster

    +
  • +
  • +

    Run connectors

    +
  • +
+
+
+

Kafka Connect includes the following built-in connectors for moving file-based data into and out of your Kafka cluster.

+
+ ++++ + + + + + + + + + + + + + + + + +
File ConnectorDescription

FileStreamSourceConnector

Transfers data to your Kafka cluster from a file (the source).

FileStreamSinkConnector

Transfers data from your Kafka cluster to a file (the sink).

+
+

In Strimzi, you can use the Cluster Operator to deploy a Kafka Connect or Kafka Connect Source-2-Image (S2I) cluster to your OpenShift or Kubernetes cluster.

+
+
+

A Kafka Connect cluster is implemented as a Deployment with a configurable number of workers. The Kafka Connect REST API is available on port 8083, as the <connect-cluster-name>-connect-api service.

+
+
+

For more information on deploying a Kafka Connect S2I cluster, see Creating a container image using OpenShift builds and Source-to-Image.

+
+
+

2.5.1. Deploying Kafka Connect to your Kubernetes cluster

+
+

You can deploy a Kafka Connect cluster to your Kubernetes cluster by using the Cluster Operator.

+
+ +
+
Procedure
+
    +
  • +

    Use the kubectl apply command to create a KafkaConnect resource based on the kafka-connect.yaml file:

    +
    +
    +
    kubectl apply -f examples/kafka-connect/kafka-connect.yaml
    +
    +
    +
  • +
+
+ +
+
+

2.5.2. Deploying Kafka Connect to your OpenShift cluster

+
+

You can deploy a Kafka Connect cluster to your OpenShift cluster by using the Cluster Operator. Kafka Connect is provided as an OpenShift template that you can deploy from the command line or the OpenShift console.

+
+ +
+
Procedure
+
    +
  • +

    Use the oc apply command to create a KafkaConnect resource based on the kafka-connect.yaml file:

    +
    +
    +
    oc apply -f examples/kafka-connect/kafka-connect.yaml
    +
    +
    +
  • +
+
+ +
+
+

2.5.3. Extending Kafka Connect with connector plug-ins

+
+

The Strimzi container images for Kafka Connect include the two built-in file connectors: FileStreamSourceConnector and FileStreamSinkConnector. You can add your own connectors by using one of the following methods:

+
+
+
    +
  • +

    Create a Docker image from the Kafka Connect base image.

    +
  • +
  • +

    Create a container image using OpenShift builds and Source-to-Image (S2I).

    +
  • +
+
+
+
Creating a Docker image from the Kafka Connect base image
+
+

You can use the Kafka container image on Docker Hub as a base image for creating your own custom image with additional connector plug-ins.

+
+
+

The following procedure explains how to create your custom image and add it to the /opt/kafka/plugins directory. At startup, the Strimzi version of Kafka Connect loads any third-party connector plug-ins contained in the /opt/kafka/plugins directory.

+
+ +
+
Procedure
+
    +
  1. +

    Create a new Dockerfile using strimzi/kafka:0.12.1-kafka-2.2.1 as the base image:

    +
    +
    +
    FROM strimzi/kafka:0.12.1-kafka-2.2.1
    +USER root:root
    +COPY ./my-plugins/ /opt/kafka/plugins/
    +USER 1001
    +
    +
    +
  2. +
  3. +

    Build the container image.

    +
  4. +
  5. +

    Push your custom image to your container registry.

    +
  6. +
  7. +

    Edit the KafkaConnect.spec.image property of the KafkaConnect custom resource to point to the new container image. If set, this property overrides the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE variable referred to in the next step.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect-cluster
    +spec:
    +  #...
    +  image: my-new-container-image
    +
    +
    +
  8. +
  9. +

    In the install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml file, edit the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE variable to point to the new container image.

    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
Creating a container image using OpenShift builds and Source-to-Image
+
+

You can use OpenShift builds and the Source-to-Image (S2I) framework to create new container images. An OpenShift build takes a builder image with S2I support, together with source code and binaries provided by the user, and uses them to build a new container image. Once built, container images are stored in OpenShift’s local container image repository and are available for use in deployments.

+
+
+

A Kafka Connect builder image with S2I support is provided on the Docker Hub as part of the strimzi/kafka:0.12.1-kafka-2.2.1 image. This S2I image takes your binaries (with plug-ins and connectors) and stores them in the /tmp/kafka-plugins/s2i directory. It creates a new Kafka Connect image from this directory, which can then be used with the Kafka Connect deployment. When started using the enhanced image, Kafka Connect loads any third-party plug-ins from the /tmp/kafka-plugins/s2i directory.

+
+
+
Procedure
+
    +
  1. +

    On the command line, use the oc apply command to create and deploy a Kafka Connect S2I cluster:

    +
    +
    +
    oc apply -f examples/kafka-connect/kafka-connect-s2i.yaml
    +
    +
    +
  2. +
  3. +

    Create a directory with Kafka Connect plug-ins:

    +
    +
    +
    $ tree ./my-plugins/
    +./my-plugins/
    +├── debezium-connector-mongodb
    +│   ├── bson-3.4.2.jar
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mongodb-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mongodb-driver-3.4.2.jar
    +│   ├── mongodb-driver-core-3.4.2.jar
    +│   └── README.md
    +├── debezium-connector-mysql
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mysql-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mysql-binlog-connector-java-0.13.0.jar
    +│   ├── mysql-connector-java-5.1.40.jar
    +│   ├── README.md
    +│   └── wkb-1.0.2.jar
    +└── debezium-connector-postgres
    +    ├── CHANGELOG.md
    +    ├── CONTRIBUTE.md
    +    ├── COPYRIGHT.txt
    +    ├── debezium-connector-postgres-0.7.1.jar
    +    ├── debezium-core-0.7.1.jar
    +    ├── LICENSE.txt
    +    ├── postgresql-42.0.0.jar
    +    ├── protobuf-java-2.6.1.jar
    +    └── README.md
    +
    +
    +
  4. +
  5. +

    Use the oc start-build command to start a new build of the image using the prepared directory:

    +
    +
    +
    oc start-build my-connect-cluster-connect --from-dir ./my-plugins/
    +
    +
    +
    + + + + + +
    +
    Note
    +
    +The name of the build is the same as the name of the deployed Kafka Connect cluster. +
    +
    +
  6. +
  7. +

    Once the build has finished, the new image is used automatically by the Kafka Connect deployment.

    +
  8. +
+
+
+
+
+
+

2.6. Kafka Mirror Maker

+
+

The Cluster Operator deploys one or more Kafka Mirror Maker replicas to replicate data between Kafka clusters. +This process is called mirroring to avoid confusion with the Kafka partitions replication concept. +The Mirror Maker consumes messages from the source cluster and republishes those messages to the target cluster.

+
+
+

For information about example resources and the format for deploying Kafka Mirror Maker, see Kafka Mirror Maker configuration.

+
+
+

2.6.1. Deploying Kafka Mirror Maker to Kubernetes

+
+
Prerequisites
+
    +
  • +

    Before deploying Kafka Mirror Maker, the Cluster Operator must be deployed.

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy Kafka Mirror Maker on Kubernetes by creating the corresponding KafkaMirrorMaker resource.

    +
    +
    +
    kubectl apply -f examples/kafka-mirror-maker/kafka-mirror-maker.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator

    +
  • +
+
+
+
+

2.6.2. Deploying Kafka Mirror Maker to OpenShift

+
+

On OpenShift, Kafka Mirror Maker is provided in the form of a template. It can be deployed from the template using the command-line or through the OpenShift console.

+
+
+
Prerequisites
+
    +
  • +

    Before deploying Kafka Mirror Maker, the Cluster Operator must be deployed.

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Create a Kafka Mirror Maker cluster from the command-line:

    +
    +
    +
    oc apply -f examples/kafka-mirror-maker/kafka-mirror-maker.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator

    +
  • +
+
+
+
+
+

2.7. Kafka Bridge

+
+

The Cluster Operator deploys one or more Kafka bridge replicas to send data between Kafka clusters and clients via HTTP API.

+
+
+

For information about example resources and the format for deploying Kafka Bridge, see Kafka Bridge configuration.

+
+
+

2.7.1. Deploying Kafka Bridge to your Kubernetes cluster

+
+

You can deploy a Kafka Bridge cluster to your Kubernetes cluster by using the Cluster Operator.

+
+ +
+
Procedure
+
    +
  • +

    Use the kubectl apply command to create a KafkaBridge resource based on the kafka-bridge.yaml file:

    +
    +
    +
    kubectl apply -f examples/kafka-bridge/kafka-bridge.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+

2.7.2. Deploying Kafka Bridge to your OpenShift cluster

+
+

You can deploy a Kafka Bridge cluster to your OpenShift cluster by using the Cluster Operator. Kafka Bridge is provided as an OpenShift template that you can deploy from the command line or the OpenShift console.

+
+ +
+
Procedure
+
    +
  • +

    Use the oc apply command to create a KafkaBridge resource based on the kafka-bridge.yaml file:

    +
    +
    +
    oc apply -f examples/kafka-bridge/kafka-bridge.yaml
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+
+

2.8. Deploying example clients

+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster for the client to connect to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy the producer.

    +
    +

    On Kubernetes, use kubectl run:

    +
    +
    +
    +
    kubectl run kafka-producer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list cluster-name-kafka-bootstrap:9092 --topic my-topic
    +
    +
    +
    +

    On OpenShift, use oc run:

    +
    +
    +
    +
    oc run kafka-producer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-producer.sh --broker-list cluster-name-kafka-bootstrap:9092 --topic my-topic
    +
    +
    +
  2. +
  3. +

    Type your message into the console where the producer is running.

    +
  4. +
  5. +

    Press Enter to send the message.

    +
  6. +
  7. +

    Deploy the consumer.

    +
    +

    On Kubernetes, use kubectl run:

    +
    +
    +
    +
    kubectl run kafka-consumer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server cluster-name-kafka-bootstrap:9092 --topic my-topic --from-beginning
    +
    +
    +
    +

    On OpenShift, use oc run:

    +
    +
    +
    +
    oc run kafka-consumer -ti --image=strimzi/kafka:0.12.1-kafka-2.2.1 --rm=true --restart=Never -- bin/kafka-console-consumer.sh --bootstrap-server cluster-name-kafka-bootstrap:9092 --topic my-topic --from-beginning
    +
    +
    +
  8. +
  9. +

    Confirm that you see the incoming messages in the consumer console.

    +
  10. +
+
+
+
+

2.9. Topic Operator

+
+

2.9.1. Overview of the Topic Operator component

+
+

The Topic Operator provides a way of managing topics in a Kafka cluster via OpenShift or Kubernetes resources.

+
+
+
Example architecture for the Topic Operator
+

Topic Operator

+
+
+

The role of the Topic Operator is to keep a set of KafkaTopic OpenShift or Kubernetes resources describing Kafka topics in-sync with corresponding Kafka topics.

+
+
+

Specifically, if a KafkaTopic is:

+
+
+
    +
  • +

    Created, the operator will create the topic it describes

    +
  • +
  • +

    Deleted, the operator will delete the topic it describes

    +
  • +
  • +

    Changed, the operator will update the topic it describes

    +
  • +
+
+
+

And also, in the other direction, if a topic is:

+
+
+
    +
  • +

    Created within the Kafka cluster, the operator will create a KafkaTopic describing it

    +
  • +
  • +

    Deleted from the Kafka cluster, the operator will delete the KafkaTopic describing it

    +
  • +
  • +

    Changed in the Kafka cluster, the operator will update the KafkaTopic describing it

    +
  • +
+
+
+

This allows you to declare a KafkaTopic as part of your application’s deployment and the Topic Operator will take care of creating the topic for you. +Your application just needs to deal with producing or consuming from the necessary topics.

+
+
+

If the topic is reconfigured or reassigned to different Kafka nodes, the KafkaTopic will always be up to date.

+
+
+

For more details about creating, modifying and deleting topics, see Using the Topic Operator.

+
+
+
+

2.9.2. Deploying the Topic Operator using the Cluster Operator

+
+

This procedure describes how to deploy the Topic Operator using the Cluster Operator. +If you want to use the Topic Operator with a Kafka cluster that is not managed by Strimzi, you must deploy the Topic Operator as a standalone component. For more information, see Deploying the standalone Topic Operator.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Ensure that the Kafka.spec.entityOperator object exists in the Kafka resource. This configures the Entity Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  #...
    +  entityOperator:
    +    topicOperator: {}
    +    userOperator: {}
    +
    +
    +
  2. +
  3. +

    Configure the Topic Operator using the fields described in EntityTopicOperatorSpec schema reference.

    +
  4. +
  5. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about deploying the Entity Operator, see Entity Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the Topic Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+
+

2.10. User Operator

+
+

The User Operator provides a way of managing Kafka users via OpenShift or Kubernetes resources.

+
+
+

2.10.1. Overview of the User Operator component

+
+

The User Operator manages Kafka users for a Kafka cluster by watching for KafkaUser OpenShift or Kubernetes resources that describe Kafka users and ensuring that they are configured properly in the Kafka cluster. +For example:

+
+
+
    +
  • +

    if a KafkaUser is created, the User Operator will create the user it describes

    +
  • +
  • +

    if a KafkaUser is deleted, the User Operator will delete the user it describes

    +
  • +
  • +

    if a KafkaUser is changed, the User Operator will update the user it describes

    +
  • +
+
+
+

Unlike the Topic Operator, the User Operator does not sync any changes from the Kafka cluster with the OpenShift or Kubernetes resources. +Unlike the Kafka topics which might be created by applications directly in Kafka, it is not expected that the users will be managed directly in the Kafka cluster in parallel with the User Operator, so this should not be needed.

+
+
+

The User Operator allows you to declare a KafkaUser as part of your application’s deployment. +When the user is created, the credentials will be created in a Secret. +Your application needs to use the user and its credentials for authentication and to produce or consume messages.

+
+
+

In addition to managing credentials for authentication, the User Operator also manages authorization rules by including a description of the user’s rights in the KafkaUser declaration.

+
+
+
+

2.10.2. Deploying the User Operator using the Cluster Operator

+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the Kafka resource ensuring it has a Kafka.spec.entityOperator.userOperator object that configures the User Operator how you want.

    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the User Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+
+

2.11. Strimzi Administrators

+
+

Strimzi includes several custom resources. +By default, permission to create, edit, and delete these resources is limited to OpenShift or Kubernetes cluster administrators. +If you want to allow non-cluster administators to manage Strimzi resources, you must assign them the Strimzi Administrator role.

+
+
+

2.11.1. Designating Strimzi Administrators

+
+
Prerequisites
+
    +
  • +

    Strimzi CustomResourceDefinitions are installed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create the strimzi-admin cluster role in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/strimzi-admin
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f install/strimzi-admin
    +
    +
    +
  2. +
  3. +

    Assign the strimzi-admin ClusterRole to one or more existing users in the OpenShift or Kubernetes cluster.

    +
    +

    On Kubernetes, use kubectl create:

    +
    +
    +
    +
    kubectl create clusterrolebinding strimzi-admin --clusterrole=strimzi-admin --user=user1 --user=user2
    +
    +
    +
    +

    On OpenShift, use oc adm:

    +
    +
    +
    +
    oc adm policy add-cluster-role-to-user strimzi-admin user1 user2
    +
    +
    +
  4. +
+
+
+
+
+

2.12. Container images

+
+

Container images for Strimzi are available in the Docker Hub. +The installation YAML files provided by Strimzi will pull the images directly from the Docker Hub.

+
+
+

If you do not have access to the Docker Hub or want to use your own container repository:

+
+
+
    +
  1. +

    Pull all container images listed here

    +
  2. +
  3. +

    Push them into your own registry

    +
  4. +
  5. +

    Update the image names in the installation YAML files

    +
  6. +
+
+
+ + + + + +
+
Note
+
+Each Kafka version supported for the release has a separate image. +
+
+ +++++ + + + + + + + + + + + + + + + + + + + + + + + + +
Container imageNamespace/RepositoryDescription

Kafka

+
    +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.1.0

    +
  • +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.1.1

    +
  • +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.2.0

    +
  • +
  • +

    docker.io/strimzi/kafka:0.12.1-kafka-2.2.1

    +
  • +
+
+

Strimzi image for running Kafka, including:

+
+
+
    +
  • +

    Kafka Broker

    +
  • +
  • +

    Kafka Connect / S2I

    +
  • +
  • +

    Kafka Mirror Maker

    +
  • +
  • +

    Zookeeper

    +
  • +
  • +

    TLS Sidecars

    +
  • +
+

Operator

+
    +
  • +

    docker.io/strimzi/operator:0.12.1

    +
  • +
+
+

Strimzi image for running the operators:

+
+
+
    +
  • +

    Cluster Operator

    +
  • +
  • +

    Topic Operator

    +
  • +
  • +

    User Operator

    +
  • +
  • +

    Kafka Initializer

    +
  • +
+

Kafka Bridge

+
    +
  • +

    docker.io/strimzi/kafka-bridge:0.12.1

    +
  • +
+
+

Strimzi image for running the Strimzi kafka Bridge

+
+
+
+
+
+

3. Deployment configuration

+
+
+

This chapter describes how to configure different aspects of the supported deployments:

+
+
+
    +
  • +

    Kafka clusters

    +
  • +
  • +

    Kafka Connect clusters

    +
  • +
  • +

    Kafka Connect clusters with Source2Image support

    +
  • +
  • +

    Kafka Mirror Maker

    +
  • +
+
+
+

3.1. Kafka cluster configuration

+
+

The full schema of the Kafka resource is described in the Kafka schema reference. +All labels that are applied to the desired Kafka resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka cluster. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.1.1. Data storage considerations

+
+

An efficient data storage infrastructure is essential to the optimal performance of Strimzi.

+
+
+

Strimzi requires block storage and is designed to work optimally with cloud-based block storage solutions, including Amazon Elastic Block Store (EBS). The use of file storage (for example, NFS) is not recommended.

+
+
+

Choose local storage (local persistent volumes) when possible. If local storage is not available, you can use a Storage Area Network (SAN) accessed by a protocol such as Fibre Channel or iSCSI.

+
+
+
Apache Kafka and Zookeeper storage
+
+

Use separate disks for Apache Kafka and Zookeeper.

+
+
+

Three types of data storage are supported:

+
+
+
    +
  • +

    Ephemeral (Recommended for development only)

    +
  • +
  • +

    Persistent

    +
  • +
  • +

    JBOD (Just a Bunch of Disks, suitable for Kafka only)

    +
  • +
+
+
+

For more information, see Kafka and Zookeeper storage.

+
+
+

Solid-state drives (SSDs), though not essential, can improve the performance of Kafka in large clusters where data is sent to and received from multiple topics asynchronously. SSDs are particularly effective with Zookeeper, which requires fast, low latency data access.

+
+
+ + + + + +
+
Note
+
+You do not need to provision replicated storage because Kafka and Zookeeper both have built-in data replication. +
+
+
+
+
File systems
+
+

It is recommended that you configure your storage system to use the XFS file system. Strimzi is also compatible with the ext4 file system, but this might require additional configuration for best results.

+
+
+
+
+

3.1.2. Kafka and Zookeeper storage types

+
+

As stateful applications, Kafka and Zookeeper need to store data on disk. Strimzi supports three storage types for this data:

+
+
+
    +
  • +

    Ephemeral

    +
  • +
  • +

    Persistent

    +
  • +
  • +

    JBOD storage

    +
  • +
+
+
+ + + + + +
+
Note
+
+JBOD storage is supported only for Kafka, not for Zookeeper. +
+
+
+

When configuring a Kafka resource, you can specify the type of storage used by the Kafka broker and its corresponding Zookeeper node. You configure the storage type using the storage property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
+
+
+

The storage type is configured in the type field.

+
+
+ + + + + +
+
Warning
+
+The storage type cannot be changed after a Kafka cluster is deployed. +
+
+
+
Ephemeral storage
+
+

Ephemeral storage uses the `emptyDir` volumes to store data. +To use ephemeral storage, the type field should be set to ephemeral.

+
+
+ + + + + +
+
Important
+
+EmptyDir volumes are not persistent and the data stored in them will be lost when the Pod is restarted. +After the new pod is started, it has to recover all data from other nodes of the cluster. +Ephemeral storage is not suitable for use with single node Zookeeper clusters and for Kafka topics with replication factor 1, because it will lead to data loss. +
+
+
+
An example of Ephemeral storage
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    storage:
+      type: ephemeral
+    # ...
+  zookeeper:
+    # ...
+    storage:
+      type: ephemeral
+    # ...
+
+
+
+
Log directories
+
+

The ephemeral volume will be used by the Kafka brokers as log directories mounted into the following path:

+
+
+
+
/var/lib/kafka/data/kafka-log_idx_
+
+

Where idx is the Kafka broker pod index. For example /var/lib/kafka/data/kafka-log0.

+
+
+
+
+
+
+
Persistent storage
+
+

Persistent storage uses Persistent Volume Claims to provision persistent volumes for storing data. +Persistent Volume Claims can be used to provision volumes of many different types, depending on the Storage Class which will provision the volume. +The data types which can be used with persistent volume claims include many types of SAN storage as well as Local persistent volumes.

+
+
+

To use persistent storage, the type has to be set to persistent-claim. +Persistent storage supports additional configuration options:

+
+
+
+
id (optional)
+
+

Storage identification number. This option is mandatory for storage volumes defined in a JBOD storage declaration. +Default is 0.

+
+
size (required)
+
+

Defines the size of the persistent volume claim, for example, "1000Gi".

+
+
class (optional)
+
+

The OpenShift or Kubernetes Storage Class to use for dynamic volume provisioning.

+
+
selector (optional)
+
+

Allows selecting a specific persistent volume to use. +It contains key:value pairs representing labels for selecting such a volume.

+
+
deleteClaim (optional)
+
+

Boolean value which specifies if the Persistent Volume Claim has to be deleted when the cluster is undeployed. +Default is false.

+
+
+
+
+ + + + + +
+
Warning
+
+Increasing the size of persistent volumes in an existing Strimzi cluster is only supported in OpenShift or Kubernetes versions that support persistent volume resizing. The persistent volume to be resized must use a storage class that supports volume expansion. +For other versions of OpenShift or Kubernetes and storage classes which do not support volume expansion, you must decide the necessary storage size before deploying the cluster. +Decreasing the size of existing persistent volumes is not possible. +
+
+
+
Example fragment of persistent storage configuration with 1000Gi size
+
+
# ...
+storage:
+  type: persistent-claim
+  size: 1000Gi
+# ...
+
+
+
+

The following example demonstrates the use of a storage class.

+
+
+
Example fragment of persistent storage configuration with specific Storage Class
+
+
# ...
+storage:
+  type: persistent-claim
+  size: 1Gi
+  class: my-storage-class
+# ...
+
+
+
+

Finally, a selector can be used to select a specific labeled persistent volume to provide needed features such as an SSD.

+
+
+
Example fragment of persistent storage configuration with selector
+
+
# ...
+storage:
+  type: persistent-claim
+  size: 1Gi
+  selector:
+    hdd-type: ssd
+  deleteClaim: true
+# ...
+
+
+
+
Storage class overrides
+
+

You can specify a different storage class for one or more Kafka brokers, instead of using the default storage class. +This is useful if, for example, storage classes are restricted to different availability zones or data centers. +You can use the overrides field for this purpose.

+
+
+

In this example, the default storage class is named my-storage-class:

+
+
+
Example Strimzi cluster using storage class overrides
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  labels:
+    app: my-cluster
+  name: my-cluster
+  namespace: myproject
+spec:
+  # ...
+  kafka:
+    replicas: 3
+    storage:
+      deleteClaim: true
+      size: 100Gi
+      type: persistent-claim
+      class: my-storage-class
+      overrides:
+        - broker: 0
+          class: my-storage-class-zone-1a
+        - broker: 1
+          class: my-storage-class-zone-1b
+        - broker: 2
+          class: my-storage-class-zone-1c
+  # ...
+
+
+
+

As a result of the configured overrides property, the broker volumes use the following storage classes:

+
+
+
    +
  • +

    The persistent volumes of broker 0 will use my-storage-class-zone-1a.

    +
  • +
  • +

    The persistent volumes of broker 1 will use my-storage-class-zone-1b.

    +
  • +
  • +

    The persistent volumes of broker 2 will use my-storage-class-zone-1c.

    +
  • +
+
+
+

The overrides property is currently used only to override storage class configurations. Overriding other storage configuration fields is not currently supported. +Other fields from the storage configuration are currently not supported.

+
+
+
+
Persistent Volume Claim naming
+
+

When persistent storage is used, it creates Persistent Volume Claims with the following names:

+
+
+
+
data-cluster-name-kafka-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Kafka broker pod idx.

+
+
data-cluster-name-zookeeper-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Zookeeper node pod idx.

+
+
+
+
+
+
Log directories
+
+

The persistent volume will be used by the Kafka brokers as log directories mounted into the following path:

+
+
+
+
/var/lib/kafka/data/kafka-log_idx_
+
+

Where idx is the Kafka broker pod index. For example /var/lib/kafka/data/kafka-log0.

+
+
+
+
+
+
+
Resizing persistent volumes
+
+

You can provision increased storage capacity by increasing the size of the persistent volumes used by an existing Strimzi cluster. +Resizing persistent volumes is supported in clusters that use either a single persistent volume or multiple persistent volumes in a JBOD storage configuration.

+
+
+ + + + + +
+
Note
+
+You can increase but not decrease the size of persistent volumes. +Decreasing the size of persistent volumes is not currently supported in OpenShift or Kubernetes. +
+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster with support for volume resizing.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka cluster using persistent volumes created using a storage class that supports volume expansion.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    In a Kafka resource, increase the size of the persistent volume allocated to the Kafka cluster, the Zookeeper cluster, or both.

    +
    +
      +
    • +

      To increase the volume size allocated to the Kafka cluster, edit the spec.kafka.storage property.

      +
    • +
    • +

      To increase the volume size allocated to the Zookeeper cluster, edit the spec.zookeeper.storage property.

      +
      +

      For example, to increase the volume size from 1000Gi to 2000Gi:

      +
      +
      +
      +
      apiVersion: kafka.strimzi.io/v1beta1
      +kind: Kafka
      +metadata:
      +  name: my-cluster
      +spec:
      +  kafka:
      +    # ...
      +    storage:
      +      type: persistent-claim
      +      size: 2000Gi
      +      class: my-storage-class
      +    # ...
      +  zookeeper:
      +    # ...
      +
      +
      +
    • +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
    +

    OpenShift or Kubernetes increases the capacity of the selected persistent volumes in response to a request from the Cluster Operator. +When the resizing is complete, the Cluster Operator restarts all pods that use the resized persistent volumes. +This happens automatically.

    +
    +
  4. +
+
+
+
Additional resources
+

For more information about resizing persistent volumes in OpenShift or Kubernetes, see Resizing Persistent Volumes using Kubernetes.

+
+
+
+
JBOD storage overview
+
+

You can configure Strimzi to use JBOD, a data storage configuration of multiple disks or volumes. JBOD is one approach to providing increased data storage for Kafka brokers. It can also improve performance.

+
+
+

A JBOD configuration is described by one or more volumes, each of which can be either ephemeral or persistent. The rules and constraints for JBOD volume declarations are the same as those for ephemeral and persistent storage. For example, you cannot change the size of a persistent storage volume after it has been provisioned.

+
+
+
JBOD configuration
+
+

To use JBOD with Strimzi, the storage type must be set to jbod. The volumes property allows you to describe the disks that make up your JBOD storage array or configuration. The following fragment shows an example JBOD configuration:

+
+
+
+
# ...
+storage:
+  type: jbod
+  volumes:
+  - id: 0
+    type: persistent-claim
+    size: 100Gi
+    deleteClaim: false
+  - id: 1
+    type: persistent-claim
+    size: 100Gi
+    deleteClaim: false
+# ...
+
+
+
+

The ids cannot be changed once the JBOD volumes are created.

+
+
+

Users can add or remove volumes from the JBOD configuration.

+
+
+
+
JBOD and Persistent Volume Claims
+
+

When persistent storage is used to declare JBOD volumes, the naming scheme of the resulting Persistent Volume Claims is as follows:

+
+
+
+
data-id-cluster-name-kafka-idx
+
+

Where id is the ID of the volume used for storing data for Kafka broker pod idx.

+
+
+
+
+
+
Log directories
+
+

The JBOD volumes will be used by the Kafka brokers as log directories mounted into the following path:

+
+
+
+
/var/lib/kafka/data-id/kafka-log_idx_
+
+

Where id is the ID of the volume used for storing data for Kafka broker pod idx. For example /var/lib/kafka/data-0/kafka-log0.

+
+
+
+
+
+
+
Adding volumes to JBOD storage
+
+

This procedure describes how to add volumes to a Kafka cluster configured to use JBOD storage. +It cannot be applied to Kafka clusters configured to use any other storage type.

+
+
+ + + + + +
+
Note
+
+When adding a new volume under an id which was already used in the past and removed, you have to make sure that the previously used PersistentVolumeClaims have been deleted. +
+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka cluster with JBOD storage

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the spec.kafka.storage.volumes property in the Kafka resource. +Add the new volumes to the volumes array. +For example, add the new volume with id 2:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    storage:
    +      type: jbod
    +      volumes:
    +      - id: 0
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +      - id: 1
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +      - id: 2
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Create new topics or reassign existing partitions to the new disks.

    +
  6. +
+
+
+
Additional resources
+

For more information about reassigning topics, see Partition reassignment.

+
+
+
+
Removing volumes from JBOD storage
+
+

This procedure describes how to remove volumes from Kafka cluster configured to use JBOD storage. +It cannot be applied to Kafka clusters configured to use any other storage type. +The JBOD storage always has to contain at least one volume.

+
+
+ + + + + +
+
Important
+
+To avoid data loss, you have to move all partitions before removing the volumes. +
+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka cluster with JBOD storage with two or more volumes

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Reassign all partitions from the disks which are you going to remove. +Any data in partitions still assigned to the disks which are going to be removed might be lost.

    +
  2. +
  3. +

    Edit the spec.kafka.storage.volumes property in the Kafka resource. +Remove one or more volumes from the volumes array. +For example, remove the volumes with ids 1 and 2:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    storage:
    +      type: jbod
    +      volumes:
    +      - id: 0
    +        type: persistent-claim
    +        size: 100Gi
    +        deleteClaim: false
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+

For more information about reassigning topics, see Partition reassignment.

+
+
+
Additional resources
+ +
+
+
+
+

3.1.3. Kafka broker replicas

+
+

A Kafka cluster can run with many brokers. +You can configure the number of brokers used for the Kafka cluster in Kafka.spec.kafka.replicas. +The best number of brokers for your cluster has to be determined based on your specific use case.

+
+
+
Configuring the number of broker nodes
+
+

This procedure describes how to configure the number of Kafka broker nodes in a new cluster. +It only applies to new clusters with no partitions. +If your cluster already has topics defined, see +Scaling clusters.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka cluster with no topics defined yet

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the Kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    replicas: 3
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+

If your cluster already has topics defined, see +Scaling clusters.

+
+
+
+
+

3.1.4. Kafka broker configuration

+
+

Strimzi allows you to customize the configuration of the Kafka brokers in your Kafka cluster. +You can specify and configure most of the options listed in the "Broker Configs" section of the Apache Kafka documentation. You cannot configure options that are related to the following areas:

+
+
+
    +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener configuration

    +
  • +
  • +

    Broker ID configuration

    +
  • +
  • +

    Configuration of log data directories

    +
  • +
  • +

    Inter-broker communication

    +
  • +
  • +

    Zookeeper connectivity

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka broker configuration
+
+

A Kafka broker can be configured using the config property in Kafka.spec.kafka.

+
+
+

This property should contain the Kafka broker configuration options as keys with values in one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

You can specify and configure all of the options in the "Broker Configs" section of the Apache Kafka documentation apart from those managed directly by Strimzi. +Specifically, you are prevented from modifying all configuration options with keys equal to or starting with one of the following strings:

+
+
+
    +
  • +

    listeners

    +
  • +
  • +

    advertised.

    +
  • +
  • +

    broker.

    +
  • +
  • +

    listener.

    +
  • +
  • +

    host.name

    +
  • +
  • +

    port

    +
  • +
  • +

    inter.broker.listener.name

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    ssl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    password.

    +
  • +
  • +

    principal.builder.class

    +
  • +
  • +

    log.dir

    +
  • +
  • +

    zookeeper.connect

    +
  • +
  • +

    zookeeper.set.acl

    +
  • +
  • +

    authorizer.

    +
  • +
  • +

    super.user

    +
  • +
+
+
+

If the config property specifies a restricted option, it is ignored and a warning message is printed to the Cluster Operator log file. +All other supported options are passed to Kafka.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the provided config object. +If invalid configuration is provided, the Kafka cluster might not start or might become unstable. +In such cases, you must fix the configuration in the Kafka.spec.kafka.config object and the Cluster Operator will roll out the new configuration to all Kafka brokers. +
+
+
+
An example Kafka broker configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    config:
+      num.partitions: 1
+      num.recovery.threads.per.data.dir: 1
+      default.replication.factor: 3
+      offsets.topic.replication.factor: 3
+      transaction.state.log.replication.factor: 3
+      transaction.state.log.min.isr: 1
+      log.retention.hours: 168
+      log.segment.bytes: 1073741824
+      log.retention.check.interval.ms: 300000
+      num.network.threads: 3
+      num.io.threads: 8
+      socket.send.buffer.bytes: 102400
+      socket.receive.buffer.bytes: 102400
+      socket.request.max.bytes: 104857600
+      group.initial.rebalance.delay.ms: 0
+    # ...
+
+
+
+
+
Configuring Kafka brokers
+
+

You can configure an existing Kafka broker, or create a new Kafka broker with a specified configuration.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.kafka.config property in the Kafka resource, enter one or more Kafka configuration settings. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    config:
    +      default.replication.factor: 3
    +      offsets.topic.replication.factor: 3
    +      transaction.state.log.replication.factor: 3
    +      transaction.state.log.min.isr: 1
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
+
+

3.1.5. Kafka broker listeners

+
+

Strimzi allows users to configure the listeners which will be enabled in Kafka brokers. +Three types of listener are supported:

+
+
+
    +
  • +

    Plain listener on port 9092 (without encryption)

    +
  • +
  • +

    TLS listener on port 9093 (with encryption)

    +
  • +
  • +

    External listener on port 9094 for access from outside of OpenShift or Kubernetes

    +
  • +
+
+
+
Mutual TLS authentication for clients
+
+
Mutual TLS authentication
+
+

Mutual TLS authentication is always used for the communication between Kafka brokers and Zookeeper pods.Mutual authentication or two-way authentication is when both the server and the client present certificates. Strimzi can configure Kafka to use TLS (Transport Layer Security) to provide encrypted communication between Kafka brokers and clients either with or without mutual authentication. When you configure mutual authentication, the broker authenticates the client and the client authenticates the broker.

+
+
+ + + + + +
+
Note
+
+TLS authentication is more commonly one-way, with one party authenticating the identity of another. For example, when HTTPS is used between a web browser and a web server, the server obtains proof of the identity of the browser. +
+
+
+
+
When to use mutual TLS authentication for clients
+
+

Mutual TLS authentication is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using mutual TLS authentication

    +
  • +
  • +

    It is necessary to use the TLS certificates rather than passwords

    +
  • +
  • +

    You can reconfigure and restart client applications periodically so that they do not use expired certificates.

    +
  • +
+
+
+
+
+
SCRAM-SHA authentication
+
+

SCRAM (Salted Challenge Response Authentication Mechanism) is an authentication protocol that can establish mutual authentication using passwords. Strimzi can configure Kafka to use SASL (Simple Authentication and Security Layer) SCRAM-SHA-512 to provide authentication on both unencrypted and TLS-encrypted client connections. TLS authentication is always used internally between Kafka brokers and Zookeeper nodes. When used with a TLS client connection, the TLS protocol provides encryption, but is not used for authentication.

+
+
+

The following properties of SCRAM make it safe to use SCRAM-SHA even on unencrypted connections:

+
+
+
    +
  • +

    The passwords are not sent in the clear over the communication channel. +Instead the client and the server are each challenged by the other to offer proof that they know the password of the authenticating user.

    +
  • +
  • +

    The server and client each generate a new challenge for each authentication exchange. +This means that the exchange is resilient against replay attacks.

    +
  • +
+
+
+
Supported SCRAM credentials
+
+

Strimzi supports SCRAM-SHA-512 only. +When a KafkaUser.spec.authentication.type is configured with scram-sha-512 the User Operator will generate a random 12 character password consisting of upper and lowercase ASCII letters and numbers.

+
+
+
+
When to use SCRAM-SHA authentication for clients
+
+

SCRAM-SHA is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using SCRAM-SHA-512

    +
  • +
  • +

    It is necessary to use passwords rather than the TLS certificates

    +
  • +
  • +

    Authentication for unencrypted communication is required

    +
  • +
+
+
+
+
+
Kafka listeners
+
+

You can configure Kafka broker listeners using the listeners property in the Kafka.spec.kafka resource. +The listeners property contains three sub-properties:

+
+
+
    +
  • +

    plain

    +
  • +
  • +

    tls

    +
  • +
  • +

    external

    +
  • +
+
+
+

When none of these properties are defined, the listener will be disabled.

+
+
+
An example of listeners property with all listeners enabled
+
+
# ...
+listeners:
+  plain: {}
+  tls: {}
+  external:
+    type: loadbalancer
+# ...
+
+
+
+
An example of listeners property with only the plain listener enabled
+
+
# ...
+listeners:
+  plain: {}
+# ...
+
+
+
+
External listener
+
+

The external listener is used to connect to a Kafka cluster from outside of an OpenShift or Kubernetes environment. +Strimzi supports three types of external listeners:

+
+
+
    +
  • +

    route

    +
  • +
  • +

    loadbalancer

    +
  • +
  • +

    nodeport

    +
  • +
  • +

    ingress

    +
  • +
+
+
+Exposing Kafka using OpenShift Routes +
+

An external listener of type route exposes Kafka by using OpenShift Routes and the HAProxy router. +A dedicated Route is created for every Kafka broker pod. +An additional Route is created to serve as a Kafka bootstrap address. +Kafka clients can use these Routes to connect to Kafka on port 443.

+
+
+ + + + + +
+
Note
+
+Routes are available only on OpenShift. External listeners of type route cannot be used on Kubernetes. +
+
+
+

When exposing Kafka using OpenShift Routes, TLS encryption is always used.

+
+
+

By default, the route hosts are automatically assigned by OpenShift. +However, you can override the assigned route hosts by specifying the requested hosts in the overrides property. +Strimzi will not perform any validation that the requested hosts are available; you must ensure that they are free and can be used.

+
+
+
Example of an external listener of type routes configured with overrides for OpenShift route hosts
+
+
# ...
+listeners:
+  external:
+    type: route
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        host: bootstrap.myrouter.com
+      brokers:
+      - broker: 0
+        host: broker-0.myrouter.com
+      - broker: 1
+        host: broker-1.myrouter.com
+      - broker: 2
+        host: broker-2.myrouter.com
+# ...
+
+
+
+

For more information on using Routes to access Kafka, see Accessing Kafka using OpenShift routes.

+
+
+
+Exposing Kafka using loadbalancers +
+

External listeners of type loadbalancer expose Kafka by using Loadbalancer type Services. +A new loadbalancer service is created for every Kafka broker pod. +An additional loadbalancer is created to serve as a Kafka bootstrap address. +Loadbalancers listen to connections on port 9094.

+
+
+

By default, TLS encryption is enabled. +To disable it, set the tls field to false.

+
+
+

For more information on using loadbalancers to access Kafka, see Accessing Kafka using loadbalancers.

+
+
+
+Exposing Kafka using node ports +
+

External listeners of type nodeport expose Kafka by using NodePort type Services. +When exposing Kafka in this way, Kafka clients connect directly to the nodes of OpenShift or Kubernetes. +You must enable access to the ports on the OpenShift or Kubernetes nodes for each client (for example, in firewalls or security groups). +Each Kafka broker pod is then accessible on a separate port. +Additional NodePort type Service is created to serve as a Kafka bootstrap address.

+
+
+

When configuring the advertised addresses for the Kafka broker pods, Strimzi uses the address of the node on which the given pod is running. +When selecting the node address, the different address types are used with the following priority:

+
+
+
    +
  1. +

    ExternalDNS

    +
  2. +
  3. +

    ExternalIP

    +
  4. +
  5. +

    Hostname

    +
  6. +
  7. +

    InternalDNS

    +
  8. +
  9. +

    InternalIP

    +
  10. +
+
+
+

By default, TLS encryption is enabled. +To disable it, set the tls field to false.

+
+
+ + + + + +
+
Note
+
+TLS hostname verification is not currently supported when exposing Kafka clusters using node ports. +
+
+
+

By default, the port numbers used for the bootstrap and broker services are automatically assigned by OpenShift or Kubernetes. +However, you can override the assigned node ports by specifying the requested port numbers in the overrides property. +Strimzi does not perform any validation on the requested ports; you must ensure that they are free and available for use.

+
+
+
Example of an external listener configured with overrides for node ports
+
+
# ...
+listeners:
+  external:
+    type: nodeport
+    tls: true
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        nodePort: 32100
+      brokers:
+      - broker: 0
+        nodePort: 32000
+      - broker: 1
+        nodePort: 32001
+      - broker: 2
+        nodePort: 32002
+# ...
+
+
+
+

For more information on using node ports to access Kafka, see Accessing Kafka using node ports.

+
+
+
+Exposing Kafka using Kubernetes Ingress +
+

An external listener of type ingress exposes Kafka by using Kubernetes Ingress and the NGINX Ingress Controller for Kubernetes. +A dedicated Ingress resource is created for every Kafka broker pod. +An additional Ingress resource is created to serve as a Kafka bootstrap address. +Kafka clients can use these Ingress resources to connect to Kafka on port 443.

+
+
+ + + + + +
+
Note
+
+External listeners using Ingress have been currently tested only with the NGINX Ingress Controller for Kubernetes. +
+
+
+

Strimzi uses the TLS passthrough feature of the NGINX Ingress Controller for Kubernetes. +Make sure TLS passthrough is enabled in your NGINX Ingress Controller for Kubernetes deployment. +For more information about enabling TLS passthrough see TLS passthrough documentation. +Because it is using the TLS passthrough functionality, TLS encryption cannot be disabled when exposing Kafka using Ingress.

+
+
+

The Ingress controller does not assign any hostnames automatically. +You have to specify the hostnames which should be used by the bootstrap and per-broker services in the spec.kafka.listeners.external.configuration section. +You also have to make sure that the hostnames resolve to the Ingress endpoints. +Strimzi will not perform any validation that the requested hosts are available and properly routed to the Ingress endpoints.

+
+
+
Example of an external listener of type ingress
+
+
# ...
+listeners:
+  external:
+    type: ingress
+    authentication:
+      type: tls
+    configuration:
+      bootstrap:
+        host: bootstrap.myingress.com
+      brokers:
+      - broker: 0
+        host: broker-0.myingress.com
+      - broker: 1
+        host: broker-1.myingress.com
+      - broker: 2
+        host: broker-2.myingress.com
+# ...
+
+
+
+

For more information on using Ingress to access Kafka, see Accessing Kafka using Kubernetes ingress.

+
+
+
+Customizing advertised addresses on external listeners +
+

By default, Strimzi tries to automatically determine the hostnames and ports that your Kafka cluster advertises to its clients. +This is not sufficient in all situations, because the infrastructure on which Strimzi is running might not provide the right hostname or port through which Kafka can be accessed. +You can customize the advertised hostname and port in the overrides property of the external listener. +Strimzi will then automatically configure the advertised address in the Kafka brokers and add it to the broker certificates so it can be used for TLS hostname verification. +Overriding the advertised host and ports is available for all types of external listeners.

+
+
+
Example of an external listener configured with overrides for advertised addresses
+
+
# ...
+listeners:
+  external:
+    type: route
+    authentication:
+      type: tls
+    overrides:
+      brokers:
+      - broker: 0
+        advertisedHost: example.hostname.0
+        advertisedPort: 12340
+      - broker: 1
+        advertisedHost: example.hostname.1
+        advertisedPort: 12341
+      - broker: 2
+        advertisedHost: example.hostname.2
+        advertisedPort: 12342
+# ...
+
+
+
+

Additionally, you can specify the name of the bootstrap service. +This name will be added to the broker certificates and can be used for TLS hostname verification. +Adding the additional bootstrap address is available for all types of external listeners.

+
+
+
Example of an external listener configured with an additional bootstrap address
+
+
# ...
+listeners:
+  external:
+    type: route
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        address: example.hostname
+# ...
+
+
+
+
+Customizing DNS names of external listeners +
+

On loadbalancer +and ingress +listeners, you can use the dnsAnnotations property to add additional annotations to the +ingress resources or +load balancer services. +You can use these annotations to instrument DNS tooling such as External DNS, which automatically assigns DNS names to the +ingress resources or +services.

+
+
+
Example of an external listener of type loadbalancer using link:https://github.com/kubernetes-incubator/external-dns[External DNS^] annotations
+
+
# ...
+listeners:
+  external:
+    type: loadbalancer
+    authentication:
+      type: tls
+    overrides:
+      bootstrap:
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-bootstrap.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+      brokers:
+      - broker: 0
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-broker-0.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+      - broker: 1
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-broker-1.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+      - broker: 2
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: kafka-broker-2.mydomain.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+# ...
+
+
+
+
Example of an external listener of type ingress using link:https://github.com/kubernetes-incubator/external-dns[External DNS^] annotations
+
+
# ...
+listeners:
+  external:
+    type: ingress
+    authentication:
+      type: tls
+    configuration:
+      bootstrap:
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: bootstrap.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: bootstrap.myingress.com
+      brokers:
+      - broker: 0
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: broker-0.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: broker-0.myingress.com
+      - broker: 1
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: broker-1.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: broker-1.myingress.com
+      - broker: 2
+        dnsAnnotations:
+          external-dns.alpha.kubernetes.io/hostname: broker-2.myingress.com.
+          external-dns.alpha.kubernetes.io/ttl: "60"
+        host: broker-2.myingress.com
+# ...
+
+
+
+
+
+
Listener authentication
+
+

The listener sub-properties can also contain additional configuration. +Both listeners support the authentication property. This is used to specify an authentication mechanism specific to that listener:

+
+
+
    +
  • +

    mutual TLS authentication (only on the listeners with TLS encryption)

    +
  • +
  • +

    SCRAM-SHA authentication

    +
  • +
+
+
+

If no authentication property is specified then the listener does not authenticate clients which connect though that listener.

+
+
+
An example where the plain listener is configured for SCRAM-SHA authentication and the tls listener with mutual TLS authentication
+
+
# ...
+listeners:
+  plain:
+    authentication:
+      type: scram-sha-512
+  tls:
+    authentication:
+      type: tls
+  external:
+    type: loadbalancer
+    tls: true
+    authentication:
+      type: tls
+# ...
+
+
+
+

Authentication must be configured when using the User Operator to manage KafkaUsers.

+
+
+
+
Network policies
+
+

Strimzi automatically creates a NetworkPolicy resource for every listener that is enabled on a Kafka broker. +By default, a NetworkPolicy grants access to a listener to all applications and namespaces. +If you want to restrict access to a listener to only selected applications or namespaces, use the networkPolicyPeers field. +Each listener can have a different networkPolicyPeers configuration.

+
+
+

The following example shows a networkPolicyPeers configuration for a plain and a tls listener:

+
+
+
+
# ...
+listeners:
+      plain:
+        authentication:
+          type: scram-sha-512
+        networkPolicyPeers:
+          - podSelector:
+              matchLabels:
+                app: kafka-sasl-consumer
+          - podSelector:
+              matchLabels:
+                app: kafka-sasl-producer
+      tls:
+        authentication:
+          type: tls
+        networkPolicyPeers:
+          - namespaceSelector:
+              matchLabels:
+                project: myproject
+          - namespaceSelector:
+              matchLabels:
+                project: myproject2
+# ...
+
+
+
+

In the above example:

+
+
+
    +
  • +

    Only application pods matching the labels app: kafka-sasl-consumer and app: kafka-sasl-producer can connect to the plain listener. +The application pods must be running in the same namespace as the Kafka broker.

    +
  • +
  • +

    Only application pods running in namespaces matching the labels project: myproject and project: myproject2 can connect to the tls listener.

    +
  • +
+
+
+

The syntax of the networkPolicyPeers field is the same as the from field in the NetworkPolicy resource in Kubernetes. +For more information about the schema, see NetworkPolicyPeer API reference and the KafkaListeners schema reference.

+
+
+ + + + + +
+
Note
+
+Your configuration of OpenShift or Kubernetes must support Ingress NetworkPolicies in order to use network policies in Strimzi. +
+
+
+
+
+
Configuring Kafka listeners
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the listeners property in the Kafka.spec.kafka resource.

    +
    +

    An example configuration of the plain (unencrypted) listener without authentication:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      plain: {}
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using OpenShift routes
+
+
Prerequisites
+
    +
  • +

    An OpenShift cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type route.

    +
    +

    An example configuration with an external listener configured to use Routes:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: route
    +        # ...
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Find the address of the bootstrap Route.

    +
    +
    +
    oc get routes _cluster-name_-kafka-bootstrap -o=jsonpath='{.status.ingress[0].host}{"\n"}'
    +
    +
    +
    +

    Use the address together with port 443 in your Kafka client as the bootstrap address.

    +
    +
  6. +
  7. +

    Extract the public certificate of the broker certification authority

    +
    +
    +
    oc extract secret/_cluster-name_-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
    +

    Use the extracted certificate in your Kafka client to configure TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication.

    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using loadbalancers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type loadbalancer.

    +
    +

    An example configuration with an external listener configured to use loadbalancers:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: loadbalancer
    +        tls: true
    +        # ...
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Find the hostname of the bootstrap loadbalancer.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].hostname}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].hostname}{"\n"}'
    +
    +
    +
    +

    If no hostname was found (nothing was returned by the command), use the loadbalancer IP address.

    +
    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].ip}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.status.loadBalancer.ingress[0].ip}{"\n"}'
    +
    +
    +
    +

    Use the hostname or IP address together with port 9094 in your Kafka client as the bootstrap address.

    +
    +
  6. +
  7. +

    Unless TLS encryption was disabled, extract the public certificate of the broker certification authority.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get secret cluster-name-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc extract:

    +
    +
    +
    +
    oc extract secret/cluster-name-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
    +

    Use the extracted certificate in your Kafka client to configure TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication.

    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using node ports
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type nodeport.

    +
    +

    An example configuration with an external listener configured to use node ports:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: nodeport
    +        tls: true
    +        # ...
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Find the port number of the bootstrap service.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.spec.ports[0].nodePort}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get service cluster-name-kafka-external-bootstrap -o=jsonpath='{.spec.ports[0].nodePort}{"\n"}'
    +
    +
    +
    +

    The port should be used in the Kafka bootstrap address.

    +
    +
  6. +
  7. +

    Find the address of the OpenShift or Kubernetes node.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get node node-name -o=jsonpath='{range .status.addresses[*]}{.type}{"\t"}{.address}{"\n"}'
    +
    +
    +
    +

    On OpenShift this can be done using oc get:

    +
    +
    +
    +
    oc get node node-name -o=jsonpath='{range .status.addresses[*]}{.type}{"\t"}{.address}{"\n"}'
    +
    +
    +
    +

    If several different addresses are returned, select the address type you want based on the following order:

    +
    +
    +
      +
    1. +

      ExternalDNS

      +
    2. +
    3. +

      ExternalIP

      +
    4. +
    5. +

      Hostname

      +
    6. +
    7. +

      InternalDNS

      +
    8. +
    9. +

      InternalIP

      +
      +

      Use the address with the port found in the previous step in the Kafka bootstrap address.

      +
      +
    10. +
    +
    +
  8. +
  9. +

    Unless TLS encryption was disabled, extract the public certificate of the broker certification authority.

    +
    +

    On Kubernetes this can be done using kubectl get:

    +
    +
    +
    +
    kubectl get secret cluster-name-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc extract:

    +
    +
    +
    +
    oc extract secret/cluster-name-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
    +

    Use the extracted certificate in your Kafka client to configure TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication.

    +
    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
Accessing Kafka using Kubernetes ingress
+
+

This procedure shows how to access Strimzi Kafka clusters from outside of Kubernetes using Ingress.

+
+
+
Prerequisites
+ +
+
+
Procedure
+
    +
  1. +

    Deploy Kafka cluster with an external listener enabled and configured to the type ingress.

    +
    +

    An example configuration with an external listener configured to use Ingress:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      external:
    +        type: ingress
    +        authentication:
    +          type: tls
    +        configuration:
    +          bootstrap:
    +            host: bootstrap.myingress.com
    +          brokers:
    +          - broker: 0
    +            host: broker-0.myingress.com
    +          - broker: 1
    +            host: broker-1.myingress.com
    +          - broker: 2
    +            host: broker-2.myingress.com
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Make sure the hosts in the configuration section properly resolve to the Ingress endpoints.

    +
  4. +
  5. +

    Create or update the resource.

    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
  7. +

    Extract the public certificate of the broker certificate authority

    +
    +
    +
    oc extract secret/_cluster-name_-cluster-ca-cert --keys=ca.crt --to=- > ca.crt
    +
    +
    +
  8. +
  9. +

    Use the extracted certificate in your Kafka client to configure the TLS connection. +If you enabled any authentication, you will also need to configure SASL or TLS authentication. +Connect with your client to the host you specified in the configuration on port 443.

    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
Restricting access to Kafka listeners using networkPolicyPeers
+
+

You can restrict access to a listener to only selected applications by using the networkPolicyPeers field.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster with support for Ingress NetworkPolicies.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the Kafka resource.

    +
  2. +
  3. +

    In the networkPolicyPeers field, define the application pods or namespaces that will be allowed to access the Kafka cluster.

    +
    +

    For example, to configure a tls listener to allow connections only from application pods with the label app set to kafka-client:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      tls:
    +        networkPolicyPeers:
    +          - podSelector:
    +              matchLabels:
    +                app: kafka-client
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.6. Authentication and Authorization

+
+

Strimzi supports authentication and authorization. +Authentication can be configured independently for each listener. +Authorization is always configured for the whole Kafka cluster.

+
+
+
Authentication
+
+

Authentication is configured as part of the listener configuration in the authentication property. +The authentication mechanism is defined by the type field.

+
+
+

When the authentication property is missing, no authentication is enabled on a given listener. +The listener will accept all connections without authentication.

+
+
+

Supported authentication mechanisms:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL SCRAM-SHA-512

    +
  • +
+
+
+
TLS client authentication
+
+

TLS Client authentication is enabled by specifying the type as tls. +The TLS client authentication is supported only on the tls listener.

+
+
+
An example of authentication with type tls
+
+
# ...
+authentication:
+  type: tls
+# ...
+
+
+
+
+
+
Configuring authentication in Kafka brokers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.kafka.listeners property in the Kafka resource, add the authentication field to the listeners for which you want to enable authentication. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    listeners:
    +      tls:
    +        authentication:
    +          type: tls
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
Authorization
+
+

Authorization can be configured using the authorization property in the Kafka.spec.kafka resource. +When the authorization property is missing, no authorization will be enabled. +When authorization is enabled it will be applied for all enabled listeners. +The authorization method is defined by the type field.

+
+
+

Currently, the only supported authorization method is the Simple authorization.

+
+
+
Simple authorization
+
+

Simple authorization is using the SimpleAclAuthorizer plugin. +SimpleAclAuthorizer is the default authorization plugin which is part of Apache Kafka. +To enable simple authorization, the type field should be set to simple.

+
+
+
An example of Simple authorization
+
+
# ...
+authorization:
+  type: simple
+# ...
+
+
+
+
+
+
Configuring authorization in Kafka brokers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add or edit the authorization property in the Kafka.spec.kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    authorization:
    +      type: simple
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.7. Zookeeper replicas

+
+

Zookeeper clusters or ensembles usually run with an odd number of nodes, typically three, five, or seven.

+
+
+

The majority of nodes must be available in order to maintain an effective quorum. If the Zookeeper cluster loses its quorum, it will stop responding to clients and the Kafka brokers will stop working. Having a stable and highly available Zookeeper cluster is crucial for Strimzi.

+
+
+
+
Three-node cluster
+
+

A three-node Zookeeper cluster requires at least two nodes to be up and running in order to maintain the quorum. +It can tolerate only one node being unavailable.

+
+
Five-node cluster
+
+

A five-node Zookeeper cluster requires at least three nodes to be up and running in order to maintain the quorum. +It can tolerate two nodes being unavailable.

+
+
Seven-node cluster
+
+

A seven-node Zookeeper cluster requires at least four nodes to be up and running in order to maintain the quorum. +It can tolerate three nodes being unavailable.

+
+
+
+
+ + + + + +
+
Note
+
+For development purposes, it is also possible to run Zookeeper with a single node. +
+
+
+

Having more nodes does not necessarily mean better performance, as the costs to maintain the quorum will rise with the number of nodes in the cluster. +Depending on your availability requirements, you can decide for the number of nodes to use.

+
+
+
Number of Zookeeper nodes
+
+

The number of Zookeeper nodes can be configured using the replicas property in Kafka.spec.zookeeper.

+
+
+
An example showing replicas configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+    replicas: 3
+    # ...
+
+
+
+
+
Changing the number of Zookeeper replicas
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.zookeeper.replicas property in the Kafka resource, enter the number of replicated Zookeeper servers. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    replicas: 3
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
+
+

3.1.8. Zookeeper configuration

+
+

Strimzi allows you to customize the configuration of Apache Zookeeper nodes. +You can specify and configure most of the options listed in the Zookeeper documentation.

+
+
+

Options which cannot be configured are those related to the following areas:

+
+
+
    +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener configuration

    +
  • +
  • +

    Configuration of data directories

    +
  • +
  • +

    Zookeeper cluster composition

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Zookeeper configuration
+
+

Zookeeper nodes are configured using the config property in Kafka.spec.zookeeper. +This property contains the Zookeeper configuration options as keys. +The values can be described using one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in Zookeeper documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    server.

    +
  • +
  • +

    dataDir

    +
  • +
  • +

    dataLogDir

    +
  • +
  • +

    clientPort

    +
  • +
  • +

    authProvider

    +
  • +
  • +

    quorum.auth

    +
  • +
  • +

    requireClientAuthScheme

    +
  • +
+
+
+

When one of the forbidden options is present in the config property, it is ignored and a warning message is printed to the Custer Operator log file. +All other options are passed to Zookeeper.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the provided config object. +When invalid configuration is provided, the Zookeeper cluster might not start or might become unstable. +In such cases, the configuration in the Kafka.spec.zookeeper.config object should be fixed and the cluster operator will roll out the new configuration to all Zookeeper nodes. +
+
+
+

Selected options have default values:

+
+
+
    +
  • +

    timeTick with default value 2000

    +
  • +
  • +

    initLimit with default value 5

    +
  • +
  • +

    syncLimit with default value 2

    +
  • +
  • +

    autopurge.purgeInterval with default value 1

    +
  • +
+
+
+

These options will be automatically configured when they are not present in the Kafka.spec.zookeeper.config property.

+
+
+
An example showing Zookeeper configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+    config:
+      autopurge.snapRetainCount: 3
+      autopurge.purgeInterval: 1
+    # ...
+
+
+
+
+
Configuring Zookeeper
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the YAML configuration file that contains the Kafka resource specifying the cluster deployment.

    +
  2. +
  3. +

    In the spec.zookeeper.config property in the Kafka resource, enter one or more Zookeeper configuration settings. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    config:
    +      autopurge.snapRetainCount: 3
    +      autopurge.purgeInterval: 1
    +    # ...
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
    +

    where kafka.yaml is the YAML configuration file for the resource that you want to configure; for example, kafka-persistent.yaml.

    +
    +
  6. +
+
+
+
+
+

3.1.9. Zookeeper connection

+
+

Zookeeper services are secured with encryption and authentication and are not intended to be used by external applications that are not part of Strimzi.

+
+
+

However, if you want to use Kafka CLI tools that require a connection to Zookeeper, such as the kafka-topics tool, you can use a terminal inside a Kafka container and connect to the local end of the TLS tunnel to Zookeeper by using localhost:2181 as the Zookeeper address.

+
+
+
Connecting to Zookeeper from a terminal
+
+

Open a terminal inside a Kafka container to use Kafka CLI tools that require a Zookeeper connection.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster is available.

    +
  • +
  • +

    A kafka cluster is running.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Open the terminal using the OpenShift or Kubernetes console or run the exec command from your CLI.

    +
    +

    For example:

    +
    +
    +
    +
    kubectl exec -ti my-cluster-kafka-0 -- bin/kafka-topics.sh --list --zookeeper localhost:2181
    +
    +
    +
    +

    Be sure to use localhost:2181.

    +
    +
    +

    You can now run Kafka commands to Zookeeper.

    +
    +
  2. +
+
+
+
+
+

3.1.10. Entity Operator

+
+

The Entity Operator is responsible for managing different entities in a running Kafka cluster. +The currently supported entities are:

+
+
+
+
Kafka topics
+
+

managed by the Topic Operator.

+
+
Kafka users
+
+

managed by the User Operator

+
+
+
+
+

Both Topic and User Operators can be deployed on their own. +But the easiest way to deploy them is together with the Kafka cluster as part of the Entity Operator. +The Entity Operator can include either one or both of them depending on the configuration. +They will be automatically configured to manage the topics and users of the Kafka cluster with which they are deployed.

+
+
+

For more information about Topic Operator, see Topic Operator. +For more information about how to use Topic Operator to create or delete topics, see Using the Topic Operator.

+
+
+
Configuration
+
+

The Entity Operator can be configured using the entityOperator property in Kafka.spec

+
+
+

The entityOperator property supports several sub-properties:

+
+
+
    +
  • +

    tlsSidecar

    +
  • +
  • +

    topicOperator

    +
  • +
  • +

    userOperator

    +
  • +
  • +

    template

    +
  • +
+
+
+

The tlsSidecar property can be used to configure the TLS sidecar container which is used to communicate with Zookeeper. +For more details about configuring the TLS sidecar, see TLS sidecar.

+
+
+

The template property can be used to configure details of the Entity Operator pod, such as labels, annotations, affinity, tolerations and so on.

+
+
+

The topicOperator property contains the configuration of the Topic Operator. +When this option is missing, the Entity Operator is deployed without the Topic Operator.

+
+
+

The userOperator property contains the configuration of the User Operator. +When this option is missing, the Entity Operator is deployed without the User Operator.

+
+
+
Example of basic configuration enabling both operators
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+  entityOperator:
+    topicOperator: {}
+    userOperator: {}
+
+
+
+

When both topicOperator and userOperator properties are missing, the Entity Operator will be not deployed.

+
+
+
Topic Operator
+
+

Topic Operator deployment can be configured using additional options inside the topicOperator object. +The following options are supported:

+
+
+
+
watchedNamespace
+
+

The OpenShift or Kubernetes namespace in which the topic operator watches for KafkaTopics. +Default is the namespace where the Kafka cluster is deployed.

+
+
reconciliationIntervalSeconds
+
+

The interval between periodic reconciliations in seconds. +Default 90.

+
+
zookeeperSessionTimeoutSeconds
+
+

The Zookeeper session timeout in seconds. +Default 20.

+
+
topicMetadataMaxAttempts
+
+

The number of attempts at getting topic metadata from Kafka. +The time between each attempt is defined as an exponential back-off. +Consider increasing this value when topic creation could take more time due to the number of partitions or replicas. +Default 6.

+
+
image
+
+

The image property can be used to configure the container image which will be used. +For more details about configuring custom container images, see Container images.

+
+
resources
+
+

The resources property configures the amount of resources allocated to the Topic Operator. +For more details about resource request and limit configuration, see CPU and memory resources.

+
+
logging
+
+

The logging property configures the logging of the Topic Operator.

+
+

The Topic Operator has its own configurable logger:

+
+
+
    +
  • +

    rootLogger.level

    +
  • +
+
+
+
+
+
+
Example of Topic Operator configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+  entityOperator:
+    # ...
+    topicOperator:
+      watchedNamespace: my-topic-namespace
+      reconciliationIntervalSeconds: 60
+    # ...
+
+
+
+
+
User Operator
+
+

User Operator deployment can be configured using additional options inside the userOperator object. +The following options are supported:

+
+
+
+
watchedNamespace
+
+

The OpenShift or Kubernetes namespace in which the topic operator watches for KafkaUsers. +Default is the namespace where the Kafka cluster is deployed.

+
+
reconciliationIntervalSeconds
+
+

The interval between periodic reconciliations in seconds. +Default 120.

+
+
zookeeperSessionTimeoutSeconds
+
+

The Zookeeper session timeout in seconds. +Default 6.

+
+
image
+
+

The image property can be used to configure the container image which will be used. +For more details about configuring custom container images, see Container images.

+
+
resources
+
+

The resources property configures the amount of resources allocated to the User Operator. +For more details about resource request and limit configuration, see CPU and memory resources.

+
+
logging
+
+

The logging property configures the logging of the User Operator.

+
+

The User Operator has its own configurable logger:

+
+
+
    +
  • +

    rootLogger.level

    +
  • +
+
+
+
+
+
+
Example of Topic Operator configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+  zookeeper:
+    # ...
+  entityOperator:
+    # ...
+    userOperator:
+      watchedNamespace: my-user-namespace
+      reconciliationIntervalSeconds: 60
+    # ...
+
+
+
+
+
+
Configuring Entity Operator
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the entityOperator property in the Kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +  entityOperator:
    +    topicOperator:
    +      watchedNamespace: my-topic-namespace
    +      reconciliationIntervalSeconds: 60
    +    userOperator:
    +      watchedNamespace: my-user-namespace
    +      reconciliationIntervalSeconds: 60
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.11. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.12. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka loggers
+
+

Kafka has its own configurable loggers:

+
+
+
    +
  • +

    kafka.root.logger.level

    +
  • +
  • +

    log4j.logger.org.I0Itec.zkclient.ZkClient

    +
  • +
  • +

    log4j.logger.org.apache.zookeeper

    +
  • +
  • +

    log4j.logger.kafka

    +
  • +
  • +

    log4j.logger.org.apache.kafka

    +
  • +
  • +

    log4j.logger.kafka.request.logger

    +
  • +
  • +

    log4j.logger.kafka.network.Processor

    +
  • +
  • +

    log4j.logger.kafka.server.KafkaApis

    +
  • +
  • +

    log4j.logger.kafka.network.RequestChannel$

    +
  • +
  • +

    log4j.logger.kafka.controller

    +
  • +
  • +

    log4j.logger.kafka.log.LogCleaner

    +
  • +
  • +

    log4j.logger.state.change.logger

    +
  • +
  • +

    log4j.logger.kafka.authorizer.logger

    +
  • +
  • +

    Zookeeper

    +
    +
      +
    • +

      zookeeper.root.logger

      +
    • +
    +
    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    logging:
    +      type: inline
    +      loggers:
    +        logger.name: "INFO"
    +    # ...
    +  zookeeper:
    +    # ...
    +    logging:
    +      type: inline
    +      loggers:
    +        logger.name: "INFO"
    +    # ...
    +  entityOperator:
    +    # ...
    +    topicOperator:
    +      # ...
    +      logging:
    +        type: inline
    +        loggers:
    +          logger.name: "INFO"
    +    # ...
    +    # ...
    +    userOperator:
    +      # ...
    +      logging:
    +        type: inline
    +        loggers:
    +          logger.name: "INFO"
    +    # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    logging:
    +      type: external
    +      name: customConfigMap
    +    # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.1.13. Kafka rack awareness

+
+

The rack awareness feature in Strimzi helps to spread the Kafka broker pods and Kafka topic replicas across different racks. +Enabling rack awareness helps to improve availability of Kafka brokers and the topics they are hosting.

+
+
+ + + + + +
+
Note
+
+"Rack" might represent an availability zone, data center, or an actual rack in your data center. +
+
+
+
Configuring rack awareness in Kafka brokers
+
+

Kafka rack awareness can be configured in the rack property of Kafka.spec.kafka. +The rack object has one mandatory field named topologyKey. +This key needs to match one of the labels assigned to the OpenShift or Kubernetes cluster nodes. +The label is used by OpenShift or Kubernetes when scheduling the Kafka broker pods to nodes. +If the OpenShift or Kubernetes cluster is running on a cloud provider platform, that label should represent the availability zone where the node is running. +Usually, the nodes are labeled with failure-domain.beta.kubernetes.io/zone that can be easily used as the topologyKey value. +This has the effect of spreading the broker pods across zones, and also setting the brokers' broker.rack configuration parameter inside Kafka broker.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Consult your OpenShift or Kubernetes administrator regarding the node label that represents the zone / rack into which the node is deployed.

    +
  2. +
  3. +

    Edit the rack property in the Kafka resource using the label as the topology key.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    rack:
    +      topologyKey: failure-domain.beta.kubernetes.io/zone
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional Resources
+
    +
  • +

    For information about Configuring init container image for Kafka rack awareness, see Container images.

    +
  • +
+
+
+
+
+

3.1.14. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.15. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.16. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.17. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.18. TLS sidecar

+
+

A sidecar is a container that runs in a pod but serves a supporting purpose. +In Strimzi, the TLS sidecar uses TLS to encrypt and decrypt all communication between the various components and Zookeeper. +Zookeeper does not have native TLS support.

+
+
+

The TLS sidecar is used in:

+
+
+
    +
  • +

    Kafka brokers

    +
  • +
  • +

    Zookeeper nodes

    +
  • +
  • +

    Entity Operator

    +
  • +
+
+
+
TLS sidecar configuration
+
+

The TLS sidecar can be configured using the tlsSidecar property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.entityOperator

    +
  • +
+
+
+

The TLS sidecar supports the following additional options:

+
+
+
    +
  • +

    image

    +
  • +
  • +

    resources

    +
  • +
  • +

    logLevel

    +
  • +
  • +

    readinessProbe

    +
  • +
  • +

    livenessProbe

    +
  • +
+
+
+

The resources property can be used to specify the memory and CPU resources allocated for the TLS sidecar.

+
+
+

The image property can be used to configure the container image which will be used. +For more details about configuring custom container images, see Container images.

+
+
+

The logLevel property is used to specify the logging level. +Following logging levels are supported:

+
+
+
    +
  • +

    emerg

    +
  • +
  • +

    alert

    +
  • +
  • +

    crit

    +
  • +
  • +

    err

    +
  • +
  • +

    warning

    +
  • +
  • +

    notice

    +
  • +
  • +

    info

    +
  • +
  • +

    debug

    +
  • +
+
+
+

The default value is notice.

+
+
+

For more information about configuring the readinessProbe and livenessProbe properties for the healthchecks, see Healthcheck configurations.

+
+
+
Example of TLS sidecar configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    tlsSidecar:
+      image: my-org/my-image:latest
+      resources:
+        requests:
+          cpu: 200m
+          memory: 64Mi
+        limits:
+          cpu: 500m
+          memory: 128Mi
+      logLevel: debug
+      readinessProbe:
+        initialDelaySeconds: 15
+        timeoutSeconds: 5
+      livenessProbe:
+        initialDelaySeconds: 15
+        timeoutSeconds: 5
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring TLS sidecar
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the tlsSidecar property in the Kafka resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    tlsSidecar:
    +      resources:
    +        requests:
    +          cpu: 200m
    +          memory: 64Mi
    +        limits:
    +          cpu: 500m
    +          memory: 128Mi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.1.19. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.1.20. Performing a rolling update of a Kafka cluster

+
+

This procedure describes how to manually trigger a rolling update of an existing Kafka cluster by using an OpenShift or Kubernetes annotation.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the StatefulSet that controls the Kafka pods you want to manually update.

    +
    +

    For example, if your Kafka cluster is named my-cluster, the corresponding StatefulSet is named my-cluster-kafka.

    +
    +
  2. +
  3. +

    Annotate a StatefulSet resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate statefulset cluster-name-kafka strimzi.io/manual-rolling-update=true
    +
    +
    +
    +

    On OpenShift, use oc annotate:

    +
    +
    +
    +
    oc annotate statefulset cluster-name-kafka strimzi.io/manual-rolling-update=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation to occur (every two minutes by default). +A rolling update of all pods within the annotated StatefulSet is triggered, as long as the annotation was detected by the reconciliation process. +When the rolling update of all the pods is complete, the annotation is removed from the StatefulSet.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.21. Performing a rolling update of a Zookeeper cluster

+
+

This procedure describes how to manually trigger a rolling update of an existing Zookeeper cluster by using an OpenShift or Kubernetes annotation.

+
+
+
Prerequisites
+
    +
  • +

    A running Zookeeper cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the StatefulSet that controls the Zookeeper pods you want to manually update.

    +
    +

    For example, if your Kafka cluster is named my-cluster, the corresponding StatefulSet is named my-cluster-zookeeper.

    +
    +
  2. +
  3. +

    Annotate a StatefulSet resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate statefulset cluster-name-zookeeper strimzi.io/manual-rolling-update=true
    +
    +
    +
    +

    On OpenShift, use oc annotate:

    +
    +
    +
    +
    oc annotate statefulset cluster-name-zookeeper strimzi.io/manual-rolling-update=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation to occur (every two minutes by default). +A rolling update of all pods within the annotated StatefulSet is triggered, as long as the annotation was detected by the reconciliation process. +When the rolling update of all the pods is complete, the annotation is removed from the StatefulSet.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.22. Scaling clusters

+
+
Scaling Kafka clusters
+
+
Adding brokers to a cluster
+
+

The primary way of increasing throughput for a topic is to increase the number of partitions for that topic. +That works because the extra partitions allow the load of the topic to be shared between the different brokers in the cluster. +However, in situations where every broker is constrained by a particular resource (typically I/O) using more partitions will not result in increased throughput. +Instead, you need to add brokers to the cluster.

+
+
+

When you add an extra broker to the cluster, Kafka does not assign any partitions to it automatically. +You must decide which partitions to move from the existing brokers to the new broker.

+
+
+

Once the partitions have been redistributed between all the brokers, the resource utilization of each broker should be reduced.

+
+
+
+
Removing brokers from a cluster
+
+

Because Strimzi uses StatefulSets to manage broker pods, you cannot remove any pod from the cluster. +You can only remove one or more of the highest numbered pods from the cluster. +For example, in a cluster of 12 brokers the pods are named cluster-name-kafka-0 up to cluster-name-kafka-11. +If you decide to scale down by one broker, the cluster-name-kafka-11 will be removed.

+
+
+

Before you remove a broker from a cluster, ensure that it is not assigned to any partitions. +You should also decide which of the remaining brokers will be responsible for each of the partitions on the broker being decommissioned. +Once the broker has no assigned partitions, you can scale the cluster down safely.

+
+
+
+
+
Partition reassignment
+
+

The Topic Operator does not currently support reassigning replicas to different brokers, so it is necessary to connect directly to broker pods to reassign replicas to brokers.

+
+
+

Within a broker pod, the kafka-reassign-partitions.sh utility allows you to reassign partitions to different brokers.

+
+
+

It has three different modes:

+
+
+
+
--generate
+
+

Takes a set of topics and brokers and generates a reassignment JSON file which will result in the partitions of those topics being assigned to those brokers. +Because this operates on whole topics, it cannot be used when you just need to reassign some of the partitions of some topics.

+
+
--execute
+
+

Takes a reassignment JSON file and applies it to the partitions and brokers in the cluster. +Brokers that gain partitions as a result become followers of the partition leader. +For a given partition, once the new broker has caught up and joined the ISR (in-sync replicas) the old broker will stop being a follower and will delete its replica.

+
+
--verify
+
+

Using the same reassignment JSON file as the --execute step, --verify checks whether all of the partitions in the file have been moved to their intended brokers. +If the reassignment is complete, --verify also removes any throttles that are in effect. +Unless removed, throttles will continue to affect the cluster even after the reassignment has finished.

+
+
+
+
+

It is only possible to have one reassignment running in a cluster at any given time, and it is not possible to cancel a running reassignment. +If you need to cancel a reassignment, wait for it to complete and then perform another reassignment to revert the effects of the first reassignment. +The kafka-reassign-partitions.sh will print the reassignment JSON for this reversion as part of its output. +Very large reassignments should be broken down into a number of smaller reassignments in case there is a need to stop in-progress reassignment.

+
+
+
Reassignment JSON file
+
+

The reassignment JSON file has a specific structure:

+
+
+
+
{
+  "version": 1,
+  "partitions": [
+    <PartitionObjects>
+  ]
+}
+
+
+
+

Where <PartitionObjects> is a comma-separated list of objects like:

+
+
+
+
{
+  "topic": <TopicName>,
+  "partition": <Partition>,
+  "replicas": [ <AssignedBrokerIds> ]
+}
+
+
+
+ + + + + +
+
Note
+
+Although Kafka also supports a "log_dirs" property this should not be used in Strimzi. +
+
+
+

The following is an example reassignment JSON file that assigns topic topic-a, partition 4 to brokers 2, 4 and 7, and topic topic-b partition 2 to brokers 1, 5 and 7:

+
+
+
+
{
+  "version": 1,
+  "partitions": [
+    {
+      "topic": "topic-a",
+      "partition": 4,
+      "replicas": [2,4,7]
+    },
+    {
+      "topic": "topic-b",
+      "partition": 2,
+      "replicas": [1,5,7]
+    }
+  ]
+}
+
+
+
+

Partitions not included in the JSON are not changed.

+
+
+
+
Reassigning partitions between JBOD volumes
+
+

When using JBOD storage in your Kafka cluster, you can choose to reassign the partitions between specific volumes and their log directories (each volume has a single log directory). +To reassign a partition to a specific volume, add the log_dirs option to <PartitionObjects> in the reassignment JSON file.

+
+
+
+
{
+  "topic": <TopicName>,
+  "partition": <Partition>,
+  "replicas": [ <AssignedBrokerIds> ],
+  "log_dirs": [ <AssignedLogDirs> ]
+}
+
+
+
+

The log_dirs object should contain the same number of log directories as the number of replicas specified in the replicas object. +The value should be either an absolute path to the log directory, or the any keyword.

+
+
+

For example:

+
+
+
+
{
+      "topic": "topic-a",
+      "partition": 4,
+      "replicas": [2,4,7].
+      "log_dirs": [ "/var/lib/kafka/data-0/kafka-log2", "/var/lib/kafka/data-0/kafka-log4", "/var/lib/kafka/data-0/kafka-log7" ]
+}
+
+
+
+
+
+
Generating reassignment JSON files
+
+

This procedure describes how to generate a reassignment JSON file that reassigns all the partitions for a given set of topics using the kafka-reassign-partitions.sh tool.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource

    +
  • +
  • +

    A set of topics to reassign the partitions of

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a JSON file named topics.json that lists the topics to move. +It must have the following structure:

    +
    +
    +
    {
    +  "version": 1,
    +  "topics": [
    +    <TopicObjects>
    +  ]
    +}
    +
    +
    +
    +

    where <TopicObjects> is a comma-separated list of objects like:

    +
    +
    +
    +
    {
    +  "topic": <TopicName>
    +}
    +
    +
    +
    +

    For example if you want to reassign all the partitions of topic-a and topic-b, you would need to prepare a topics.json file like this:

    +
    +
    +
    +
    {
    +  "version": 1,
    +  "topics": [
    +    { "topic": "topic-a"},
    +    { "topic": "topic-b"}
    +  ]
    +}
    +
    +
    +
  2. +
  3. +

    Copy the topics.json file to one of the broker pods:

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    cat topics.json | kubectl exec -c kafka <BrokerPod> -i -- \
    +  /bin/bash -c \
    +  'cat > /tmp/topics.json'
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    cat topics.json | oc rsh -c kafka <BrokerPod> /bin/bash -c \
    +  'cat > /tmp/topics.json'
    +
    +
    +
  4. +
  5. +

    Use the kafka-reassign-partitions.sh` command to generate the reassignment JSON.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec <BrokerPod> -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --topics-to-move-json-file /tmp/topics.json \
    +  --broker-list <BrokerList> \
    +  --generate
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka <BrokerPod> \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --topics-to-move-json-file /tmp/topics.json \
    +  --broker-list <BrokerList> \
    +  --generate
    +
    +
    +
    +

    For example, to move all the partitions of topic-a and topic-b to brokers 4 and 7

    +
    +
    +
    +
    oc rsh -c kafka _<BrokerPod>_ \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --topics-to-move-json-file /tmp/topics.json \
    +  --broker-list 4,7 \
    +  --generate
    +
    +
    +
  6. +
+
+
+
+
Creating reassignment JSON files manually
+
+

You can manually create the reassignment JSON file if you want to move specific partitions.

+
+
+
+
Reassignment throttles
+
+

Partition reassignment can be a slow process because it involves transferring large amounts of data between brokers. +To avoid a detrimental impact on clients, you can throttle the reassignment process. +This might cause the reassignment to take longer to complete.

+
+
+
    +
  • +

    If the throttle is too low then the newly assigned brokers will not be able to keep up with records being published and the reassignment will never complete.

    +
  • +
  • +

    If the throttle is too high then clients will be impacted.

    +
  • +
+
+
+

For example, for producers, this could manifest as higher than normal latency waiting for acknowledgement. For consumers, this could manifest as a drop in throughput caused by higher latency between polls.

+
+
+
+
Scaling up a Kafka cluster
+
+

This procedure describes how to increase the number of brokers in a Kafka cluster.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster.

    +
  • +
  • +

    A reassignment JSON file named reassignment.json that describes how partitions should be reassigned to brokers in the enlarged cluster.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add as many new brokers as you need by increasing the Kafka.spec.kafka.replicas configuration option.

    +
  2. +
  3. +

    Verify that the new broker pods have started.

    +
  4. +
  5. +

    Copy the reassignment.json file to the broker pod on which you will later execute the commands:

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    cat reassignment.json | \
    +  kubectl exec broker-pod -c kafka -i -- /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka broker-pod /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    For example:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka my-cluster-kafka-0 /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
  6. +
  7. +

    Execute the partition reassignment using the kafka-reassign-partitions.sh command line tool from the same broker pod.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    If you are going to throttle replication you can also pass the --throttle option with an inter-broker throttled rate in bytes per second. For example:

    +
    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    This command will print out two reassignment JSON objects. +The first records the current assignment for the partitions being moved. +You should save this to a local file (not a file in the pod) in case you need to revert the reassignment later on. +The second JSON object is the target reassignment you have passed in your reassignment JSON file.

    +
    +
  8. +
  9. +

    If you need to change the throttle during reassignment you can use the same command line with a different throttled rate. For example:

    +
    +

    On Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
  10. +
  11. +

    Periodically verify whether the reassignment has completed using the kafka-reassign-partitions.sh command line tool from any of the broker pods. This is the same command as the previous step but with the --verify option instead of the --execute option.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on OpenShift,

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
  12. +
  13. +

    The reassignment has finished when the --verify command reports each of the partitions being moved as completed successfully. +This final --verify will also have the effect of removing any reassignment throttles. +You can now delete the revert file if you saved the JSON for reverting the assignment to their original brokers.

    +
  14. +
+
+
+
+
Scaling down a Kafka cluster
+
+
Additional resources
+

This procedure describes how to decrease the number of brokers in a Kafka cluster.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster.

    +
  • +
  • +

    A reassignment JSON file named reassignment.json describing how partitions should be reassigned to brokers in the cluster once the broker(s) in the highest numbered Pod(s) have been removed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Copy the reassignment.json file to the broker pod on which you will later execute the commands:

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    cat reassignment.json | \
    +  kubectl exec broker-pod -c kafka -i -- /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka broker-pod /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
    +

    For example:

    +
    +
    +
    +
    cat reassignment.json | \
    +  oc rsh -c kafka my-cluster-kafka-0 /bin/bash -c \
    +  'cat > /tmp/reassignment.json'
    +
    +
    +
  2. +
  3. +

    Execute the partition reassignment using the kafka-reassign-partitions.sh command line tool from the same broker pod.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --execute
    +
    +
    +
    +

    If you are going to throttle replication you can also pass the --throttle option with an inter-broker throttled rate in bytes per second. For example:

    +
    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 5000000 \
    +  --execute
    +
    +
    +
    +

    This command will print out two reassignment JSON objects. +The first records the current assignment for the partitions being moved. +You should save this to a local file (not a file in the pod) in case you need to revert the reassignment later on. +The second JSON object is the target reassignment you have passed in your reassignment JSON file.

    +
    +
  4. +
  5. +

    If you need to change the throttle during reassignment you can use the same command line with a different throttled rate. For example:

    +
    +

    On Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --throttle 10000000 \
    +  --execute
    +
    +
    +
  6. +
  7. +

    Periodically verify whether the reassignment has completed using the kafka-reassign-partitions.sh command line tool from any of the broker pods. This is the same command as the previous step but with the --verify option instead of the --execute option.

    +
    +

    On Kubernetes:

    +
    +
    +
    +
    kubectl exec broker-pod -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    On OpenShift:

    +
    +
    +
    +
    oc rsh -c kafka broker-pod \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on Kubernetes,

    +
    +
    +
    +
    kubectl exec my-cluster-kafka-0 -c kafka -it -- \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
    +

    For example, on OpenShift,

    +
    +
    +
    +
    oc rsh -c kafka my-cluster-kafka-0 \
    +  bin/kafka-reassign-partitions.sh --zookeeper localhost:2181 \
    +  --reassignment-json-file /tmp/reassignment.json \
    +  --verify
    +
    +
    +
  8. +
  9. +

    The reassignment has finished when the --verify command reports each of the partitions being moved as completed successfully. +This final --verify will also have the effect of removing any reassignment throttles. +You can now delete the revert file if you saved the JSON for reverting the assignment to their original brokers.

    +
  10. +
  11. +

    Once all the partition reassignments have finished, the broker(s) being removed should not have responsibility for any of the partitions in the cluster. +You can verify this by checking that the broker’s data log directory does not contain any live partition logs. +If the log directory on the broker contains a directory that does not match the extended regular expression [a-zA-Z0-9.-]+\.[a-z0-9]+-delete$ then the broker still has live partitions and it should not be stopped.

    +
    +

    You can check this by executing the command:

    +
    +
    +
    +
    oc rsh <BrokerN> -c kafka /bin/bash -c \
    +  "ls -l /var/lib/kafka/kafka-log_<N>_ | grep -E '^d' | grep -vE '[a-zA-Z0-9.-]+\.[a-z0-9]+-delete$'"
    +
    +
    +
    +

    where N is the number of the Pod(s) being deleted.

    +
    +
    +

    If the above command prints any output then the broker still has live partitions. +In this case, either the reassignment has not finished, or the reassignment JSON file was incorrect.

    +
    +
  12. +
  13. +

    Once you have confirmed that the broker has no live partitions you can edit the Kafka.spec.kafka.replicas of your Kafka resource, which will scale down the StatefulSet, deleting the highest numbered broker Pod(s).

    +
  14. +
+
+
+
+
+

3.1.23. Deleting Kafka nodes manually

+
+
Additional resources
+

This procedure describes how to delete an existing Kafka node by using an OpenShift or Kubernetes annotation. +Deleting a Kafka node consists of deleting both the Pod on which the Kafka broker is running and the related PersistentVolumeClaim (if the cluster was deployed with persistent storage). +After deletion, the Pod and its related PersistentVolumeClaim are recreated automatically.

+
+
+ + + + + +
+
Warning
+
+Deleting a PersistentVolumeClaim can cause permanent data loss. The following procedure should only be performed if you have encountered storage issues. +
+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the Pod that you want to delete.

    +
    +

    For example, if the cluster is named cluster-name, the pods are named cluster-name-kafka-index, where index starts at zero and ends at the total number of replicas.

    +
    +
  2. +
  3. +

    Annotate the Pod resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate pod cluster-name-kafka-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
    +

    On OpenShift use oc annotate:

    +
    +
    +
    +
    oc annotate pod cluster-name-kafka-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation, when the annotated pod with the underlying persistent volume claim will be deleted and then recreated.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.24. Deleting Zookeeper nodes manually

+
+

This procedure describes how to delete an existing Zookeeper node by using an OpenShift or Kubernetes annotation. +Deleting a Zookeeper node consists of deleting both the Pod on which Zookeeper is running and the related PersistentVolumeClaim (if the cluster was deployed with persistent storage). +After deletion, the Pod and its related PersistentVolumeClaim are recreated automatically.

+
+
+ + + + + +
+
Warning
+
+Deleting a PersistentVolumeClaim can cause permanent data loss. The following procedure should only be performed if you have encountered storage issues. +
+
+
+
Prerequisites
+
    +
  • +

    A running Zookeeper cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Find the name of the Pod that you want to delete.

    +
    +

    For example, if the cluster is named cluster-name, the pods are named cluster-name-zookeeper-index, where index starts at zero and ends at the total number of replicas.

    +
    +
  2. +
  3. +

    Annotate the Pod resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes use kubectl annotate:

    +
    +
    +
    +
    kubectl annotate pod cluster-name-zookeeper-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
    +

    On OpenShift use oc annotate:

    +
    +
    +
    +
    oc annotate pod cluster-name-zookeeper-index strimzi.io/delete-pod-and-pvc=true
    +
    +
    +
  4. +
  5. +

    Wait for the next reconciliation, when the annotated pod with the underlying persistent volume claim will be deleted and then recreated.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

3.1.25. Maintenance time windows for rolling updates

+
+

Maintenance time windows allow you to schedule certain rolling updates of your Kafka and Zookeeper clusters to start at a convenient time.

+
+
+
Maintenance time windows overview
+
+

In most cases, the Cluster Operator only updates your Kafka or Zookeeper clusters in response to changes to the corresponding Kafka resource. +This enables you to plan when to apply changes to a Kafka resource to minimize the impact on Kafka client applications.

+
+
+

However, some updates to your Kafka and Zookeeper clusters can happen without any corresponding change to the Kafka resource. +For example, the Cluster Operator will need to perform a rolling restart if a CA (Certificate Authority) certificate that it manages is close to expiry.

+
+
+

While a rolling restart of the pods should not affect availability of the service (assuming correct broker and topic configurations), it could affect performance of the Kafka client applications. +Maintenance time windows allow you to schedule such spontaneous rolling updates of your Kafka and Zookeeper clusters to start at a convenient time. +If maintenance time windows are not configured for a cluster then it is possible that such spontaneous rolling updates will happen at an inconvenient time, such as during a predictable period of high load.

+
+
+
+
Maintenance time window definition
+
+

You configure maintenance time windows by entering an array of strings in the Kafka.spec.maintenanceTimeWindows property. +Each string is a cron expression interpreted as being in UTC (Coordinated Universal Time, which for practical purposes is the same as Greenwich Mean Time).

+
+
+

The following example configures a single maintenance time window that starts at midnight and ends at 01:59am (UTC), on Sundays, Mondays, Tuesdays, Wednesdays, and Thursdays:

+
+
+
+
# ...
+maintenanceTimeWindows:
+  - "* * 0-1 ? * SUN,MON,TUE,WED,THU *"
+# ...
+
+
+
+

In practice, maintenance windows should be set in conjunction with the Kafka.spec.clusterCa.renewalDays and Kafka.spec.clientsCa.renewalDays properties of the Kafka resource, to ensure that the necessary CA certificate renewal can be completed in the configured maintenance time windows.

+
+
+ + + + + +
+
Note
+
+Strimzi does not schedule maintenance operations exactly according to the given windows. Instead, for each reconciliation, it checks whether a maintenance window is currently "open". +This means that the start of maintenance operations within a given time window can be delayed by up to the Cluster Operator reconciliation interval. +Maintenance time windows must therefore be at least this long. +
+
+
+
Additional resources
+ +
+
+
+
Configuring a maintenance time window
+
+

You can configure a maintenance time window for rolling updates triggered by supported processes.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster.

    +
  • +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add or edit the maintenanceTimeWindows property in the Kafka resource. +For example to allow maintenance between 0800 and 1059 and between 1400 and 1559 you would set the maintenanceTimeWindows as shown below:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +  maintenanceTimeWindows:
    +    - "* * 8-10 * * ?"
    +    - "* * 14-15 * * ?"
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.1.26. List of resources created as part of Kafka cluster

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
cluster-name-kafka
+
+

StatefulSet which is in charge of managing the Kafka broker pods.

+
+
cluster-name-kafka-brokers
+
+

Service needed to have DNS resolve the Kafka broker pods IP addresses directly.

+
+
cluster-name-kafka-bootstrap
+
+

Service can be used as bootstrap servers for Kafka clients.

+
+
cluster-name-kafka-external-bootstrap
+
+

Bootstrap service for clients connecting from outside of the OpenShift or Kubernetes cluster. This resource will be created only when external listener is enabled.

+
+
cluster-name-kafka-pod-id
+
+

Service used to route traffic from outside of the OpenShift or Kubernetes cluster to individual pods. This resource will be created only when external listener is enabled.

+
+
cluster-name-kafka-external-bootstrap
+
+

Bootstrap route for clients connecting from outside of the OpenShift or Kubernetes cluster. This resource will be created only when external listener is enabled and set to type route.

+
+
cluster-name-kafka-pod-id
+
+

Route for traffic from outside of the OpenShift or Kubernetes cluster to individual pods. This resource will be created only when external listener is enabled and set to type route.

+
+
cluster-name-kafka-config
+
+

ConfigMap which contains the Kafka ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
cluster-name-kafka-brokers
+
+

Secret with Kafka broker keys.

+
+
cluster-name-kafka
+
+

Service account used by the Kafka brokers.

+
+
cluster-name-kafka
+
+

Pod Disruption Budget configured for the Kafka brokers.

+
+
strimzi-namespace-name-cluster-name-kafka-init
+
+

Cluster role binding used by the Kafka brokers.

+
+
cluster-name-zookeeper
+
+

StatefulSet which is in charge of managing the Zookeeper node pods.

+
+
cluster-name-zookeeper-nodes
+
+

Service needed to have DNS resolve the Zookeeper pods IP addresses directly.

+
+
cluster-name-zookeeper-client
+
+

Service used by Kafka brokers to connect to Zookeeper nodes as clients.

+
+
cluster-name-zookeeper-config
+
+

ConfigMap which contains the Zookeeper ancillary configuration and is mounted as a volume by the Zookeeper node pods.

+
+
cluster-name-zookeeper-nodes
+
+

Secret with Zookeeper node keys.

+
+
cluster-name-zookeeper
+
+

Pod Disruption Budget configured for the Zookeeper nodes.

+
+
cluster-name-entity-operator
+
+

Deployment with Topic and User Operators. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-topic-operator-config
+
+

Configmap with ancillary configuration for Topic Operators. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-user-operator-config
+
+

Configmap with ancillary configuration for User Operators. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-operator-certs
+
+

Secret with Entitiy operators keys for communication with Kafka and Zookeeper. This resource will be created only if Cluster Operator deployed Entity Operator.

+
+
cluster-name-entity-operator
+
+

Service account used by the Entity Operator.

+
+
strimzi-cluster-name-topic-operator
+
+

Role binding used by the Entity Operator.

+
+
strimzi-cluster-name-user-operator
+
+

Role binding used by the Entity Operator.

+
+
cluster-name-cluster-ca
+
+

Secret with the Cluster CA used to encrypt the cluster communication.

+
+
cluster-name-cluster-ca-cert
+
+

Secret with the Cluster CA public key. This key can be used to verify the identity of the Kafka brokers.

+
+
cluster-name-clients-ca
+
+

Secret with the Clients CA used to encrypt the communication between Kafka brokers and Kafka clients.

+
+
cluster-name-clients-ca-cert
+
+

Secret with the Clients CA public key. This key can be used to verify the identity of the Kafka brokers.

+
+
cluster-name-cluster-operator-certs
+
+

Secret with Cluster operators keys for communication with Kafka and Zookeeper.

+
+
data-cluster-name-kafka-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Kafka broker pod idx. This resource will be created only if persistent storage is selected for provisioning persistent volumes to store data.

+
+
data-id-cluster-name-kafka-idx
+
+

Persistent Volume Claim for the volume id used for storing data for the Kafka broker pod idx. This resource is only created if persistent storage is selected for JBOD volumes when provisioning persistent volumes to store data.

+
+
data-cluster-name-zookeeper-idx
+
+

Persistent Volume Claim for the volume used for storing data for the Zookeeper node pod idx. This resource will be created only if persistent storage is selected for provisioning persistent volumes to store data.

+
+
+
+
+
+
+

3.2. Kafka Connect cluster configuration

+
+

The full schema of the KafkaConnect resource is described in the KafkaConnect schema reference. +All labels that are applied to the desired KafkaConnect resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka Connect cluster. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.2.1. Replicas

+
+

Kafka Connect clusters can run multiple of nodes. +The number of nodes is defined in the KafkaConnect and KafkaConnectS2I resources. +Running a Kafka Connect cluster with multiple nodes can provide better availability and scalability. +However, when running Kafka Connect on OpenShift or Kubernetes it is not absolutely necessary to run multiple nodes of Kafka Connect for high availability. +If a node where Kafka Connect is deployed to crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Connect pod to a different node. +However, running Kafka Connect with multiple nodes can provide faster failover times, because the other nodes will be up and running already.

+
+
+
Configuring the number of nodes
+
+

The number of Kafka Connect nodes is configured using the replicas property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.2. Bootstrap servers

+
+

A Kafka Connect cluster always works in combination with a Kafka cluster. +A Kafka cluster is specified as a list of bootstrap servers. +On OpenShift or Kubernetes, the list must ideally contain the Kafka cluster bootstrap service named cluster-name-kafka-bootstrap, and a port of 9092 for plain traffic or 9093 for encrypted traffic.

+
+
+

The list of bootstrap servers is configured in the bootstrapServers property in KafkaConnect.spec and KafkaConnectS2I.spec. The servers must be defined as a comma-separated list specifying one or more Kafka brokers, or a service pointing to Kafka brokers specified as a hostname:_port_ pairs.

+
+
+

When using Kafka Connect with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the bootstrapServers property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka-bootstrap:9092
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.3. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Connect tries to connect to Kafka brokers using a plain text connection. +If you prefer to use TLS, additional configuration is required.

+
+
+
TLS support in Kafka Connect
+
+

TLS support is configured in the tls property in KafkaConnect.spec and KafkaConnectS2I.spec. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates must be stored in X509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-other-secret
+        certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnectS2I
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-secret
+        certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication, and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used in authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
  2. +
  3. +

    Edit the tls property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  tls:
    +    trustedCertificates:
    +      - secretName: my-cluster-cluster-cert
    +        certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.2.4. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Connect will try to connect to Kafka brokers without authentication. +Authentication is enabled through the KafkaConnect and KafkaConnectS2I resources.

+
+
+
Authentication support in Kafka Connect
+
+

Authentication is configured through the authentication property in KafkaConnect.spec and KafkaConnectS2I.spec. +The authentication property specifies the type of the authentication mechanisms which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Connect see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: tls
+    certificateAndKey:
+      secretName: my-secret
+      certificate: public.crt
+      key: private.key
+  # ...
+
+
+
+
+
SASL based SCRAM-SHA-512 authentication
+
+

To configure Kafka Connect to use SASL-based SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SASL based SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: scram-sha-512
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
SASL based PLAIN authentication
+
+

To configure Kafka Connect to use SASL-based PLAIN authentication, set the type property to plain. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of such a Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example showing SASL based PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: plain
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: tls
    +    certificateAndKey:
    +      secretName: my-secret
    +      certificate: my-public.crt
    +      key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    Username of the user which should be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication and the key under which the password is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used in authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password>.txt
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: scram-sha-512
    +    username: _<my-username>_
    +    passwordSecret:
    +      secretName: _<my-secret>_
    +      password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.2.5. Kafka Connect configuration

+
+

Strimzi allows you to customize the configuration of Apache Kafka Connect nodes by editing certain options listed in Apache Kafka documentation.

+
+
+

Configuration options that cannot be configured relate to:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener / REST interface configuration

    +
  • +
  • +

    Plugin path configuration

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka Connect configuration
+
+

Kafka Connect is configured using the config property in KafkaConnect.spec and KafkaConnectS2I.spec. +This property contains the Kafka Connect configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

You can specify and configure the options listed in the Apache Kafka documentation with the exception of those options that are managed directly by Strimzi. +Specifically, configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    listeners

    +
  • +
  • +

    plugin.path

    +
  • +
  • +

    rest.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
+
+
+

When a forbidden option is present in the config property, it is ignored and a warning message is printed to the Custer Operator log file. +All other options are passed to Kafka Connect.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Connect cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config object, then the Cluster Operator can roll out the new configuration to all Kafka Connect nodes. +
+
+
+

Certain options have default values:

+
+
+
    +
  • +

    group.id with default value connect-cluster

    +
  • +
  • +

    offset.storage.topic with default value connect-cluster-offsets

    +
  • +
  • +

    config.storage.topic with default value connect-cluster-configs

    +
  • +
  • +

    status.storage.topic with default value connect-cluster-status

    +
  • +
  • +

    key.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
  • +

    value.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
+
+
+

These options are automatically configured in case they are not present in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config properties.

+
+
+
Example Kafka Connect configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  config:
+    group.id: my-connect-cluster
+    offset.storage.topic: my-connect-cluster-offsets
+    config.storage.topic: my-connect-cluster-configs
+    status.storage.topic: my-connect-cluster-status
+    key.converter: org.apache.kafka.connect.json.JsonConverter
+    value.converter: org.apache.kafka.connect.json.JsonConverter
+    key.converter.schemas.enable: true
+    value.converter.schemas.enable: true
+    config.storage.replication.factor: 3
+    offset.storage.replication.factor: 3
+    status.storage.replication.factor: 3
+  # ...
+
+
+
+
+
Configuring Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the config property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    group.id: my-connect-cluster
    +    offset.storage.topic: my-connect-cluster-offsets
    +    config.storage.topic: my-connect-cluster-configs
    +    status.storage.topic: my-connect-cluster-status
    +    key.converter: org.apache.kafka.connect.json.JsonConverter
    +    value.converter: org.apache.kafka.connect.json.JsonConverter
    +    key.converter.schemas.enable: true
    +    value.converter.schemas.enable: true
    +    config.storage.replication.factor: 3
    +    offset.storage.replication.factor: 3
    +    status.storage.replication.factor: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.6. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.2.7. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka Connect loggers
+
+

Kafka Connect has its own configurable loggers:

+
+
+
    +
  • +

    connect.root.logger.level

    +
  • +
  • +

    log4j.logger.org.apache.zookeeper

    +
  • +
  • +

    log4j.logger.org.I0Itec.zkclient

    +
  • +
  • +

    log4j.logger.org.reflections

    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +spec:
    +  # ...
    +  logging:
    +    type: inline
    +    loggers:
    +      logger.name: "INFO"
    +  # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +spec:
    +  # ...
    +  logging:
    +    type: external
    +    name: customConfigMap
    +  # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.2.8. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.9. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.10. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.11. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.2.12. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.2.13. Using external configuration and secrets

+
+

Kafka Connect connectors are configured using an HTTP REST interface. +The connector configuration is passed to Kafka Connect as part of an HTTP request and stored within Kafka itself.

+
+
+

Some parts of the configuration of a Kafka Connect connector can be externalized using ConfigMaps or Secrets. +You can then reference the configuration values in HTTP REST commands (this keeps the configuration separate and more secure, if needed). +This method applies especially to confidential data, such as usernames, passwords, or certificates.

+
+
+

ConfigMaps and Secrets are standard OpenShift or Kubernetes resources used for storing of configurations and confidential data.

+
+
+
Storing connector configurations externally
+
+

You can mount ConfigMaps or Secrets into a Kafka Connect pod as volumes or environment variables. +Volumes and environment variables are configured in the externalConfiguration property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
External configuration as environment variables
+
+

The env property is used to specify one or more environment variables. +These variables can contain a value from either a ConfigMap or a Secret.

+
+
+ + + + + +
+
Note
+
+The names of user-defined environment variables cannot start with KAFKA_ or STRIMZI_. +
+
+
+

To mount a value from a Secret to an environment variable, use the valueFrom property and the secretKeyRef as shown in the following example.

+
+
+
Example of an environment variable set to a value from a Secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          secretKeyRef:
+            name: my-secret
+            key: my-key
+
+
+
+

A common use case for mounting Secrets to environment variables is when your connector needs to communicate with Amazon AWS and needs to read the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables with credentials.

+
+
+

To mount a value from a ConfigMap to an environment variable, use configMapKeyRef in the valueFrom property as shown in the following example.

+
+
+
Example of an environment variable set to a value from a ConfigMap
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          configMapKeyRef:
+            name: my-config-map
+            key: my-key
+
+
+
+
+
External configuration as volumes
+
+

You can also mount ConfigMaps or Secrets to a Kafka Connect pod as volumes. +Using volumes instead of environment variables is useful in the following scenarios:

+
+
+
    +
  • +

    Mounting truststores or keystores with TLS certificates

    +
  • +
  • +

    Mounting a properties file that is used to configure Kafka Connect connectors

    +
  • +
+
+
+

In the volumes property of the externalConfiguration resource, list the ConfigMaps or Secrets that will be mounted as volumes. +Each volume must specify a name in the name property and a reference to ConfigMap or Secret.

+
+
+
Example of volumes with external configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    volumes:
+      - name: connector1
+        configMap:
+          name: connector1-configuration
+      - name: connector1-certificates
+        secret:
+          secretName: connector1-certificates
+
+
+
+

The volumes will be mounted inside the Kafka Connect containers in the path /opt/kafka/external-configuration/<volume-name>. +For example, the files from a volume named connector1 would appear in the directory /opt/kafka/external-configuration/connector1.

+
+
+

The FileConfigProvider has to be used to read the values from the mounted properties files in connector configurations.

+
+
+
+
+
Mounting Secrets as environment variables
+
+

You can create an OpenShift or Kubernetes Secret and mount it to Kafka Connect as an environment variable.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing the information that will be mounted as an environment variable. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: aws-creds
    +type: Opaque
    +data:
    +  awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
    +  awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  externalConfiguration:
    +    env:
    +      - name: AWS_ACCESS_KEY_ID
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsAccessKey
    +      - name: AWS_SECRET_ACCESS_KEY
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsSecretAccessKey
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+

The environment variables are now available for use when developing your connectors.

+
+
+
Additional resources
+ +
+
+
+
Mounting Secrets as volumes
+
+

You can create an OpenShift or Kubernetes Secret, mount it as a volume to Kafka Connect, and then use it to configure a Kafka Connect connector.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing a properties file that defines the configuration options for your connector configuration. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: mysecret
    +type: Opaque
    +stringData:
    +  connector.properties: |-
    +    dbUsername: my-user
    +    dbPassword: my-password
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the FileConfigProvider in the config section and the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    config.providers: file
    +    config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider
    +  #...
    +  externalConfiguration:
    +    volumes:
    +      - name: connector-config
    +        secret:
    +          secretName: mysecret
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
  7. +

    Use the values from the mounted properties file in your JSON payload with connector configuration. +For example:

    +
    +
    +
    {
    +   "name":"my-connector",
    +   "config":{
    +      "connector.class":"MyDbConnector",
    +      "tasks.max":"3",
    +      "database": "my-postgresql:5432"
    +      "username":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbUsername}",
    +      "password":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbPassword}",
    +      # ...
    +   }
    +}
    +
    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
+

3.2.14. List of resources created as part of Kafka Connect cluster

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
connect-cluster-name-connect
+
+

Deployment which is in charge to create the Kafka Connect worker node pods.

+
+
connect-cluster-name-connect-api
+
+

Service which exposes the REST interface for managing the Kafka Connect cluster.

+
+
connect-cluster-name-config
+
+

ConfigMap which contains the Kafka Connect ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
connect-cluster-name-connect
+
+

Pod Disruption Budget configured for the Kafka Connect worker nodes.

+
+
+
+
+
+
+

3.3. Kafka Connect cluster with Source2Image support

+
+

The full schema of the KafkaConnectS2I resource is described in the KafkaConnectS2I schema reference. +All labels that are applied to the desired KafkaConnectS2I resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka Connect cluster with Source2Image support. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.3.1. Replicas

+
+

Kafka Connect clusters can run multiple of nodes. +The number of nodes is defined in the KafkaConnect and KafkaConnectS2I resources. +Running a Kafka Connect cluster with multiple nodes can provide better availability and scalability. +However, when running Kafka Connect on OpenShift or Kubernetes it is not absolutely necessary to run multiple nodes of Kafka Connect for high availability. +If a node where Kafka Connect is deployed to crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Connect pod to a different node. +However, running Kafka Connect with multiple nodes can provide faster failover times, because the other nodes will be up and running already.

+
+
+
Configuring the number of nodes
+
+

The number of Kafka Connect nodes is configured using the replicas property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.2. Bootstrap servers

+
+

A Kafka Connect cluster always works in combination with a Kafka cluster. +A Kafka cluster is specified as a list of bootstrap servers. +On OpenShift or Kubernetes, the list must ideally contain the Kafka cluster bootstrap service named cluster-name-kafka-bootstrap, and a port of 9092 for plain traffic or 9093 for encrypted traffic.

+
+
+

The list of bootstrap servers is configured in the bootstrapServers property in KafkaConnect.spec and KafkaConnectS2I.spec. The servers must be defined as a comma-separated list specifying one or more Kafka brokers, or a service pointing to Kafka brokers specified as a hostname:_port_ pairs.

+
+
+

When using Kafka Connect with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the bootstrapServers property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-cluster
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka-bootstrap:9092
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.3. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Connect tries to connect to Kafka brokers using a plain text connection. +If you prefer to use TLS, additional configuration is required.

+
+
+
TLS support in Kafka Connect
+
+

TLS support is configured in the tls property in KafkaConnect.spec and KafkaConnectS2I.spec. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates must be stored in X509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-other-secret
+        certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnectS2I
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+      - secretName: my-secret
+        certificate: ca.crt
+      - secretName: my-secret
+        certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication, and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used in authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
  2. +
  3. +

    Edit the tls property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  tls:
    +    trustedCertificates:
    +      - secretName: my-cluster-cluster-cert
    +        certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.3.4. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Connect will try to connect to Kafka brokers without authentication. +Authentication is enabled through the KafkaConnect and KafkaConnectS2I resources.

+
+
+
Authentication support in Kafka Connect
+
+

Authentication is configured through the authentication property in KafkaConnect.spec and KafkaConnectS2I.spec. +The authentication property specifies the type of the authentication mechanisms which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Connect see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: tls
+    certificateAndKey:
+      secretName: my-secret
+      certificate: public.crt
+      key: private.key
+  # ...
+
+
+
+
+
SASL based SCRAM-SHA-512 authentication
+
+

To configure Kafka Connect to use SASL-based SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SASL based SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: scram-sha-512
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
SASL based PLAIN authentication
+
+

To configure Kafka Connect to use SASL-based PLAIN authentication, set the type property to plain. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of such a Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example showing SASL based PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-cluster
+spec:
+  # ...
+  authentication:
+    type: plain
+    username: my-connect-user
+    passwordSecret:
+      secretName: my-connect-user
+      password: my-connect-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: tls
    +    certificateAndKey:
    +      secretName: my-secret
    +      certificate: my-public.crt
    +      key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    Username of the user which should be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication and the key under which the password is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used in authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password>.txt
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  authentication:
    +    type: scram-sha-512
    +    username: _<my-username>_
    +    passwordSecret:
    +      secretName: _<my-secret>_
    +      password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.3.5. Kafka Connect configuration

+
+

Strimzi allows you to customize the configuration of Apache Kafka Connect nodes by editing certain options listed in Apache Kafka documentation.

+
+
+

Configuration options that cannot be configured relate to:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Listener / REST interface configuration

    +
  • +
  • +

    Plugin path configuration

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka Connect configuration
+
+

Kafka Connect is configured using the config property in KafkaConnect.spec and KafkaConnectS2I.spec. +This property contains the Kafka Connect configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

You can specify and configure the options listed in the Apache Kafka documentation with the exception of those options that are managed directly by Strimzi. +Specifically, configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    listeners

    +
  • +
  • +

    plugin.path

    +
  • +
  • +

    rest.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
+
+
+

When a forbidden option is present in the config property, it is ignored and a warning message is printed to the Custer Operator log file. +All other options are passed to Kafka Connect.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Connect cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config object, then the Cluster Operator can roll out the new configuration to all Kafka Connect nodes. +
+
+
+

Certain options have default values:

+
+
+
    +
  • +

    group.id with default value connect-cluster

    +
  • +
  • +

    offset.storage.topic with default value connect-cluster-offsets

    +
  • +
  • +

    config.storage.topic with default value connect-cluster-configs

    +
  • +
  • +

    status.storage.topic with default value connect-cluster-status

    +
  • +
  • +

    key.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
  • +

    value.converter with default value org.apache.kafka.connect.json.JsonConverter

    +
  • +
+
+
+

These options are automatically configured in case they are not present in the KafkaConnect.spec.config or KafkaConnectS2I.spec.config properties.

+
+
+
Example Kafka Connect configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  config:
+    group.id: my-connect-cluster
+    offset.storage.topic: my-connect-cluster-offsets
+    config.storage.topic: my-connect-cluster-configs
+    status.storage.topic: my-connect-cluster-status
+    key.converter: org.apache.kafka.connect.json.JsonConverter
+    value.converter: org.apache.kafka.connect.json.JsonConverter
+    key.converter.schemas.enable: true
+    value.converter.schemas.enable: true
+    config.storage.replication.factor: 3
+    offset.storage.replication.factor: 3
+    status.storage.replication.factor: 3
+  # ...
+
+
+
+
+
Configuring Kafka Connect
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the config property in the KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    group.id: my-connect-cluster
    +    offset.storage.topic: my-connect-cluster-offsets
    +    config.storage.topic: my-connect-cluster-configs
    +    status.storage.topic: my-connect-cluster-status
    +    key.converter: org.apache.kafka.connect.json.JsonConverter
    +    value.converter: org.apache.kafka.connect.json.JsonConverter
    +    key.converter.schemas.enable: true
    +    value.converter.schemas.enable: true
    +    config.storage.replication.factor: 3
    +    offset.storage.replication.factor: 3
    +    status.storage.replication.factor: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.6. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.3.7. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka Connect with Source2Image loggers
+
+

Kafka Connect with Source2Image support has its own configurable loggers:

+
+
+
    +
  • +

    connect.root.logger.level

    +
  • +
  • +

    log4j.logger.org.apache.zookeeper

    +
  • +
  • +

    log4j.logger.org.I0Itec.zkclient

    +
  • +
  • +

    log4j.logger.org.reflections

    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +spec:
    +  # ...
    +  logging:
    +    type: inline
    +    loggers:
    +      logger.name: "INFO"
    +  # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnectS2I
    +spec:
    +  # ...
    +  logging:
    +    type: external
    +    name: customConfigMap
    +  # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.3.8. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.9. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.10. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.11. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.3.12. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.3.13. Using external configuration and secrets

+
+

Kafka Connect connectors are configured using an HTTP REST interface. +The connector configuration is passed to Kafka Connect as part of an HTTP request and stored within Kafka itself.

+
+
+

Some parts of the configuration of a Kafka Connect connector can be externalized using ConfigMaps or Secrets. +You can then reference the configuration values in HTTP REST commands (this keeps the configuration separate and more secure, if needed). +This method applies especially to confidential data, such as usernames, passwords, or certificates.

+
+
+

ConfigMaps and Secrets are standard OpenShift or Kubernetes resources used for storing of configurations and confidential data.

+
+
+
Storing connector configurations externally
+
+

You can mount ConfigMaps or Secrets into a Kafka Connect pod as volumes or environment variables. +Volumes and environment variables are configured in the externalConfiguration property in KafkaConnect.spec and KafkaConnectS2I.spec.

+
+
+
External configuration as environment variables
+
+

The env property is used to specify one or more environment variables. +These variables can contain a value from either a ConfigMap or a Secret.

+
+
+ + + + + +
+
Note
+
+The names of user-defined environment variables cannot start with KAFKA_ or STRIMZI_. +
+
+
+

To mount a value from a Secret to an environment variable, use the valueFrom property and the secretKeyRef as shown in the following example.

+
+
+
Example of an environment variable set to a value from a Secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          secretKeyRef:
+            name: my-secret
+            key: my-key
+
+
+
+

A common use case for mounting Secrets to environment variables is when your connector needs to communicate with Amazon AWS and needs to read the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables with credentials.

+
+
+

To mount a value from a ConfigMap to an environment variable, use configMapKeyRef in the valueFrom property as shown in the following example.

+
+
+
Example of an environment variable set to a value from a ConfigMap
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    env:
+      - name: MY_ENVIRONMENT_VARIABLE
+        valueFrom:
+          configMapKeyRef:
+            name: my-config-map
+            key: my-key
+
+
+
+
+
External configuration as volumes
+
+

You can also mount ConfigMaps or Secrets to a Kafka Connect pod as volumes. +Using volumes instead of environment variables is useful in the following scenarios:

+
+
+
    +
  • +

    Mounting truststores or keystores with TLS certificates

    +
  • +
  • +

    Mounting a properties file that is used to configure Kafka Connect connectors

    +
  • +
+
+
+

In the volumes property of the externalConfiguration resource, list the ConfigMaps or Secrets that will be mounted as volumes. +Each volume must specify a name in the name property and a reference to ConfigMap or Secret.

+
+
+
Example of volumes with external configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaConnect
+metadata:
+  name: my-connect
+spec:
+  # ...
+  externalConfiguration:
+    volumes:
+      - name: connector1
+        configMap:
+          name: connector1-configuration
+      - name: connector1-certificates
+        secret:
+          secretName: connector1-certificates
+
+
+
+

The volumes will be mounted inside the Kafka Connect containers in the path /opt/kafka/external-configuration/<volume-name>. +For example, the files from a volume named connector1 would appear in the directory /opt/kafka/external-configuration/connector1.

+
+
+

The FileConfigProvider has to be used to read the values from the mounted properties files in connector configurations.

+
+
+
+
+
Mounting Secrets as environment variables
+
+

You can create an OpenShift or Kubernetes Secret and mount it to Kafka Connect as an environment variable.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing the information that will be mounted as an environment variable. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: aws-creds
    +type: Opaque
    +data:
    +  awsAccessKey: QUtJQVhYWFhYWFhYWFhYWFg=
    +  awsSecretAccessKey: Ylhsd1lYTnpkMjl5WkE=
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  externalConfiguration:
    +    env:
    +      - name: AWS_ACCESS_KEY_ID
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsAccessKey
    +      - name: AWS_SECRET_ACCESS_KEY
    +        valueFrom:
    +          secretKeyRef:
    +            name: aws-creds
    +            key: awsSecretAccessKey
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+

The environment variables are now available for use when developing your connectors.

+
+
+
Additional resources
+ +
+
+
+
Mounting Secrets as volumes
+
+

You can create an OpenShift or Kubernetes Secret, mount it as a volume to Kafka Connect, and then use it to configure a Kafka Connect connector.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Create a secret containing a properties file that defines the configuration options for your connector configuration. +For example:

    +
    +
    +
    apiVersion: v1
    +kind: Secret
    +metadata:
    +  name: mysecret
    +type: Opaque
    +stringData:
    +  connector.properties: |-
    +    dbUsername: my-user
    +    dbPassword: my-password
    +
    +
    +
  2. +
  3. +

    Create or edit the Kafka Connect resource. +Configure the FileConfigProvider in the config section and the externalConfiguration section of the KafkaConnect or KafkaConnectS2I custom resource to reference the secret. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaConnect
    +metadata:
    +  name: my-connect
    +spec:
    +  # ...
    +  config:
    +    config.providers: file
    +    config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider
    +  #...
    +  externalConfiguration:
    +    volumes:
    +      - name: connector-config
    +        secret:
    +          secretName: mysecret
    +
    +
    +
  4. +
  5. +

    Apply the changes to your Kafka Connect deployment.

    +
    +

    On Kubernetes use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
  7. +

    Use the values from the mounted properties file in your JSON payload with connector configuration. +For example:

    +
    +
    +
    {
    +   "name":"my-connector",
    +   "config":{
    +      "connector.class":"MyDbConnector",
    +      "tasks.max":"3",
    +      "database": "my-postgresql:5432"
    +      "username":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbUsername}",
    +      "password":"${file:/opt/kafka/external-configuration/connector-config/connector.properties:dbPassword}",
    +      # ...
    +   }
    +}
    +
    +
    +
  8. +
+
+
+
Additional resources
+ +
+
+
+
+

3.3.14. List of resources created as part of Kafka Connect cluster with Source2Image support

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
connect-cluster-name-connect-source
+
+

ImageStream which is used as the base image for the newly-built Docker images.

+
+
connect-cluster-name-connect
+
+

BuildConfig which is responsible for building the new Kafka Connect Docker images.

+
+
connect-cluster-name-connect
+
+

ImageStream where the newly built Docker images will be pushed.

+
+
connect-cluster-name-connect
+
+

DeploymentConfig which is in charge of creating the Kafka Connect worker node pods.

+
+
connect-cluster-name-connect-api
+
+

Service which exposes the REST interface for managing the Kafka Connect cluster.

+
+
connect-cluster-name-config
+
+

ConfigMap which contains the Kafka Connect ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
connect-cluster-name-connect
+
+

Pod Disruption Budget configured for the Kafka Connect worker nodes.

+
+
+
+
+
+

3.3.15. Creating a container image using OpenShift builds and Source-to-Image

+
+

You can use OpenShift builds and the Source-to-Image (S2I) framework to create new container images. An OpenShift build takes a builder image with S2I support, together with source code and binaries provided by the user, and uses them to build a new container image. Once built, container images are stored in OpenShift’s local container image repository and are available for use in deployments.

+
+
+

A Kafka Connect builder image with S2I support is provided on the Docker Hub as part of the strimzi/kafka:0.12.1-kafka-2.2.1 image. This S2I image takes your binaries (with plug-ins and connectors) and stores them in the /tmp/kafka-plugins/s2i directory. It creates a new Kafka Connect image from this directory, which can then be used with the Kafka Connect deployment. When started using the enhanced image, Kafka Connect loads any third-party plug-ins from the /tmp/kafka-plugins/s2i directory.

+
+
+
Procedure
+
    +
  1. +

    On the command line, use the oc apply command to create and deploy a Kafka Connect S2I cluster:

    +
    +
    +
    oc apply -f examples/kafka-connect/kafka-connect-s2i.yaml
    +
    +
    +
  2. +
  3. +

    Create a directory with Kafka Connect plug-ins:

    +
    +
    +
    $ tree ./my-plugins/
    +./my-plugins/
    +├── debezium-connector-mongodb
    +│   ├── bson-3.4.2.jar
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mongodb-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mongodb-driver-3.4.2.jar
    +│   ├── mongodb-driver-core-3.4.2.jar
    +│   └── README.md
    +├── debezium-connector-mysql
    +│   ├── CHANGELOG.md
    +│   ├── CONTRIBUTE.md
    +│   ├── COPYRIGHT.txt
    +│   ├── debezium-connector-mysql-0.7.1.jar
    +│   ├── debezium-core-0.7.1.jar
    +│   ├── LICENSE.txt
    +│   ├── mysql-binlog-connector-java-0.13.0.jar
    +│   ├── mysql-connector-java-5.1.40.jar
    +│   ├── README.md
    +│   └── wkb-1.0.2.jar
    +└── debezium-connector-postgres
    +    ├── CHANGELOG.md
    +    ├── CONTRIBUTE.md
    +    ├── COPYRIGHT.txt
    +    ├── debezium-connector-postgres-0.7.1.jar
    +    ├── debezium-core-0.7.1.jar
    +    ├── LICENSE.txt
    +    ├── postgresql-42.0.0.jar
    +    ├── protobuf-java-2.6.1.jar
    +    └── README.md
    +
    +
    +
  4. +
  5. +

    Use the oc start-build command to start a new build of the image using the prepared directory:

    +
    +
    +
    oc start-build my-connect-cluster-connect --from-dir ./my-plugins/
    +
    +
    +
    + + + + + +
    +
    Note
    +
    +The name of the build is the same as the name of the deployed Kafka Connect cluster. +
    +
    +
  6. +
  7. +

    Once the build has finished, the new image is used automatically by the Kafka Connect deployment.

    +
  8. +
+
+
+
+
+

3.4. Kafka Mirror Maker configuration

+
+

The full schema of the KafkaMirrorMaker resource is described in the KafkaMirrorMaker schema reference. +All labels that apply to the desired KafkaMirrorMaker resource will also be applied to the OpenShift or Kubernetes resources making up Mirror Maker. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.4.1. Replicas

+
+

It is possible to run multiple Mirror Maker replicas. +The number of replicas is defined in the KafkaMirrorMaker resource. +You can run multiple Mirror Maker replicas to provide better availability and scalability. +However, when running Kafka Mirror Maker on OpenShift or Kubernetes it is not absolutely necessary to run multiple replicas of the Kafka Mirror Maker for high availability. +When the node where the Kafka Mirror Maker has deployed crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Mirror Maker pod to a different node. +However, running Kafka Mirror Maker with multiple replicas can provide faster failover times as the other nodes will be up and running.

+
+
+
Configuring the number of replicas
+
+

The number of Kafka Mirror Maker replicas can be configured using the replicas property in KafkaMirrorMaker.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaMirrorMaker resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.2. Bootstrap servers

+
+

Kafka Mirror Maker always works together with two Kafka clusters (source and target). +The source and the target Kafka clusters are specified in the form of two lists of comma-separated list of <hostname>:‍<port> pairs. +The bootstrap server lists can refer to Kafka clusters which do not need to be deployed in the same OpenShift or Kubernetes cluster. +They can even refer to any Kafka cluster not deployed by Strimzi or even deployed by Strimzi but on a different OpenShift or Kubernetes cluster and accessible from outside.

+
+
+

If on the same OpenShift or Kubernetes cluster, each list must ideally contain the Kafka cluster bootstrap service which is named <cluster-name>-kafka-bootstrap and a port of 9092 for plain traffic or 9093 for encrypted traffic. +If deployed by Strimzi but on different OpenShift or Kubernetes clusters, the list content depends on the way used for exposing the clusters (routes, nodeports or loadbalancers).

+
+
+

The list of bootstrap servers can be configured in the KafkaMirrorMaker.spec.consumer.bootstrapServers and KafkaMirrorMaker.spec.producer.bootstrapServers properties. The servers should be a comma-separated list containing one or more Kafka brokers or a Service pointing to Kafka brokers specified as a <hostname>:<port> pairs.

+
+
+

When using Kafka Mirror Maker with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the given cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.bootstrapServers and KafkaMirrorMaker.spec.producer.bootstrapServers properties. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    bootstrapServers: my-source-cluster-kafka-bootstrap:9092
    +  # ...
    +  producer:
    +    bootstrapServers: my-target-cluster-kafka-bootstrap:9092
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.3. Whitelist

+
+

You specify the list topics that the Kafka Mirror Maker has to mirror from the source to the target Kafka cluster in the KafkaMirrorMaker resource using the whitelist option. +It allows any regular expression from the simplest case with a single topic name to complex patterns. +For example, you can mirror topics A and B using "A|B" or all topics using "*". +You can also pass multiple regular expressions separated by commas to the Kafka Mirror Maker.

+
+
+
Configuring the topics whitelist
+
+

Specify the list topics that have to be mirrored by the Kafka Mirror Maker from source to target Kafka cluster using the whitelist property in KafkaMirrorMaker.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the whitelist property in the KafkaMirrorMaker resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  whitelist: "my-topic|other-topic"
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.4. Consumer group identifier

+
+

The Kafka Mirror Maker uses Kafka consumer to consume messages and it behaves like any other Kafka consumer client. +It is in charge to consume the messages from the source Kafka cluster which will be mirrored to the target Kafka cluster. +The consumer needs to be part of a consumer group for being assigned partitions.

+
+
+
Configuring the consumer group identifier
+
+

The consumer group identifier can be configured in the KafkaMirrorMaker.spec.consumer.groupId property.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.groupId property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    groupId: "my-group"
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.5. Number of consumer streams

+
+

You can increase the throughput in mirroring topics by increase the number of consumer threads. +More consumer threads will belong to the same configured consumer group. +The topic partitions will be assigned across these consumer threads which will consume messages in parallel.

+
+
+
Configuring the number of consumer streams
+
+

The number of consumer streams can be configured using the KafkaMirrorMaker.spec.consumer.numStreams property.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.numStreams property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    numStreams: 2
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.6. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Mirror Maker will try to connect to Kafka brokers, in the source and target clusters, using a plain text connection. +You must make additional configurations to use TLS.

+
+
+
TLS support in Kafka Mirror Maker
+
+

TLS support is configured in the tls sub-property of consumer and producer properties in KafkaMirrorMaker.spec. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates should be stored in X.509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    tls:
+      trustedCertificates:
+        - secretName: my-source-secret
+          certificate: ca.crt
+        - secretName: my-other-source-secret
+          certificate: certificate.crt
+  # ...
+  producer:
+    tls:
+      trustedCertificates:
+        - secretName: my-target-secret
+          certificate: ca.crt
+        - secretName: my-other-target-secret
+          certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    tls:
+      trustedCertificates:
+        - secretName: my-source-secret
+          certificate: ca.crt
+        - secretName: my-source-secret
+          certificate: ca2.crt
+  # ...
+  producer:
+    tls:
+      trustedCertificates:
+        - secretName: my-target-secret
+          certificate: ca.crt
+        - secretName: my-target-secret
+          certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS encryption in Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+

As the Kafka Mirror Maker connects to two Kafka clusters (source and target), you can choose to configure TLS for one or both the clusters. +The following steps describe how to configure TLS on the consumer side for connecting to the source Kafka cluster:

+
+
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used for authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic <my-secret> --from-file=<my-file.crt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic <my-secret> --from-file=<my-file.crt>
    +
    +
    +
  2. +
  3. +

    Edit the KafkaMirrorMaker.spec.consumer.tls property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    tls:
    +      trustedCertificates:
    +        - secretName: my-cluster-cluster-cert
    +          certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  6. +
+
+
+

Repeat the above steps for configuring TLS on the target Kafka cluster. +In this case, the secret containing the certificate has to be configured in the KafkaMirrorMaker.spec.producer.tls property.

+
+
+
+
+

3.4.7. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Mirror Maker will try to connect to Kafka brokers without any authentication. +Authentication is enabled through the KafkaMirrorMaker resource.

+
+
+
Authentication support in Kafka Mirror Maker
+
+

Authentication can be configured in the KafkaMirrorMaker.spec.consumer.authentication and KafkaMirrorMaker.spec.producer.authentication properties. +The authentication property specifies the type of the authentication method which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+

You can use different authentication mechanisms for the Kafka Mirror Maker producer and consumer.

+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Mirror Maker see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    authentication:
+      type: tls
+      certificateAndKey:
+        secretName: my-source-secret
+        certificate: public.crt
+        key: private.key
+  # ...
+  producer:
+    authentication:
+      type: tls
+      certificateAndKey:
+        secretName: my-target-secret
+        certificate: public.crt
+        key: private.key
+  # ...
+
+
+
+
+
SCRAM-SHA-512 authentication
+
+

To configure Kafka Mirror Maker to use SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +The broker listener to which clients will connect must also be configured to use SCRAM-SHA-512 SASL authentication. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    authentication:
+      type: scram-sha-512
+      username: my-source-user
+      passwordSecret:
+        secretName: my-source-user
+        password: my-source-password-key
+  # ...
+  producer:
+    authentication:
+      type: scram-sha-512
+      username: my-producer-user
+      passwordSecret:
+        secretName: my-producer-user
+        password: my-producer-password-key
+  # ...
+
+
+
+
+
PLAIN authentication
+
+

To configure Kafka Mirror Maker to use PLAIN authentication, set the type property to plain. +The broker listener to which clients will connect must also be configured to use SASL PLAIN authentication. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. +The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirrorMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    authentication:
+      type: plain
+      username: my-source-user
+      passwordSecret:
+        secretName: my-source-user
+        password: my-source-password-key
+  # ...
+  producer:
+    authentication:
+      type: plain
+      username: my-producer-user
+      passwordSecret:
+        secretName: my-producer-user
+        password: my-producer-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator with a tls listener with tls authentication enabled

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+

As the Kafka Mirror Maker connects to two Kafka clusters (source and target), you can choose to configure TLS client authentication for one or both the clusters. +The following steps describe how to configure TLS client authentication on the consumer side for connecting to the source Kafka cluster:

+
+
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    kubectl create secret generic <my-secret> --from-file=<my-public.crt> --from-file=<my-private.key>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    oc create secret generic <my-secret> --from-file=<my-public.crt> --from-file=<my-private.key>
    +
    +
    +
  2. +
  3. +

    Edit the KafkaMirrorMaker.spec.consumer.authentication property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    authentication:
    +      type: tls
    +      certificateAndKey:
    +        secretName: my-secret
    +        certificate: my-public.crt
    +        key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  6. +
+
+
+

Repeat the above steps for configuring TLS client authentication on the target Kafka cluster. +In this case, the secret containing the certificate has to be configured in the KafkaMirrorMaker.spec.producer.authentication property.

+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator with a listener configured for SCRAM-SHA-512 authentication

    +
  • +
  • +

    Username to be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication, and the key under which it is stored in the Secret

    +
  • +
+
+
+
Procedure
+

As the Kafka Mirror Maker connects to two Kafka clusters (source and target), you can choose to configure SCRAM-SHA-512 authentication for one or both the clusters. +The following steps describe how to configure SCRAM-SHA-512 authentication on the consumer side for connecting to the source Kafka cluster:

+
+
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used for authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes this can be done using kubectl create:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift this can be done using oc create:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password.txt>
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the KafkaMirrorMaker.spec.consumer.authentication property. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    authentication:
    +      type: scram-sha-512
    +      username: _<my-username>_
    +      passwordSecret:
    +        secretName: _<my-secret>_
    +        password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  6. +
+
+
+

Repeat the above steps for configuring SCRAM-SHA-512 authentication on the target Kafka cluster. +In this case, the secret containing the certificate has to be configured in the KafkaMirrorMaker.spec.producer.authentication property.

+
+
+
+
+

3.4.8. Kafka Mirror Maker configuration

+
+

Strimzi allows you to customize the configuration of the Kafka Mirror Maker by editing most of the options for the related consumer and producer. +Producer options are listed in Apache Kafka documentation. +Consumer options are listed in Apache Kafka documentation.

+
+
+

The only options which cannot be configured are those related to the following areas:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Consumer group identifier

    +
  • +
+
+
+

These options are automatically configured by Strimzi.

+
+
+
Kafka Mirror Maker configuration
+
+

Kafka Mirror Maker can be configured using the config sub-property in KafkaMirrorMaker.spec.consumer and KafkaMirrorMaker.spec.producer. +This property should contain the Kafka Mirror Maker consumer and producer configuration options as keys. +The values could be in one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in the Apache Kafka documentation and Apache Kafka documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
  • +

    group.id

    +
  • +
+
+
+

When one of the forbidden options is present in the config property, it will be ignored and a warning message will be printed to the Custer Operator log file. +All other options will be passed to Kafka Mirror Maker.

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the provided config object. +When an invalid configuration is provided, the Kafka Mirror Maker might not start or might become unstable. +In such cases, the configuration in the KafkaMirrorMaker.spec.consumer.config or KafkaMirrorMaker.spec.producer.config object should be fixed and the cluster operator will roll out the new configuration for Kafka Mirror Maker. +
+
+
+
An example showing Kafka Mirror Maker configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaMirroMaker
+metadata:
+  name: my-mirror-maker
+spec:
+  # ...
+  consumer:
+    config:
+      max.poll.records: 100
+      receive.buffer.bytes: 32768
+  producer:
+    config:
+      compression.type: gzip
+      batch.size: 8192
+  # ...
+
+
+
+
+
Configuring Kafka Mirror Maker
+
+
Prerequisites
+
    +
  • +

    Two running Kafka clusters (source and target)

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the KafkaMirrorMaker.spec.consumer.config and KafkaMirrorMaker.spec.producer.config properties. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirroMaker
    +metadata:
    +  name: my-mirror-maker
    +spec:
    +  # ...
    +  consumer:
    +    config:
    +      max.poll.records: 100
    +      receive.buffer.bytes: 32768
    +  producer:
    +    config:
    +      compression.type: gzip
    +      batch.size: 8192
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f <your-file>
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f <your-file>
    +
    +
    +
  4. +
+
+
+
+
+

3.4.9. CPU and memory resources

+
+

For every deployed container, Strimzi allows you to request specific resources and define the maximum consumption of those resources.

+
+
+

Strimzi supports two types of resources:

+
+
+
    +
  • +

    CPU

    +
  • +
  • +

    Memory

    +
  • +
+
+
+

Strimzi uses the OpenShift or Kubernetes syntax for specifying CPU and memory resources.

+
+
+
Resource limits and requests
+
+

Resource limits and requests are configured using the resources property in the following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Additional resources
+ +
+
+
Resource requests
+
+

Requests specify the resources to reserve for a given container. +Reserving the resources ensures that they are always available.

+
+
+ + + + + +
+
Important
+
+If the resource request is for more than the available free resources in the OpenShift or Kubernetes cluster, the pod is not scheduled. +
+
+
+

Resources requests are specified in the requests property. +Resources requests currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A request may be configured for one or more supported resources.

+
+
+
Example resource request configuration with all resources
+
+
# ...
+resources:
+  requests:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Resource limits
+
+

Limits specify the maximum resources that can be consumed by a given container. +The limit is not reserved and might not always be available. +A container can use the resources up to the limit only when they are available. +Resource limits should be always higher than the resource requests.

+
+
+

Resource limits are specified in the limits property. +Resource limits currently supported by Strimzi:

+
+
+
    +
  • +

    cpu

    +
  • +
  • +

    memory

    +
  • +
+
+
+

A resource may be configured for one or more supported limits.

+
+
+
Example resource limits configuration
+
+
# ...
+resources:
+  limits:
+    cpu: 12
+    memory: 64Gi
+# ...
+
+
+
+
+
Supported CPU formats
+
+

CPU requests and limits are supported in the following formats:

+
+
+
    +
  • +

    Number of CPU cores as integer (5 CPU core) or decimal (2.5 CPU core).

    +
  • +
  • +

    Number or millicpus / millicores (100m) where 1000 millicores is the same 1 CPU core.

    +
  • +
+
+
+
Example CPU units
+
+
# ...
+resources:
+  requests:
+    cpu: 500m
+  limits:
+    cpu: 2.5
+# ...
+
+
+
+ + + + + +
+
Note
+
+The computing power of 1 CPU core may differ depending on the platform where OpenShift or Kubernetes is deployed. +
+
+
+
Additional resources
+
    +
  • +

    For more information on CPU specification, see the Meaning of CPU.

    +
  • +
+
+
+
+
Supported memory formats
+
+

Memory requests and limits are specified in megabytes, gigabytes, mebibytes, and gibibytes.

+
+
+
    +
  • +

    To specify memory in megabytes, use the M suffix. For example 1000M.

    +
  • +
  • +

    To specify memory in gigabytes, use the G suffix. For example 1G.

    +
  • +
  • +

    To specify memory in mebibytes, use the Mi suffix. For example 1000Mi.

    +
  • +
  • +

    To specify memory in gibibytes, use the Gi suffix. For example 1Gi.

    +
  • +
+
+
+
An example of using different memory units
+
+
# ...
+resources:
+  requests:
+    memory: 512Mi
+  limits:
+    memory: 2Gi
+# ...
+
+
+
+
Additional resources
+
    +
  • +

    For more details about memory specification and additional supported units, see Meaning of memory.

    +
  • +
+
+
+
+
+
Configuring resource requests and limits
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the resources property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    resources:
    +      requests:
    +        cpu: "8"
    +        memory: 64Gi
    +      limits:
    +        cpu: "12"
    +        memory: 128Gi
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+
+

3.4.10. Logging

+
+

This section provides information on loggers and how to configure log levels.

+
+
+

You can set the log levels by specifying the loggers and their levels directly (inline) or use a custom (external) config map.

+
+
+
Kafka Mirror Maker loggers
+
+

Kafka Mirror Maker has its own configurable logger:

+
+
+
    +
  • +

    mirrormaker.root.logger

    +
  • +
+
+
+
+
Specifying inline logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the loggers and logging level for the required components.

    +
    +

    For example, the logging level here is set to INFO:

    +
    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +spec:
    +  # ...
    +  logging:
    +    type: inline
    +    loggers:
    +      logger.name: "INFO"
    +  # ...
    +
    +
    +
    +

    You can set the log level to INFO, ERROR, WARN, TRACE, DEBUG, FATAL or OFF.

    +
    +
    +

    For more information about the log levels, see the log4j manual.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
Specifying an external ConfigMap for logging
+
+
Procedure
+
    +
  1. +

    Edit the YAML file to specify the name of the ConfigMap to use for the required components. For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaMirrorMaker
    +spec:
    +  # ...
    +  logging:
    +    type: external
    +    name: customConfigMap
    +  # ...
    +
    +
    +
    +

    Remember to place your custom ConfigMap under the log4j.properties or log4j2.properties key.

    +
    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+

Garbage collector (GC) logging can also be enabled (or disabled). For more information on GC, see JVM configuration

+
+
+
+
+

3.4.11. Prometheus metrics

+
+

Strimzi supports Prometheus metrics using Prometheus JMX exporter to convert the JMX metrics supported by Apache Kafka and Zookeeper to Prometheus metrics. +When metrics are enabled, they are exposed on port 9404.

+
+
+

For more information about configuring Prometheus and Grafana, see Metrics.

+
+
+
Metrics configuration
+
+

Prometheus metrics are enabled by configuring the metrics property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

When the metrics property is not defined in the resource, the Prometheus metrics will be disabled. +To enable Prometheus metrics export without any further configuration, you can set it to an empty object ({}).

+
+
+
Example of enabling metrics without any further configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics: {}
+    # ...
+  zookeeper:
+    # ...
+
+
+
+

The metrics property might contain additional configuration for the Prometheus JMX exporter.

+
+
+
Example of enabling metrics with additional Prometheus JMX Exporter configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    metrics:
+      lowercaseOutputName: true
+      rules:
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*><>Count"
+          name: "kafka_server_$1_$2_total"
+        - pattern: "kafka.server<type=(.+), name=(.+)PerSec\\w*, topic=(.+)><>Count"
+          name: "kafka_server_$1_$2_total"
+          labels:
+            topic: "$3"
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
Configuring Prometheus metrics
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the metrics property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +  zookeeper:
    +    # ...
    +    metrics:
    +      lowercaseOutputName: true
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.4.12. JVM Options

+
+

Apache Kafka and Apache Zookeeper run inside a Java Virtual Machine (JVM). +JVM configuration options optimize the performance for different platforms and architectures. +Strimzi allows you to configure some of these options.

+
+
+
JVM configuration
+
+

JVM options can be configured using the jvmOptions property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
+
+
+

Only a selected subset of available JVM options can be configured. +The following options are supported:

+
+
+
-Xms and -Xmx
+

-Xms configures the minimum initial allocation heap size when the JVM starts. +-Xmx configures the maximum heap size.

+
+
+ + + + + +
+
Note
+
+The units accepted by JVM settings such as -Xmx and -Xms are those accepted by the JDK java binary in the corresponding image. +Accordingly, 1g or 1G means 1,073,741,824 bytes, and Gi is not a valid unit suffix. +This is in contrast to the units used for memory requests and limits, which follow the OpenShift or Kubernetes convention where 1G means 1,000,000,000 bytes, and 1Gi means 1,073,741,824 bytes +
+
+
+

The default values used for -Xms and -Xmx depends on whether there is a memory request limit configured for the container:

+
+
+
    +
  • +

    If there is a memory limit then the JVM’s minimum and maximum memory will be set to a value corresponding to the limit.

    +
  • +
  • +

    If there is no memory limit then the JVM’s minimum memory will be set to 128M and the JVM’s maximum memory will not be defined. This allows for the JVM’s memory to grow as-needed, which is ideal for single node environments in test and development.

    +
  • +
+
+
+ + + + + +
+
Important
+
+
+

Setting -Xmx explicitly requires some care:

+
+
+
    +
  • +

    The JVM’s overall memory usage will be approximately 4 × the maximum heap, as configured by -Xmx.

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory limit, it is possible that the container will be killed should the OpenShift or Kubernetes node experience memory pressure (from other Pods running on it).

    +
  • +
  • +

    If -Xmx is set without also setting an appropriate OpenShift or Kubernetes memory request, it is possible that the container will be scheduled to a node with insufficient memory. +In this case, the container will not start but crash (immediately if -Xms is set to -Xmx, or some later time if not).

    +
  • +
+
+
+
+
+

When setting -Xmx explicitly, it is recommended to:

+
+
+
    +
  • +

    set the memory request and the memory limit to the same value,

    +
  • +
  • +

    use a memory request that is at least 4.5 × the -Xmx,

    +
  • +
  • +

    consider setting -Xms to the same value as -Xms.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Containers doing lots of disk I/O (such as Kafka broker containers) will need to leave some memory available for use as operating system page cache. +On such containers, the requested memory should be significantly higher than the memory used by the JVM. +
+
+
+
Example fragment configuring -Xmx and -Xms
+
+
# ...
+jvmOptions:
+  "-Xmx": "2g"
+  "-Xms": "2g"
+# ...
+
+
+
+

In the above example, the JVM will use 2 GiB (=2,147,483,648 bytes) for its heap. +Its total memory usage will be approximately 8GiB.

+
+
+

Setting the same value for initial (-Xms) and maximum (-Xmx) heap sizes avoids the JVM having to allocate memory after startup, at the cost of possibly allocating more heap than is really needed. +For Kafka and Zookeeper pods such allocation could cause unwanted latency. +For Kafka Connect avoiding over allocation may be the most important concern, especially in distributed mode where the effects of over-allocation will be multiplied by the number of consumers.

+
+
+
-server
+

-server enables the server JVM. This option can be set to true or false.

+
+
+
Example fragment configuring -server
+
+
# ...
+jvmOptions:
+  "-server": true
+# ...
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
-XX
+

-XX object can be used for configuring advanced runtime options of a JVM. +The -server and -XX options are used to configure the KAFKA_JVM_PERFORMANCE_OPTS option of Apache Kafka.

+
+
+
Example showing the use of the -XX object
+
+
jvmOptions:
+  "-XX":
+    "UseG1GC": true,
+    "MaxGCPauseMillis": 20,
+    "InitiatingHeapOccupancyPercent": 35,
+    "ExplicitGCInvokesConcurrent": true,
+    "UseParNewGC": false
+
+
+
+

The example configuration above will result in the following JVM options:

+
+
+
+
-XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -XX:-UseParNewGC
+
+
+
+ + + + + +
+
Note
+
+When neither of the two options (-server and -XX) is specified, the default Apache Kafka configuration of KAFKA_JVM_PERFORMANCE_OPTS will be used. +
+
+
+
Garbage collector logging
+
+

The jvmOptions section also allows you to enable and disable garbage collector (GC) logging. +GC logging is enabled by default. +To disable it, set the gcLoggingEnabled property as follows:

+
+
+
Example of disabling GC logging
+
+
# ...
+jvmOptions:
+  gcLoggingEnabled: false
+# ...
+
+
+
+
+
+
Configuring JVM options
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the jvmOptions property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    jvmOptions:
    +      "-Xmx": "8g"
    +      "-Xms": "8g"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.4.13. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.4.14. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.4.15. List of resources created as part of Kafka Mirror Maker

+
+

The following resources will created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
<mirror-maker-name>-mirror-maker
+
+

Deployment which is in charge to create the Kafka Mirror Maker pods.

+
+
<mirror-maker-name>-config
+
+

ConfigMap which contains the Kafka Mirror Maker ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
<mirror-maker-name>-mirror-maker
+
+

Pod Disruption Budget configured for the Kafka Mirror Maker worker nodes.

+
+
+
+
+
+
+

3.5. Kafka Bridge cluster configuration

+
+

The full schema of the KafkaBridge resource is described in the KafkaBridge schema reference. +All labels that are applied to the desired KafkaBridge resource will also be applied to the OpenShift or Kubernetes resources making up the Kafka Bridge cluster. +This provides a convenient mechanism for resources to be labeled as required.

+
+
+

3.5.1. Replicas

+
+

Kafka Bridge can run multiple nodes. +The number of nodes is defined in the KafkaBridge resource. +Running a Kafka Bridge with multiple nodes can provide better availability and scalability. +However, when running Kafka Bridge on OpenShift or Kubernetes it is not absolutely necessary to run multiple nodes of Kafka Bridge for high availability.

+
+
+ + + + + +
+
Important
+
+If a node where Kafka Bridge is deployed to crashes, OpenShift or Kubernetes will automatically reschedule the Kafka Bridge pod to a different node. +In order to prevent issues arising when client consumer requests are processed by different Kafka Bridge instances, addressed-based routing must be employed to ensure that requests are routed to the right Kafka Bridge instance. +Additionally, each independent Kafka Bridge instance must have a replica. A Kafka Bridge instance has its own state which is not shared with another instances. +
+
+
+
Configuring the number of nodes
+
+

The number of Kafka Bridge nodes is configured using the replicas property in KafkaBridge.spec.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the replicas property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  replicas: 3
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.2. Bootstrap servers

+
+

A Kafka Bridge always works in combination with a Kafka cluster. +A Kafka cluster is specified as a list of bootstrap servers. +On OpenShift or Kubernetes, the list must ideally contain the Kafka cluster bootstrap service named cluster-name-kafka-bootstrap, and a port of 9092 for plain traffic or 9093 for encrypted traffic.

+
+
+

The list of bootstrap servers is configured in the bootstrapServers property in KafkaBridge.kafka.spec. The servers must be defined as a comma-separated list specifying one or more Kafka brokers, or a service pointing to Kafka brokers specified as a hostname:_port_ pairs.

+
+
+

When using Kafka Bridge with a Kafka cluster not managed by Strimzi, you can specify the bootstrap servers list according to the configuration of the cluster.

+
+
+
Configuring bootstrap servers
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the bootstrapServers property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka-bootstrap:9092
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.3. Connecting to Kafka brokers using TLS

+
+

By default, Kafka Bridge tries to connect to Kafka brokers using a plain text connection. +If you prefer to use TLS, additional configuration is required.

+
+
+
TLS support for Kafka connection to the Kafka Bridge
+
+

TLS support for Kafka connection is configured in the tls property in KafkaBridge.spec.kafka. +The tls property contains a list of secrets with key names under which the certificates are stored. +The certificates must be stored in X509 format.

+
+
+
An example showing TLS configuration with multiple certificates
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+    - secretName: my-secret
+      certificate: ca.crt
+    - secretName: my-other-secret
+      certificate: certificate.crt
+  # ...
+
+
+
+

When multiple certificates are stored in the same secret, it can be listed multiple times.

+
+
+
An example showing TLS configuration with multiple certificates from the same secret
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  tls:
+    trustedCertificates:
+    - secretName: my-secret
+      certificate: ca.crt
+    - secretName: my-secret
+      certificate: ca2.crt
+  # ...
+
+
+
+
+
Configuring TLS in Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret for the certificate used for TLS Server Authentication, and the key under which the certificate is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the TLS certificate used in authentication in a file and create a Secret.

    +
    + + + + + +
    +
    Note
    +
    +The secrets created by the Cluster Operator for Kafka cluster may be used directly. +
    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-file.crt
    +
    +
    +
  2. +
  3. +

    Edit the tls property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  tls:
    +	  trustedCertificates:
    +	  - secretName: my-cluster-cluster-cert
    +	    certificate: ca.crt
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.5.4. Connecting to Kafka brokers with Authentication

+
+

By default, Kafka Bridge will try to connect to Kafka brokers without authentication. +Authentication is enabled through the KafkaBridge resources.

+
+
+
Authentication support in Kafka Bridge
+
+

Authentication is configured through the authentication property in KafkaBridge.spec.kafka. +The authentication property specifies the type of the authentication mechanisms which should be used and additional configuration details depending on the mechanism. +The currently supported authentication types are:

+
+
+
    +
  • +

    TLS client authentication

    +
  • +
  • +

    SASL-based authentication using the SCRAM-SHA-512 mechanism

    +
  • +
  • +

    SASL-based authentication using the PLAIN mechanism

    +
  • +
+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type property to the value tls. +TLS client authentication uses a TLS certificate to authenticate. +The certificate is specified in the certificateAndKey property and is always loaded from an OpenShift or Kubernetes secret. +In the secret, the certificate must be stored in X509 format under two different keys: public and private.

+
+
+ + + + + +
+
Note
+
+TLS client authentication can be used only with TLS connections. +For more details about TLS configuration in Kafka Bridge see Connecting to Kafka brokers using TLS. +
+
+
+
An example TLS client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  authentication:
+    type: tls
+    certificateAndKey:
+      secretName: my-secret
+      certificate: public.crt
+      key: private.key
+  # ...
+
+
+
+
+
SCRAM-SHA-512 authentication
+
+

To configure Kafka Bridge to use SASL-based SCRAM-SHA-512 authentication, set the type property to scram-sha-512. +This authentication mechanism requires a username and password.

+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name of the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example SASL based SCRAM-SHA-512 client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  authentication:
+    type: scram-sha-512
+    username: my-bridge-user
+    passwordSecret:
+      secretName: my-bridge-user
+      password: my-bridge-password-key
+  # ...
+
+
+
+
+
SASL-based PLAIN authentication
+
+

To configure Kafka Bridge to use SASL-based PLAIN authentication, set the type property to plain. +This authentication mechanism requires a username and password.

+
+
+ + + + + +
+
Warning
+
+The SASL PLAIN mechanism will transfer the username and password across the network in cleartext. +Only use SASL PLAIN authentication if TLS encryption is enabled. +
+
+
+
    +
  • +

    Specify the username in the username property.

    +
  • +
  • +

    In the passwordSecret property, specify a link to a Secret containing the password. The secretName property contains the name the Secret and the password property contains the name of the key under which the password is stored inside the Secret.

    +
  • +
+
+
+ + + + + +
+
Important
+
+Do not specify the actual password in the password field. +
+
+
+
An example showing SASL based PLAIN client authentication configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  authentication:
+    type: plain
+    username: my-bridge-user
+    passwordSecret:
+      secretName: my-bridge-user
+      password: my-bridge-password-key
+  # ...
+
+
+
+
+
+
Configuring TLS client authentication in Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    If they exist, the name of the Secret with the public and private keys used for TLS Client Authentication, and the keys under which they are stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare the keys used for authentication in a file and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc create secret generic my-secret --from-file=my-public.crt --from-file=my-private.key
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  authentication:
    +  type: tls
    +  certificateAndKey:
    +    secretName: my-secret
    +    certificate: my-public.crt
    +    key: my-private.key
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
Configuring SCRAM-SHA-512 authentication in Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
  • +

    Username of the user which should be used for authentication

    +
  • +
  • +

    If they exist, the name of the Secret with the password used for authentication and the key under which the password is stored in the Secret

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    (Optional) If they do not already exist, prepare a file with the password used in authentication and create the Secret.

    +
    + + + + + +
    +
    Note
    +
    +Secrets created by the User Operator may be used. +
    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    echo -n '<password>' > <my-password.txt>
    +kubectl create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    echo -n '1f2d1e2e67df' > <my-password>.txt
    +oc create secret generic <my-secret> --from-file=<my-password.txt>
    +
    +
    +
  2. +
  3. +

    Edit the authentication property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  authentication:
    +    type: scram-sha-512
    +    username: _<my-username>_
    +    passwordSecret:
    +      secretName: _<my-secret>_
    +      password: _<my-password.txt>_
    +  # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+

3.5.5. Kafka Bridge configuration

+
+

Strimzi allows you to customize the configuration of Apache Kafka Bridge nodes by editing certain options listed in Apache Kafka documentation and Apache Kafka documentation.

+
+
+

Configuration options that can be configured relate to:

+
+
+
    +
  • +

    Kafka cluster bootstrap address

    +
  • +
  • +

    Security (Encryption, Authentication, and Authorization)

    +
  • +
  • +

    Consumer configuration

    +
  • +
  • +

    Producer configuration

    +
  • +
  • +

    HTTP configuration

    +
  • +
+
+
+
Kafka Bridge Consumer configuration
+
+

Kafka Bridge consumer is configured using the properties in KafkaBridge.spec.consumer. +This property contains the Kafka Bridge consumer configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in the Apache Kafka documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
  • +

    group.id

    +
  • +
+
+
+

When one of the forbidden options is present in the config property, it will be ignored and a warning message will be printed to the Custer Operator log file. +All other options will be passed to Kafka

+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Bridge cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaBridge.spec.consumer.config object, then the Cluster Operator can roll out the new configuration to all Kafka Bridge nodes. +
+
+
+
Example Kafka Bridge consumer configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  consumer:
+    config:
+      auto.offset.reset: earliest
+      enable.auto.commit: true
+  # ...
+
+
+
+
+
Kafka Bridge Producer configuration
+
+

Kafka Bridge producer is configured using the properties in KafkaBridge.spec.producer. +This property contains the Kafka Bridge producer configuration options as keys. +The values can be one of the following JSON types:

+
+
+
    +
  • +

    String

    +
  • +
  • +

    Number

    +
  • +
  • +

    Boolean

    +
  • +
+
+
+

Users can specify and configure the options listed in the Apache Kafka documentation with the exception of those options which are managed directly by Strimzi. +Specifically, all configuration options with keys equal to or starting with one of the following strings are forbidden:

+
+
+
    +
  • +

    ssl.

    +
  • +
  • +

    sasl.

    +
  • +
  • +

    security.

    +
  • +
  • +

    bootstrap.servers

    +
  • +
+
+
+ + + + + +
+
Important
+
+The Cluster Operator does not validate keys or values in the config object provided. +When an invalid configuration is provided, the Kafka Bridge cluster might not start or might become unstable. +In this circumstance, fix the configuration in the KafkaBridge.spec.producer.config object, then the Cluster Operator can roll out the new configuration to all Kafka Bridge nodes. +
+
+
+
Example Kafka Bridge producer configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  producer:
+    config:
+      acks: 1
+      delivery.timeout.ms: 300000
+  # ...
+
+
+
+
+
Kafka Bridge HTTP configuration
+
+

Kafka Bridge HTTP configuration is set using the properties in KafkaBridge.spec.http. +This property contains the Kafka Bridge HTTP configuration options.

+
+
+
    +
  • +

    port

    +
  • +
+
+
+

When configuring port property avoid the value 8081. This port is used for the health checks.

+
+
+
Example Kafka Bridge HTTP configuration
+
+
apiVersion: kafka.strimzi.io/v1alpha1
+kind: KafkaBridge
+metadata:
+  name: my-bridge
+spec:
+  # ...
+  http:
+    port: 8080
+  # ...
+
+
+
+ + + + + +
+
Important
+
+The port must not be set to 8081 as that will cause a conflict with the healthcheck settings. +
+
+
+
+
Configuring Kafka Bridge
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the kafka, http, consumer or producer property in the KafkaBridge resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +kind: KafkaBridge
    +metadata:
    +  name: my-bridge
    +spec:
    +  # ...
    +  bootstrapServers: my-cluster-kafka:9092
    +  http:
    +    port: 8080
    +  consumer:
    +    config:
    +      auto.offset.reset: earliest
    +  producer:
    +    config:
    +      delivery.timeout.ms: 300000
    +  # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.6. Healthchecks

+
+

Healthchecks are periodical tests which verify the health of an application. +When a Healthcheck probe fails, OpenShift or Kubernetes assumes that the application is not healthy and attempts to fix it.

+
+
+

OpenShift or Kubernetes supports two types of Healthcheck probes:

+
+
+
    +
  • +

    Liveness probes

    +
  • +
  • +

    Readiness probes

    +
  • +
+
+
+

For more details about the probes, see Configure Liveness and Readiness Probes. +Both types of probes are used in Strimzi components.

+
+
+

Users can configure selected options for liveness and readiness probes.

+
+
+
Healthcheck configurations
+
+

Liveness and readiness probes can be configured using the livenessProbe and readinessProbe properties in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+

Both livenessProbe and readinessProbe support two additional options:

+
+
+
    +
  • +

    initialDelaySeconds

    +
  • +
  • +

    timeoutSeconds

    +
  • +
+
+
+

The initialDelaySeconds property defines the initial delay before the probe is tried for the first time. +Default is 15 seconds.

+
+
+

The timeoutSeconds property defines timeout of the probe. +Default is 5 seconds.

+
+
+
An example of liveness and readiness probe configuration
+
+
# ...
+readinessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+livenessProbe:
+  initialDelaySeconds: 15
+  timeoutSeconds: 5
+# ...
+
+
+
+
+
Configuring healthchecks
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the livenessProbe or readinessProbe property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    readinessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    livenessProbe:
    +      initialDelaySeconds: 15
    +      timeoutSeconds: 5
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.7. Container images

+
+

Strimzi allows you to configure container images which will be used for its components. +Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such a case, you should either copy the Strimzi images or build them from the source. +If the configured image is not compatible with Strimzi images, it might not work properly.

+
+
+
Container image configurations
+
+

Container image which should be used for given components can be specified using the image property in:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.kafka.tlsSidecar

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.zookeeper.tlsSidecar

    +
  • +
  • +

    Kafka.spec.entityOperator.topicOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.userOperator

    +
  • +
  • +

    Kafka.spec.entityOperator.tlsSidecar

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaBridge.spec

    +
  • +
+
+
+
Configuring the Kafka.spec.kafka.image property
+
+

The Kafka.spec.kafka.image property functions differently from the others, because Strimzi supports multiple versions of Kafka, each requiring the own image. +The STRIMZI_KAFKA_IMAGES environment variable of the Cluster Operator configuration is used to provide a mapping between Kafka versions and the corresponding images. +This is used in combination with the Kafka.spec.kafka.image and Kafka.spec.kafka.version properties as follows:

+
+
+
    +
  • +

    If neither Kafka.spec.kafka.image nor Kafka.spec.kafka.version are given in the custom resource then the version will default to the Cluster Operator’s default Kafka version, and the image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    If Kafka.spec.kafka.image is given but Kafka.spec.kafka.version is not then the given image will be used and the version will be assumed to be the Cluster Operator’s default Kafka version.

    +
  • +
  • +

    If Kafka.spec.kafka.version is given but Kafka.spec.kafka.image is not then image will be the one corresponding to this version in the STRIMZI_KAFKA_IMAGES.

    +
  • +
  • +

    Both Kafka.spec.kafka.version and Kafka.spec.kafka.image are given the given image will be used, and it will be assumed to contain a Kafka broker with the given version.

    +
  • +
+
+
+ + + + + +
+
Warning
+
+It is best to provide just Kafka.spec.kafka.version and leave the Kafka.spec.kafka.image property unspecified. +This reduces the chances of making a mistake in configuring the Kafka resource. If you need to change the images used for different versions of Kafka, it is better to configure the Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable. +
+
+
+
+
Configuring the image property in other resources
+
+

For the image property in the other custom resources, the given value will be used during deployment. +If the image property is missing, the image specified in the Cluster Operator configuration will be used. +If the image name is not defined in the Cluster Operator configuration, then the default value will be used.

+
+
+
    +
  • +

    For Kafka broker TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper nodes:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Zookeeper node TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Topic Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For User Operator:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_USER_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/operator:0.12.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Entity Operator TLS sidecar:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
  • +

    For Kafka Connect with Source2image support:

    +
    +
      +
    1. +

      Container image specified in the STRIMZI_DEFAULT_KAFKA_CONNECT_S2I_IMAGE environment variable from the Cluster Operator configuration.

      +
    2. +
    3. +

      strimzi/kafka:0.12.1-kafka-2.2.1 container image.

      +
    4. +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+Overriding container images is recommended only in special situations, where you need to use a different container registry. +For example, because your network does not allow access to the container repository used by Strimzi. +In such case, you should either copy the Strimzi images or build them from source. +In case the configured image is not compatible with Strimzi images, it might not work properly. +
+
+
+
Example of container image configuration
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+spec:
+  kafka:
+    # ...
+    image: my-org/my-image:latest
+    # ...
+  zookeeper:
+    # ...
+
+
+
+
+
+
Configuring container images
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the image property in the Kafka, KafkaConnect or KafkaConnectS2I resource. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    image: my-org/my-image:latest
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+

3.5.8. Configuring pod scheduling

+
+ + + + + +
+
Important
+
+When two application are scheduled to the same OpenShift or Kubernetes node, both applications might use the same resources like disk I/O and impact performance. +That can lead to performance degradation. +Scheduling Kafka pods in a way that avoids sharing nodes with other critical workloads, using the right nodes or dedicated a set of nodes only for Kafka are the best ways how to avoid such problems. +
+
+
+
Scheduling pods based on other applications
+
+
Avoid critical applications to share the node
+
+

Pod anti-affinity can be used to ensure that critical applications are never scheduled on the same disk. +When running Kafka cluster, it is recommended to use pod anti-affinity to ensure that the Kafka brokers do not share the nodes with other workloads like databases.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring pod anti-affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the affinity property in the resource specifying the cluster deployment. +Use labels to specify the pods which should not be scheduled on the same nodes. +The topologyKey should be set to kubernetes.io/hostname to specify that the selected pods should not be scheduled on nodes with the same hostname. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          podAntiAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              - labelSelector:
    +                  matchExpressions:
    +                    - key: application
    +                      operator: In
    +                      values:
    +                        - postgresql
    +                        - mongodb
    +                topologyKey: "kubernetes.io/hostname"
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
+
+
Scheduling pods to specific nodes
+
+
Node scheduling
+
+

The OpenShift or Kubernetes cluster usually consists of many different types of worker nodes. +Some are optimized for CPU heavy workloads, some for memory, while other might be optimized for storage (fast local SSDs) or network. +Using different nodes helps to optimize both costs and performance. +To achieve the best possible performance, it is important to allow scheduling of Strimzi components to use the right nodes.

+
+
+

OpenShift or Kubernetes uses node affinity to schedule workloads onto specific nodes. +Node affinity allows you to create a scheduling constraint for the node on which the pod will be scheduled. +The constraint is specified as a label selector. +You can specify the label using either the built-in node label like beta.kubernetes.io/instance-type or custom labels to select the right node.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Configuring node affinity in Kafka components
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Label the nodes where Strimzi components should be scheduled.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node node-type=fast-network
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node node-type=fast-network
    +
    +
    +
    +

    Alternatively, some of the existing labels might be reused.

    +
    +
  2. +
  3. +

    Edit the affinity property in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +                - matchExpressions:
    +                  - key: node-type
    +                    operator: In
    +                    values:
    +                    - fast-network
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  4. +
  5. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
+
+
Using dedicated nodes
+
+
Dedicated nodes
+
+

Cluster administrators can mark selected OpenShift or Kubernetes nodes as tainted. +Nodes with taints are excluded from regular scheduling and normal pods will not be scheduled to run on them. +Only services which can tolerate the taint set on the node can be scheduled on it. +The only other services running on such nodes will be system services such as log collectors or software defined networks.

+
+
+

Taints can be used to create dedicated nodes. +Running Kafka and its components on dedicated nodes can have many advantages. +There will be no other applications running on the same nodes which could cause disturbance or consume the resources needed for Kafka. +That can lead to improved performance and stability.

+
+
+

To schedule Kafka pods on the dedicated nodes, configure node affinity and tolerations.

+
+
+
+
Affinity
+
+

Affinity can be configured using the affinity property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The affinity configuration can include different types of affinity:

+
+
+
    +
  • +

    Pod affinity and anti-affinity

    +
  • +
  • +

    Node affinity

    +
  • +
+
+
+

The format of the affinity property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes node and pod affinity documentation.

+
+
+
+
Tolerations
+
+

Tolerations can be configured using the tolerations property in following resources:

+
+
+
    +
  • +

    Kafka.spec.kafka.template.pod

    +
  • +
  • +

    Kafka.spec.zookeeper.template.pod

    +
  • +
  • +

    Kafka.spec.entityOperator.template.pod

    +
  • +
  • +

    KafkaConnect.spec.template.pod

    +
  • +
  • +

    KafkaConnectS2I.spec.template.pod

    +
  • +
  • +

    KafkaBridge.spec.template.pod

    +
  • +
+
+
+

The format of the tolerations property follows the OpenShift or Kubernetes specification. +For more details, see the Kubernetes taints and tolerations.

+
+
+
+
Setting up dedicated nodes and scheduling pods on them
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Select the nodes which should be used as dedicated.

    +
  2. +
  3. +

    Make sure there are no workloads scheduled on these nodes.

    +
  4. +
  5. +

    Set the taints on the selected nodes:

    +
    +

    On Kubernetes this can be done using kubectl taint:

    +
    +
    +
    +
    kubectl taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
    +

    On OpenShift this can be done using oc adm taint:

    +
    +
    +
    +
    oc adm taint node your-node dedicated=Kafka:NoSchedule
    +
    +
    +
  6. +
  7. +

    Additionally, add a label to the selected nodes as well.

    +
    +

    On Kubernetes this can be done using kubectl label:

    +
    +
    +
    +
    kubectl label node your-node dedicated=Kafka
    +
    +
    +
    +

    On OpenShift this can be done using oc label:

    +
    +
    +
    +
    oc label node your-node dedicated=Kafka
    +
    +
    +
  8. +
  9. +

    Edit the affinity and tolerations properties in the resource specifying the cluster deployment. +For example:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      pod:
    +        tolerations:
    +          - key: "dedicated"
    +            operator: "Equal"
    +            value: "Kafka"
    +            effect: "NoSchedule"
    +        affinity:
    +          nodeAffinity:
    +            requiredDuringSchedulingIgnoredDuringExecution:
    +              nodeSelectorTerms:
    +              - matchExpressions:
    +                - key: dedicated
    +                  operator: In
    +                  values:
    +                  - Kafka
    +    # ...
    +  zookeeper:
    +    # ...
    +
    +
    +
  10. +
  11. +

    Create or update the resource.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  12. +
+
+
+
+
+
+

3.5.9. List of resources created as part of Kafka Bridge cluster

+
+

The following resources are created by the Cluster Operator in the OpenShift or Kubernetes cluster:

+
+
+
+
bridge-cluster-name-bridge
+
+

Deployment which is in charge to create the Kafka Bridge worker node pods.

+
+
bridge-cluster-name-bridge-service
+
+

Service which exposes the REST interface of the Kafka Bridge cluster.

+
+
bridge-cluster-name-bridge-config
+
+

ConfigMap which contains the Kafka Bridge ancillary configuration and is mounted as a volume by the Kafka broker pods.

+
+
bridge-cluster-name-bridge
+
+

Pod Disruption Budget configured for the Kafka Bridge worker nodes.

+
+
+
+
+
+
+

3.6. Customizing deployments

+
+

Strimzi creates several OpenShift or Kubernetes resources, such as Deployments, StatefulSets, Pods, and Services, which are managed by OpenShift or Kubernetes operators. +Only the operator that is responsible for managing a particular OpenShift or Kubernetes resource can change that resource. +If you try to manually change an operator-managed OpenShift or Kubernetes resource, the operator will revert your changes back.

+
+
+

However, changing an operator-managed OpenShift or Kubernetes resource can be useful if you want to perform certain tasks, such as:

+
+
+
    +
  • +

    Adding custom labels or annotations that control how Pods are treated by Istio or other services;

    +
  • +
  • +

    Managing how Loadbalancer-type Services are created by the cluster.

    +
  • +
+
+
+

You can make these types of changes using the template property in the Strimzi custom resources.

+
+
+

3.6.1. Template properties

+
+

You can use the template property to configure aspects of the resource creation process. +You can include it in the following resources and properties:

+
+
+
    +
  • +

    Kafka.spec.kafka

    +
  • +
  • +

    Kafka.spec.zookeeper

    +
  • +
  • +

    Kafka.spec.entityOperator

    +
  • +
  • +

    KafkaConnect.spec

    +
  • +
  • +

    KafkaConnectS2I.spec

    +
  • +
  • +

    KafkaMirrorMakerSpec

    +
  • +
+
+
+

In the following example, the template property is used to modify the labels in a Kafka broker’s StatefulSet:

+
+
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: Kafka
+metadata:
+  name: my-cluster
+  labels:
+    app: my-cluster
+spec:
+  kafka:
+    # ...
+    template:
+      statefulset:
+        metadata:
+          labels:
+            mylabel: myvalue
+    # ...
+
+
+
+
Supported resources in Kafka cluster
+

When defined in a Kafka cluster, the template object can have the following fields:

+
+
+
+
statefulset
+
+

Configures the StatefulSet used by the Kafka broker.

+
+
pod
+
+

Configures the Kafka broker Pods created by the StatefulSet.

+
+
bootstrapService
+
+

Configures the bootstrap service used by clients running within OpenShift or Kubernetes to connect to the Kafka broker.

+
+
brokersService
+
+

Configures the headless service.

+
+
externalBootstrapService
+
+

Configures the bootstrap service used by clients connecting to Kafka brokers from outside of OpenShift or Kubernetes.

+
+
perPodService
+
+

Configures the per-Pod services used by clients connecting to the Kafka broker from outside OpenShift or Kubernetes to access individual brokers.

+
+
externalBootstrapRoute
+
+

Configures the bootstrap route used by clients connecting to the Kafka brokers from outside of OpenShift using OpenShift Routes.

+
+
perPodRoute
+
+

Configures the per-Pod routes used by clients connecting to the Kafka broker from outside OpenShift to access individual brokers using OpenShift Routes.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Kafka broker StatefulSet.

+
+
+
+
+
Supported resources in Zookeeper cluster
+

When defined in a Zookeeper cluster, the template object can have the following fields:

+
+
+
+
statefulset
+
+

Configures the Zookeeper StatefulSet.

+
+
pod
+
+

Configures the Zookeeper Pods created by the StatefulSet.

+
+
clientsService
+
+

Configures the service used by clients to access Zookeeper.

+
+
nodesService
+
+

Configures the headless service.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Zookeeper StatefulSet.

+
+
+
+
+
Supported resources in Entity Operator
+

When defined in an Entity Operator , the template object can have the following fields:

+
+
+
+
deployment
+
+

Configures the Deployment used by the Entity Operator.

+
+
pod
+
+

Configures the Entity Operator Pod created by the Deployment.

+
+
+
+
+
Supported resources in Kafka Connect and Kafka Connect with Source2Image support
+

When used with Kafka Connect and Kafka Connect with Source2Image support , the template object can have the following fields:

+
+
+
+
deployment
+
+

Configures the Kafka Connect Deployment.

+
+
pod
+
+

Configures the Kafka Connect Pods created by the Deployment.

+
+
apiService
+
+

Configures the service used by the Kafka Connect REST API.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Kafka Connect Deployment.

+
+
+
+
+
Supported resource in Kafka Mirror Maker
+

When used with Kafka Mirror Maker , the template object can have the following fields:

+
+
+
+
deployment
+
+

Configures the Kafka Mirror Maker Deployment.

+
+
pod
+
+

Configures the Kafka Mirror Maker Pods created by the Deployment.

+
+
podDisruptionBudget
+
+

Configures the Pod Disruption Budget for Kafka Mirror Maker Deployment.

+
+
+
+
+
+

3.6.2. Labels and Annotations

+
+

For every resource, you can configure additional Labels and Annotations. +Labels and Annotations are configured in the metadata property. +For example:

+
+
+
+
# ...
+template:
+    statefulset:
+        metadata:
+            labels:
+                label1: value1
+                label2: value2
+            annotations:
+                annotation1: value1
+                annotation2: value2
+# ...
+
+
+
+

The labels and annotations fields can contain any labels or annotations that do not contain the reserved string strimzi.io. +Labels and annotations containing strimzi.io are used internally by Strimzi and cannot be configured by the user.

+
+
+
+

3.6.3. Customizing Pods

+
+

In addition to Labels and Annotations, you can customize some other fields on Pods. +These fields are described in the following table and affect how the Pod is created.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + +
FieldDescription

terminationGracePeriodSeconds

Defines the period of time, in seconds, by which the Pod must have terminated gracefully. +After the grace period, the Pod and its containers are forcefully terminated (killed). +The default value is 30 seconds.

+

NOTE: You might need to increase the grace period for very large Kafka clusters, so that the Kafka brokers have enough time to transfer their work to another broker before they are terminated.

imagePullSecrets

Defines a list of references to OpenShift or Kubernetes Secrets that can be used for pulling container images from private repositories. +For more information about how to create a Secret with the credentials, see Pull an Image from a Private Registry.

+

NOTE: When the STRIMZI_IMAGE_PULL_SECRETS environment variable in Cluster Operator and the imagePullSecrets option are specified, only the imagePullSecrets variable is used. The STRIMZI_IMAGE_PULL_SECRETS variable is ignored.

securityContext

Configures pod-level security attributes for containers running as part of a given Pod. +For more information about configuring SecurityContext, see Configure a Security Context for a Pod or Container.

+
+

These fields are effective on each type of cluster (Kafka and Zookeeper; Kafka Connect and Kafka Connect with S2I support; and Kafka Mirror Maker).

+
+
+

The following example shows these customized fields on a template property:

+
+
+
+
# ...
+template:
+    pod:
+        metadata:
+            labels:
+                label1: value1
+        imagePullSecrets:
+             - name: my-docker-credentials
+        securityContext:
+             runAsUser: 1000001
+             fsGroup: 0
+        terminationGracePeriodSeconds: 120
+# ...
+
+
+
+
Additional resources
+ +
+
+
+

3.6.4. Customizing the image pull policy

+
+

Strimzi allows you to customize the image pull policy for containers in all pods deployed by the Cluster Operator. +The image pull policy is configured using the environment variable STRIMZI_IMAGE_PULL_POLICY in the Cluster Operator deployment. +The STRIMZI_IMAGE_PULL_POLICY environment variable can be set to three different values:

+
+
+
+
Always
+
+

Container images are pulled from the registry every time the pod is started or restarted.

+
+
IfNotPresent
+
+

Container images are pulled from the registry only when they were not pulled before.

+
+
Never
+
+

Container images are never pulled from the registry.

+
+
+
+
+

The image pull policy can be currently customized only for all Kafka, Kafka Connect, and Kafka Mirror Maker clusters at once. +Changing the policy will result in a rolling update of all your Kafka, Kafka Connect, and Kafka Mirror Maker clusters.

+
+
+
Additional resources
+
    +
  • +

    For more information about Cluster Operator configuration, see Cluster Operator.

    +
  • +
  • +

    For more information about Image Pull Policies, see Disruptions.

    +
  • +
+
+
+
+

3.6.5. Customizing Pod Disruption Budgets

+
+

Strimzi creates a pod disruption budget for every new StatefulSet or Deployment. +By default, these pod disruption budgets only allow a single pod to be unavailable at a given time by setting the maxUnavailable value in the`PodDisruptionBudget.spec` resource to 1. +You can change the amount of unavailable pods allowed by changing the default value of maxUnavailable in the pod disruption budget template. +This template applies to each type of cluster (Kafka and Zookeeper; Kafka Connect and Kafka Connect with S2I support; and Kafka Mirror Maker).

+
+
+

The following example shows customized podDisruptionBudget fields on a template property:

+
+
+
+
# ...
+template:
+    podDisruptionBudget:
+        metadata:
+            labels:
+                key1: label1
+                key2: label2
+            annotations:
+                key1: label1
+                key2: label2
+        maxUnavailable: 1
+# ...
+
+
+
+
Additional resources
+ +
+
+
+

3.6.6. Customizing deployments

+
+

This procedure describes how to customize Labels of a Kafka cluster.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster.

    +
  • +
  • +

    A running Cluster Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the template property in the Kafka, KafkaConnect, KafkaConnectS2I, or KafkaMirrorMaker resource. +For example, to modify the labels for the Kafka broker StatefulSet, use:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +  labels:
    +    app: my-cluster
    +spec:
    +  kafka:
    +    # ...
    +    template:
    +      statefulset:
    +        metadata:
    +          labels:
    +            mylabel: myvalue
    +    # ...
    +
    +
    +
  2. +
  3. +

    Create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    Alternatively, use kubectl edit:

    +
    +
    +
    +
    kubectl edit Resource ClusterName
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
    +

    Alternatively, use oc edit:

    +
    +
    +
    +
    oc edit Resource ClusterName
    +
    +
    +
  4. +
+
+
+
+
+
+
+

4. Operators

+
+
+

4.1. Cluster Operator

+
+

4.1.1. Overview of the Cluster Operator component

+
+

The Cluster Operator is in charge of deploying a Kafka cluster alongside a Zookeeper ensemble. +As part of the Kafka cluster, it can also deploy the topic operator which provides operator-style topic management via KafkaTopic custom resources. +The Cluster Operator is also able to deploy a Kafka Connect cluster which connects to an existing Kafka cluster. +On OpenShift such a cluster can be deployed using the Source2Image feature, providing an easy way of including more connectors.

+
+
+
Example architecture for the Cluster Operator
+

Cluster Operator

+
+
+

When the Cluster Operator is up, it starts to watch for certain OpenShift or Kubernetes resources containing the desired Kafka, Kafka Connect, or Kafka Mirror Maker cluster configuration. +By default, it watches only in the same namespace or project where it is installed. +The Cluster Operator can be configured to watch for more OpenShift projects or Kubernetes namespaces. +Cluster Operator watches the following resources:

+
+
+
    +
  • +

    A Kafka resource for the Kafka cluster.

    +
  • +
  • +

    A KafkaConnect resource for the Kafka Connect cluster.

    +
  • +
  • +

    A KafkaConnectS2I resource for the Kafka Connect cluster with Source2Image support.

    +
  • +
  • +

    A KafkaMirrorMaker resource for the Kafka Mirror Maker instance.

    +
  • +
+
+
+

When a new Kafka, KafkaConnect, KafkaConnectS2I, or Kafka Mirror Maker resource is created in the OpenShift or Kubernetes cluster, the operator gets the cluster description from the desired resource and starts creating a new Kafka, Kafka Connect, or Kafka Mirror Maker cluster by creating the necessary other OpenShift or Kubernetes resources, such as StatefulSets, Services, ConfigMaps, and so on.

+
+
+

Every time the desired resource is updated by the user, the operator performs corresponding updates on the OpenShift or Kubernetes resources which make up the Kafka, Kafka Connect, or Kafka Mirror Maker cluster. +Resources are either patched or deleted and then re-created in order to make the Kafka, Kafka Connect, or Kafka Mirror Maker cluster reflect the state of the desired cluster resource. +This might cause a rolling update which might lead to service disruption.

+
+
+

Finally, when the desired resource is deleted, the operator starts to undeploy the cluster and delete all the related OpenShift or Kubernetes resources.

+
+
+
+

4.1.2. Deploying the Cluster Operator to Kubernetes

+
+
Prerequisites
+
    +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    kubectl apply -f install/cluster-operator -n _my-namespace_
    +
    +
    +
  • +
+
+
+
+

4.1.3. Deploying the Cluster Operator to OpenShift

+
+
Prerequisites
+
    +
  • +

    A user with cluster-admin role needs to be used, for example, system:admin.

    +
  • +
  • +

    Modify the installation files according to the namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-project/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  • +

    Deploy the Cluster Operator:

    +
    +
    +
    oc apply -f install/cluster-operator -n _my-project_
    +oc apply -f examples/templates/cluster-operator -n _my-project_
    +
    +
    +
  • +
+
+
+
+

4.1.4. Deploying the Cluster Operator to watch multiple namespaces

+
+
Prerequisites
+
    +
  • +

    Edit the installation files according to the OpenShift project or Kubernetes namespace the Cluster Operator is going to be installed in.

    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the file install/cluster-operator/050-Deployment-strimzi-cluster-operator.yaml and in the environment variable STRIMZI_NAMESPACE list all the OpenShift projects or Kubernetes namespaces where Cluster Operator should watch for resources. +For example:

    +
    +
    +
    apiVersion: extensions/v1beta1
    +kind: Deployment
    +spec:
    +  template:
    +    spec:
    +      serviceAccountName: strimzi-cluster-operator
    +      containers:
    +      - name: strimzi-cluster-operator
    +        image: strimzi/operator:0.12.1
    +        imagePullPolicy: IfNotPresent
    +        env:
    +        - name: STRIMZI_NAMESPACE
    +          value: myproject,myproject2,myproject3
    +
    +
    +
  2. +
  3. +

    For all namespaces or projects which should be watched by the Cluster Operator, install the RoleBindings. +Replace the my-namespace or my-project with the OpenShift project or Kubernetes namespace used in the previous step.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-namespace
    +kubectl apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator/020-RoleBinding-strimzi-cluster-operator.yaml -n my-project
    +oc apply -f install/cluster-operator/031-RoleBinding-strimzi-cluster-operator-entity-operator-delegation.yaml -n my-project
    +oc apply -f install/cluster-operator/032-RoleBinding-strimzi-cluster-operator-topic-operator-delegation.yaml -n my-project
    +
    +
    +
  4. +
  5. +

    Deploy the Cluster Operator

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
  6. +
+
+
+
+

4.1.5. Deploying the Cluster Operator to watch all namespaces

+
+

You can configure the Cluster Operator to watch Strimzi resources across all OpenShift projects or Kubernetes namespaces in your OpenShift or Kubernetes cluster. When running in this mode, the Cluster Operator automatically manages clusters in any new projects or namespaces that are created.

+
+
+
Prerequisites
+
    +
  • +

    Your OpenShift or Kubernetes cluster is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Configure the Cluster Operator to watch all namespaces:

    +
    +
      +
    1. +

      Edit the 050-Deployment-strimzi-cluster-operator.yaml file.

      +
    2. +
    3. +

      Set the value of the STRIMZI_NAMESPACE environment variable to *.

      +
      +
      +
      apiVersion: extensions/v1beta1
      +kind: Deployment
      +spec:
      +  template:
      +    spec:
      +      # ...
      +      serviceAccountName: strimzi-cluster-operator
      +      containers:
      +      - name: strimzi-cluster-operator
      +        image: strimzi/operator:0.12.1
      +        imagePullPolicy: IfNotPresent
      +        env:
      +        - name: STRIMZI_NAMESPACE
      +          value: "*"
      +        # ...
      +
      +
      +
    4. +
    +
    +
  2. +
  3. +

    Create ClusterRoleBindings that grant cluster-wide access to all OpenShift projects or Kubernetes namespaces to the Cluster Operator.

    +
    +

    On OpenShift, use the oc adm policy command:

    +
    +
    +
    +
    oc adm policy add-cluster-role-to-user strimzi-cluster-operator-namespaced --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-entity-operator --serviceaccount strimzi-cluster-operator -n my-project
    +oc adm policy add-cluster-role-to-user strimzi-topic-operator --serviceaccount strimzi-cluster-operator -n my-project
    +
    +
    +
    +

    Replace my-project with the project in which you want to install the Cluster Operator.

    +
    +
    +

    On Kubernetes, use the kubectl create command:

    +
    +
    +
    +
    kubectl create clusterrolebinding strimzi-cluster-operator-namespaced --clusterrole=strimzi-cluster-operator-namespaced --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-entity-operator-delegation --clusterrole=strimzi-entity-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +kubectl create clusterrolebinding strimzi-cluster-operator-topic-operator-delegation --clusterrole=strimzi-topic-operator --serviceaccount my-namespace:strimzi-cluster-operator
    +
    +
    +
    +

    Replace my-namespace with the namespace in which you want to install the Cluster Operator.

    +
    +
  4. +
  5. +

    Deploy the Cluster Operator to your OpenShift or Kubernetes cluster.

    +
    +

    On OpenShift, use the oc apply command:

    +
    +
    +
    +
    oc apply -f install/cluster-operator -n my-project
    +
    +
    +
    +

    On Kubernetes, use the kubectl apply command:

    +
    +
    +
    +
    kubectl apply -f install/cluster-operator -n my-namespace
    +
    +
    +
  6. +
+
+
+
+

4.1.6. Deploying the Cluster Operator using Helm Chart

+
+
Prerequisites
+
    +
  • +

    Helm client has to be installed on the local machine.

    +
  • +
  • +

    Helm has to be installed in the OpenShift or Kubernetes cluster.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Add the Strimzi Helm Chart repository:

    +
    +
    +
    helm repo add strimzi http://strimzi.io/charts/
    +
    +
    +
  2. +
  3. +

    Deploy the Cluster Operator using the Helm command line tool:

    +
    +
    +
    helm install strimzi/strimzi-kafka-operator
    +
    +
    +
  4. +
  5. +

    Verify whether the Cluster Operator has been deployed successfully using the Helm command line tool:

    +
    +
    +
    helm ls
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about Helm, see the Helm website.

    +
  • +
+
+
+
+

4.1.7. Deploying the Cluster Operator from OperatorHub.io

+
+

OperatorHub.io is a catalog of Kubernetes Operators sourced from multiple providers. +It offers you an alternative way to install stable versions of Strimzi using the Strimzi Kafka Operator.

+
+
+

The Operator Lifecycle Manager is used for the installation and management of all Operators published on OperatorHub.io.

+
+
+

To install Strimzi from OperatorHub.io, locate the Strimzi Kafka Operator and follow the instructions provided.

+
+
+
+

4.1.8. Reconciliation

+
+

Although the operator reacts to all notifications about the desired cluster resources received from the OpenShift or Kubernetes cluster, +if the operator is not running, or if a notification is not received for any reason, the desired resources will get out of sync with the state of the running OpenShift or Kubernetes cluster.

+
+
+

In order to handle failovers properly, a periodic reconciliation process is executed by the Cluster Operator so that it can compare the state of the desired resources with the current cluster deployments in order to have a consistent state across all of them. +You can set the time interval for the periodic reconciliations using the STRIMZI_FULL_RECONCILIATION_INTERVAL_MS variable.

+
+
+
+

4.1.9. Cluster Operator Configuration

+
+

The Cluster Operator can be configured through the following supported environment variables:

+
+
+
+
STRIMZI_NAMESPACE
+
+

A comma-separated list of OpenShift projects or Kubernetes namespaces that the operator should operate in. +When not set, set to empty string, or to * the cluster operator will operate in all OpenShift projects or Kubernetes namespaces. +The Cluster Operator deployment might use the Kubernetes Downward API +to set this automatically to the namespace the Cluster Operator is deployed in. See the example below:

+
+
+
env:
+  - name: STRIMZI_NAMESPACE
+    valueFrom:
+      fieldRef:
+        fieldPath: metadata.namespace
+
+
+
+
STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
+
+

Optional, default is 120000 ms. The interval between periodic reconciliations, in milliseconds.

+
+
STRIMZI_LOG_LEVEL
+
+

Optional, default INFO. +The level for printing logging messages. The value can be set to: ERROR, WARNING, INFO, DEBUG, and TRACE.

+
+
STRIMZI_OPERATION_TIMEOUT_MS
+
+

Optional, default 300000 ms. +The timeout for internal operations, in milliseconds. This value should be +increased when using Strimzi on clusters where regular OpenShift or Kubernetes operations take longer than usual (because of slow downloading of Docker images, for example).

+
+
STRIMZI_KAFKA_IMAGES
+
+

Required. +This provides a mapping from Kafka version to the corresponding Docker image containing a Kafka broker of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a Kafka.spec.kafka.version property is specified but not the Kafka.spec.kafka.image, as described in Container images.

+
+
STRIMZI_DEFAULT_KAFKA_INIT_IMAGE
+
+

Optional, default strimzi/operator:0.12.1. +The image name to use as default for the init container started before the broker for initial configuration work (that is, rack support), if no image is specified as the kafka-init-image in the Container images.

+
+
STRIMZI_DEFAULT_TLS_SIDECAR_KAFKA_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying the sidecar container which provides TLS support for Kafka, +if no image is specified as the Kafka.spec.kafka.tlsSidecar.image in the Container images.

+
+
STRIMZI_DEFAULT_ZOOKEEPER_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying Zookeeper, if +no image is specified as the Kafka.spec.zookeeper.image in the Container images.

+
+
STRIMZI_DEFAULT_TLS_SIDECAR_ZOOKEEPER_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying the sidecar container which provides TLS support for Zookeeper, if +no image is specified as the Kafka.spec.zookeeper.tlsSidecar.image in the Container images.

+
+
STRIMZI_KAFKA_CONNECT_IMAGES
+
+

Required. +This provides a mapping from the Kafka version to the corresponding Docker image containing a Kafka connect of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a KafkaConnect.spec.version property is specified but not the KafkaConnect.spec.image, as described in Container images.

+
+
STRIMZI_KAFKA_CONNECT_S2I_IMAGES
+
+

Required. +This provides a mapping from the Kafka version to the corresponding Docker image containing a Kafka connect of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a KafkaConnectS2I.spec.version property is specified but not the KafkaConnectS2I.spec.image, as described in Container images.

+
+
STRIMZI_KAFKA_MIRROR_MAKER_IMAGES
+
+

Required. +This provides a mapping from the Kafka version to the corresponding Docker image containing a Kafka mirror maker of that version. +The required syntax is whitespace or comma separated <version>=<image> pairs. +For example 2.1.1=strimzi/kafka:0.12.1-kafka-2.1.1, 2.2.1=strimzi/kafka:0.12.1-kafka-2.2.1. +This is used when a KafkaMirrorMaker.spec.version property is specified but not the KafkaMirrorMaker.spec.image, as described in Container images.

+
+
STRIMZI_DEFAULT_TOPIC_OPERATOR_IMAGE
+
+

Optional, default strimzi/operator:0.12.1. +The image name to use as the default when deploying the topic operator, +if no image is specified as the Kafka.spec.entityOperator.topicOperator.image in the Container images of the Kafka resource.

+
+
STRIMZI_DEFAULT_USER_OPERATOR_IMAGE
+
+

Optional, default strimzi/operator:0.12.1. +The image name to use as the default when deploying the user operator, +if no image is specified as the Kafka.spec.entityOperator.userOperator.image in the Container images of the Kafka resource.

+
+
STRIMZI_DEFAULT_TLS_SIDECAR_ENTITY_OPERATOR_IMAGE
+
+

Optional, default strimzi/kafka:0.12.1-kafka-2.2.1. +The image name to use as the default when deploying the sidecar container which provides TLS support for the Entity Operator, if +no image is specified as the Kafka.spec.entityOperator.tlsSidecar.image in the Container images.

+
+
STRIMZI_IMAGE_PULL_POLICY
+
+

Optional. +The ImagePullPolicy which will be applied to containers in all pods managed by Strimzi Cluster Operator. +The valid values are Always, IfNotPresent, and Never. +If not specified, the OpenShift or Kubernetes defaults will be used. +Changing the policy will result in a rolling update of all your Kafka, Kafka Connect, and Kafka Mirror Maker clusters.

+
+
STRIMZI_IMAGE_PULL_SECRETS
+
+

Optional. +A comma-separated list of Secret names. +The secrets referenced here contain the credentials to the container registries where the container images are pulled from. +The secrets are used in the imagePullSecrets field for all Pods created by the Cluster Operator. +Changing this list results in a rolling update of all your Kafka, Kafka Connect, and Kafka Mirror Maker clusters.

+
+
+
+
+
+

4.1.10. Role-Based Access Control (RBAC)

+
+
Provisioning Role-Based Access Control (RBAC) for the Cluster Operator
+
+

For the Cluster Operator to function it needs permission within the OpenShift or Kubernetes cluster to interact with resources such as Kafka, KafkaConnect, and so on, as well as the managed resources, such as ConfigMaps, Pods, Deployments, StatefulSets, Services, and so on. +Such permission is described in terms of OpenShift or Kubernetes role-based access control (RBAC) resources:

+
+
+
    +
  • +

    ServiceAccount,

    +
  • +
  • +

    Role and ClusterRole,

    +
  • +
  • +

    RoleBinding and ClusterRoleBinding.

    +
  • +
+
+
+

In addition to running under its own ServiceAccount with a ClusterRoleBinding, the Cluster Operator manages some RBAC resources for the components that need access to OpenShift or Kubernetes resources.

+
+
+

OpenShift or Kubernetes also includes privilege escalation protections that prevent components operating under one ServiceAccount from granting other ServiceAccounts privileges that the granting ServiceAccount does not have. +Because the Cluster Operator must be able to create the ClusterRoleBindings, and RoleBindings needed by resources it manages, the Cluster Operator must also have those same privileges.

+
+
+
+
Delegated privileges
+
+

When the Cluster Operator deploys resources for a desired Kafka resource it also creates ServiceAccounts, RoleBindings, and ClusterRoleBindings, as follows:

+
+
+
    +
  • +

    The Kafka broker pods use a ServiceAccount called cluster-name-kafka

    +
    +
      +
    • +

      When the rack feature is used, the strimzi-cluster-name-kafka-init ClusterRoleBinding is used to grant this ServiceAccount access to the nodes within the cluster via a ClusterRole called strimzi-kafka-broker

      +
    • +
    • +

      When the rack feature is not used no binding is created.

      +
    • +
    +
    +
  • +
  • +

    The Zookeeper pods use the default ServiceAccount, as they do not need access to the OpenShift or Kubernetes resources.

    +
  • +
  • +

    The Topic Operator pod uses a ServiceAccount called cluster-name-topic-operator

    +
    +
      +
    • +

      The Topic Operator produces OpenShift or Kubernetes events with status information, so the ServiceAccount is bound to a ClusterRole called strimzi-topic-operator which grants this access via the strimzi-topic-operator-role-binding RoleBinding.

      +
    • +
    +
    +
  • +
+
+
+

The pods for KafkaConnect and KafkaConnectS2I resources use the default ServiceAccount, as they do not require access to the OpenShift or Kubernetes resources.

+
+
+
+
ServiceAccount
+
+

The Cluster Operator is best run using a ServiceAccount:

+
+
+
Example ServiceAccount for the Cluster Operator
+
+
apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+
+
+
+

The Deployment of the operator then needs to specify this in its spec.template.spec.serviceAccountName:

+
+
+
Partial example of Deployment for the Cluster Operator
+
+
apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+spec:
+  replicas: 1
+  template:
+    metadata:
+      labels:
+        name: strimzi-cluster-operator
+        strimzi.io/kind: cluster-operator
+      # ...
+
+
+
+

Note line 12, where the the strimzi-cluster-operator ServiceAccount is specified as the serviceAccountName.

+
+
+
+
ClusterRoles
+
+

The Cluster Operator needs to operate using ClusterRoles that gives access to the necessary resources. +Depending on the OpenShift or Kubernetes cluster setup, a cluster administrator might be needed to create the ClusterRoles.

+
+
+ + + + + +
+
Note
+
+Cluster administrator rights are only needed for the creation of the ClusterRoles. +The Cluster Operator will not run under the cluster admin account. +
+
+
+

The ClusterRoles follow the principle of least privilege and contain only those privileges needed by the Cluster Operator to operate Kafka, Kafka Connect, and Zookeeper clusters. The first set of assigned privileges allow the Cluster Operator to manage OpenShift or Kubernetes resources such as StatefulSets, Deployments, Pods, and ConfigMaps.

+
+
+

Cluster Operator uses ClusterRoles to grant permission at the namespace-scoped resources level and cluster-scoped resources level:

+
+
+
ClusterRole with namespaced resources for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-cluster-operator-namespaced
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - ""
+  resources:
+  - serviceaccounts
+  verbs:
+  - get
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - rbac.authorization.k8s.io
+  resources:
+  - rolebindings
+  verbs:
+  - get
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - configmaps
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - kafka.strimzi.io
+  resources:
+  - kafkas
+  - kafkas/status
+  - kafkaconnects
+  - kafkaconnects2is
+  - kafkamirrormakers
+  - kafkabridges
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - pods
+  verbs:
+  - get
+  - list
+  - watch
+  - delete
+- apiGroups:
+  - ""
+  resources:
+  - services
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - endpoints
+  verbs:
+  - get
+  - list
+  - watch
+- apiGroups:
+  - extensions
+  resources:
+  - deployments
+  - deployments/scale
+  - replicasets
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - apps
+  resources:
+  - deployments
+  - deployments/scale
+  - deployments/status
+  - statefulsets
+  - replicasets
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - create
+- apiGroups:
+  - extensions
+  resources:
+  - replicationcontrollers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - apps.openshift.io
+  resources:
+  - deploymentconfigs
+  - deploymentconfigs/scale
+  - deploymentconfigs/status
+  - deploymentconfigs/finalizers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - build.openshift.io
+  resources:
+  - buildconfigs
+  - builds
+  verbs:
+  - create
+  - delete
+  - get
+  - list
+  - patch
+  - watch
+  - update
+- apiGroups:
+  - image.openshift.io
+  resources:
+  - imagestreams
+  - imagestreams/status
+  verbs:
+  - create
+  - delete
+  - get
+  - list
+  - watch
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - replicationcontrollers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - secrets
+  verbs:
+  - get
+  - list
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - extensions
+  resources:
+  - networkpolicies
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - networking.k8s.io
+  resources:
+  - networkpolicies
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - route.openshift.io
+  resources:
+  - routes
+  - routes/custom-host
+  verbs:
+  - get
+  - list
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - ""
+  resources:
+  - persistentvolumeclaims
+  verbs:
+  - get
+  - list
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - policy
+  resources:
+  - poddisruptionbudgets
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - extensions
+  resources:
+  - ingresses
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - patch
+  - update
+
+
+
+

The second includes the permissions needed for cluster-scoped resources.

+
+
+
ClusterRole with cluster-scoped resources for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-cluster-operator-global
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - rbac.authorization.k8s.io
+  resources:
+  - clusterrolebindings
+  verbs:
+  - get
+  - create
+  - delete
+  - patch
+  - update
+- apiGroups:
+  - storage.k8s.io
+  resources:
+  - storageclasses
+  verbs:
+  - get
+
+
+
+

The strimzi-kafka-broker ClusterRole represents the access needed by the init container in Kafka pods that is used for the rack feature. As described in the Delegated privileges section, this role is also needed by the Cluster Operator in order to be able to delegate this access.

+
+
+
ClusterRole for the Cluster Operator allowing it to delegate access to OpenShift or Kubernetes nodes to the Kafka broker pods
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-kafka-broker
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - ""
+  resources:
+  - nodes
+  verbs:
+  - get
+
+
+
+

The strimzi-topic-operator ClusterRole represents the access needed by the Topic Operator. As described in the Delegated privileges section, this role is also needed by the Cluster Operator in order to be able to delegate this access.

+
+
+
ClusterRole for the Cluster Operator allowing it to delegate access to events to the Topic Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: strimzi-entity-operator
+  labels:
+    app: strimzi
+rules:
+- apiGroups:
+  - kafka.strimzi.io
+  resources:
+  - kafkatopics
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - patch
+  - update
+  - delete
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - create
+- apiGroups:
+  - kafka.strimzi.io
+  resources:
+  - kafkausers
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - patch
+  - update
+  - delete
+- apiGroups:
+  - ""
+  resources:
+  - secrets
+  verbs:
+  - get
+  - list
+  - create
+  - patch
+  - update
+  - delete
+
+
+
+
+
ClusterRoleBindings
+
+

The operator needs ClusterRoleBindings and RoleBindings which associates its ClusterRole with its ServiceAccount: +ClusterRoleBindings are needed for ClusterRoles containing cluster-scoped resources.

+
+
+
Example ClusterRoleBinding for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-cluster-operator-global
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+

ClusterRoleBindings are also needed for the ClusterRoles needed for delegation:

+
+
+
Examples RoleBinding for the Cluster Operator
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: strimzi-cluster-operator-kafka-broker-delegation
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-kafka-broker
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+

ClusterRoles containing only namespaced resources are bound using RoleBindings only.

+
+
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: strimzi-cluster-operator
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-cluster-operator-namespaced
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+
+
apiVersion: rbac.authorization.k8s.io/v1
+kind: RoleBinding
+metadata:
+  name: strimzi-cluster-operator-entity-operator-delegation
+  labels:
+    app: strimzi
+subjects:
+- kind: ServiceAccount
+  name: strimzi-cluster-operator
+  namespace: myproject
+roleRef:
+  kind: ClusterRole
+  name: strimzi-entity-operator
+  apiGroup: rbac.authorization.k8s.io
+
+
+
+
+
+
+

4.2. Topic Operator

+
+

4.2.1. Overview of the Topic Operator component

+
+

The Topic Operator provides a way of managing topics in a Kafka cluster via OpenShift or Kubernetes resources.

+
+
+
Example architecture for the Topic Operator
+

Topic Operator

+
+
+

The role of the Topic Operator is to keep a set of KafkaTopic OpenShift or Kubernetes resources describing Kafka topics in-sync with corresponding Kafka topics.

+
+
+

Specifically, if a KafkaTopic is:

+
+
+
    +
  • +

    Created, the operator will create the topic it describes

    +
  • +
  • +

    Deleted, the operator will delete the topic it describes

    +
  • +
  • +

    Changed, the operator will update the topic it describes

    +
  • +
+
+
+

And also, in the other direction, if a topic is:

+
+
+
    +
  • +

    Created within the Kafka cluster, the operator will create a KafkaTopic describing it

    +
  • +
  • +

    Deleted from the Kafka cluster, the operator will delete the KafkaTopic describing it

    +
  • +
  • +

    Changed in the Kafka cluster, the operator will update the KafkaTopic describing it

    +
  • +
+
+
+

This allows you to declare a KafkaTopic as part of your application’s deployment and the Topic Operator will take care of creating the topic for you. +Your application just needs to deal with producing or consuming from the necessary topics.

+
+
+

If the topic is reconfigured or reassigned to different Kafka nodes, the KafkaTopic will always be up to date.

+
+
+

For more details about creating, modifying and deleting topics, see Using the Topic Operator.

+
+
+
+

4.2.2. Understanding the Topic Operator

+
+

A fundamental problem that the operator has to solve is that there is no single source of truth: +Both the KafkaTopic resource and the topic within Kafka can be modified independently of the operator. +Complicating this, the Topic Operator might not always be able to observe changes at each end in real time (for example, the operator might be down).

+
+
+

To resolve this, the operator maintains its own private copy of the information about each topic. +When a change happens either in the Kafka cluster, or in OpenShift or Kubernetes, it looks at both the state of the other system and at its private copy in order to determine what needs to change to keep everything in sync. +The same thing happens whenever the operator starts, and periodically while it is running.

+
+
+

For example, suppose the Topic Operator is not running, and a KafkaTopic my-topic gets created. +When the operator starts it will lack a private copy of "my-topic", so it can infer that the KafkaTopic has been created since it was last running. +The operator will create the topic corresponding to "my-topic" and also store a private copy of the metadata for "my-topic".

+
+
+

The private copy allows the operator to cope with scenarios where the topic configuration gets changed both in Kafka and in OpenShift or Kubernetes, so long as the changes are not incompatible (for example, both changing the same topic config key, but to different values). +In the case of incompatible changes, the Kafka configuration wins, and the KafkaTopic will be updated to reflect that.

+
+
+

The private copy is held in the same ZooKeeper ensemble used by Kafka itself. +This mitigates availability concerns, because if ZooKeeper is not running then Kafka itself cannot run, so the operator will be no less available than it would even if it was stateless.

+
+
+
+

4.2.3. Deploying the Topic Operator using the Cluster Operator

+
+

This procedure describes how to deploy the Topic Operator using the Cluster Operator. +If you want to use the Topic Operator with a Kafka cluster that is not managed by Strimzi, you must deploy the Topic Operator as a standalone component. For more information, see Deploying the standalone Topic Operator.

+
+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Ensure that the Kafka.spec.entityOperator object exists in the Kafka resource. This configures the Entity Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +metadata:
    +  name: my-cluster
    +spec:
    +  #...
    +  entityOperator:
    +    topicOperator: {}
    +    userOperator: {}
    +
    +
    +
  2. +
  3. +

    Configure the Topic Operator using the fields described in EntityTopicOperatorSpec schema reference.

    +
  4. +
  5. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  6. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about deploying the Entity Operator, see Entity Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the Topic Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+

4.2.4. Configuring the Topic Operator with resource requests and limits

+
+

You can allocate resources, such as CPU and memory, to the Topic Operator and set a limit on the amount of resources it can consume.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
  2. +
  3. +

    In the spec.entityOperator.topicOperator.resources property in the Kafka resource, set the resource requests and limits for the Topic Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  # kafka and zookeeper sections...
    +  entityOperator:
    +    topicOperator:
    +      resources:
    +        request:
    +          cpu: "1"
    +          memory: 500Mi
    +        limit:
    +          cpu: "1"
    +          memory: 500Mi
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

4.2.5. Deploying the standalone Topic Operator

+
+

Deploying the Topic Operator as a standalone component is more complicated than installing it using the Cluster Operator, but it is more flexible. +For instance, it can operate with any Kafka cluster, not necessarily one deployed by the Cluster Operator.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster for the Topic Operator to connect to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the install/topic-operator/05-Deployment-strimzi-topic-operator.yaml resource. You will need to change the following

    +
    +
      +
    1. +

      The STRIMZI_KAFKA_BOOTSTRAP_SERVERS environment variable in Deployment.spec.template.spec.containers[0].env should be set to a list of bootstrap brokers in your Kafka cluster, given as a comma-separated list of hostname:‍port pairs.

      +
    2. +
    3. +

      The STRIMZI_ZOOKEEPER_CONNECT environment variable in Deployment.spec.template.spec.containers[0].env should be set to a list of the Zookeeper nodes, given as a comma-separated list of hostname:‍port pairs. This should be the same Zookeeper cluster that your Kafka cluster is using.

      +
    4. +
    5. +

      The STRIMZI_NAMESPACE environment variable in Deployment.spec.template.spec.containers[0].env should be set to the OpenShift or Kubernetes namespace in which you want the operator to watch for KafkaTopic resources.

      +
    6. +
    +
    +
  2. +
  3. +

    Deploy the Topic Operator.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/topic-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/topic-operator
    +
    +
    +
  4. +
  5. +

    Verify that the Topic Operator has been deployed successfully.

    +
    +

    On Kubernetes this can be done using kubectl describe:

    +
    +
    +
    +
    kubectl describe deployment strimzi-topic-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc describe:

    +
    +
    +
    +
    oc describe deployment strimzi-topic-operator
    +
    +
    +
    +

    The Topic Operator is deployed once the Replicas: entry shows 1 available.

    +
    +
    + + + + + +
    +
    Note
    +
    +This could take some time if you have a slow connection to the OpenShift or Kubernetes and the images have not been downloaded before. +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

4.2.6. Topic Operator environment

+
+

When deployed standalone the Topic Operator can be configured using environment variables.

+
+
+ + + + + +
+
Note
+
+The Topic Operator should be configured using the Kafka.spec.entityOperator.topicOperator property when deployed by the Cluster Operator. +
+
+
+
+
STRIMZI_RESOURCE_LABELS
+
+

The label selector used to identify KafkaTopics to be managed by the operator.

+
+
STRIMZI_ZOOKEEPER_SESSION_TIMEOUT_MS
+
+

The Zookeeper session timeout, in milliseconds. +For example, 10000. +Default 20000 (20 seconds).

+
+
STRIMZI_KAFKA_BOOTSTRAP_SERVERS
+
+

The list of Kafka bootstrap servers. +This variable is mandatory.

+
+
STRIMZI_ZOOKEEPER_CONNECT
+
+

The Zookeeper connection information. +This variable is mandatory.

+
+
STRIMZI_FULL_RECONCILIATION_INTERVAL_MS
+
+

The interval between periodic reconciliations, in milliseconds.

+
+
STRIMZI_TOPIC_METADATA_MAX_ATTEMPTS
+
+

The number of attempts at getting topic metadata from Kafka. +The time between each attempt is defined as an exponential back-off. +Consider increasing this value when topic creation could take more time due to the number of partitions or replicas. +Default 6.

+
+
STRIMZI_LOG_LEVEL
+
+

The level for printing logging messages. +The value can be set to: ERROR, WARNING, INFO, DEBUG, and TRACE. +Default INFO.

+
+
STRIMZI_TLS_ENABLED
+
+

For enabling the TLS support so encrypting the communication with Kafka brokers. +Default true.

+
+
STRIMZI_TRUSTSTORE_LOCATION
+
+

The path to the truststore containing certificates for enabling TLS based communication. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
STRIMZI_TRUSTSTORE_PASSWORD
+
+

The password for accessing the truststore defined by STRIMZI_TRUSTSTORE_LOCATION. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
STRIMZI_KEYSTORE_LOCATION
+
+

The path to the keystore containing private keys for enabling TLS based communication. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
STRIMZI_KEYSTORE_PASSWORD
+
+

The password for accessing the keystore defined by STRIMZI_KEYSTORE_LOCATION. +This variable is mandatory only if TLS is enabled through STRIMZI_TLS_ENABLED.

+
+
+
+
+
+
+

4.3. User Operator

+
+

The User Operator provides a way of managing Kafka users via OpenShift or Kubernetes resources.

+
+
+

4.3.1. Overview of the User Operator component

+
+

The User Operator manages Kafka users for a Kafka cluster by watching for KafkaUser OpenShift or Kubernetes resources that describe Kafka users and ensuring that they are configured properly in the Kafka cluster. +For example:

+
+
+
    +
  • +

    if a KafkaUser is created, the User Operator will create the user it describes

    +
  • +
  • +

    if a KafkaUser is deleted, the User Operator will delete the user it describes

    +
  • +
  • +

    if a KafkaUser is changed, the User Operator will update the user it describes

    +
  • +
+
+
+

Unlike the Topic Operator, the User Operator does not sync any changes from the Kafka cluster with the OpenShift or Kubernetes resources. +Unlike the Kafka topics which might be created by applications directly in Kafka, it is not expected that the users will be managed directly in the Kafka cluster in parallel with the User Operator, so this should not be needed.

+
+
+

The User Operator allows you to declare a KafkaUser as part of your application’s deployment. +When the user is created, the credentials will be created in a Secret. +Your application needs to use the user and its credentials for authentication and to produce or consume messages.

+
+
+

In addition to managing credentials for authentication, the User Operator also manages authorization rules by including a description of the user’s rights in the KafkaUser declaration.

+
+
+
+

4.3.2. Deploying the User Operator using the Cluster Operator

+
+
Prerequisites
+
    +
  • +

    A running Cluster Operator

    +
  • +
  • +

    A Kafka resource to be created or updated.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the Kafka resource ensuring it has a Kafka.spec.entityOperator.userOperator object that configures the User Operator how you want.

    +
  2. +
  3. +

    Create or update the Kafka resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+
    +
  • +

    For more information about deploying the Cluster Operator, see Cluster Operator.

    +
  • +
  • +

    For more information about the Kafka.spec.entityOperator object used to configure the User Operator when deployed by the Cluster Operator, see EntityOperatorSpec schema reference.

    +
  • +
+
+
+
+

4.3.3. Configuring the User Operator with resource requests and limits

+
+

You can allocate resources, such as CPU and memory, to the User Operator and set a limit on the amount of resources it can consume.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
  2. +
  3. +

    In the spec.entityOperator.userOperator.resources property in the Kafka resource, set the resource requests and limits for the User Operator.

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: Kafka
    +spec:
    +  # kafka and zookeeper sections...
    +  entityOperator:
    +    userOperator:
    +      resources:
    +        request:
    +          cpu: "1"
    +          memory: 500Mi
    +        limit:
    +          cpu: "1"
    +          memory: 500Mi
    +
    +
    +
  4. +
  5. +

    Apply the new configuration to create or update the resource.

    +
    +

    On Kubernetes, use kubectl apply:

    +
    +
    +
    +
    kubectl apply -f kafka.yaml
    +
    +
    +
    +

    On OpenShift, use oc apply:

    +
    +
    +
    +
    oc apply -f kafka.yaml
    +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

4.3.4. Deploying the standalone User Operator

+
+

Deploying the User Operator as a standalone component is more complicated than installing it using the Cluster Operator, but it is more flexible. +For instance, it can operate with any Kafka cluster, not only the one deployed by the Cluster Operator.

+
+
+
Prerequisites
+
    +
  • +

    An existing Kafka cluster for the User Operator to connect to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Edit the install/user-operator/05-Deployment-strimzi-user-operator.yaml resource. You will need to change the following

    +
    +
      +
    1. +

      The STRIMZI_CA_CERT_NAME environment variable in Deployment.spec.template.spec.containers[0].env should be set to point to an OpenShift or Kubernetes Secret which should contain the public key of the Certificate Authority for signing new user certificates for TLS Client Authentication. +The Secret should contain the public key of the Certificate Authority under the key ca.crt.

      +
    2. +
    3. +

      The STRIMZI_CA_KEY_NAME environment variable in Deployment.spec.template.spec.containers[0].env should be set to point to an OpenShift or Kubernetes Secret which should contain the private key of the Certificate Authority for signing new user certificates for TLS Client Authentication. +The Secret should contain the private key of the Certificate Authority under the key ca.key.

      +
    4. +
    5. +

      The STRIMZI_ZOOKEEPER_CONNECT environment variable in Deployment.spec.template.spec.containers[0].env should be set to a list of the Zookeeper nodes, given as a comma-separated list of hostname:‍port pairs. This should be the same Zookeeper cluster that your Kafka cluster is using.

      +
    6. +
    7. +

      The STRIMZI_NAMESPACE environment variable in Deployment.spec.template.spec.containers[0].env should be set to the OpenShift or Kubernetes namespace in which you want the operator to watch for KafkaUser resources.

      +
    8. +
    +
    +
  2. +
  3. +

    Deploy the User Operator.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f install/user-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f install/user-operator
    +
    +
    +
  4. +
  5. +

    Verify that the User Operator has been deployed successfully.

    +
    +

    On Kubernetes this can be done using kubectl describe:

    +
    +
    +
    +
    kubectl describe deployment strimzi-user-operator
    +
    +
    +
    +

    On OpenShift this can be done using oc describe:

    +
    +
    +
    +
    oc describe deployment strimzi-user-operator
    +
    +
    +
    +

    The User Operator is deployed once the Replicas: entry shows 1 available.

    +
    +
    + + + + + +
    +
    Note
    +
    +This could take some time if you have a slow connection to the OpenShift or Kubernetes and the images have not been downloaded before. +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
+
+
+

5. Using the Topic Operator

+
+
+

5.1. Topic Operator usage recommendations

+
+
    +
  • +

    Be consistent and always operate on KafkaTopic resources or always operate on topics directly. Avoid routinely using both methods for a given topic.

    +
  • +
  • +

    When creating a KafkaTopic resource:

    +
    +
      +
    • +

      Remember that the name cannot be changed later.

      +
    • +
    • +

      Choose a name for the KafkaTopic resource that reflects the name of the topic it describes.

      +
    • +
    • +

      Ideally the KafkaTopic.metadata.name should be the same as its spec.topicName. To do this, the topic name will have to be a valid Kubernetes resource name.

      +
    • +
    +
    +
  • +
  • +

    When creating a topic:

    +
    +
      +
    • +

      Remember that the name cannot be changed later.

      +
    • +
    • +

      It is best to use a name that is a valid Kubernetes resource name, otherwise the operator will have to modify the name when creating the corresponding KafkaTopic.

      +
    • +
    +
    +
  • +
+
+
+
+

5.2. Creating a topic

+
+

This procedure describes how to create a Kafka topic using a KafkaTopic OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Topic Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a file containing the KafkaTopic to be created

    +
    +
    An example KafkaTopic
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaTopic
    +metadata:
    +  name: orders
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  partitions: 10
    +  replicas: 2
    +
    +
    +
    + + + + + +
    +
    Note
    +
    +It is recommended that the topic name given is a valid OpenShift or Kubernetes resource name, as it is then not necessary to set the KafkaTopic.spec.topicName property. The KafkaTopic.spec.topicName cannot be changed after creation. +
    +
    +
    + + + + + +
    +
    Note
    +
    +The KafkaTopic.spec.partitions cannot be decreased. +
    +
    +
  2. +
  3. +

    Create the KafkaTopic resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+

5.3. Changing a topic

+
+

This procedure describes how to change the configuration of an existing Kafka topic by using a KafkaTopic OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Topic Operator.

    +
  • +
  • +

    An existing KafkaTopic to be changed.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a file containing the desired KafkaTopic

    +
    +
    An example KafkaTopic
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaTopic
    +metadata:
    +  name: orders
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  partitions: 16
    +  replicas: 2
    +
    +
    +
    + + + + + +
    +
    Tip
    +
    +You can get the current version of the resource using oc get kafkatopic orders -o yaml. +
    +
    +
    + + + + + +
    +
    Note
    +
    +Changing topic names using the KafkaTopic.spec.topicName variable and decreasing partition size using the KafkaTopic.spec.partitions variable is not supported by Kafka. +
    +
    +
    + + + + + +
    +
    Caution
    +
    +Increasing spec.partitions for topics with keys will change how records are partitioned, which can be particularly problematic when the topic uses semantic partitioning. +
    +
    +
  2. +
  3. +

    Update the KafkaTopic resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
+
+
+
Additional resources
+ +
+
+
+

5.4. Deleting a topic

+
+

This procedure describes how to delete a Kafka topic using a KafkaTopic OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running Topic Operator.

    +
  • +
  • +

    An existing KafkaTopic to be deleted.

    +
  • +
  • +

    delete.topic.enable=true (default)

    +
  • +
+
+
+ + + + + +
+
Note
+
+The delete.topic.enable property must be set to true in Kafka.spec.kafka.config. Otherwise, the steps outlined here will delete the KafkaTopic resource, but the Kafka topic and its data will remain. After reconciliation by the Topic Operator, the custom resource is then recreated. +
+
+
+
Procedure
+
    +
  • +

    Delete the KafkaTopic resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl:

    +
    +
    +
    +
    kubectl delete kafkatopic your-topic-name
    +
    +
    +
    +

    On OpenShift this can be done using oc:

    +
    +
    +
    +
    oc delete kafkatopic your-topic-name
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+
+
+

6. Using the User Operator

+
+
+

The User Operator provides a way of managing Kafka users via OpenShift or Kubernetes resources.

+
+
+

6.1. Overview of the User Operator component

+
+

The User Operator manages Kafka users for a Kafka cluster by watching for KafkaUser OpenShift or Kubernetes resources that describe Kafka users and ensuring that they are configured properly in the Kafka cluster. +For example:

+
+
+
    +
  • +

    if a KafkaUser is created, the User Operator will create the user it describes

    +
  • +
  • +

    if a KafkaUser is deleted, the User Operator will delete the user it describes

    +
  • +
  • +

    if a KafkaUser is changed, the User Operator will update the user it describes

    +
  • +
+
+
+

Unlike the Topic Operator, the User Operator does not sync any changes from the Kafka cluster with the OpenShift or Kubernetes resources. +Unlike the Kafka topics which might be created by applications directly in Kafka, it is not expected that the users will be managed directly in the Kafka cluster in parallel with the User Operator, so this should not be needed.

+
+
+

The User Operator allows you to declare a KafkaUser as part of your application’s deployment. +When the user is created, the credentials will be created in a Secret. +Your application needs to use the user and its credentials for authentication and to produce or consume messages.

+
+
+

In addition to managing credentials for authentication, the User Operator also manages authorization rules by including a description of the user’s rights in the KafkaUser declaration.

+
+
+
+

6.2. Mutual TLS authentication for clients

+
+

6.2.1. Mutual TLS authentication

+
+

Mutual TLS authentication is always used for the communication between Kafka brokers and Zookeeper pods.Mutual authentication or two-way authentication is when both the server and the client present certificates. Strimzi can configure Kafka to use TLS (Transport Layer Security) to provide encrypted communication between Kafka brokers and clients either with or without mutual authentication. When you configure mutual authentication, the broker authenticates the client and the client authenticates the broker.

+
+
+ + + + + +
+
Note
+
+TLS authentication is more commonly one-way, with one party authenticating the identity of another. For example, when HTTPS is used between a web browser and a web server, the server obtains proof of the identity of the browser. +
+
+
+
+

6.2.2. When to use mutual TLS authentication for clients

+
+

Mutual TLS authentication is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using mutual TLS authentication

    +
  • +
  • +

    It is necessary to use the TLS certificates rather than passwords

    +
  • +
  • +

    You can reconfigure and restart client applications periodically so that they do not use expired certificates.

    +
  • +
+
+
+
+
+

6.3. Creating a Kafka user with mutual TLS authentication

+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster configured with a listener using TLS authentication.

    +
  • +
  • +

    A running User Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a YAML file containing the KafkaUser to be created.

    +
    +
    An example KafkaUser
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaUser
    +metadata:
    +  name: my-user
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  authentication:
    +    type: tls
    +  authorization:
    +    type: simple
    +    acls:
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Read
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Describe
    +      - resource:
    +          type: group
    +          name: my-group
    +          patternType: literal
    +        operation: Read
    +
    +
    +
  2. +
  3. +

    Create the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Use the credentials from the secret my-user in your application

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

6.4. SCRAM-SHA authentication

+
+

SCRAM (Salted Challenge Response Authentication Mechanism) is an authentication protocol that can establish mutual authentication using passwords. Strimzi can configure Kafka to use SASL (Simple Authentication and Security Layer) SCRAM-SHA-512 to provide authentication on both unencrypted and TLS-encrypted client connections. TLS authentication is always used internally between Kafka brokers and Zookeeper nodes. When used with a TLS client connection, the TLS protocol provides encryption, but is not used for authentication.

+
+
+

The following properties of SCRAM make it safe to use SCRAM-SHA even on unencrypted connections:

+
+
+
    +
  • +

    The passwords are not sent in the clear over the communication channel. +Instead the client and the server are each challenged by the other to offer proof that they know the password of the authenticating user.

    +
  • +
  • +

    The server and client each generate a new challenge for each authentication exchange. +This means that the exchange is resilient against replay attacks.

    +
  • +
+
+
+

6.4.1. Supported SCRAM credentials

+
+

Strimzi supports SCRAM-SHA-512 only. +When a KafkaUser.spec.authentication.type is configured with scram-sha-512 the User Operator will generate a random 12 character password consisting of upper and lowercase ASCII letters and numbers.

+
+
+
+

6.4.2. When to use SCRAM-SHA authentication for clients

+
+

SCRAM-SHA is recommended for authenticating Kafka clients when:

+
+
+
    +
  • +

    The client supports authentication using SCRAM-SHA-512

    +
  • +
  • +

    It is necessary to use passwords rather than the TLS certificates

    +
  • +
  • +

    Authentication for unencrypted communication is required

    +
  • +
+
+
+
+
+

6.5. Creating a Kafka user with SCRAM SHA authentication

+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster configured with a listener using SCRAM SHA authentication.

    +
  • +
  • +

    A running User Operator.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a YAML file containing the KafkaUser to be created.

    +
    +
    An example KafkaUser
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaUser
    +metadata:
    +  name: my-user
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  authentication:
    +    type: scram-sha-512
    +  authorization:
    +    type: simple
    +    acls:
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Read
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Describe
    +      - resource:
    +          type: group
    +          name: my-group
    +          patternType: literal
    +        operation: Read
    +
    +
    +
  2. +
  3. +

    Create the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Use the credentials from the secret my-user in your application

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

6.6. Editing a Kafka user

+
+

This procedure describes how to change the configuration of an existing Kafka user by using a KafkaUser OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running User Operator.

    +
  • +
  • +

    An existing KafkaUser to be changed

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Prepare a YAML file containing the desired KafkaUser.

    +
    +
    An example KafkaUser
    +
    +
    apiVersion: kafka.strimzi.io/v1beta1
    +kind: KafkaUser
    +metadata:
    +  name: my-user
    +  labels:
    +    strimzi.io/cluster: my-cluster
    +spec:
    +  authentication:
    +    type: tls
    +  authorization:
    +    type: simple
    +    acls:
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Read
    +      - resource:
    +          type: topic
    +          name: my-topic
    +          patternType: literal
    +        operation: Describe
    +      - resource:
    +          type: group
    +          name: my-group
    +          patternType: literal
    +        operation: Read
    +
    +
    +
  2. +
  3. +

    Update the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl apply:

    +
    +
    +
    +
    kubectl apply -f your-file
    +
    +
    +
    +

    On OpenShift this can be done using oc apply:

    +
    +
    +
    +
    oc apply -f your-file
    +
    +
    +
  4. +
  5. +

    Use the updated credentials from the my-user secret in your application.

    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

6.7. Deleting a Kafka user

+
+

This procedure describes how to delete a Kafka user created with KafkaUser OpenShift or Kubernetes resource.

+
+
+
Prerequisites
+
    +
  • +

    A running Kafka cluster.

    +
  • +
  • +

    A running User Operator.

    +
  • +
  • +

    An existing KafkaUser to be deleted.

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Delete the KafkaUser resource in OpenShift or Kubernetes.

    +
    +

    On Kubernetes this can be done using kubectl:

    +
    +
    +
    +
    kubectl delete kafkauser your-user-name
    +
    +
    +
    +

    On OpenShift this can be done using oc:

    +
    +
    +
    +
    oc delete kafkauser your-user-name
    +
    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+

6.8. Kafka User resource

+
+

The KafkaUser resource is used to declare a user with its authentication mechanism, authorization mechanism, and access rights.

+
+
+

6.8.1. Authentication

+
+

Authentication is configured using the authentication property in KafkaUser.spec. +The authentication mechanism enabled for this user will be specified using the type field. +Currently, the only supported authentication mechanisms are the TLS Client Authentication mechanism and the SCRAM-SHA-512 mechanism.

+
+
+

When no authentication mechanism is specified, User Operator will not create the user or its credentials.

+
+
+
TLS Client Authentication
+
+

To use TLS client authentication, set the type field to tls.

+
+
+
An example of KafkaUser with enabled TLS Client Authentication
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaUser
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/cluster: my-cluster
+spec:
+  authentication:
+    type: tls
+  # ...
+
+
+
+

When the user is created by the User Operator, it will create a new secret with the same name as the KafkaUser resource. +The secret will contain a public and private key which should be used for the TLS Client Authentication. +Bundled with them will be the public key of the client certification authority which was used to sign the user certificate. +All keys will be in X509 format.

+
+
+
An example of the Secret with user credentials
+
+
apiVersion: v1
+kind: Secret
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/kind: KafkaUser
+    strimzi.io/cluster: my-cluster
+type: Opaque
+data:
+  ca.crt: # Public key of the Clients CA
+  user.crt: # Public key of the user
+  user.key: # Private key of the user
+
+
+
+
+
SCRAM-SHA-512 Authentication
+
+

To use SCRAM-SHA-512 authentication mechanism, set the type field to scram-sha-512.

+
+
+
An example of KafkaUser with enabled SCRAM-SHA-512 authentication
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaUser
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/cluster: my-cluster
+spec:
+  authentication:
+    type: scram-sha-512
+  # ...
+
+
+
+

When the user is created by the User Operator, the User Operator will create a new secret with the same name as the KafkaUser resource. +The secret contains the generated password in the password key, which is encoded with base64. In order to use the password it must be decoded.

+
+
+
An example of the Secret with user credentials
+
+
apiVersion: v1
+kind: Secret
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/kind: KafkaUser
+    strimzi.io/cluster: my-cluster
+type: Opaque
+data:
+  password: Z2VuZXJhdGVkcGFzc3dvcmQ= # Generated password
+
+
+
+

For decode the generated password:

+
+
+
+
echo "Z2VuZXJhdGVkcGFzc3dvcmQ=" | base64 --decode
+
+
+
+
+
+

6.8.2. Authorization

+
+

Authorization is configured using the authorization property in KafkaUser.spec. +The authorization type enabled for this user will be specified using the type field. +Currently, the only supported authorization type is the Simple authorization.

+
+
+

When no authorization is specified, the User Operator will not provision any access rights for the user.

+
+
+
Simple Authorization
+
+

To use Simple Authorization, set the type property to simple. +Simple authorization is using the SimpleAclAuthorizer plugin. +SimpleAclAuthorizer is the default authorization plugin which is part of Apache Kafka. +Simple Authorization allows you to specify list of ACL rules in the acls property.

+
+
+

The acls property should contain a list of AclRule objects. +AclRule specifies the access rights whcih will be granted to the user. +The AclRule object contains following properties:

+
+
+
+
type
+
+

Specifies the type of the ACL rule. +The type can be either allow or deny. +The type field is optional and when not specified, the ACL rule will be treated as allow rule.

+
+
operation
+
+

Specifies the operation which will be allowed or denied. +Following operations are supported:

+
+
    +
  • +

    Read

    +
  • +
  • +

    Write

    +
  • +
  • +

    Delete

    +
  • +
  • +

    Alter

    +
  • +
  • +

    Describe

    +
  • +
  • +

    All

    +
  • +
  • +

    IdempotentWrite

    +
  • +
  • +

    ClusterAction

    +
  • +
  • +

    Create

    +
  • +
  • +

    AlterConfigs

    +
  • +
  • +

    DescribeConfigs

    +
    + + + + + +
    +
    Note
    +
    +Not every operation can be combined with every resource. +
    +
    +
  • +
+
+
+
host
+
+

Specifies a remote host from which is the rule allowed or denied. +Use * to allow or deny the operation from all hosts. +The host field is optional and when not specified, the value * will be used as default.

+
+
resource
+
+

Specifies the resource for which the rule applies. +Simple Authorization supports four different resource types:

+
+
    +
  • +

    Topics

    +
  • +
  • +

    Consumer Groups

    +
  • +
  • +

    Clusters

    +
  • +
  • +

    Transactional IDs

    +
    +

    The resource type can be specified in the type property. +Use topic for Topics, group for Consumer Groups, cluster for clusters, and transactionalId for Transactional IDs.

    +
    +
    +

    Additionally, Topic, Group, and Transactional ID resources allow you to specify the name of the resource for which the rule applies. +The name can be specified in the name property. +The name can be either specified as literal or as a prefix. +To specify the name as literal, set the patternType property to the value literal. +Literal names will be taken exactly as they are specified in the name field. +To specify the name as a prefix, set the patternType property to the value prefix. +Prefix type names will use the value from the name only a prefix and will apply the rule to all resources with names starting with the value. +The cluster type resources have no name.

    +
    +
  • +
+
+
+
+
+
+

For more details about SimpleAclAuthorizer, its ACL rules and the allowed combinations of resources and operations, see Authorization and ACLs.

+
+
+

For more information about the AclRule object, see AclRule schema reference.

+
+
+
An example KafkaUser
+
+
apiVersion: kafka.strimzi.io/v1beta1
+kind: KafkaUser
+metadata:
+  name: my-user
+  labels:
+    strimzi.io/cluster: my-cluster
+spec:
+  # ...
+  authorization:
+    type: simple
+    acls:
+      - resource:
+          type: topic
+          name: my-topic
+          patternType: literal
+        operation: Read
+      - resource:
+          type: topic
+          name: my-topic
+          patternType: literal
+        operation: Describe
+      - resource:
+          type: group
+          name: my-group
+          patternType: prefix
+        operation: Read
+
+
+
+
+
+

6.8.3. Additional resources

+
+ +
+
+
+
+
+
+

7. Security

+
+
+

Strimzi supports encrypted communication between the Kafka and Strimzi components using the TLS protocol. +Communication between Kafka brokers (interbroker communication), between Zookeeper nodes (internodal communication), and between these and the Strimzi operators is always encrypted. +Communication between Kafka clients and Kafka brokers is encrypted according to how the cluster is configured. +For the Kafka and Strimzi components, TLS certificates are also used for authentication.

+
+
+

The Cluster Operator automatically sets up TLS certificates to enable encryption and authentication within your cluster. +It also sets up other TLS certificates if you want to enable encryption or TLS authentication between Kafka brokers and clients.

+
+
+
+Secure Communication +
+
Figure 1. Example architecture diagram of the communication secured by TLS.
+
+
+

7.1. Certificate Authorities

+
+

To support encryption, each Strimzi component needs its own private keys and public key certificates. +All component certificates are signed by a Certificate Authority (CA) called the cluster CA.

+
+
+

Similarly, each Kafka client application connecting using TLS client authentication needs private keys and certificates. +The clients CA is used to sign the certificates for the Kafka clients.

+
+
+

7.1.1. CA certificates

+
+

Each CA has a self-signed public key certificate.

+
+
+

Kafka brokers are configured to trust certificates signed by either the clients CA or the cluster CA. Components to which clients do not need to connect, such as Zookeeper, only trust certificates signed by the cluster CA. Client applications that perform mutual TLS authentication have to trust the certificates signed by the cluster CA.

+
+
+

By default, Strimzi generates and renews CA certificates automatically. You can configure the management of CA certificates in the Kafka.spec.clusterCa and Kafka.spec.clientsCa objects.

+
+
+
+
+

7.2. Certificates and Secrets

+
+

Strimzi stores CA, component and Kafka client private keys and certificates in Secrets. +All keys are 2048 bits in size.

+
+
+

CA certificate validity periods, expressed as a number of days after certificate generation, can be configured in Kafka.spec.clusterCa.validityDays +and Kafka.spec.clusterCa.validityDays.

+
+
+

7.2.1. Cluster CA Secrets

+ + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 1. Cluster CA Secrets managed by the Cluster Operator in <cluster>
Secret nameField within SecretDescription

<cluster>-cluster-ca

ca.key

The current private key for the cluster CA.

<cluster>-cluster-ca-cert

ca.crt

The current certificate for the cluster CA.

<cluster>-kafka-brokers

<cluster>-kafka-<num>.crt

Certificate for Kafka broker pod <num>. Signed by a current or former cluster CA private key in <cluster>-cluster-ca.

<cluster>-kafka-<num>.key

Private key for Kafka broker pod <num>.

<cluster>-zookeeper-nodes

<cluster>-zookeeper-<num>.crt

Certificate for Zookeeper node <num>. Signed by a current or former cluster CA private key in <cluster>-cluster-ca.

<cluster>-zookeeper-<num>.key

Private key for Zookeeper pod <num>.

<cluster>-entity-operator-certs

entity-operator_.crt

Certificate for TLS communication between the Entity Operator and Kafka or Zookeeper. + Signed by a current or former cluster CA private key in <cluster>-cluster-ca.

entity-operator.key

Private key for TLS communication between the Entity Operator and Kafka or Zookeeper

+
+

The CA certificates in <cluster>-cluster-ca-cert must be trusted by Kafka client applications so that they validate the Kafka broker certificates when connecting to Kafka brokers over TLS.

+
+
+ + + + + +
+
Note
+
+Only <cluster>-cluster-ca-cert needs to be used by clients. +All other Secrets in the table above only need to be accessed by the + Strimzi components. + You can enforce this using OpenShift or Kubernetes role-based access controls if necessary. +
+
+
+
+

7.2.2. Client CA Secrets

+ + +++++ + + + + + + + + + + + + + + + + + + + +
Table 2. Clients CA Secrets managed by the Cluster Operator in <cluster>
Secret nameField within SecretDescription

<cluster>-clients-ca

ca.key

The current private key for the clients CA.

<cluster>-clients-ca-cert

ca.crt

The current certificate for the clients CA.

+
+

The certificates in <cluster>-clients-ca-cert are those which the Kafka brokers trust.

+
+
+ + + + + +
+
Note
+
+<cluster>-cluster-ca is used to sign certificates of client applications. +It needs to be accessible to the Strimzi components and for administrative access if you are intending to issue application certificates without using the User Operator. +You can enforce this using OpenShift or Kubernetes role-based access controls if necessary. +
+
+
+
+

7.2.3. User Secrets

+ + +++++ + + + + + + + + + + + + + + + + + + +
Table 3. Secrets managed by the User Operator
Secret nameField within SecretDescription

<user>

user.crt

Certificate for the user, signed by the clients CA

user.key

Private key for the user

+
+
+
+

7.3. Installing your own CA certificates

+
+

This procedure describes how to install your own CA certificates and private keys instead of using CA certificates and private keys generated by the Cluster Operator.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka cluster is not yet deployed.

    +
  • +
  • +

    Your own X.509 certificates and keys in PEM format for the cluster CA or clients CA.

    +
    +
      +
    • +

      If you want to use a cluster or clients CA which is not a Root CA, you have to include the whole chain in the certificate file. +The chain should be in the following order:

      +
      +
        +
      1. +

        The cluster or clients CA

        +
      2. +
      3. +

        One or more intermediate CAs

        +
      4. +
      5. +

        The root CA

        +
      6. +
      +
      +
    • +
    • +

      All CAs in the chain should be configured as a CA in the X509v3 Basic Constraints.

      +
    • +
    +
    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Put your CA certificate in the corresponding Secret (<cluster>-cluster-ca-cert for the cluster CA or <cluster>-clients-ca-cert for the clients CA):

    +
    +

    On Kubernetes, run the following commands:

    +
    +
    +
    +
    # Delete any existing secret (ignore "Not Exists" errors)
    +kubectl delete secret <ca-cert-secret>
    +# Create and label the new one
    +kubectl create secret generic <ca-cert-secret> --from-file=ca.crt=<ca-cert-file>
    +
    +
    +
    +

    On OpenShift, run the following commands:

    +
    +
    +
    +
    # Delete any existing secret (ignore "Not Exists" errors)
    +oc delete secret <ca-cert-secret>
    +# Create the new one
    +oc create secret generic <ca-cert-secret> --from-file=ca.crt=<ca-cert-file>
    +
    +
    +
  2. +
  3. +

    Put your CA key in the corresponding Secret (<cluster>-cluster-ca for the cluster CA or <cluster>-clients-ca for the clients CA)

    +
    +

    On Kubernetes, run the following commands:

    +
    +
    +
    +
    # Delete the existing secret
    +kubectl delete secret <ca-key-secret>
    +# Create the new one
    +kubectl create secret generic <ca-key-secret> --from-file=ca.key=<ca-key-file>
    +
    +
    +
    +

    On OpenShift, run the following commands:

    +
    +
    +
    +
    # Delete the existing secret
    +oc delete secret <ca-key-secret>
    +# Create the new one
    +oc create secret generic <ca-key-secret> --from-file=ca.key=<ca-key-file>
    +
    +
    +
  4. +
  5. +

    Label both Secrets with labels strimzi.io/kind=Kafka and strimzi.io/cluster=<my-cluster>:

    +
    +

    On Kubernetes, run the following commands:

    +
    +
    +
    +
    kubectl label secret <ca-cert-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +kubectl label secret <ca-key-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +
    +
    +
    +

    On OpenShift, run the following commands:

    +
    +
    +
    +
    oc label secret <ca-cert-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +oc label secret <ca-key-secret> strimzi.io/kind=Kafka strimzi.io/cluster=<my-cluster>
    +
    +
    +
  6. +
  7. +

    Create the Kafka resource for your cluster, configuring either the Kafka.spec.clusterCa or the Kafka.spec.clientsCa object to not use generated CAs:

    +
    +
    Example fragment Kafka resource configuring the cluster CA to use certificates you supply for yourself
    +
    +
    kind: Kafka
    +version: kafka.strimzi.io/v1beta1
    +spec:
    +  # ...
    +  clusterCa:
    +    generateCertificateAuthority: false
    +
    +
    +
  8. +
+
+
+
+

7.4. Certificate renewal

+
+

The cluster CA and clients CA certificates are only valid for a limited time period, known as the validity period. +This is usually defined as a number of days since the certificate was generated. +For auto-generated CA certificates, you can configure the validity period in Kafka.spec.clusterCa.validityDays and Kafka.spec.clientsCa.validityDays. +The default validity period for both certificates is 365 days. +Manually-installed CA certificates should have their own validity period defined.

+
+
+

When a CA certificate expires, components and clients which still trust that certificate will not accept TLS connections from peers whose certificate were signed by the CA private key. +The components and clients need to trust the new CA certificate instead.

+
+
+

To allow the renewal of CA certificates without a loss of service, the Cluster Operator will initiate certificate renewal before the old CA certificates expire. +You can configure the renewal period in Kafka.spec.clusterCa.renewalDays and Kafka.spec.clientsCa.renewalDays (both default to 30 days). +The renewal period is measured backwards, from the expiry date of the current certificate.

+
+
+
+
Not Before                                     Not After
+    |                                              |
+    |<--------------- validityDays --------------->|
+                              <--- renewalDays --->|
+
+
+
+

The behavior of the Cluster Operator during the renewal period depends on whether the relevant setting is enabled, in either Kafka.spec.clusterCa.generateCertificateAuthority or Kafka.spec.clientsCa.generateCertificateAuthority.

+
+
+

7.4.1. Renewal process with generated CAs

+
+

The Cluster Operator performs the following process to renew CA certificates:

+
+
+
    +
  1. +

    Generate a new CA certificate, but retaining the existing key. The new certificate replaces the old one with the name ca.crt within the corresponding Secret.

    +
  2. +
  3. +

    Generate new client certificates (for Zookeeper nodes, Kafka brokers, and the Entity Operator). +This is not strictly necessary because the signing key has not changed, but it keeps the validity period of the client certificate in sync with the CA certificate.

    +
  4. +
  5. +

    Restart Zookeeper nodes so that they will trust the new CA certificate and use the new client certificates.

    +
  6. +
  7. +

    Restart Kafka brokers so that they will trust the new CA certificate and use the new client certificates.

    +
  8. +
  9. +

    Restart the Topic and User Operators so that they will trust the new CA certificate and use the new client certificates.

    +
  10. +
+
+
+
+

7.4.2. Client applications

+
+

The Cluster Operator is not aware of all the client applications using the Kafka cluster.

+
+
+ + + + + +
+
Important
+
+Depending on how your applications are configured, you might need take action to ensure they continue working after certificate renewal. +
+
+
+

Consider the following important points to ensure that client applications continue working.

+
+
+
    +
  • +

    When they connect to the cluster, client applications must trust the cluster CA certificate published in <cluster>-cluster-ca-cert.

    +
  • +
  • +

    When using the User Operator to provision client certificates, client applications must use the current user.crt and user.key published in their <user> Secret when they connect to the cluster. +For workloads running inside the same OpenShift or Kubernetes cluster this can be achieved by mounting the secrets as a volume and having the client Pods construct their key- and truststores from the current state of the Secrets. +For more details on this procedure, see Configuring internal clients to trust the cluster CA.

    +
  • +
  • +

    When renewing client certificates, if you are provisioning client certificates and keys manually, you must generate new client certificates and ensure the new certificates are used by clients within the renewal period. Failure to do this by the end of the renewal period could result in client applications being unable to connect.

    +
  • +
+
+
+
+
+

7.5. TLS connections

+
+

7.5.1. Zookeeper communication

+
+

Zookeeper does not support TLS itself. +By deploying a TLS sidecar within every Zookeeper pod, the Cluster Operator is able to provide data encryption and authentication between Zookeeper nodes in a cluster. +Zookeeper only communicates with the TLS sidecar over the loopback interface. +The TLS sidecar then proxies all Zookeeper traffic, TLS decrypting data upon entry into a Zookeeper pod, and TLS encrypting data upon departure from a Zookeeper pod.

+
+
+

This TLS encrypting stunnel proxy is instantiated from the spec.zookeeper.stunnelImage specified in the Kafka resource.

+
+
+
+

7.5.2. Kafka interbroker communication

+
+

Communication between Kafka brokers is done through the REPLICATION listener on port 9091, which is encrypted by default.

+
+
+

Communication between Kafka brokers and Zookeeper nodes uses a TLS sidecar, as described above.

+
+
+
+

7.5.3. Topic and User Operators

+
+

Like the Cluster Operator, the Topic and User Operators each use a TLS sidecar when communicating with Zookeeper. The Topic Operator connects to Kafka brokers on port 9091.

+
+
+
+

7.5.4. Kafka Client connections

+
+

Encrypted communication between Kafka brokers and clients running within the same OpenShift or Kubernetes cluster is provided through the CLIENTTLS listener on port 9093.

+
+
+

Encrypted communication between Kafka brokers and clients running outside the same OpenShift or Kubernetes cluster is provided through the EXTERNAL listener on port 9094.

+
+
+ + + + + +
+
Note
+
+You can use the CLIENT listener on port 9092 for unencrypted communication with brokers. +
+
+
+
+
+

7.6. Configuring internal clients to trust the cluster CA

+
+

This procedure describes how to configure a Kafka client that resides inside the OpenShift or Kubernetes cluster — connecting to the tls listener on port 9093 — to trust the cluster CA certificate.

+
+
+

The easiest way to achieve this for an internal client is to use a volume mount to access the Secrets containing the necessary certificates and keys.

+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka resource within the OpenShift or Kubernetes cluster.

    +
  • +
  • +

    A Kafka client application inside the OpenShift or Kubernetes cluster which will connect using TLS and needs to trust the cluster CA certificate.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    When defining the client Pod

    +
  2. +
  3. +

    The Kafka client has to be configured to trust certificates signed by this CA. +For the Java-based Kafka Producer, Consumer, and Streams APIs, you can do this by importing the CA certificate into the JVM’s truststore using the following keytool command:

    +
    +
    +
    keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
    +
    +
    +
  4. +
  5. +

    To configure the Kafka client, specify the following properties:

    +
    +
      +
    • +

      security.protocol: SSL when using TLS for encryption (with or without TLS authentication), or security.protocol: SASL_SSL when using SCRAM-SHA authentication over TLS.

      +
    • +
    • +

      ssl.truststore.location: the truststore location where the certificates were imported.

      +
    • +
    • +

      ssl.truststore.password: the password for accessing the truststore. This property can be omitted if it is not needed by the truststore.

      +
    • +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+

7.7. Configuring external clients to trust the cluster CA

+
+

This procedure describes how to configure a Kafka client that resides outside the OpenShift or Kubernetes cluster – connecting to the external listener on port 9094 – to trust the cluster CA certificate.

+
+
+

You can use the same procedure to configure clients inside OpenShift or Kubernetes, which connect to the tls listener on port 9093, but it is usually more convenient to access the Secrets using a volume mount in the client Pod.

+
+
+

Follow this procedure when setting up the client and during the renewal period, when the old clients CA certificate is replaced.

+
+
+ + + + + +
+
Important
+
+The <cluster-name>-cluster-ca-cert Secret will contain more than one CA certificate during CA certificate renewal. Clients must add all of them to their truststores. +
+
+
+
Prerequisites
+
    +
  • +

    The Cluster Operator is running.

    +
  • +
  • +

    A Kafka resource within the OpenShift or Kubernetes cluster.

    +
  • +
  • +

    A Kafka client application outside the OpenShift or Kubernetes cluster which will connect using TLS and needs to trust the cluster CA certificate.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Extract the cluster CA certificate from the generated <cluster-name>-cluster-ca-cert Secret.

    +
    +

    On Kubernetes, run the following command to extract the certificates:

    +
    +
    +
    +
    kubectl get secret <cluster-name>-cluster-ca-cert -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
    +
    +
    +
    +

    On OpenShift, run the following command to extract the certificates:

    +
    +
    +
    +
    oc extract secret/<cluster-name>-cluster-ca-cert --keys ca.crt
    +
    +
    +
  2. +
  3. +

    The Kafka client has to be configured to trust certificates signed by this CA. +For the Java-based Kafka Producer, Consumer, and Streams APIs, you can do this by importing the CA certificates into the JVM’s truststore using the following keytool command:

    +
    +
    +
    keytool -keystore client.truststore.jks -alias CARoot -import -file ca.crt
    +
    +
    +
  4. +
  5. +

    To configure the Kafka client, specify the following properties:

    +
    +
      +
    • +

      security.protocol: SSL when using TLS for encryption (with or without TLS authentication), or security.protocol: SASL_SSL when using SCRAM-SHA authentication over TLS.

      +
    • +
    • +

      ssl.truststore.location: the truststore location where the certificates were imported.

      +
    • +
    • +

      ssl.truststore.password: the password for accessing the truststore. This property can be omitted if it is not needed by the truststore.

      +
    • +
    +
    +
  6. +
+
+
+
Additional resources
+ +
+
+
+
+
+

8. Strimzi and Kafka upgrades

+
+
+

Strimzi can be upgraded with no cluster downtime. Each version of Strimzi supports one or more versions of Apache Kafka: you can upgrade to a higher Kafka version as long as it is supported by your version of Strimzi. +In some cases, you can also downgrade to a lower supported Kafka version.

+
+
+

Newer versions of Strimzi may support newer versions of Kafka, but you need to upgrade Strimzi before you can upgrade to a higher supported Kafka version.

+
+
+ + + + + +
+
Important
+
+Resource upgrades must be performed after upgrading Strimzi and Kafka. +
+
+
+

8.1. Upgrade process

+
+

Upgrading Strimzi is a two-stage process. To upgrade brokers and clients without downtime, you must complete the upgrade procedures in the following order:

+
+
+
    +
  1. +

    Update your Cluster Operator to the latest Strimzi version.

    + +
  2. +
  3. +

    Upgrade all Kafka brokers and client applications to the latest Kafka version.

    +
    + +
    +
  4. +
+
+
+
+

8.2. Kafka versions

+
+

Kafka’s log message format version and inter-broker protocol version specify the log format version appended to messages and the version of protocol used in a cluster. As a result, the upgrade process involves making configuration changes to existing Kafka brokers and code changes to client applications (consumers and producers) to ensure the correct versions are used.

+
+
+

The following table shows the differences between Kafka versions:

+
+ ++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Kafka versionInterbroker protocol versionLog message format versionZookeeper version

2.1.0

2.1

2.1

3.4.13

2.1.1

2.1

2.1

3.4.13

2.2.0

2.2

2.2

3.4.13

2.2.1

2.2

2.2

3.4.13

+
+
Message format version
+

When a producer sends a message to a Kafka broker, the message is encoded using a specific format. +The format can change between Kafka releases, so messages include a version identifying which version of the format they were encoded with. You can configure a Kafka broker to convert messages from newer format versions to a given older format version before the broker appends the message to the log.

+
+
+

In Kafka, there are two different methods for setting the message format version:

+
+
+
    +
  • +

    The message.format.version property is set on topics.

    +
  • +
  • +

    The log.message.format.version property is set on Kafka brokers.

    +
  • +
+
+
+

The default value of message.format.version for a topic is defined by the log.message.format.version that is set on the Kafka broker. You can manually set the message.format.version of a topic by modifying its topic configuration.

+
+
+

The upgrade tasks in this section assume that the message format version is defined by the log.message.format.version.

+
+
+
+

8.3. Upgrading the Cluster Operator

+
+

The steps to upgrade your Cluster Operator deployment to use Strimzi 0.12.1 are outlined in this section.

+
+
+

The availability of Kafka clusters managed by the Cluster Operator is not affected by the upgrade operation.

+
+
+ + + + + +
+
Note
+
+Refer to the documentation supporting a specific version of Strimzi for information on how to upgrade to that version. +
+
+
+

8.3.1. Upgrading the Cluster Operator to a later version

+
+

This procedure describes how to upgrade a Cluster Operator deployment to a later version.

+
+
+
Prerequisites
+
    +
  • +

    An existing Cluster Operator deployment.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Backup the existing Cluster Operator resources:

    +
    +
    +
    kubectl get all -l app=strimzi -o yaml > strimzi-backup.yaml
    +
    +
    +
  2. +
  3. +

    Update the Cluster Operator.

    +
    +

    Modify the installation files according to the OpenShift project or Kubernetes namespace the Cluster Operator is running in.

    +
    +
    +

    On Linux, use:

    +
    +
    +
    +
    sed -i 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    On MacOS, use:

    +
    +
    +
    +
    sed -i '' 's/namespace: .*/namespace: my-namespace/' install/cluster-operator/*RoleBinding*.yaml
    +
    +
    +
    +

    If you modified one or more environment variables in your existing Cluster Operator Deployment, edit the +install/cluster-operator/050-Deployment-cluster-operator.yaml file to reflect the changes that you made in the new version of the Cluster Operator.

    +
    +
  4. +
  5. +

    When you have an updated configuration, deploy it along with the rest of the install resources:

    +
    +
    +
    kubectl apply -f install/cluster-operator
    +
    +
    +
    +

    Wait for the rolling updates to complete.

    +
    +
  6. +
  7. +

    Get the image for the Kafka pod to ensure the upgrade was successful:

    +
    +
    +
    kubectl get po my-cluster-kafka-0 -o jsonpath='{.spec.containers[0].image}'
    +
    +
    +
    +

    The image tag shows the new Strimzi version followed by the Kafka version. For example, <New Strimzi version>-kafka-<Current Kafka version>.

    +
    +
  8. +
  9. +

    Update existing resources to handle deprecated custom resource properties.

    + +
  10. +
+
+
+

You now have an updated Cluster Operator, but the version of Kafka running in the cluster it manages is unchanged.

+
+
+
What to do next
+

Following the Cluster Operator upgrade, you can perform a Kafka upgrade.

+
+
+
+
+

8.4. Upgrading Kafka

+
+

After you have upgraded your Cluster Operator, you can upgrade your brokers to a higher supported version of Kafka.

+
+
+

Kafka upgrades are performed using the Cluster Operator. How the Cluster Operator performs an upgrade depends on the differences between versions of:

+
+
+
    +
  • +

    Interbroker protocol

    +
  • +
  • +

    Log message format

    +
  • +
  • +

    ZooKeeper

    +
  • +
+
+
+

When the versions are the same for the current and target Kafka version, as is typically the case for a patch level upgrade, the Cluster Operator can upgrade through a single rolling update of the Kafka brokers.

+
+
+

When one or more of these versions differ, the Cluster Operator requires two or three rolling updates of the Kafka brokers to perform the upgrade.

+
+
+
Additional resources
+ +
+
+

8.4.1. Kafka version and image mappings

+
+

When upgrading Kafka, consider your settings for the STRIMZI_KAFKA_IMAGES and Kafka.spec.kafka.version properties.

+
+
+
    +
  • +

    Each Kafka resource can be configured with a Kafka.spec.kafka.version.

    +
  • +
  • +

    The Cluster Operator’s STRIMZI_KAFKA_IMAGES environment variable provides a mapping between the Kafka version and the image to be used when that version is requested in a given Kafka resource.

    +
    +
      +
    • +

      If Kafka.spec.kafka.image is not configured, the default image for the given version is used.

      +
    • +
    • +

      If Kafka.spec.kafka.image is configured, the default image is overridden.

      +
    • +
    +
    +
  • +
+
+
+ + + + + +
+
Warning
+
+The Cluster Operator cannot validate that an image actually contains a Kafka broker of the expected version. +Take care to ensure that the given image corresponds to the given Kafka version. +
+
+
+
+

8.4.2. Strategies for upgrading clients

+
+

The best approach to upgrading your client applications (including Kafka Connect connectors) depends on your particular circumstances.

+
+
+

Consuming applications need to receive messages in a message format that they understand. You can ensure that this is the case in one of two ways:

+
+
+
    +
  • +

    By upgrading all the consumers for a topic before upgrading any of the producers.

    +
  • +
  • +

    By having the brokers down-convert messages to an older format.

    +
  • +
+
+
+

Using broker down-conversion puts extra load on the brokers, so it is not ideal to rely on down-conversion for all topics for a prolonged period of time. +For brokers to perform optimally they should not be down converting messages at all.

+
+
+

Broker down-conversion is configured in two ways:

+
+
+
    +
  • +

    The topic-level message.format.version configures it for a single topic.

    +
  • +
  • +

    The broker-level log.message.format.version is the default for topics that do not have the topic-level message.format.version configured.

    +
  • +
+
+
+

Messages published to a topic in a new-version format will be visible to consumers, because brokers perform down-conversion when they receive messages from producers, not when they are sent to consumers.

+
+
+

There are a number of strategies you can use to upgrade your clients:

+
+
+
+
Consumers first
+
+
+
    +
  1. +

    Upgrade all the consuming applications.

    +
  2. +
  3. +

    Change the broker-level log.message.format.version to the new version.

    +
  4. +
  5. +

    Upgrade all the producing applications.

    +
    +

    This strategy is straightforward, and avoids any broker down-conversion. +However, it assumes that all consumers in your organization can be upgraded in a coordinated way, and it does not work for applications that are both consumers and producers. +There is also a risk that, if there is a problem with the upgraded clients, new-format messages might get added to the message log so that you cannot revert to the previous consumer version.

    +
    +
  6. +
+
+
+
Per-topic consumers first
+
+

For each topic:

+
+
    +
  1. +

    Upgrade all the consuming applications.

    +
  2. +
  3. +

    Change the topic-level message.format.version to the new version.

    +
  4. +
  5. +

    Upgrade all the producing applications.

    +
    +

    This strategy avoids any broker down-conversion, and means you can proceed on a topic-by-topic basis. It does not work for applications that are both consumers and producers of the same topic. Again, it has the risk that, if there is a problem with the upgraded clients, new-format messages might get added to the message log.

    +
    +
  6. +
+
+
+
Per-topic consumers first, with down conversion
+
+

For each topic:

+
+
    +
  1. +

    Change the topic-level message.format.version to the old version +(or rely on the topic defaulting to the broker-level log.message.format.version).

    +
  2. +
  3. +

    Upgrade all the consuming and producing applications.

    +
  4. +
  5. +

    Verify that the upgraded applications function correctly.

    +
  6. +
  7. +

    Change the topic-level message.format.version to the new version.

    +
    +

    This strategy requires broker down-conversion, but the load on the brokers is minimized because it is only required for a single topic (or small group of topics) at a time. It also works for applications that are both consumers and producers of the same topic. This approach ensures that the upgraded producers and consumers are working correctly before you commit to using the new message format version.

    +
    +
    +

    The main drawback of this approach is that it can be complicated to manage in a cluster with many topics and applications.

    +
    +
  8. +
+
+
+
+
+
+

Other strategies for upgrading client applications are also possible.

+
+
+ + + + + +
+
Note
+
+It is also possible to apply multiple strategies. +For example, for the first few applications and topics the +"per-topic consumers first, with down conversion" strategy can be used. +When this has proved successful another, more efficient strategy can be considered acceptable to use instead. +
+
+
+
+

8.4.3. Upgrading Kafka brokers and client applications

+
+

This procedure describes how to upgrade a Strimzi Kafka cluster to a higher version of Kafka.

+
+
+
Prerequisites
+

For the Kafka resource to be upgraded, check:

+
+
+
    +
  • +

    The Cluster Operator, which supports both versions of Kafka, is up and running.

    +
  • +
  • +

    The Kafka.spec.kafka.config does not contain options that are not supported in the version of Kafka that you are upgrading to.

    +
  • +
  • +

    Whether the log.message.format.version for the current Kafka version needs to be updated for the new version.

    + +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
    +
      +
    1. +

      If the log.message.format.version of the current Kafka version is the same as that of the new Kafka version, proceed to the next step.

      +
      +

      Otherwise, ensure that Kafka.spec.kafka.config has the log.message.format.version configured to the default for the current version.

      +
      +
      +

      For example, if upgrading from Kafka 2.1.1:

      +
      +
      +
      +
      kind: Kafka
      +spec:
      +  # ...
      +  kafka:
      +    version: 2.1.1
      +    config:
      +      log.message.format.version: "2.1"
      +      # ...
      +
      +
      +
      +

      If the log.message.format.version is unset, set it to the current version.

      +
      +
      + + + + + +
      +
      Note
      +
      +The value of log.message.format.version must be a string to prevent it from being interpreted as a floating point number. +
      +
      +
    2. +
    3. +

      Change the Kafka.spec.kafka.version to specify the new version (leaving the log.message.format.version as the current version).

      +
      +

      For example, if upgrading from Kafka 2.1.1 to 2.2.1:

      +
      +
      +
      +
      apiVersion: v1alpha1
      +kind: Kafka
      +spec:
      +  # ...
      +  kafka:
      +    version: 2.2.1 (1)
      +    config:
      +      log.message.format.version: "2.1" (2)
      +      # ...
      +
      +
      +
      +
        +
      1. +

        This is changed to the new version

        +
      2. +
      3. +

        This remains at the current version

        +
      4. +
      +
      +
    4. +
    5. +

      If the image for the Kafka version is different from the image defined in STRIMZI_KAFKA_IMAGES for the Cluster Operator, update Kafka.spec.kafka.image.

      + +
    6. +
    +
    +
  2. +
  3. +

    Save and exit the editor, then wait for rolling updates to complete.

    +
    +

    Check the update in the logs or by watching the pod state transitions:

    +
    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl logs -f <cluster-operator-pod-name> | grep -E "Kafka version upgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    kubectl get po -w
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc logs -f <cluster-operator-pod-name> | grep -E "Kafka version upgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    oc get po -w
    +
    +
    +
    +
    +
    +

    If the current and new versions of Kafka have different interbroker protocol versions, check the Cluster Operator logs for an INFO level message:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version upgrade from <from-version> to <to-version>, phase 2 of 2 completed
    +
    +
    +
    +

    Alternatively, if the current and new versions of Kafka have the same interbroker protocol version, check for:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version upgrade from <from-version> to <to-version>, phase 1 of 1 completed
    +
    +
    +
    +
    +
    +

    The rolling updates:

    +
    +
    +
      +
    • +

      Ensure each pod is using the broker binaries for the new version of Kafka

      +
    • +
    • +

      Configure the brokers to send messages using the interbroker protocol of the new version of Kafka

      +
      + + + + + +
      +
      Note
      +
      +Clients are still using the old version, so brokers will convert messages to the old version before sending them to the clients. To minimize this additional load, updates the clients as quickly as possible. +
      +
      +
    • +
    +
    +
  4. +
  5. +

    Depending on your chosen strategy for upgrading clients, upgrade all client applications to use the new version of the client binaries.

    + +
    + + + + + +
    +
    Warning
    +
    +You cannot downgrade after completing this step. If you need to revert the update at this point, follow the procedure Downgrading Kafka brokers and client applications. +
    +
    +
    +

    If required, set the version property for Kafka Connect and Mirror Maker as the new version of Kafka:

    +
    +
    +
      +
    1. +

      For Kafka Connect, update KafkaConnect.spec.version

      +
    2. +
    3. +

      For MIrror Maker, update KafkaMirrorMaker.spec.version

      +
    4. +
    +
    +
  6. +
  7. +

    If the log.message.format.version identified in step 1 is the same as the new version proceed to the next step.

    +
    +

    Otherwise change the log.message.format.version in Kafka.spec.kafka.config to the default version for the new version of Kafka now being used.

    +
    +
    +

    For example, if upgrading to 2.2.1:

    +
    +
    +
    +
    apiVersion: v1alpha1
    +kind: Kafka
    +spec:
    +  # ...
    +  kafka:
    +    version: 2.2.1
    +    config:
    +      log.message.format.version: "2.2"
    +      # ...
    +
    +
    +
  8. +
  9. +

    Wait for the Cluster Operator to update the cluster.

    +
    +

    The Kafka cluster and clients are now using the new Kafka version.

    +
    +
  10. +
+
+
+
Additional resources
+ +
+
+
+
+

8.5. Downgrading Kafka

+
+

Kafka version downgrades are performed using the Cluster Operator.

+
+
+

Whether and how the Cluster Operator performs a downgrade depends on the differences between versions of:

+
+
+
    +
  • +

    Interbroker protocol

    +
  • +
  • +

    Log message format

    +
  • +
  • +

    Zookeeper

    +
  • +
+
+
+

8.5.1. Target downgrade version

+
+

How the Cluster Operator handles a downgrade operation depends on the log.message.format.version.

+
+
+
    +
  • +

    If the target downgrade version of Kafka has the same log.message.format.version as the current version, the Cluster Operator downgrades by performing a single rolling restart of the brokers.

    +
  • +
  • +

    If the target downgrade version of Kafka has a different log.message.format.version, downgrading is only possible if the running cluster has always had log.message.format.version set to the version used by the downgraded version.

    +
    +

    This is typically only the case if the upgrade procedure was aborted before the log.message.format.version was changed. +In this case, the downgrade requires:

    +
    +
    +
      +
    • +

      Two rolling restarts of the brokers if the interbroker protocol of the two versions is different

      +
    • +
    • +

      A single rolling restart if they are the same

      +
    • +
    +
    +
  • +
+
+
+
+

8.5.2. Downgrading Kafka brokers and client applications

+
+

This procedure describes how you can downgrade a Strimzi Kafka cluster to a lower (previous) version of Kafka, such as downgrading from 2.2.1 to 2.1.1.

+
+
+ + + + + +
+
Important
+
+
+

Downgrading is not possible if the new version has ever used a log.message.format.version that is not supported by the previous version, including when the default value for log.message.format.version is used. For example, this resource can be downgraded to Kafka version 2.1.1 because the log.message.format.version has not been changed:

+
+
+
+
apiVersion: v1alpha1
+kind: Kafka
+spec:
+  # ...
+  kafka:
+    version: 2.2.1
+    config:
+      log.message.format.version: "2.1"
+      # ...
+
+
+
+

The downgrade would not be possible if the log.message.format.version was set at "2.2" or a value was absent (so that the parameter took the default value for a 2.2.1 broker of 2.2).

+
+
+
+
+
Prerequisites
+

For the Kafka resource to be downgraded, check:

+
+
+
    +
  • +

    The Cluster Operator, which supports both versions of Kafka, is up and running.

    +
  • +
  • +

    The Kafka.spec.kafka.config does not contain options that are not supported in the version of Kafka you are downgrading to.

    +
  • +
  • +

    The Kafka.spec.kafka.config has a log.message.format.version that is supported by the version being downgraded to.

    +
  • +
+
+
+
Procedure
+
    +
  1. +

    Update the Kafka cluster configuration in an editor, as required:

    +
    +

    On Kubernetes, use:

    +
    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
    +

    On OpenShift, use:

    +
    +
    +
    +
    oc edit kafka my-cluster
    +
    +
    +
    +
      +
    1. +

      Change the Kafka.spec.kafka.version to specify the previous version.

      +
      +

      For example, if downgrading from Kafka 2.2.1 to 2.1.1:

      +
      +
      +
      +
      apiVersion: v1alpha1
      +kind: Kafka
      +spec:
      +  # ...
      +  kafka:
      +    version: 2.1.1 (1)
      +    config:
      +      log.message.format.version: "2.1" (2)
      +      # ...
      +
      +
      +
      +
        +
      1. +

        This is changed to the previous version

        +
      2. +
      3. +

        This is unchanged

        +
      4. +
      +
      +
      + + + + + +
      +
      Note
      +
      +You must format the value of log.message.format.version as a string to prevent it from being interpreted as a floating point number. +
      +
      +
    2. +
    3. +

      If the image for the Kafka version is different from the image defined in STRIMZI_KAFKA_IMAGES for the Cluster Operator, update Kafka.spec.kafka.image.

      + +
    4. +
    +
    +
  2. +
  3. +

    Save and exit the editor, then wait for rolling updates to complete.

    +
    +

    Check the update in the logs or by watching the pod state transitions:

    +
    +
    +

    On Kubernetes use:

    +
    +
    +
    +
    kubectl logs -f <cluster-operator-pod-name> | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    kubectl get po -w
    +
    +
    +
    +

    On OpenShift use:

    +
    +
    +
    +
    oc logs -f <cluster-operator-pod-name> | grep -E "Kafka version downgrade from [0-9.]+ to [0-9.]+, phase ([0-9]+) of \1 completed"
    +
    +
    +
    +
    +
    oc get po -w
    +
    +
    +
    +
    +
    +

    If the previous and current versions of Kafka have different interbroker protocol versions, check the Cluster Operator logs for an INFO level message:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version downgrade from <from-version> to <to-version>, phase 2 of 2 completed
    +
    +
    +
    +

    Alternatively, if the previous and current versions of Kafka have the same interbroker protocol version, check for:

    +
    +
    +
    +
    Reconciliation #<num>(watch) Kafka(<namespace>/<name>): Kafka version downgrade from <from-version> to <to-version>, phase 1 of 1 completed
    +
    +
    +
    +
    +
  4. +
  5. +

    Downgrade all client applications (consumers) to use the previous version of the client binaries.

    +
    +

    The Kafka cluster and clients are now using the previous Kafka version.

    +
    +
  6. +
+
+
+
+
+
+
+

9. Strimzi resource upgrades

+
+
+

For this release of Strimzi, resources that use the API version kafka.strimzi.io/v1alpha1 must be updated to use kafka.strimzi.io/v1beta1.

+
+
+

The kafka.strimzi.io/v1alpha1 API version is deprecated in release 0.12.1.

+
+
+

This section describes the upgrade steps for the resources.

+
+
+ + + + + +
+
Important
+
+The upgrade of resources must be performed after upgrading the Cluster Operator, so the Cluster Operator can understand the resources. +
+
+
+
What if the resource upgrade does not take effect?
+

If the upgrade does not take effect, a warning is given in the logs on reconciliation to indicate that the resource cannot be updated until the apiVersion is updated.

+
+
+

To trigger the update, make a cosmetic change to the custom resource, such as adding an annotation.

+
+
+

Example annotation:

+
+
+
+
metadata:
+  # ...
+  annotations:
+    upgrade: "Upgraded to kafka.strimzi.io/v1beta1"
+
+
+
+

9.1. Upgrading Kafka resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each Kafka resource in your deployment.

+
+
+
    +
  1. +

    Update the Kafka resource in an editor.

    +
    +
    +
    kubectl edit kafka my-cluster
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If the Kafka resource has:

    +
    +
    +
    Kafka.spec.topicOperator
    +
    +
    +
    +

    Replace it with:

    +
    +
    +
    +
    Kafka.spec.entityOperator.topicOperator
    +
    +
    +
    +

    For example, replace:

    +
    +
    +
    +
    spec:
    +  # ...
    +  topicOperator: {}
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    spec:
    +  # ...
    +  entityOperator:
    +    topicOperator: {}
    +
    +
    +
  6. +
  7. +

    If present, move:

    +
    +
    +
    Kafka.spec.entityOperator.affinity
    +
    +
    +
    +
    +
    Kafka.spec.entityOperator.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    Kafka.spec.entityOperator.template.pod.affinity
    +
    +
    +
    +
    +
    Kafka.spec.entityOperator.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  entityOperator:
    +    affinity {}
    +    tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  entityOperator:
    +    template:
    +      pod:
    +        affinity {}
    +        tolerations {}
    +
    +
    +
  8. +
  9. +

    If present, move:

    +
    +
    +
    Kafka.spec.kafka.affinity
    +
    +
    +
    +
    +
    Kafka.spec.kafka.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    Kafka.spec.kafka.template.pod.affinity
    +
    +
    +
    +
    +
    Kafka.spec.kafka.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  kafka:
    +    affinity {}
    +    tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  kafka:
    +    template:
    +      pod:
    +        affinity {}
    +        tolerations {}
    +
    +
    +
  10. +
  11. +

    If present, move:

    +
    +
    +
    Kafka.spec.zookeeper.affinity
    +
    +
    +
    +
    +
    Kafka.spec.zookeeper.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    Kafka.spec.zookeeper.template.pod.affinity
    +
    +
    +
    +
    +
    Kafka.spec.zookeeper.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  zookeeper:
    +    affinity {}
    +    tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  zookeeper:
    +    template:
    +      pod:
    +        affinity {}
    +        tolerations {}
    +
    +
    +
  12. +
  13. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  14. +
+
+
+
+

9.2. Upgrading Kafka Connect resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaConnect resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaConnect resource in an editor.

    +
    +
    +
    kubectl edit kafkaconnect my-connect
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If present, move:

    +
    +
    +
    KafkaConnect.spec.affinity
    +
    +
    +
    +
    +
    KafkaConnect.spec.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    KafkaConnect.spec.template.pod.affinity
    +
    +
    +
    +
    +
    KafkaConnect.spec.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  affinity {}
    +  tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  template:
    +    pod:
    +      affinity {}
    +      tolerations {}
    +
    +
    +
  6. +
  7. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  8. +
+
+
+
+

9.3. Upgrading Kafka Connect S2I resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaConnectS2I resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaConnectS2I resource in an editor.

    +
    +
    +
    kubectl edit kafkaconnects2i my-connect
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If present, move:

    +
    +
    +
    KafkaConnectS2I.spec.affinity
    +
    +
    +
    +
    +
    KafkaConnectS2I.spec.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    KafkaConnectS2I.spec.template.pod.affinity
    +
    +
    +
    +
    +
    KafkaConnectS2I.spec.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  affinity {}
    +  tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  template:
    +    pod:
    +      affinity {}
    +      tolerations {}
    +
    +
    +
  6. +
  7. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  8. +
+
+
+
+

9.4. Upgrading Kafka Mirror Maker resources

+
+
Prerequisites
+
    +
  • +

    A Cluster Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaMirrorMaker resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaMirrorMaker resource in an editor.

    +
    +
    +
    kubectl edit kafkamirrormaker my-connect
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    If present, move:

    +
    +
    +
    KafkaConnectMirrorMaker.spec.affinity
    +
    +
    +
    +
    +
    KafkaConnectMirrorMaker.spec.tolerations
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    KafkaConnectMirrorMaker.spec.template.pod.affinity
    +
    +
    +
    +
    +
    KafkaConnectMirrorMaker.spec.template.pod.tolerations
    +
    +
    +
    +

    For example, move:

    +
    +
    +
    +
    spec:
    +  # ...
    +  affinity {}
    +  tolerations {}
    +
    +
    +
    +

    to:

    +
    +
    +
    +
    spec:
    +  # ...
    +  template:
    +    pod:
    +      affinity {}
    +      tolerations {}
    +
    +
    +
  6. +
  7. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  8. +
+
+
+
+

9.5. Upgrading Kafka Topic resources

+
+
Prerequisites
+
    +
  • +

    A Topic Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaTopic resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaTopic resource in an editor.

    +
    +
    +
    kubectl edit kafkatopic my-topic
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  6. +
+
+
+
+

9.6. Upgrading Kafka User resources

+
+
Prerequisites
+
    +
  • +

    A User Operator supporting the v1beta1 API version is up and running.

    +
  • +
+
+
+
Procedure
+

Execute the following steps for each KafkaUser resource in your deployment.

+
+
+
    +
  1. +

    Update the KafkaUser resource in an editor.

    +
    +
    +
    kubectl edit kafkauser my-user
    +
    +
    +
  2. +
  3. +

    Replace:

    +
    +
    +
    apiVersion: kafka.strimzi.io/v1alpha1
    +
    +
    +
    +

    with:

    +
    +
    +
    +
    apiVersion:kafka.strimzi.io/v1beta1
    +
    +
    +
  4. +
  5. +

    Save the file, exit the editor and wait for the updated resource to be reconciled.

    +
  6. +
+
+
+
+
+
+

10. Uninstalling Strimzi

+
+
+

This procedure describes how to uninstall Strimzi and remove resources related to the deployment.

+
+
+
Prerequisites
+

In order to perform this procedure, identify resources created specifically for a deployment and referenced from the Strimzi resource.

+
+
+

Such resources include:

+
+
+
    +
  • +

    Secrets (Custom CAs and certificates, Kafka Connect secrets, and other Kafka secrets)

    +
  • +
  • +

    Logging ConfigMaps (of type external)

    +
  • +
+
+
+

These are resources referenced by Kafka, KafkaConnect, KafkaConnectS2I, or KafkaMirrorMaker configuration.

+
+
+
Procedure
+
    +
  1. +

    Delete the cluster operator Deployment, related CustomResourceDefinitions, and RBAC resources:

    +
    +
    +
    kubectl delete -f install/cluster-operator
    +
    +
    +
    + + + + + +
    +
    Warning
    +
    +Deleting CustomResourceDefinitions results in the garbage collection of the corresponding custom resources (Kafka, KafkaConnect, KafkaConnectS2I, or KafkaMirrorMaker) and the resources dependent on them (Deployments, StatefulSets, and other dependent resources). +
    +
    +
  2. +
  3. +

    Delete the resources you identified in the prerequisites.

    +
  4. +
+
+
+
+
+

11. Checking the status of a custom resource

+
+
+

This procedure describes how to find the status of a custom resource.

+
+
+
Prerequisites
+
    +
  • +

    An OpenShift or Kubernetes cluster

    +
  • +
  • +

    A running Cluster Operator

    +
  • +
+
+
+
Procedure
+
    +
  • +

    Specify the custom resource and use -o jsonpath option to apply a standard JSONPath expression to select the status property:

    +
    +
    +
    kubectl get kafka <kafka_resource_name> -o jsonpath='{.status}'
    +
    +
    +
    +

    This expression returns all the status information for the specified custom resource. You can use dot notation, such as status.listeners, to fine-tune the status information you wish to see.

    +
    +
  • +
+
+
+
Additional resources
+ +
+
+
+
+

Appendix A: Configurable loggers

+
+
+

Logging allows you to diagnose error and performance issues for Strimzi.

+
+
+

The following logger implementations are used in Strimzi:

+
+
+
    +
  • +

    log4j logger for Kafka and Zookeeper

    +
  • +
  • +

    log4j2 logger for Topic Operator, User Operator, and other components

    +
  • +
+
+
+

Strimzi components have their own configurable loggers.

+
+ +
+
+
+

Appendix B: Frequently Asked Questions

+
+
+

B.1. Cluster Operator

+
+

B.1.1. Why do I need cluster admin privileges to install Strimzi?

+
+

To install Strimzi, you must have the ability to create Custom Resource Definitions (CRDs). +CRDs instruct OpenShift or Kubernetes about resources that are specific to Strimzi, such as Kafka, KafkaConnect, and so on. +Because CRDs are a cluster-scoped resource rather than being scoped to a particular OpenShift or Kubernetes namespace, they typically require cluster admin privileges to install.

+
+
+

In addition, you must also have the ability to create ClusterRoles and ClusterRoleBindings. Like CRDs, these are cluster-scoped resources that typically require cluster admin privileges.

+
+
+

The cluster administrator can inspect all the resources being installed (in the /install/ directory) to assure themselves that the ClusterRoles do not grant unnecessary privileges. For more information about why the Cluster Operator installation resources grant the ability to create ClusterRoleBindings see the following question.

+
+
+

After installation, the Cluster Operator will run as a regular Deployment; any non-admin user with privileges to access the Deployment can configure it.

+
+
+

By default, normal users will not have the privileges necessary to manipulate the custom resources, such as Kafka, KafkaConnect and so on, which the Cluster Operator deals with. +These privileges can be granted using normal RBAC resources by the cluster administrator. See this procedure for more details of how to do this.

+
+
+
+

B.1.2. Why does the Cluster Operator require the ability to create ClusterRoleBindings? Is that not a security risk?

+
+

OpenShift or Kubernetes has built-in privilege escalation prevention. +That means that the Cluster Operator cannot grant privileges it does not have itself. +Which in turn means that the Cluster Operator needs to have the privileges necessary for all the components it orchestrates.

+
+
+

In the context of this question there are two places where the Cluster Operator needs to create bindings to ClusterRoleBindings to ServiceAccounts:

+
+
+
    +
  1. +

    The Topic Operator and User Operator need to be able to manipulate KafkaTopics and KafkaUsers, respectively. +The Cluster Operator therefore needs to be able to grant them this access, which it does by creating a Role and RoleBinding. +For this reason the Cluster Operator itself needs to be able to create Roles and RoleBindings in the namespace that those operators will run in. +However, because of the privilege escalation prevention, the Cluster Operator cannot grant privileges it does not have itself (in particular it cannot grant such privileges in namespace it cannot access).

    +
  2. +
  3. +

    When using rack-aware partition assignment, Strimzi needs to be able to discover the failure domain (for example, the Availability Zone in AWS) of the node on which a broker pod is assigned. +To do this the broker pod needs to be able to get information about the Node it is running on. +A Node is a cluster-scoped resource, so access to it can only be granted via a ClusterRoleBinding (not a namespace-scoped RoleBinding). +Therefore the Cluster Operator needs to be able to create ClusterRoleBindings. +But again, because of privilege escalation prevention, the Cluster Operator cannot grant privileges it does not have itself (so it cannot, for example, create a ClusterRoleBinding to a ClusterRole to grant privileges that the Cluster Operator does not not already have).

    +
  4. +
+
+
+
+

B.1.3. Why can standard OpenShift or Kubernetes users not create the custom resource (Kafka, KafkaTopic, and so on)?

+
+

Because, when they installed Strimzi, the OpenShift or Kubernetes cluster administrator did not grant the necessary privileges to standard users.

+
+
+

See this FAQ answer for more details.

+
+
+
+

B.1.4. Log contains warnings about failing to acquire lock

+
+

For each cluster, the Cluster Operator always executes only one operation at a time. The Cluster Operator uses locks +to make sure that there are never two parallel operations running for the same cluster. In case an operation requires +more time to complete, other operations will wait until it is completed and the lock is released.

+
+
+
+
INFO
+
+

Examples of cluster operations are cluster creation, rolling update, scale down or scale up and so on.

+
+
+
+
+

If the wait for the lock takes too long, the operation times out and the following warning message will be printed to +the log:

+
+
+
+
2018-03-04 17:09:24 WARNING AbstractClusterOperations:290 - Failed to acquire lock for kafka cluster lock::kafka::myproject::my-cluster
+
+
+
+

Depending on the exact configuration of STRIMZI_FULL_RECONCILIATION_INTERVAL_MS and STRIMZI_OPERATION_TIMEOUT_MS, this +warning message may appear regularly without indicating any problems. The operations which time out will be picked up by +the next periodic reconciliation. It will try to acquire the lock again and execute.

+
+
+

Should this message appear periodically even in situations when there should be no other operations running for a given +cluster, it might indicate that due to some error the lock was not properly released. In such cases it is recommended to +restart the cluster operator.

+
+
+
+

B.1.5. Hostname verification fails when connecting to NodePorts using TLS

+
+

Currently, off-cluster access using NodePorts with TLS encryption enabled does not support TLS hostname verification. +As a result, the clients that verify the hostname will fail to connect. +For example, the Java client will fail with the following exception:

+
+
+
+
Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address 168.72.15.231 found
+    at sun.security.util.HostnameChecker.matchIP(HostnameChecker.java:168)
+    at sun.security.util.HostnameChecker.match(HostnameChecker.java:94)
+    at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:455)
+    at sun.security.ssl.X509TrustManagerImpl.checkIdentity(X509TrustManagerImpl.java:436)
+    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:252)
+    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
+    at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1501)
+    ... 17 more
+
+
+
+

To connect, you must disable hostname verification. +In the Java client, you can do this by setting the configuration option ssl.endpoint.identification.algorithm to an empty string.

+
+
+

When configuring the client using a properties file, you can do it this way:

+
+
+
+
ssl.endpoint.identification.algorithm=
+
+
+
+

When configuring the client directly in Java, set the configuration option to an empty string:

+
+
+
+
props.put("ssl.endpoint.identification.algorithm", "");
+
+
+
+
+
+
+
+

Appendix C: Installing OpenShift or Kubernetes cluster

+
+
+

The easiest way to get started with OpenShift or Kubernetes is using the Minikube, Minishift or oc cluster up +utilities. This section provides basic guidance on how to use them. More details are provided on the websites of +the tools themselves.

+
+
+

C.1. Kubernetes

+
+

In order to interact with a Kubernetes cluster the kubectl +utility needs to be installed.

+
+
+

The easiest way to get a running Kubernetes cluster is using Minikube. Minikube can be downloaded and installed +from the Kubernetes website. Depending on the number of brokers +you want to deploy inside the cluster and if you need Kafka Connect running as well, it could be worth running Minikube +at least with 4 GB of RAM instead of the default 2 GB. +Once installed, it can be started using:

+
+
+
+
minikube start --memory 4096
+
+
+
+
+

C.2. OpenShift

+
+

In order to interact with an OpenShift cluster, the oc utility is needed.

+
+
+

An OpenShift cluster can be started in two different ways. The oc utility can start a cluster locally using the +command:

+
+
+
+
oc cluster up
+
+
+
+

This command requires Docker to be installed. More information about this way can be found +here.

+
+
+

Another option is to use Minishift. Minishift is an OpenShift installation within a VM. It can be downloaded and +installed from the Minishift website. Depending on the number of brokers +you want to deploy inside the cluster and if you need Kafka Connect running as well, it could be worth running Minishift +at least with 4 GB of RAM instead of the default 2 GB. +Once installed, Minishift can be started using the following command:

+
+
+
+
minishift start --memory 4GB
+
+
+
+
+
+
+

Appendix D: Metrics

+
+
+

This section describes how to monitor Strimzi Kafka and ZooKeeper clusters using Grafana dashboards. +To run the example dashboards you must configure a Prometheus server and add the appropriate metrics configuration to your Kafka cluster resource.

+
+
+ + + + + +
+
Warning
+
+The resources referenced in this section serve as a good starting point for setting up monitoring, but they are provided as an example only. +If you require further support on configuration and running Prometheus or Grafana in production then please reach out to their respective communities. +
+
+
+

When adding Prometheus and Grafana servers to an Apache Kafka deployment using minikube or minishift, the memory available to the virtual machine should be increased (to 4 GB of RAM, for example, instead of the default 2 GB). Information on how to increase the default amount of memory can be found in the following section Installing OpenShift or Kubernetes cluster.

+
+
+

D.1. Kafka Metrics Configuration

+
+

Strimzi uses the Prometheus JMX Exporter to export JMX metrics from Kafka and ZooKeeper to a Prometheus HTTP metrics endpoint that is scraped by Prometheus server. +The Grafana dashboard relies on the Kafka and ZooKeeper Prometheus JMX Exporter relabeling rules defined in the example Kafka resource configuration in kafka-metrics.yaml. +Copy this configuration to your own Kafka resource definition, or run this example, in order to use the provided Grafana dashboards.

+
+
+

D.1.1. Deploying on OpenShift

+
+

To deploy the example Kafka cluster the following command should be executed:

+
+
+
+
oc apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/kafka/kafka-metrics.yaml
+
+
+
+
+

D.1.2. Deploying on Kubernetes

+
+

To deploy the example Kafka cluster the following command should be executed:

+
+
+
+
kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/kafka/kafka-metrics.yaml
+
+
+
+
+
+

D.2. Prometheus

+
+

Prometheus is an open-source set of components for systems monitoring and alerting. +Strimzi uses the CoreOS Prometheus Operator to run Prometheus on Kubernetes. +This Operator enables you to run a highly available Prometheus server that is suitable for use in production environments.

+
+
+

D.2.1. Deploying the Prometheus Operator on Kubernetes

+
+

To deploy the Prometheus Operator in your Kafka cluster, apply the .yaml files from the Prometheus CoreOS repository.

+
+
+

To use a different namespace than that specified in the repository files (myproject), use the following commands to download and edit the files from the repository:

+
+
+

On Linux, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-deployment.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-cluster-role-binding.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-service-account.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml > prometheus-operator-cluster-role.yaml
+
+
+
+

On MacOS, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-deployment.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-deployment.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role-binding.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-cluster-role-binding.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-service-account.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-operator-service-account.yaml
+curl -s https://raw.githubusercontent.com/coreos/prometheus-operator/master/example/rbac/prometheus-operator/prometheus-operator-cluster-role.yaml > prometheus-operator-cluster-role.yaml
+
+
+
+

If needed, you can remove the securityContext from the Prometheus Operator Deployment. +You can manually remove the spec.template.spec.securityContext property from the prometheus-operator-deployment.yaml file.

+
+
+

Next, apply all the files using the following commands:

+
+
+

On Kubernetes this can be done using kubectl apply:

+
+
+
+
kubectl apply -f prometheus-operator-service-account.yaml
+kubectl apply -f prometheus-operator-cluster-role.yaml
+kubectl apply -f prometheus-operator-cluster-role-binding.yaml
+kubectl apply -f prometheus-operator-deployment.yaml
+
+
+
+

On OpenShift this can be done using oc apply:

+
+
+
+
oc apply -f prometheus-operator-service-account.yaml
+oc apply -f prometheus-operator-cluster-role.yaml
+oc apply -f prometheus-operator-cluster-role-binding.yaml
+oc apply -f prometheus-operator-deployment.yaml
+
+
+
+

The Strimzi repository contains configuration files for the Prometheus server. When you apply these configuration files, the following resources are created in your Kubernetes cluster and managed by the Prometheus Operator.

+
+
+
    +
  • +

    A ClusterRole that grants permissions to read the Prometheus health endpoints of the Kubernetes system, including cAdvisor and the kubelet for container metrics. The Prometheus server configuration uses the Kubernetes service discovery feature in order to discover the pods in the cluster from which it gets metrics. For this feature to work correctly, the service account used for running the Prometheus service pod must have access to the API server so it can retrieve the pod list.

    +
  • +
  • +

    A ServiceAccount for the Prometheus pods to run under.

    +
  • +
  • +

    A ClusterRoleBinding which binds the aforementioned ClusterRole to the ServiceAccount.

    +
  • +
  • +

    A Deployment to manage the Prometheus Operator pod.

    +
  • +
  • +

    A ServiceMonitor to manage the configuration of the Prometheus pod.

    +
  • +
  • +

    A Secret to manage additional Prometheus settings.

    +
  • +
  • +

    A PrometheusRule to manage alert rules for the Prometheus pod.

    +
  • +
  • +

    A Prometheus to manage the configuration of the Prometheus pod.

    +
  • +
+
+
+
+

D.2.2. Deploying Prometheus

+
+

The provided prometheus.yaml file, together with the Prometheus related resources, creates a ClusterRoleBinding in the myproject namespace. +It also discovers an Alertmanager instance in the same namespace. +If you are using a different namespace, download the resource file and update it using the following command:

+
+
+

On Linux, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus.yaml
+
+
+
+

On MacOS, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus.yaml
+
+
+
+

To define Prometheus jobs that will scrape the metrics data, you must apply the ServiceMonitor resource located in the provided strimzi-service-monitor.yaml file. +Download this file using the following command:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/strimzi-service-monitor.yaml
+
+
+
+

Currently, the Prometheus Operator only supports jobs that include an endpoints role for service discovery. +To use another role, edit the additionalScrapeConfigs property in the prometheus.yaml configuration file. +This takes the name of the Secret and the name of the property in a given Secret in which additional configuration is stored. +To create this Secret resource, use the following command:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/additional-properties/prometheus-additional.yaml
+oc create secret generic additional-scrape-configs --from-file=prometheus-additional.yaml
+
+
+
+

The provided prometheus-rules.yaml file creates a PrometheusRule with sample alerting rules. Download and update the resource file as follows:

+
+
+

On Linux, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus-rules.yaml | sed -e 's/namespace: .*/namespace: my-namespace/' > prometheus-rules.yaml
+
+
+
+

On MacOS, use:

+
+
+
+
curl -s https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/prometheus-rules.yaml | sed -e '' 's/namespace: .*/namespace: my-namespace/' > prometheus-rules.yaml
+
+
+
+

To deploy these resources, run the following commands:

+
+
+

On Kubernetes this can be done using kubectl apply:

+
+
+
+
kubectl apply -f strimzi-service-monitor.yaml
+kubectl apply -f prometheus-rules.yaml
+kubectl apply -f prometheus.yaml
+
+
+
+

On OpenShift this can be done using oc apply:

+
+
+
+
oc login -u system:admin
+oc apply -f strimzi-service-monitor.yaml
+oc apply -f prometheus-rules.yaml
+oc apply -f prometheus.yaml
+
+
+
+

Prometheus also provides an alerting system through the Alertmanager component. +To enable alerting, the provided prometheus-rules.yaml file describes a PrometheusRule resource that defines sample alerting rules for Kafka and Zookeeper metrics. +When an alert condition is evaluated as true on the Prometheus server, it sends the alert data to the Alertmanager which then uses the configured notification methods to notify the user.

+
+
+

For more information about setting up alerting rules, see Alerting Rules in the Prometheus documentation.

+
+
+
+
+

D.3. Grafana

+
+

A Grafana server is necessary to get a visualisation of the Prometheus metrics. The source for the Grafana docker image used can be found in the ./metrics/examples/grafana/grafana-openshift directory.

+
+
+

D.3.1. Deploying on OpenShift

+
+

To deploy Grafana the following commands should be executed:

+
+
+
+
oc apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/grafana/grafana.yaml
+
+
+
+
+

D.3.2. Deploying on Kubernetes

+
+

To deploy Grafana the following commands should be executed:

+
+
+
+
kubectl apply -f https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/grafana/grafana.yaml
+
+
+
+
+
+

D.4. Grafana dashboard

+
+

As an example, and in order to visualize the exported metrics in Grafana, two sample dashboards are provided strimzi-kafka.json and strimzi-zookeeper.json. +These dashboards represent a good starting point for key metrics to monitor Kafka and ZooKeeper clusters, but depending on your infrastructure you may need to update or add to them. +Please note that they are not representative of all the metrics available. +No alerting rules are defined.

+
+
+

The Grafana Prometheus data source, and the above dashboards, can be set up in Grafana by following these steps.

+
+
+ + + + + +
+
Note
+
+For accessing the dashboard, you can use the port-forward command for forwarding traffic from the Grafana pod to the host. For example, you can access the Grafana UI by running oc port-forward grafana-1-fbl7s 3000:3000 (or using kubectl instead of oc) and then pointing a browser to http://localhost:3000. +
+
+
+
    +
  1. +

    Access to the Grafana UI using admin/admin credentials. On the following view you can choose to skip resetting the admin password, or set it to a password you desire.

    +
    +
    +Grafana login +
    +
    +
  2. +
  3. +

    Click on the "Add data source" button from the Grafana home in order to add Prometheus as data source.

    +
    +
    +Grafana home +
    +
    +
  4. +
  5. +

    Fill in the information about the Prometheus data source, specifying a name and "Prometheus" as type. In the URL field, the connection string to the Prometheus server (that is, http://prometheus-operated:9090) should be specified. After "Add" is clicked, Grafana will test the connection to the data source.

    +
    +
    +Add Prometheus data source +
    +
    +
  6. +
  7. +

    From the top left menu, click on "Dashboards" and then "Import" to open the "Import Dashboard" window where the provided strimzi-kafka.json and strimzi-zookeeper.json files can be imported or their content pasted.

    +
    +
    +Add Grafana dashboard +
    +
    +
  8. +
  9. +

    After importing the dashboards, the Grafana dashboard homepage will now list two dashboards for you to choose from. After your Prometheus server has been collecting metrics for a Strimzi cluster for some time you should see a populated dashboard such as the examples list below.

    +
  10. +
+
+ + +
+

D.4.3. Metrics References

+
+

To learn more about what metrics are available to monitor for Kafka, ZooKeeper, and Kubernetes in general, please review the following resources.

+
+
+
    +
  • +

    Apache Kafka Monitoring - A list of JMX metrics exposed by Apache Kafka. +It includes a description, JMX mbean name, and in some cases a suggestion on what is a normal value returned.

    +
  • +
  • +

    ZooKeeper JMX - A list of JMX metrics exposed by Apache ZooKeeper.

    +
  • +
  • +

    Prometheus - Monitoring Docker Container Metrics using cAdvisor - cAdvisor (short for container Advisor) analyzes and exposes resource usage (such as CPU, Memory, and Disk) and performance data from running containers within pods on Kubernetes. +cAdvisor is bundled along with the kubelet binary so that it is automatically available within Kubernetes clusters. +This reference describes how to monitor cAdvisor metrics in various ways using Prometheus.

    +
    +
      +
    • +

      cAdvisor Metrics - A full list of cAdvisor metrics as exposed through Prometheus.

      +
    • +
    +
    +
  • +
+
+
+
+
+

D.5. Prometheus alerting

+
+

In the monitoring space, one of the useful aspects is to be notified when some metrics conditions are verified. +They allow a human operator to get notifications about problems in the monitored system.

+
+
+

Prometheus allows to write so called "alerting rules" which describe such a conditions using PromQL expressions that are continuously evaluated. +When an expression becomes true, the described condition is met and the Prometheus server fires an alert.

+
+
+

Prometheus itself is not responsible for sending notifications to the users when an alert is fired. +A different component, the Prometheus Alertmanager, is in charge to do so, sending emails, chat messages or using different notification methods. +When an alert condition is verified, the alert is fired and the Prometheus server sends it to the Alertmanager which will send notifications.

+
+
+
+

D.6. Prometheus Alertmanager

+
+

Other than a server for scraping metrics, Prometheus provides an alerting system through the Alertmanager component. +It is possible to declare alerting rules on the Prometheus server in order to be notified about specific conditions in the metrics. +When an alert condition is evaluated as true, Prometheus sends alert data to the Alertmanager which then sends notifications out. +Notifications can be sent via methods such as email, Slack, PagerDuty and HipChat

+
+
+

The provided Prometheus alert-manager.yaml file describes the resources required for deploying and configuring the Alertmanager. +The file alertmanager.yaml YAML file describes the hook for sending notifications.

+
+
+

The following resources are defined:

+
+
+
    +
  • +

    An Alertmanager to manage the Alertmanager pod.

    +
  • +
  • +

    A Secret to manage the configuration of the Alertmanager.

    +
  • +
  • +

    A Service to provide an easy to reference hostname for other services to connect to Alertmanager (such as Prometheus).

    +
  • +
+
+
+

The provided sample configuration configures the Alertmanager to send notification to a Slack channel. +Before deploying the Alertmanager it is needed to update the following parameters:

+
+
+
    +
  • +

    The slack_api_url field with the actual value of the Slack API URL related to the application for the Slack workspace.

    +
  • +
  • +

    The channel field with the actual Slack channel on which sending the notifications.

    +
  • +
+
+
+

D.6.1. Deploying Alertmanager

+
+

Download alert-manager.yaml by a command.

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/install/alert-manager.yaml
+
+
+
+

To configure Alert Manager hook for sending alerts we need to create a Secret resource with configuration. +Download the alertmanager.yaml file and create a Secret from it.

+
+
+

On Kubernetes this can be done using these commands:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/alertmanager-config/alertmanager.yaml
+kubectl create secret generic alertmanager-alertmanager --from-file=alertmanager.yaml
+
+
+
+

On OpenShift this can be done using these commands:

+
+
+
+
curl -O https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/{GithubVersion}/metrics/examples/prometheus/alertmanager-config/alertmanager.yaml
+oc create secret generic alertmanager-alertmanager --from-file=alertmanager.yaml
+
+
+
+

To deploy the Alertmanager the following commands should be executed: +On Kubernetes this can be done using kubectl apply:

+
+
+
+
kubectl apply -f alert-manager.yaml
+
+
+
+

On OpenShift this can be done using oc apply:

+
+
+
+
oc apply -f alert-manager.yaml
+
+
+
+
+

D.6.2. Alerts examples

+
+

The provided prometheus-rules.yaml file provides the following sample alerting rules on Kafka and Zookeeper metrics.

+
+
+

Kafka alerts are:

+
+
+
    +
  • +

    UnderReplicatedPartitions: the under replicated partitions metric gives the number of partitions for which the current broker is the leader replica but the follower replicas are not caught up. +This metric provides insights about offline brokers which hosts the follower replicas. +This alert is raised when this value is greater than zero, providing the information of the under replicated partitions for each broker.

    +
  • +
  • +

    AbnormalControllerState: the active controller metric indicate if the current broker is the controller for the cluster. +It can just be 0 or 1. +During the life of a cluster, only one broker should be the controller and the cluster needs to have always an active controller. +Having two or more brokers saying that they are controllers indicates a problem. +This alert is raised when the sum of all the values for this metric on all broker is not equals to 1. +It means that there is no active controller (the sum is 0) or more than one controller (the sum is greater than 1).

    +
  • +
  • +

    UnderMinIsrPartitionCount: the Kafka broker min.insync.replicas allows to specify the minimum number of replicas that have to acknowledge a write operation for successful in order to be in-sync. +The under min ISR partition count metric defines the number of partitions that this broker leads for which in-sync replicas count is less than the min in-sync. +This alert is raised when this value is greater than zero, providing the information of the under min ISR partition count for each broker.

    +
  • +
  • +

    OfflineLogDirectoryCount: the offline log directory count metric indicate the number of log directories which are offline (due to an hardware failure for example) so that the broker cannot store incoming messages anymore. +This alert is raised when this value is greater than zero, providing the information of the number of offline log directories for each broker.

    +
  • +
  • +

    KafkaRunningOutOfSpace: the running out of space metric indicates the remaining amount of disk space that can be used for writing Kafka’s data. +This alert is raised when this value is lower than 5GiB. It provides information on the disk that is running out of space for each persistent volume claim. +NOTE: The availability of this metric and alert is dependent on your version of OpenShift or Kubernetes.

    +
  • +
+
+
+

Zookeeper alerts are:

+
+
+
    +
  • +

    AvgRequestLatency: the average request latency metric indicates the amount of time it takes for the server to respond to a client request. +This alert is raised when this value is greater than 10 (ticks), providing the actual value of the average request latency for each server.

    +
  • +
  • +

    OutstandingRequests: the outstanding requests metric indicates the number of queued requests in the server. +This value goes up when the server receives more requests than it can process. +This alert is raised when this value is greater than 10 (ticks), providing the actual number of outstanding requests for each server.

    +
  • +
  • +

    ZookeeperRunningOutOfSpace: the running out of space metric indicates the remaining amount of disk space that can be used for writing data to Zookeeper. +This alert is raised when this value is lower than 5GiB. It provides information on the disk that is running out of space for each persistent volume claim. +Note: The availability of this metric and alert is dependent on your version of OpenShift or Kubernetes.

    +
  • +
+
+
+
+
+
+
+

Appendix E: Custom Resource API Reference

+
+
+

E.1. Kafka schema reference

+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka and Zookeeper clusters, and Topic Operator.

KafkaSpec

status

The status of the Kafka and Zookeeper clusters, and Topic Operator.

KafkaStatus

+
+
+

E.2. KafkaSpec schema reference

+
+

Used in: Kafka

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

kafka

Configuration of the Kafka cluster.

KafkaClusterSpec

zookeeper

Configuration of the Zookeeper cluster.

ZookeeperClusterSpec

topicOperator

The property topicOperator has been deprecated. This feature should now be configured at path spec.entityOerator.topicOperator. Configuration of the Topic Operator.

TopicOperatorSpec

entityOperator

Configuration of the Entity Operator.

EntityOperatorSpec

clusterCa

Configuration of the cluster certificate authority.

CertificateAuthority

clientsCa

Configuration of the clients certificate authority.

CertificateAuthority

maintenanceTimeWindows

A list of time windows for the maintenance tasks (that is, certificates renewal). Each time window is defined by a cron expression.

string array

+
+
+

E.3. KafkaClusterSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the cluster.

integer

image

The docker image for the pods. The default value depends on the configured Kafka.spec.kafka.version.

string

storage

Storage configuration (disk). Cannot be updated. The type depends on the value of the storage.type property within the given object, which must be one of [ephemeral, persistent-claim, jbod].

EphemeralStorage, PersistentClaimStorage, JbodStorage

listeners

Configures listeners of Kafka brokers.

KafkaListeners

authorization

Authorization configuration for Kafka brokers. The type depends on the value of the authorization.type property within the given object, which must be one of [simple].

KafkaAuthorizationSimple

config

The kafka broker config. Properties with the following prefixes cannot be set: listeners, advertised., broker., listener., host.name, port, inter.broker.listener.name, sasl., ssl., security., password., principal.builder.class, log.dir, zookeeper.connect, zookeeper.set.acl, authorizer., super.user.

map

rack

Configuration of the broker.rack broker config.

Rack

brokerRackInitImage

The image of the init container used for initializing the broker.rack.

string

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.kafka.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.kafka.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

resources

Resource constraints (limits and requests).

ResourceRequirements

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

logging

Logging configuration for Kafka. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

tlsSidecar

TLS sidecar configuration.

TlsSidecar

template

Template for Kafka cluster resources. The template allows users to specify how are the StatefulSet, Pods and Services generated.

KafkaClusterTemplate

version

The kafka broker version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.4. EphemeralStorage schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type EphemeralStorage from PersistentClaimStorage. +It must have the value ephemeral for the type EphemeralStorage.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

id

Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'.

integer

type

Must be ephemeral.

string

+
+
+

E.5. PersistentClaimStorage schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type PersistentClaimStorage from EphemeralStorage. +It must have the value persistent-claim for the type PersistentClaimStorage.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be persistent-claim.

string

size

When type=persistent-claim, defines the size of the persistent volume claim (i.e 1Gi). Mandatory when type=persistent-claim.

string

selector

Specifies a specific persistent volume to use. It contains key:value pairs representing labels for selecting such a volume.

map

deleteClaim

Specifies if the persistent volume claim has to be deleted when the cluster is un-deployed.

boolean

class

The storage class to use for dynamic volume allocation.

string

id

Storage identification number. It is mandatory only for storage volumes defined in a storage of type 'jbod'.

integer

overrides

Overrides for individual brokers. The overrides field allows to specify a different configuration for different brokers.

PersistentClaimStorageOverride array

+
+
+

E.6. PersistentClaimStorageOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

class

The storage class to use for dynamic volume allocation for this broker.

string

broker

Id of the kafka broker (broker identifier).

integer

+
+
+

E.7. JbodStorage schema reference

+
+

Used in: KafkaClusterSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type JbodStorage from EphemeralStorage, PersistentClaimStorage. +It must have the value jbod for the type JbodStorage.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be jbod.

string

volumes

List of volumes as Storage objects representing the JBOD disks array.

EphemeralStorage, PersistentClaimStorage array

+
+
+

E.8. KafkaListeners schema reference

+
+

Used in: KafkaClusterSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

plain

Configures plain listener on port 9092.

KafkaListenerPlain

tls

Configures TLS listener on port 9093.

KafkaListenerTls

external

Configures external listener on port 9094. The type depends on the value of the external.type property within the given object, which must be one of [route, loadbalancer, nodeport, ingress].

KafkaListenerExternalRoute, KafkaListenerExternalLoadBalancer, KafkaListenerExternalNodePort, KafkaListenerExternalIngress

+
+
+

E.9. KafkaListenerPlain schema reference

+
+

Used in: KafkaListeners

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

authentication

Authentication configuration for this listener. Since this listener does not use TLS transport you cannot configure an authentication with type: tls. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.10. KafkaListenerAuthenticationTls schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerAuthenticationTls from KafkaListenerAuthenticationScramSha512. +It must have the value tls for the type KafkaListenerAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be tls.

string

+
+
+

E.11. KafkaListenerAuthenticationScramSha512 schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerAuthenticationScramSha512 from KafkaListenerAuthenticationTls. +It must have the value scram-sha-512 for the type KafkaListenerAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be scram-sha-512.

string

+
+
+

E.12. KafkaListenerTls schema reference

+
+

Used in: KafkaListeners

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

authentication

Authentication configuration for this listener. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.13. KafkaListenerExternalRoute schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalRoute from KafkaListenerExternalLoadBalancer, KafkaListenerExternalNodePort, KafkaListenerExternalIngress. +It must have the value route for the type KafkaListenerExternalRoute.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be route.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

overrides

Overrides for external bootstrap and broker services and externally advertised addresses.

RouteListenerOverride

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.14. RouteListenerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap service configuration.

RouteListenerBootstrapOverride

brokers

External broker services configuration.

RouteListenerBrokerOverride array

+
+
+

E.15. RouteListenerBootstrapOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

host

Host for the bootstrap route. This field will be used in the spec.host field of the OpenShift Route.

string

+
+
+

E.16. RouteListenerBrokerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

host

Host for the broker route. This field will be used in the spec.host field of the OpenShift Route.

string

+
+
+

E.17. KafkaListenerExternalLoadBalancer schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalLoadBalancer from KafkaListenerExternalRoute, KafkaListenerExternalNodePort, KafkaListenerExternalIngress. +It must have the value loadbalancer for the type KafkaListenerExternalLoadBalancer.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be loadbalancer.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

overrides

Overrides for external bootstrap and broker services and externally advertised addresses.

LoadBalancerListenerOverride

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

tls

Enables TLS encryption on the listener. By default set to true for enabled TLS encryption.

boolean

+
+
+

E.18. LoadBalancerListenerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap service configuration.

LoadBalancerListenerBootstrapOverride

brokers

External broker services configuration.

LoadBalancerListenerBrokerOverride array

+
+
+

E.19. LoadBalancerListenerBootstrapOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

dnsAnnotations

Annotations which will be added to the Service resource. You can use this field to instrument DNS providers such as External DNS.

map

+
+
+

E.20. LoadBalancerListenerBrokerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

dnsAnnotations

Annotations which will be added to the Service resources for individual brokers. You can use this field to instrument DNS providers such as External DNS.

map

+
+
+

E.21. KafkaListenerExternalNodePort schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalNodePort from KafkaListenerExternalRoute, KafkaListenerExternalLoadBalancer, KafkaListenerExternalIngress. +It must have the value nodeport for the type KafkaListenerExternalNodePort.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be nodeport.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

overrides

Overrides for external bootstrap and broker services and externally advertised addresses.

NodePortListenerOverride

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

tls

Enables TLS encryption on the listener. By default set to true for enabled TLS encryption.

boolean

+
+
+

E.22. NodePortListenerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap service configuration.

NodePortListenerBootstrapOverride

brokers

External broker services configuration.

NodePortListenerBrokerOverride array

+
+
+

E.23. NodePortListenerBootstrapOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

nodePort

Node port for the bootstrap service.

integer

+
+
+

E.24. NodePortListenerBrokerOverride schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

nodePort

Node port for the broker service.

integer

+
+
+

E.25. KafkaListenerExternalIngress schema reference

+
+

Used in: KafkaListeners

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaListenerExternalIngress from KafkaListenerExternalRoute, KafkaListenerExternalLoadBalancer, KafkaListenerExternalNodePort. +It must have the value ingress for the type KafkaListenerExternalIngress.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be ingress.

string

authentication

Authentication configuration for Kafka brokers. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaListenerAuthenticationTls, KafkaListenerAuthenticationScramSha512

configuration

Overrides for external bootstrap and broker services and externally advertised addresses.

IngressListenerConfiguration

networkPolicyPeers

List of peers which should be able to connect to this listener. Peers in this list are combined using a logical OR operation. If this field is empty or missing, all connections will be allowed for this listener. If this field is present and contains at least one item, the listener only allows the traffic which matches at least one item in this list.See external documentation of networking.k8s.io/v1 networkpolicypeer.

NetworkPolicyPeer array

+
+
+

E.26. IngressListenerConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrap

External bootstrap ingress configuration.

IngressListenerBootstrapConfiguration

brokers

External broker ingress configuration.

IngressListenerBrokerConfiguration array

+
+
+

E.27. IngressListenerBootstrapConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

address

Additional address name for the bootstrap service. The address will be added to the list of subject alternative names of the TLS certificates.

string

dnsAnnotations

Annotations which will be added to the Ingress resource. You can use this field to instrument DNS providers such as External DNS.

map

host

Host for the bootstrap route. This field will be used in the Ingress resource.

string

+
+
+

E.28. IngressListenerBrokerConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

broker

Id of the kafka broker (broker identifier).

integer

advertisedHost

The host name which will be used in the brokers' advertised.brokers.

string

advertisedPort

The port number which will be used in the brokers' advertised.brokers.

integer

host

Host for the broker ingress. This field will be used in the Ingress resource.

string

dnsAnnotations

Annotations which will be added to the Ingress resources for individual brokers. You can use this field to instrument DNS providers such as External DNS.

map

+
+
+

E.29. KafkaAuthorizationSimple schema reference

+
+

Used in: KafkaClusterSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaAuthorizationSimple from other subtypes which may be added in the future. +It must have the value simple for the type KafkaAuthorizationSimple.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be simple.

string

superUsers

List of super users. Should contain list of user principals which should get unlimited access rights.

string array

+
+
+

E.30. Rack schema reference

+
+

Used in: KafkaClusterSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

topologyKey

A key that matches labels assigned to the OpenShift or Kubernetes cluster nodes. The value of the label is used to set the broker’s broker.rack config.

string

+
+
+

E.31. Probe schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

failureThreshold

Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.

integer

initialDelaySeconds

The initial delay before first the health is first checked.

integer

periodSeconds

How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.

integer

successThreshold

Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness. Minimum value is 1.

integer

timeoutSeconds

The timeout for each attempted health check.

integer

+
+
+

E.32. JvmOptions schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

-XX

A map of -XX options to the JVM.

map

-Xms

-Xms option to to the JVM.

string

-Xmx

-Xmx option to to the JVM.

string

gcLoggingEnabled

Specifies whether the Garbage Collection logging is enabled. The default is true.

boolean

+
+ +
+

E.34. InlineLogging schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type InlineLogging from ExternalLogging. +It must have the value inline for the type InlineLogging.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be inline.

string

loggers

A Map from logger name to logger level.

map

+
+
+

E.35. ExternalLogging schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type ExternalLogging from InlineLogging. +It must have the value external for the type ExternalLogging.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be external.

string

name

The name of the ConfigMap from which to get the logging configuration.

string

+
+
+

E.36. TlsSidecar schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

image

The docker image for the container.

string

livenessProbe

Pod liveness checking.

Probe

logLevel

The log level for the TLS sidecar. Default value is notice.

string (one of [emerg, debug, crit, err, alert, warning, notice, info])

readinessProbe

Pod readiness checking.

Probe

resources

Resource constraints (limits and requests).

ResourceRequirements

+
+
+

E.37. KafkaClusterTemplate schema reference

+
+

Used in: KafkaClusterSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

statefulset

Template for Kafka StatefulSet.

ResourceTemplate

pod

Template for Kafka Pods.

PodTemplate

bootstrapService

Template for Kafka bootstrap Service.

ResourceTemplate

brokersService

Template for Kafka broker Service.

ResourceTemplate

externalBootstrapIngress

Template for Kafka external bootstrap Ingress.

ResourceTemplate

externalBootstrapRoute

Template for Kafka external bootstrap Route.

ResourceTemplate

externalBootstrapService

Template for Kafka external bootstrap Service.

ResourceTemplate

perPodIngress

Template for Kafka per-pod Ingress used for access from outside of Kubernetes.

ResourceTemplate

perPodRoute

Template for Kafka per-pod Routes used for access from outside of OpenShift.

ResourceTemplate

perPodService

Template for Kafka per-pod Services used for access from outside of Kubernetes.

ResourceTemplate

podDisruptionBudget

Template for Kafka PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.38. ResourceTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

metadata

Metadata which should be applied to the resource.

MetadataTemplate

+
+
+

E.39. MetadataTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

labels

Labels which should be added to the resource template. Can be applied to different resources such as StatefulSets, Deployments, Pods, and Services.

map

annotations

Annotations which should be added to the resource template. Can be applied to different resources such as StatefulSets, Deployments, Pods, and Services.

map

+
+
+

E.40. PodTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

metadata

Metadata which should be applied to the resource.

MetadataTemplate

imagePullSecrets

List of references to secrets in the same namespace to use for pulling any of the images used by this Pod.See external documentation of core/v1 localobjectreference.

LocalObjectReference array

securityContext

Configures pod-level security attributes and common container settings.See external documentation of core/v1 podsecuritycontext.

PodSecurityContext

terminationGracePeriodSeconds

The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process.Value must be non-negative integer. The value zero indicates delete immediately. Defaults to 30 seconds.

integer

affinity

The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

+
+
+

E.41. PodDisruptionBudgetTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

metadata

Metadata which should be applied to the PodDistruptionBugetTemplate resource.

MetadataTemplate

maxUnavailable

Maximum number of unavailable pods to allow voluntary Pod eviction. A Pod eviction will only be allowed when "maxUnavailable" or fewer pods are unavailable after the eviction. Setting this value to 0 will prevent all voluntary evictions and the pods will need to be evicted manually. Defaults to 1.

integer

+
+
+

E.42. ZookeeperClusterSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the cluster.

integer

image

The docker image for the pods.

string

storage

Storage configuration (disk). Cannot be updated. The type depends on the value of the storage.type property within the given object, which must be one of [ephemeral, persistent-claim].

EphemeralStorage, PersistentClaimStorage

config

The zookeeper broker config. Properties with the following prefixes cannot be set: server., dataDir, dataLogDir, clientPort, authProvider, quorum.auth, requireClientAuthScheme.

map

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.zookeeper.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.zookeeper.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

resources

Resource constraints (limits and requests).

ResourceRequirements

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

logging

Logging configuration for Zookeeper. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

tlsSidecar

TLS sidecar configuration.

TlsSidecar

template

Template for Zookeeper cluster resources. The template allows users to specify how are the StatefulSet, Pods and Services generated.

ZookeeperClusterTemplate

+
+
+

E.43. ZookeeperClusterTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

statefulset

Template for Zookeeper StatefulSet.

ResourceTemplate

pod

Template for Zookeeper Pods.

PodTemplate

clientService

Template for Zookeeper client Service.

ResourceTemplate

nodesService

Template for Zookeeper nodes Service.

ResourceTemplate

podDisruptionBudget

Template for Zookeeper PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.44. TopicOperatorSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

watchedNamespace

The namespace the Topic Operator should watch.

string

image

The image to use for the Topic Operator.

string

reconciliationIntervalSeconds

Interval between periodic reconciliations.

integer

zookeeperSessionTimeoutSeconds

Timeout for the Zookeeper session.

integer

affinity

Pod affinity rules.See external documentation of core/v1 affinity.

Affinity

resources

Resource constraints (limits and requests).

ResourceRequirements

topicMetadataMaxAttempts

The number of attempts at getting topic metadata.

integer

tlsSidecar

TLS sidecar configuration.

TlsSidecar

logging

Logging configuration. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

jvmOptions

JVM Options for pods.

EntityOperatorJvmOptions

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

+
+
+

E.45. EntityOperatorJvmOptions schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

gcLoggingEnabled

Specifies whether the Garbage Collection logging is enabled. The default is true.

boolean

+
+
+

E.46. EntityOperatorSpec schema reference

+
+

Used in: KafkaSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

topicOperator

Configuration of the Topic Operator.

EntityTopicOperatorSpec

userOperator

Configuration of the User Operator.

EntityUserOperatorSpec

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

tlsSidecar

TLS sidecar configuration.

TlsSidecar

template

Template for Entity Operator resources. The template allows users to specify how is the Deployment and Pods generated.

EntityOperatorTemplate

+
+
+

E.47. EntityTopicOperatorSpec schema reference

+
+

Used in: EntityOperatorSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

watchedNamespace

The namespace the Topic Operator should watch.

string

image

The image to use for the Topic Operator.

string

reconciliationIntervalSeconds

Interval between periodic reconciliations.

integer

zookeeperSessionTimeoutSeconds

Timeout for the Zookeeper session.

integer

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

resources

Resource constraints (limits and requests).

ResourceRequirements

topicMetadataMaxAttempts

The number of attempts at getting topic metadata.

integer

logging

Logging configuration. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

jvmOptions

JVM Options for pods.

EntityOperatorJvmOptions

+
+
+

E.48. EntityUserOperatorSpec schema reference

+
+

Used in: EntityOperatorSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

watchedNamespace

The namespace the User Operator should watch.

string

image

The image to use for the User Operator.

string

reconciliationIntervalSeconds

Interval between periodic reconciliations.

integer

zookeeperSessionTimeoutSeconds

Timeout for the Zookeeper session.

integer

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

resources

Resource constraints (limits and requests).

ResourceRequirements

logging

Logging configuration. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

jvmOptions

JVM Options for pods.

EntityOperatorJvmOptions

+
+
+

E.49. EntityOperatorTemplate schema reference

+
+

Used in: EntityOperatorSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Entity Operator Deployment.

ResourceTemplate

pod

Template for Entity Operator Pods.

PodTemplate

+
+
+

E.50. CertificateAuthority schema reference

+
+

Used in: KafkaSpec

+
+
+

Configuration of how TLS certificates are used within the cluster. This applies to certificates used for both internal communication within the cluster and to certificates used for client access via Kafka.spec.kafka.listeners.tls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

generateCertificateAuthority

If true then Certificate Authority certificates will be generated automatically. Otherwise the user will need to provide a Secret with the CA certificate. Default is true.

boolean

validityDays

The number of days generated certificates should be valid for. The default is 365.

integer

renewalDays

The number of days in the certificate renewal period. This is the number of days before the a certificate expires during which renewal actions may be performed. When generateCertificateAuthority is true, this will cause the generation of a new certificate. When generateCertificateAuthority is true, this will cause extra logging at WARN level about the pending certificate expiry. Default is 30.

integer

certificateExpirationPolicy

How should CA certificate expiration be handled when generateCertificateAuthority=true. The default is for a new CA certificate to be generated reusing the existing private key.

string (one of [replace-key, renew-certificate])

+
+
+

E.51. KafkaStatus schema reference

+
+

Used in: Kafka

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

conditions

List of status conditions.

Condition array

listeners

Addresses of the internal and external listeners.

ListenerStatus array

+
+
+

E.52. Condition schema reference

+
+

Used in: KafkaStatus

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

The unique identifier of a condition, used to distinguish between other conditions in the resource.

string

status

The status of the condition, one of True, False, Unknown.

string

lastTransitionTime

Last time the condition of a type changes from one status to another.The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone.

string

reason

One-word CamelCase reason for the condition’s last transition.

string

+
+
+

E.53. ListenerStatus schema reference

+
+

Used in: KafkaStatus

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

The type of the listener. Can be one of the following three types: plain, tls, and external.

string

addresses

A list of the addresses for this listener.

ListenerAddress array

+
+
+

E.54. ListenerAddress schema reference

+
+

Used in: ListenerStatus

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

host

The DNS name or IP address of Kafka bootstrap service.

string

port

The port of the Kafka bootstrap service.

integer

+
+
+

E.55. KafkaConnect schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka Connect deployment.

KafkaConnectSpec

+
+
+

E.56. KafkaConnectSpec schema reference

+
+

Used in: KafkaConnect

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Kafka Connect group.

integer

image

The docker image for the pods.

string

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

logging

Logging configuration for Kafka Connect. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

template

Template for Kafka Connect and Kafka Connect S2I resources. The template allows users to specify how is the Deployment, Pods and Service generated.

KafkaConnectTemplate

authentication

Authentication configuration for Kafka Connect. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaConnectAuthenticationTls, KafkaConnectAuthenticationScramSha512, KafkaConnectAuthenticationPlain

bootstrapServers

Bootstrap servers to connect to. This should be given as a comma separated list of <hostname>:‍<port> pairs.

string

config

The Kafka Connect configuration. Properties with the following prefixes cannot be set: ssl., sasl., security., listeners, plugin.path, rest., bootstrap.servers.

map

externalConfiguration

Pass data from Secrets or ConfigMaps to the Kafka Connect pods and use them to configure connectors.

ExternalConfiguration

resources

Resource constraints (limits and requests).

ResourceRequirements

tls

TLS configuration.

KafkaConnectTls

version

The Kafka Connect version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.57. KafkaConnectTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Kafka Connect Deployment.

ResourceTemplate

pod

Template for Kafka Connect Pods.

PodTemplate

apiService

Template for Kafka Connect API Service.

ResourceTemplate

podDisruptionBudget

Template for Kafka Connect PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.58. KafkaConnectAuthenticationTls schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaConnectAuthenticationTls from KafkaConnectAuthenticationScramSha512, KafkaConnectAuthenticationPlain. +It must have the value tls for the type KafkaConnectAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificateAndKey

Certificate and private key pair for TLS authentication.

CertAndKeySecretSource

type

Must be tls.

string

+
+
+

E.59. CertAndKeySecretSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificate

The name of the file certificate in the Secret.

string

key

The name of the private key in the Secret.

string

secretName

The name of the Secret containing the certificate.

string

+
+
+

E.60. KafkaConnectAuthenticationScramSha512 schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaConnectAuthenticationScramSha512 from KafkaConnectAuthenticationTls, KafkaConnectAuthenticationPlain. +It must have the value scram-sha-512 for the type KafkaConnectAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Password used for the authentication.

PasswordSecretSource

type

Must be scram-sha-512.

string

username

Username used for the authentication.

string

+
+
+

E.61. PasswordSecretSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

password

The name of the key in the Secret under which the password is stored.

string

secretName

The name of the Secret containing the password.

string

+
+
+

E.62. KafkaConnectAuthenticationPlain schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaConnectAuthenticationPlain from KafkaConnectAuthenticationTls, KafkaConnectAuthenticationScramSha512. +It must have the value plain for the type KafkaConnectAuthenticationPlain.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Password used for the authentication.

PasswordSecretSource

type

Must be plain.

string

username

Username used for the authentication.

string

+
+
+

E.63. ExternalConfiguration schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

env

Allows to pass data from Secret or ConfigMap to the Kafka Connect pods as environment variables.

ExternalConfigurationEnv array

volumes

Allows to pass data from Secret or ConfigMap to the Kafka Connect pods as volumes.

ExternalConfigurationVolumeSource array

+
+
+

E.64. ExternalConfigurationEnv schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

name

Name of the environment variable which will be passed to the Kafka Connect pods. The name of the environment variable cannot start with KAFKA_ or STRIMZI_.

string

valueFrom

Value of the environment variable which will be passed to the Kafka Connect pods. It can be passed either as a reference to Secret or ConfigMap field. The field has to specify exactly one Secret or ConfigMap.

ExternalConfigurationEnvVarSource

+
+
+

E.65. ExternalConfigurationEnvVarSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

configMapKeyRef

Refernce to a key in a ConfigMap.See external documentation of core/v1 configmapkeyselector.

ConfigMapKeySelector

secretKeyRef

Reference to a key in a Secret.See external documentation of core/v1 secretkeyselector.

SecretKeySelector

+
+
+

E.66. ExternalConfigurationVolumeSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

configMap

Reference to a key in a ConfigMap. Exactly one Secret or ConfigMap has to be specified.See external documentation of core/v1 configmapvolumesource.

ConfigMapVolumeSource

name

Name of the volume which will be added to the Kafka Connect pods.

string

secret

Reference to a key in a Secret. Exactly one Secret or ConfigMap has to be specified.See external documentation of core/v1 secretvolumesource.

SecretVolumeSource

+
+
+

E.67. KafkaConnectTls schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

trustedCertificates

Trusted certificates for TLS connection.

CertSecretSource array

+
+
+

E.68. CertSecretSource schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificate

The name of the file certificate in the Secret.

string

secretName

The name of the Secret containing the certificate.

string

+
+
+

E.69. KafkaConnectS2I schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka Connect deployment.

KafkaConnectS2ISpec

+
+
+

E.70. KafkaConnectS2ISpec schema reference

+
+

Used in: KafkaConnectS2I

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Kafka Connect group.

integer

image

The docker image for the pods.

string

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

jvmOptions

JVM Options for pods.

JvmOptions

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

logging

Logging configuration for Kafka Connect. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

The Prometheus JMX Exporter configuration. See https://github.com/prometheus/jmx_exporter for details of the structure of this configuration.

map

template

Template for Kafka Connect and Kafka Connect S2I resources. The template allows users to specify how is the Deployment, Pods and Service generated.

KafkaConnectTemplate

authentication

Authentication configuration for Kafka Connect. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaConnectAuthenticationTls, KafkaConnectAuthenticationScramSha512, KafkaConnectAuthenticationPlain

bootstrapServers

Bootstrap servers to connect to. This should be given as a comma separated list of <hostname>:‍<port> pairs.

string

config

The Kafka Connect configuration. Properties with the following prefixes cannot be set: ssl., sasl., security., listeners, plugin.path, rest., bootstrap.servers.

map

externalConfiguration

Pass data from Secrets or ConfigMaps to the Kafka Connect pods and use them to configure connectors.

ExternalConfiguration

insecureSourceRepository

When true this configures the source repository with the 'Local' reference policy and an import policy that accepts insecure source tags.

boolean

resources

Resource constraints (limits and requests).

ResourceRequirements

tls

TLS configuration.

KafkaConnectTls

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

version

The Kafka Connect version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.71. KafkaTopic schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the topic.

KafkaTopicSpec

+
+
+

E.72. KafkaTopicSpec schema reference

+
+

Used in: KafkaTopic

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

partitions

The number of partitions the topic should have. This cannot be decreased after topic creation. It can be increased after topic creation, but it is important to understand the consequences that has, especially for topics with semantic partitioning.

integer

replicas

The number of replicas the topic should have.

integer

config

The topic configuration.

map

topicName

The name of the topic. When absent this will default to the metadata.name of the topic. It is recommended to not set this unless the topic name is not a valid Kubernetes resource name.

string

+
+
+

E.73. KafkaUser schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the user.

KafkaUserSpec

+
+
+

E.74. KafkaUserSpec schema reference

+
+

Used in: KafkaUser

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

authentication

Authentication mechanism enabled for this Kafka user. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512].

KafkaUserTlsClientAuthentication, KafkaUserScramSha512ClientAuthentication

authorization

Authorization rules for this Kafka user. The type depends on the value of the authorization.type property within the given object, which must be one of [simple].

KafkaUserAuthorizationSimple

+
+
+

E.75. KafkaUserTlsClientAuthentication schema reference

+
+

Used in: KafkaUserSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaUserTlsClientAuthentication from KafkaUserScramSha512ClientAuthentication. +It must have the value tls for the type KafkaUserTlsClientAuthentication.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be tls.

string

+
+
+

E.76. KafkaUserScramSha512ClientAuthentication schema reference

+
+

Used in: KafkaUserSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaUserScramSha512ClientAuthentication from KafkaUserTlsClientAuthentication. +It must have the value scram-sha-512 for the type KafkaUserScramSha512ClientAuthentication.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be scram-sha-512.

string

+
+
+

E.77. KafkaUserAuthorizationSimple schema reference

+
+

Used in: KafkaUserSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaUserAuthorizationSimple from other subtypes which may be added in the future. +It must have the value simple for the type KafkaUserAuthorizationSimple.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be simple.

string

acls

List of ACL rules which should be applied to this user.

AclRule array

+
+
+

E.78. AclRule schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

host

The host from which the action described in the ACL rule is allowed or denied.

string

operation

Operation which will be allowed or denied. Supported operations are: Read, Write, Create, Delete, Alter, Describe, ClusterAction, AlterConfigs, DescribeConfigs, IdempotentWrite and All.

string (one of [Read, Write, Delete, Alter, Describe, All, IdempotentWrite, ClusterAction, Create, AlterConfigs, DescribeConfigs])

resource

Indicates the resource for which given ACL rule applies. The type depends on the value of the resource.type property within the given object, which must be one of [topic, group, cluster, transactionalId].

AclRuleTopicResource, AclRuleGroupResource, AclRuleClusterResource, AclRuleTransactionalIdResource

type

The type of the rule. Currently the only supported type is allow. ACL rules with type allow are used to allow user to execute the specified operations. Default value is allow.

string (one of [allow, deny])

+
+
+

E.79. AclRuleTopicResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleTopicResource from AclRuleGroupResource, AclRuleClusterResource, AclRuleTransactionalIdResource. +It must have the value topic for the type AclRuleTopicResource.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be topic.

string

name

Name of resource for which given ACL rule applies. Can be combined with patternType field to use prefix pattern.

string

patternType

Describes the pattern used in the resource field. The supported types are literal and prefix. With literal pattern type, the resource field will be used as a definition of a full topic name. With prefix pattern type, the resource name will be used only as a prefix. Default value is literal.

string (one of [prefix, literal])

+
+
+

E.80. AclRuleGroupResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleGroupResource from AclRuleTopicResource, AclRuleClusterResource, AclRuleTransactionalIdResource. +It must have the value group for the type AclRuleGroupResource.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be group.

string

name

Name of resource for which given ACL rule applies. Can be combined with patternType field to use prefix pattern.

string

patternType

Describes the pattern used in the resource field. The supported types are literal and prefix. With literal pattern type, the resource field will be used as a definition of a full topic name. With prefix pattern type, the resource name will be used only as a prefix. Default value is literal.

string (one of [prefix, literal])

+
+
+

E.81. AclRuleClusterResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleClusterResource from AclRuleTopicResource, AclRuleGroupResource, AclRuleTransactionalIdResource. +It must have the value cluster for the type AclRuleClusterResource.

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be cluster.

string

+
+
+

E.82. AclRuleTransactionalIdResource schema reference

+
+

Used in: AclRule

+
+
+

The type property is a discriminator that distinguishes the use of the type AclRuleTransactionalIdResource from AclRuleTopicResource, AclRuleGroupResource, AclRuleClusterResource. +It must have the value transactionalId for the type AclRuleTransactionalIdResource.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

type

Must be transactionalId.

string

name

Name of resource for which given ACL rule applies. Can be combined with patternType field to use prefix pattern.

string

patternType

Describes the pattern used in the resource field. The supported types are literal and prefix. With literal pattern type, the resource field will be used as a definition of a full name. With prefix pattern type, the resource name will be used only as a prefix. Default value is literal.

string (one of [prefix, literal])

+
+
+

E.83. KafkaMirrorMaker schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the mirror maker.

KafkaMirrorMakerSpec

+
+
+

E.84. KafkaMirrorMakerSpec schema reference

+
+

Used in: KafkaMirrorMaker

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Deployment.

integer

image

The docker image for the pods.

string

whitelist

List of topics which are included for mirroring. This option allows any regular expression using Java-style regular expressions. Mirroring two topics named A and B can be achieved by using the whitelist 'A|B'. Or, as a special case, you can mirror all topics using the whitelist '*'. Multiple regular expressions separated by commas can be specified as well.

string

consumer

Configuration of source cluster.

KafkaMirrorMakerConsumerSpec

producer

Configuration of target cluster.

KafkaMirrorMakerProducerSpec

resources

Resource constraints (limits and requests).

ResourceRequirements

affinity

The property affinity has been deprecated. This feature should now be configured at path spec.template.pod.affinity. The pod’s affinity rules.See external documentation of core/v1 affinity.

Affinity

tolerations

The property tolerations has been deprecated. This feature should now be configured at path spec.template.pod.tolerations. The pod’s tolerations.See external documentation of core/v1 toleration.

Toleration array

jvmOptions

JVM Options for pods.

JvmOptions

logging

Logging configuration for Mirror Maker. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

The Prometheus JMX Exporter configuration. See JMX Exporter documentation for details of the structure of this configuration.

map

template

Template for Kafka Mirror Maker resources. The template allows users to specify how is the Deployment and Pods generated.

KafkaMirrorMakerTemplate

version

The Kafka Mirror Maker version. Defaults to 2.2.1. Consult the user documentation to understand the process required to upgrade or downgrade the version.

string

+
+
+

E.85. KafkaMirrorMakerConsumerSpec schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

numStreams

Specifies the number of consumer stream threads to create.

integer

groupId

A unique string that identifies the consumer group this consumer belongs to.

string

bootstrapServers

A list of host:port pairs to use for establishing the initial connection to the Kafka cluster.

string

authentication

Authentication configuration for connecting to the cluster. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationScramSha512, KafkaMirrorMakerAuthenticationPlain

config

The mirror maker consumer config. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, group.id, sasl., security.

map

tls

TLS configuration for connecting to the cluster.

KafkaMirrorMakerTls

+
+
+

E.86. KafkaMirrorMakerAuthenticationTls schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaMirrorMakerAuthenticationTls from KafkaMirrorMakerAuthenticationScramSha512, KafkaMirrorMakerAuthenticationPlain. +It must have the value tls for the type KafkaMirrorMakerAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificateAndKey

Reference to the Secret which holds the certificate and private key pair.

CertAndKeySecretSource

type

Must be tls.

string

+
+
+

E.87. KafkaMirrorMakerAuthenticationScramSha512 schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaMirrorMakerAuthenticationScramSha512 from KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationPlain. +It must have the value scram-sha-512 for the type KafkaMirrorMakerAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be scram-sha-512.

string

username

Username used for the authentication.

string

+
+
+

E.88. KafkaMirrorMakerAuthenticationPlain schema reference

+ +
+

The type property is a discriminator that distinguishes the use of the type KafkaMirrorMakerAuthenticationPlain from KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationScramSha512. +It must have the value plain for the type KafkaMirrorMakerAuthenticationPlain.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be plain.

string

username

Username used for the authentication.

string

+
+
+

E.89. KafkaMirrorMakerTls schema reference

+ + ++++ + + + + + + + + + + + + + + + +
PropertyDescription

trustedCertificates

Trusted certificates for TLS connection.

CertSecretSource array

+
+
+

E.90. KafkaMirrorMakerProducerSpec schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

bootstrapServers

A list of host:port pairs to use for establishing the initial connection to the Kafka cluster.

string

authentication

Authentication configuration for connecting to the cluster. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaMirrorMakerAuthenticationTls, KafkaMirrorMakerAuthenticationScramSha512, KafkaMirrorMakerAuthenticationPlain

config

The mirror maker producer config. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, sasl., security.

map

tls

TLS configuration for connecting to the cluster.

KafkaMirrorMakerTls

+
+
+

E.91. KafkaMirrorMakerTemplate schema reference

+ + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Kafka Mirror Maker Deployment.

ResourceTemplate

pod

Template for Kafka Mirror Maker Pods.

PodTemplate

podDisruptionBudget

Template for Kafka Mirror Maker PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+

E.92. KafkaBridge schema reference

+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

spec

The specification of the Kafka Bridge.

KafkaBridgeSpec

+
+
+

E.93. KafkaBridgeSpec schema reference

+
+

Used in: KafkaBridge

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

replicas

The number of pods in the Deployment.

integer

image

The docker image for the pods.

string

bootstrapServers

A list of host:port pairs to use for establishing the initial connection to the Kafka cluster.

string

tls

TLS configuration for connecting to the cluster.

KafkaBridgeTls

authentication

Authentication configuration for connecting to the cluster. The type depends on the value of the authentication.type property within the given object, which must be one of [tls, scram-sha-512, plain].

KafkaBridgeAuthenticationTls, KafkaBridgeAuthenticationScramSha512, KafkaBridgeAuthenticationPlain

http

The HTTP related configuration.

KafkaBridgeHttpConfig

consumer

Kafka consumer related configuration.

KafkaBridgeConsumerSpec

producer

Kafka producer related configuration.

KafkaBridgeProducerSpec

resources

Resource constraints (limits and requests).

ResourceRequirements

jvmOptions

Currently not supported JVM Options for pods.

JvmOptions

logging

Logging configuration for Kafka Bridge. The type depends on the value of the logging.type property within the given object, which must be one of [inline, external].

InlineLogging, ExternalLogging

metrics

Currently not supported The Prometheus JMX Exporter configuration. See JMX Exporter documentation for details of the structure of this configuration.

map

livenessProbe

Pod liveness checking.

Probe

readinessProbe

Pod readiness checking.

Probe

template

Template for Kafka Bridge resources. The template allows users to specify how is the Deployment and Pods generated.

KafkaBridgeTemplate

+
+
+

E.94. KafkaBridgeTls schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

trustedCertificates

Trusted certificates for TLS connection.

CertSecretSource array

+
+
+

E.95. KafkaBridgeAuthenticationTls schema reference

+
+

Used in: KafkaBridgeSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaBridgeAuthenticationTls from KafkaBridgeAuthenticationScramSha512, KafkaBridgeAuthenticationPlain. +It must have the value tls for the type KafkaBridgeAuthenticationTls.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

certificateAndKey

Reference to the Secret which holds the certificate and private key pair.

CertAndKeySecretSource

type

Must be tls.

string

+
+
+

E.96. KafkaBridgeAuthenticationScramSha512 schema reference

+
+

Used in: KafkaBridgeSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaBridgeAuthenticationScramSha512 from KafkaBridgeAuthenticationTls, KafkaBridgeAuthenticationPlain. +It must have the value scram-sha-512 for the type KafkaBridgeAuthenticationScramSha512.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be scram-sha-512.

string

username

Username used for the authentication.

string

+
+
+

E.97. KafkaBridgeAuthenticationPlain schema reference

+
+

Used in: KafkaBridgeSpec

+
+
+

The type property is a discriminator that distinguishes the use of the type KafkaBridgeAuthenticationPlain from KafkaBridgeAuthenticationTls, KafkaBridgeAuthenticationScramSha512. +It must have the value plain for the type KafkaBridgeAuthenticationPlain.

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

passwordSecret

Reference to the Secret which holds the password.

PasswordSecretSource

type

Must be plain.

string

username

Username used for the authentication.

string

+
+
+

E.98. KafkaBridgeHttpConfig schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

port

The port which is the server listening on. Avoid using port 8081 which is used for readiness checking.

integer

+
+
+

E.99. KafkaBridgeConsumerSpec schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

config

The Kafka consumer configuration used for consumer instances created by the bridge. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, group.id, sasl., security.

map

+
+
+

E.100. KafkaBridgeProducerSpec schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + +
PropertyDescription

config

The Kafka producer configuration used for producer instances created by the bridge. Properties with the following prefixes cannot be set: ssl., bootstrap.servers, sasl., security.

map

+
+
+

E.101. KafkaBridgeTemplate schema reference

+
+

Used in: KafkaBridgeSpec

+
+ ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
PropertyDescription

deployment

Template for Kafka Bridge Deployment.

ResourceTemplate

pod

Template for Kafka Bridge Pods.

PodTemplate

apiService

Template for Kafka Bridge API Service.

ResourceTemplate

podDisruptionBudget

Template for Kafka Bridge PodDisruptionBudget.

PodDisruptionBudgetTemplate

+
+
+
+
+ + + + + + \ No newline at end of file diff --git a/docs/0.12.1/images/cluster-operator.png b/docs/0.12.1/images/cluster-operator.png new file mode 100644 index 0000000000000000000000000000000000000000..2911dd314899be30e88c179254fd10072d918626 GIT binary patch literal 59301 zcmeFZby$^Ow=TRC6EP7{Nd-i@K^6@P(j}lY(hZA6ry`(&Al)F+E!`oAbVxTM-QD$# zg}?Vb`@6oq_jjH1=ehR!hZWB=pE<`IbHqLF!3P;Bk*nDEu@MNwRng~9}d2>CqtrkibA)sUaT9;JRR7+o1PFG9E-m+1b8-c)jZ200O z`lX}JnR^VwNwX&dXJNnh*g8=CPvTq&!1NNT9V^H7ORl2Ot^ zNY}vdxdTd9-a+bxwu7-Yr_Mt@UQ%v5Bn)7xi`F8wGc_@@LfY{>JRKJa?=fF9JS086 z1Z~Xo@b9EvO3IK5nWJ<`+34Bnw3%4hNI5v^nb=uaIXP)bnHia$Ffcx0U}B+TVn?zv zBAJ;<|9L%xr=fK8kaACj|9KXC;(2I*Mq3~m7;J5A>1|o)%~ARcOq`sY42;YS%*=Ff z1)Y_>8CuJZ&diGJUn4x#wbDizTA&Th%}6mLYP~kMM)N#`nf_gZsl~sCHM9ChOdv1@ zJ1q+aCVEE9lKyp}q~w2psj2C|ueL(V>He?z{-*<5y|A~?WsuXgGPg!)!^Y{6VIF0H z6hi50q0Lb*%*{>yB}EwnbF{gYfw={#kPt>{oTQH>wX_Y*Fke!g-X$rC6g9I#Ynf^5 ziazCe2;Fv6#&&z>+cGXCq{r{>z$rn+Y6 zf8DF|zwTxFFYm=DgsBBQ`Kd0-&_-8B7-eosdb)6=;eRrhCjx9wIE96U|I6|IxmV{u znG5D#0hsT9c`pM@h5@s^|6#lT^%dw4=Iy_g7e4%3{dLVi=TV^CD;@M{F5BJi3!gp8nwKnlcjt!kja!#;K8|SSX}fdyys`Tr$!+`|jrcuQ+b zbPG8PM;nVh^M^p6rD31E{>$vXOXPR8%io^K36s>M{h&tr;6eVE#Gk5_?b1%-Ee(P3oqvP+p zZ}-k3|6a&0#DDShUA5k&*}q@)n~zkg&cWzQ=~ zcd;gSrCR4A?|DApOTBk0ObebH9VMmn3*DomF2{%VvF$TE2Nmk(f`Wp=!k#AQ+y!bG zzh3*r+PY-Z+yLb~RSy}WnH0dcR21Z8f2S>cI4D|H$ zyu7?LG{%GZh8)8dLUM9)q&F^+BrZ4@8!zl{Eks5}9^m;}qJ^0}uamg6^XxR(Pxbey zJ1$kf!Sa6-mPOkvCMqf_B^83@{qZBp$||v6R*R@{e6lgHo$sW)N$i?si7M(2=Tnbo zle%hZ(d3^)sguZ*&|Q)ot+9L>^d+HrjuoS7Wi}OCy(-lDoaO=oZzeOaNx2f|3(ZCb z4=B(SUJM$QPEA2n<4y@CsLSJdK_MaZDuo%zvv{X#6GEJce$&Bax(Je7Mk9NO{pz*v z3X6-2Yim#VlZlKv?~FLERM;Nwu8oKJCK<-bq<~egtgNhZmw)?R)7Uuu{u8npq~o@U zy?sgF!cub%>V=$K=Z_D#E9Dz)Fo1Af*x=w`&8zSvDgu`(K5k+W_Q^z5-@_MJT9dcv z)yrQhD@T0(++lr5?ukljxRQqR*6go%>h7;!`Nrc|b1jb#_bN36!zNk4vottK#c>74j1+L4kju2IJJNJ ztZLp7{k>*au5Rv%g_OmOpR_Pf<|QV+bk1gZ_?3df)||Af!*H>sEK{_FVv?cQ+E=}I zsmxrwIQ7q)U;#U$j^=Zni9|$1BQa8)D}x0K-Kp}hbK}vn?v@E5`_`BJ&-*%24G2%O zd^1!%m2Cedtb6;C9@Ok+!;cBZ4dp|0Jp|)484V)zbi}I0PKK@8dwP41>*8@rv+C>W z*x1>5H(FTM^Qv$wzc!4oR30qXdE=K6U5UT2WinJ~swsYct8MXz^CisK?{&|i_eDIY zM_mp~n{#V&d^8zn(a5~Kyp8qsTe!GbZ}^}5`E66Su&}^kI(S=(_M+HXSA1Ck>{`as zq&Z!+yPU&g?hSZvE7VuQS@dld`+toE8-Gm+w!KEoog%#a)IYC5ML|KKA~tczcrkTy zTqqzQK-ia1RN~Z8-)Iht>TKUfm87Mo8ygwb#C_Ccd?_cFYt)klCb3|8?G4sNSo7@0 z-lXp1+qtyq<>iNmdmD3eb4DH!y3HY}wzUJu=r+@#!k(U<)HmFyZrJf;$;dk;f}c#1 z6A~I^)kxmc&sm{RI1km3z}E&%GwMzh5Nj?(R-;^G#@JZ`UY6>AvU}DWzAfCDoRmbb zoS$MGRy&7oi{ji^t0&=eJuYuj-DYKFRV}u7z{Pc7M7%Jk3 z_{8E1L#@^1{VP|llvPsTr@WPv=3aZ(ZS;hMv-wY*w|U7_NW*zI%o-5y1wa`j7jC;4 zM(7C%30Yd^-1j467#bW*k_gYWSsKjG&;R=M>*VBQ1HVrMs)ubTCP{TG=fyaclG<2P zYil&S>0o+xW!hOJ^&^U`by*p?%cxG+oW?rOi*qUUcBTWl&qhoCoJ9&J#~AJIRGl2P zMRU~}OEo732L*w+lub&2WIX-SuCn-6MR8&-^rlwNK^5>aj?5D%`_xE4r>FMg} zA(520qPgd<+(|KwZQlu{%QKAl@Zp23(t|9Qy4Qa7RKiEG+f#$GA7ca^k0b#i*a&o;sCK5mS&R ze*~Kgv!beJ0rGLt2I|jv%Ih<+N5$V$7?*6 zhKg2(ORPYvi$-jQz%pm=$PiHpSzB*u`|;din-%WL_x1G!Yxz!F+P6)BHSm$7n3Pmy z#P0JaLR%8)pbDSvu?T0aEftMz9~>Et6Qs+JDb34HSoUVB*utm{iB{8X(Pd71C}QLD zm>KckJrnJcM+DuR0j5Zq>{qpgU_^%o?crl--%I-IRzM=S1Ky$f{es|`t311au4J@K}t_~PiQD8 z6650H{Jggs-Vkt@(bCXdxy}Y&`Ps8)Acfeb&yLqIvvE7Yclv^Tfxiwt-5$%QRr8LB z%Vu%3qO7p6mk}qq>z?nTLB#Z$okZ8+1j)%`KBX+xRN)NOh|4+r4TVT>XsEba z$;k35irdi8(6}#4QcUdi10BqS5D#y5+#_wyJ#=w3GMfL0M{|cx8NE6CYkhqkw6wGo zS<47s%+8+3uYO}bJ^KzmJ{X-jhPz>(9UG z#|cV)W~vm4MW^(CiZCqD{QmanU}uNIlR~7YyPF$4OF&*k%_9-R2%D9Pou&^jk*BuY z?eRJEg|<0#nusbWXlG|9ETb?#A9TqS+M?x|i1zH~yHmlYLjZ2PZj$;qPUbNsrT##!u8}Tba@Q+)`8@j#J*u>b%7nA@ z>s_p^#>`7JcX6b`7~}Hu(S2EJMxUkZ!in+zyvo)2uvqn{ggi0G1}ufwb&_ig?-n=q z^xC5A7cz^4JyT9+hSBBYU)DUgu@w{*mq#lOI^u*pwValWH3*nqzr&slOG?#a`9#8Z z?8~)mH=mkZgBr-5>mg#brHYX9?q;Qrr~)Ow!7kJd&sdjGqo1sv(b#6($|^@e*h z?XfFc4%v1U0ZDLbJ@C~(ccy**taZ1su`%{=lCrC-OIKw@fP^IS^xRj=JmXI$k?4|; zlDc-mJx&HJH!@mk&mQbLWvtUWOmg%(ED0i=%H#co@mJ4Lny+8KhG=oi5oI65PbwoP z$87oM$13AJs>~px<`B9*>Ms+sgxL9ZYkwM26^tq-D{dd*}9vaVm}E1;0MTZPI*4XuBBy`Uy^p-~3?tz$2`0 zY*?#hXJ?NUnU9rN&D7M|bl>LyOLfq2$HV_miE0*%NW$y%BsWD@SNF;t+J>g4(nopW z-K5c%aUU&?lqqGpktu+-e@#e87{zA^S#QVzi3d7dVTg_w+g&bOF&oHD4AsVZQ{5Cy zqu&ztJ+I}|OEP(bm)t!%=Cqn#9IJALV|MxSWuxT21ye&q`-7#T+Quj;{U;IeG2_k? zpEx`(E;_NEeNzo)J6S5a)N#iQkJVo;H5d&Ks5HLSAshGA;|hLAXlQfcB&Sh#O65D{ z1QhS?Z+DCDxACSpt><5?SQShvb@cZB%%H(Yg`ZZtN#P{r#!s*#N-tmb|N3=vG&@Pd z!y}nZ)Iqcm>;{+smmg$eFGvj`)bej0ND)956cqGXP((xglU}0csnrtARm8y3oN%oy znw{bxQFEDQ@4b*VW^@D&JKE=f?l!irj*ipuMr{HoX) zHNN}PTJ3g;ikw@DwRaC`G$b%;>26YXW}znf`WP!;=4VNhiCctwIwn?iQ2Luo=gvX| z>3Y=XS^+U6CV1@bMiT}8L6u-%xq?rxYFB%e;|Vf$tlKf>yCx%{jsGVasSg3?{O8I( z(WI_D1#O~XU@$i~SHe=!nNcyXU<0?@(juXdw%XO(Q#etZ93V0suSllI*&sZ*)ub}P z1>r07404A|oT4U|8=b zQ|sd)mbS9mz{HC&-1f`ECB40hR0_(<%8H7LT3T8H0s>A>PNX-A|MU|!rj?eKW@bu0 zlaS~Nk`VT}`>Si1LiABGMAq2J(h?Fa&CLt!6$!ADLG3eF{NDS|L(C=#3FGE^R+Lg3 zaZEjVBYFDjQ#$*(odXJiUFyllqNMsbv29Z*h>ejC9tiN59e(s!bm*)Mtc46gUS7Uu z;6TM1BU%2~oqhk9_|5l;c`e!N4rE`f3eak{C8}!r*HfRpJs?(muY6xPD`m(35lU_= z-~5?WcQaXjX%-jRhg#jhq8jlh=>g4U{sNCnkfJy2KlyukxiX-hcekly-?Q#?@sId$ z_-UtT9`hhK-W6*>{u#2`p!9Uzh-tQ0OT|^vtkf>9hOT`gj%I;V2VD~Y_qyD=MnqQSJ05-K=c;HWh+$( zxhiBR%z7jWV3hY(?U$gFG$d^V%x#(o`|o47p*l0=jKZxHQ0^S-lpbbMx#G;yTV zdg1N)D-fY`A(1Xe3mUOV>!x3v>>@6Y9zD7S&H=^>sOnoFT7B{*Yla7W*L9awcgVL0 z%!=O-Ts~d70RKh)SUc_*46@R`Rk z+w@N|ge1Vgz`z0-jrBy;*T~E)$zAqi&O3B~y`1NI z1O^J0-P_v>_-J}Cy1RyTJ?rpAyq!+f{j+3_p^@0w);Bw zD!&fDh}6w{;sHO#Z4(gzRXtSYkELI{&9Y2MS@=X-h*Z+K=1YGCf$@{?x6JM_kqgQbY1d(mh$K1lUdR8;izFv5f_i3$xZa@t$}@#Co| zF180iJ5*ee5fRMH%&@0#eD3dx)hyMI%uC90e#H(TpEuEHzU-!D!Yy*zulO*g{zhA^e zUZKIkfXTs2!^35=8bZD1SAdXEypomu6~$=<`RUm=ZnveeAFVv1plJNLy)-nX4`>}B zeQ<~T>a&k@ePyOY>{K>@yg4}Rzq^c^BppkCkT@AI1aSypApk6PD>R5wq&GE*rM{7k z7f#g~4gopw(~^C``rX7T$z}QHorw<#-{>4#n75Z2HMC^IcXGG^ITgqc9C)0J0XSAv zL%v}bI3kz5W{u^+0`b1B;^N|3uj}SRg-Z}=Rvj#t^}NIr-TQ$n{W2u@^Jh{%ia^^j zXWP~Ywsgfz2M9l_HlkM&l9MSPJ*r%9qJfZyhK}yY%XQa_pY->}o4HI%O3#e5ObmuzI>@(8~?*qb-a~LKtPaal4RI~DH*l9 zZ0GIm?V(2J=jZE*9ckIv6tapyqqi5AHuu_HT_zj+)uhQUL!g)KvPDBxNcgp>#CoB3 zAWxrfvqK0X(~H-MgSr|iGStcx>1D31IaHuJG4{i1x@E5hzp^^F33Di*)Kq*{vI`(g zAt84Yuq2zj>_3)l9Jym4$%fFXEFobMK-lo`@Y1ZRwVwo#Gk)gDb?yJA1u4DbS{=TI z{Zw#GO$`7x;xS~xK4B0~z%B#GOFy@>I6$^i34uGusGYWr&9=r-j|NyL2v}NTc(@oC z80hFEKa$S`uvX|0Tsrq+oPvaE=<74@$NUY=c?MRV}QUu{iWRF+thS)!Sc_WJ`r$0h*5dC-W+={ zJX4zauu*`X5~7k`6>}mUhy2@)8`G`1`rRqAG)h@PdF2p>gS5&m#syKR+z5?A2rpA# zrd|zgwm#~m##nAmd?>rAzDY6!(|KN`Tzv(v>!SO2FrS&~6@!dEfYs~`baZ@!)DH47 zFJcFSns=97s$2mrURqkJ+G{lj3&~U~?8~JKSrAN$)`@)wJP&gunp{$mjbilr2ir?f?g5oyl9ZRC4E-D# zsiLY%i0x5KiLp&kceFSkqFVHn55p*=N`*XR>|Q0B^!-d0N8tnhs(i+*o)g> z5+INeoQzE=IEw3L0OCiPLC)^m#{WTPMnQb(o#2B3#agSZu*`_o%{HzTz!D&$2P`4w zoQYsenmWgK zJi+&Hr&&6-9Ut4{)~#FWa5V5WoS1H00#Dwc0>UvfWUV! z=-E%WMTpc@RA@>d$4ce-^y$;Q{}MyhA<8Z*B#4eM2fHtT+I`W_&rd0R>G{Cd^-#iu ze!z)JN=gDGh`tKy!D$E2PyGWB1~B}#lMOeiB)}DnRya;6CrrQM!G!B>g8Ub&gI|Rx z$jE$yv;j~S*m78b%PsrIx8(8wkqPA71(}(qP^$>Yh>xGZ2KZV@UOrGY z-sGJ~FF85+Irr~i#Qg|3=urZ?oZgFbHfMtdM4P&naM%>oP8adA0@41!W3jI`=)<&Okd3*yIFC^=@eF#1r*Cz%Z9r>3RN11wj$R5+yL z7lGLNTT{q-nIo9_s4Lho0+3j!Q2-X&nIH;6%N<9Rpw*P}KIy;_TC4H60!|8wL-vl2 zWrS=Fn+BXC;KIM68bOWP9bQ`J21$1PD+vvj^+QFWBdU^ty?&IT=k|Unh zpPHHqP)>S!It?{-z-zF$^YcanWCyi=)Ug0XFJxEIPw}}N7T?zV>2ps`YFY(z;$+Zi zh-y5jpFl;4UbR?;UEN_W5kiaU)$v-;FULP0C<{#n)&Yq>clHchU+R!{UT!YLf=~hJ z%hq7vgG>!_e3yfvF#wp-ztaNl41%$?wg$Uwl+g-6zt#GrC|i@Ttk$*Ic1kV?298`@ zR|cAz0WD-@V{47%VBp~yVe~QMJ!7rbCa12B@k8LP>PcLkz^20DX%sU)KTMTn$EB1C z;z5N&Z6Y`{SH5W*AiO4Pk9bZLJykVii^&hg0&XJixHh^xzcYA6n%WV6bgSs zLqlT_5nUxQq#~Z z05VJ|6$SOoeW;Te-W3Lb8?c7vrY4uoc#^5fNi-V$oO!Ew*+LOQxQL_*a2aK`D^ik@ z&XfKkI{MNBO=WNd1L78=cpPnt;%)@*v9xo?OFi%iI^5XUP|8$h0}P^o*EiuFxX{i- z@srJDKAyeFKo1X(fQ+=XraAPT+qZAy;iYCw@|PSY$GRw=ckZqRcX%h&%QwBprY0|O z@?~lxM3R^)5T}(MWDs(T5TPX{CN{d*D<%4Pdq;vMf?{;n)=UaI+}FXNKcp9KcAV*; zG-_!EoP$HRDG1IzK&$rQv9WxngRFb0uWtkhXKn;UMBKmEb=gA@VkAG_{aL6W`jYUe z%gXvkMV0F`21J@yz9O1Jm5|Rsm_#Px`$9p1;?bi~%X*^B%uFZ_;P?fFbC}1JTZ5mo znrRzxSjaRh8d}-e3Ch$d2Gkd7A7#s>G+bO|3lbEPU4ZXGDUCdFkOfR_O^sj)a^O<7 z4ebmYj`mbjaDdgTR|61GO!1fe1Z{-a! zL0F{9!-sp0!7uke10bvpQIIkc4JQs>BT`8SizPm0O!Zvk0)EYv-pA`%%2XxB=`Y0F zpHG;Yn@fv{iAhT<(fmrWRnUAkx->icTuO?V-Q?wy!?@Q%MsXUIl%Z;;Vx=)A+x2Jxgguf)k@4|HzYWiB32wFry$7rln0L{_ijL3`%GZ7zaXSzzIT}(LNOkN z<4c~BmbU->x(g}(K~J`eg8KS<0KVK_YVPo6JG?ewXiu*zsJTRhI66QtJO7bp@Y9kr zPfSjR3{3bL2Vu1T?X4{3)#8O$7pS%Bq{Wq(P&7iddb%mRMYWDnXN{--5PlK z7sh;62N7q-gSA;9^E}eTM6}8)H?!v;ub9A4cJVUW|u2jRrF+)nWy<$FE zY-~xzD0qs;ahseHG>u`O6M^Y4^pAx9ZI1ZT>rP?d> zk*feMuBNuMH&Fr+)(&VZfjQYQr*09>#cckUmt~|l( zWo?ajEa0o6SsKrcID>F=yT+K%z)^Rl(sRDID|*a~$WvF3QpfLk15?K5{htH33^?uA ziXAutoa80elJLm!!=ho+M5*lce(Fy>n$}>#OuQ*PGANcfG!A)zC-H@b-4*$dw?;(A zgYc2_(nT>gMy2t6LG&ZmrCZ&5zWV|(at;g%lEL^`t^02B${|@?^+|WiqKWa&-i@M~ zit(|n!%y<@KT2civTABJ(-zf3w(Kwv&R?>gjp#kNO2T;P#Sj#k6nAwwh==Xdb-pvI z+Fc)~k|$Z7L^6Jg{z*LXslw0IW9lOg3wpKY-~mgD+Q;daAC`aoqI#Aa8+PqPwpea_cQVB*)Q_m9ep^9gZ=5WQh#jIZoY6V_`>C&YtbR_Ev^?67nah z6>n!9$9A1aC2r2foH))_sdH_KMbR9u8e!`C{Wuvs-r69t4n3Z7`j!;5kZE%G zJ96dNR3(KjEw;-qC7pmM$_RJh1+P*Z9^zH67!)0q3^`l^Pc-P2Mh_q@wp{f3K7qx}cF zO8pC)yw1C!?TUwTRTJ`*RpT>Pt|Lf$zj>D+COVQ!b}Q9< z#%q#lp%Nn^D9$f@W==K5HPxSQSr?FeZ+BMyLQ8c(xeBl9`?&fb#hEIbQCaQW3cVAF(8E5F|{+hR1no$i!{=^bD6qVL$4Lk5@ zJOAW@saX7mOPe&c%$4lTfc5pEUAd;3?wn@f5gR58CL=}h?yC$Qdv=XNW}$sr;j%}G z0>Qb-1nQ+_`0n_A93;WDY9v`i|2iDapDNlx3>8jaCIdU85<3UqW_Fe)hA-TQT04Kn zwiP7c+S#|bqT7HElpPl*z>ZT3&KF3*o+hhhPo@7vSvoG*p41j*H*RN)b2yoQ_j8K# z757fKf4myxSmfl_U8a%KX}R|`xFUJewRm-2Bs#Y_*S{ixRf5dmm{Zp;-C8|H4lL~Q z(zv_Mjl@OEt8FgHha1=h?wpCkKgT2Uih@GNeul~+E1b*59aUp&J|`|td-_?`t)$W% z?1!8@7-GrQJ6ez&TZ!ssdHi>47d};FyLzaV4keaNGC212w&D{bggi$M%GaGA(aOhdUXIqG5T1Y!Nr>ozz`(0T;p;IbnvvX&nH5THA@k^nL zLa|!+$ZiQwQ%s-#RQOSm00sbzN=2M(%#e|Kt?nWxFnJ3PVQ_#j7(pQVZ_8)hz-5&z+ho*~v@$%$bY_s( zEsoUSg0rWe!8HV_-r9NmoR0V|cj4b)t%yytN~`Rax-;$x+>tp4LoAL|bCJBa*$b=z zypif0nsL+KTH5}oa)vtgYWRbq=?Eq#n~v`sd@zsdtV?}o5x+^lxQFe{&sfaS7cCbO z;UjcC*AW{JUEAicsDMJ3S`Ht&$RxTusHFfRPqPb6JZ z(}B-;HaF34WpExU4j#it4j@q_l1#rh2wb2(;#cjGwo(~_{a3K)JxC)^P|&p&igQ|0tZ zq|;M}(pg`OXL%m`|n5Ma)rYdHBWsWpVS?BUf#( z)T4MBLoOlMXFyn<2){1enU8&JlnQ4M?Uavo~#N;b2; zWW5QigfF*6_%8}+bl~`k5j%^FkFc5Qo0C)oT-3r$7xrZN(yZnz3oY3|;CfM4)p!SM zE$dl5Hza1F5FurrsvRARjtAO{nAyGi0!9+HA+-S~tX_IKf_D(4icq0?{Z`yoZIzAC zG)+$9_;i1&d!r&)bUcxQM69L={zaF*L~O>OV(TKCxd%z1N7~WiRBs2y1-`0#cLSB3%-66)BGY?)D#pIy%%4NtaL3HIgK+Re z$ixGh6b;_ZmWfT`N{dwkE05`pqSz5;%7Y}gaX%!xj;AN3&-3ksj%+Na!k&U;yz1u$)bpln@v6iuD3n93w+WMKgQ9bt)3$z$neOG{jl^F` za%8D=?%I)Kif(>pdaBl?}hMB&@ATwLM83o2Nie21}Pt6n}G zUSlT`u0K@fs|qz2OyiX%A5D3*+~~Q4+26MiFj&I{H z=~~wA;C9}NOR)1Nq-TY^$5y4ABTC@GG}~P`&Cj>V$M}|UOPBKr?b~DDto1QG$SA>4Pq{bZkDvZe{d<>DMIPYV29+Z+4N=8C59XPki z{VJ_CM~-9qkXIwVNBtNst9O!MPhtAU0)X|vk#wo8`fAYA-)+gmQ}sy416H82L)bcu#RiuxNIiZ<@GahYtjEep4kn+#bA%UsoIz1RG_rIcl zt?Ik0eY@nooz#fE#@gT$rEC0uTN`w4e?$U?Bu(uvG7j&GS^|sTdE)Yqd7EE zw6&H4#G`qLm2fcYR;*qXFJph-eirc>52mT>Qp-o>+|+rfQrkrXa@x99mc09>O`YT< z=~PV8|308BA}uA(n_@qQ!Eyz9Q&)G~$rUvIIjp33U>2YKJ+bV_b46R5Pd$jakf&Q} z>eT4K@^UGs%#&Sf;|x6w&$S?|&jKY9JjxB*xtn#OCFwthadYXN#|fh4^1oUrRR4}7 z!7N5QNp~M7mZAG5c?1^Xy#mJgLp<|$H%9T-olO?8!q;9s@UF+h0u|Vv?j5mgd!jZm zM2jF5W}3prII|Bi2@2149+lq0pQPW;A*RL*yOaH`bYZhD5dRSWXJT-1G;#B5Q(7@}RDSe6asDez#el0F>*Et?Cp%@%jNu`oyU zoLv-g@-!OVRsp^Qk@Ml^|F_fTZo=SoZvHd7&7G{D3NdCEfieAE*~Dr<#~xZrqIRna z0{nrWboHj~lEDGLNg>!vHvwNaDLy-HVx)Do#^Zv9}L;5T;M7}R<2Ca;49;1j$ewN4#_iEtma^ioST+uRb?~9W0UGXH{Qr4N8VT$g{f3YH%X6tO} zvZVu2sPMwKhvb+eeqRog%6=PA>gTJsWHo{~Cf@aGDh42jm*an1FF$Qfa%&9>F?{K1 z@~-7Z0mj>%wlHZ@dg|)@)Ytu~yN5Ftmj9X>?0Tf?X@isrxxodiTN_nYT{{fB3_jvC zYmqMhK~Q=)G(oYdjL5{tninLR69mBozd!ATTBJ0%;OPX5wM2I-1r+TNLOoWf)JAa3Zd2D zTILOVHEOqD$z@RHUMw z{OavZD)jdD<{|bQdiq@+yV(YR{C*1beY042u;=z=hEhjJwJCVkhG84Xa$86u2`h=8K= zl+7n^Zw$Qt>DZ;AVT9OhT1kVrQ8Hl9iFcr(x!HTa`>b0!1ajA6#!jve9T&3o7n*dN zjzt}{^VW(Kz?!eZngx)`8YlaGi7dV1_veV5f%2$QiZ-x;lfhrV#&-@dO$`lLuD}ZeD6K5n z*gqXpHU)~uQl)AExyxcs{UgbUZt>T1UjQDTnVAu10yZY6+w0AMm*>%w>*heXhuV#0 z{2vFIqF58B{jS)`nHa~K1IeyKfIj!9Bh8zfA7`$pjO{B*b7rU%Ekl_WT{Z$pf2U6A zr@YP4VZk_=;&2UTdno-MuaTSpMV0L?PL^`PyjAQ0VU;eTFJ!voY!aV==O48-d@Qs(3ps02lpao#6xp#ir~&g5!(!1D`{4H_FD2vdG^zWmb8;YbOp@ z@9yb20zBQH_{(BBRF6sQC;eAf2_Fp2r=;BEsZdpWaeO3Z@=6iP4EFYWRYyZr6>t^S zW8sw#faOEsoW%8T4VLChaH~&9x@ZgFH8F0HkH=kKFx?f9j{CmqGac38f zROyheLrua;Up-Cm@Z|lAQFg!xg~E-T%N$b-ud_pS-7NbWl)hg~uY0GYr%x3A*qYwh zBL>~|^t{l;TJJ}~a5XdZ2aqN0fjFW@ujJ%(`2HqYf;H5*M^!AVB2-+P<9US=aB}^l zqcf*XMK32t9qM5s24ioxHc|y8rQ~B#)ly-g+yf=!pvD}y0Z_IQD;15CnN5l``xt?Y zTiAyR))d_ULnHZG^|cQViSnQTclZat>hllaGD8gnx-;gEZtdsVefrwFRuVBEFq+XF z9B&oW>gN4R{NfW;sbvY(dcTP_5gAb$N0{b_nJo}-LaPpSw}Ogd76%K`6BFwgeSmS( znEcM9;SG@DS9Av=DmjYI1c|iK=!gDTr?P~`zT0>1i23Uz2L+BXoa!9Ylo4Y9eFv^I zx2%fF0;&Y4oom2f;YFExL-}uxbS}D7Ei}KlxPK1aR2Cp{3tEM){r=p%d@D4)vhtXc zZ%-7O>(J+gqOTiJpRo?_3Kfh2HP3d2OStGxI6Ax7} zu?LCQIh}S_-{6rsCCWNNSt@?oZ`Y~v>(_^7QmT9?Z48+uyJ9g5{xS&Z6h-(j^CS8JD&f;}s|EHSU1RH)IJ5VE2LwE~kBE#M zb6nxEr<%evJ(SVoUO-^!HR^}eb`nM$CY%PIZf%;IU>MDScVwj3rO&$&4&4F`wqW9* zJ1N092<%x@)bN(Y0G0XPk&Eb~4;O8o>s)8Ni^B_c2;&cF*5|&m%5ht*^fH0IXwDl^!H2y0T;;*~z3OPGh zOp=}VRz@bQ)X999Doqf%KN^4MSqO`m7bgdY(tgWuRI$|L_E3dm(MMu2n!tmSoE%Fa z{%PzrDLG)9DZY3S#ceMq=c%L+%j>)k^+B|nE3}s+df4zVrj?{lpH`_B{>WfG_M4=d zQHZ?@jWj_~iH%Uo7bOcui5WU74_riCs7~b+(tCc~Md%ZI{xlVIZvz5`y3^XTxhudn z1nSK5{by>9l4&eS!o!;Z3QwjG*FG$sVP|CpSJEgfDEO9eba3$grE}_b;~wTt69gn% zMMceJ@#E3-q2glJz#I3w$D&sq-kb;)8ADDO=jmh%9yI||qETOaosW>s;&QPkth36s z$|wd3ik-7SYJjRLaOSuTI}^;V%cl1+kS4 z{Y?v|LxYTf;)4qMxP>9XWbU?BhjssP^d@;Ss9K=6c;u-oLy2&^`;=eb0?Pb*U?In6 zotk#xh?Y4=NC;BaG7ciGCBJNo7l|bj_CN4XsE58q_wT=xdAF#j`oV|G`_<>!u8cY# zYy%%NbLh$khjYbfE=+@zw(&h*FN5zeG+p_)a#Utlg>SdU7zhTS4wL6Y0)tDnmw0|IIo?pOEZ z(RM9uI+?A9PP+euIGg2pGz3mL7X|Qeh`(#DexQs=$<7XKlLi(CM)S=aB~zopC6Qoz z09|v?dQ|?|GY}Q(0m!(nV0vwEyETmI3 zu?leyQE(`<)y*40voR14OCnyU{D3~HbO)m{)$Bw1`}glpIzWN%{q*nny>kr>4R)~f zsgRJ!ZH%YsTYw7WN|svLbW1pHupOL9@T6%y<(r-2&^`6y%RNn+ z0+{EjCNfFkwpp99L{YJOl|cMU(L%daY0yQJB?dEVSTb27X36$GuifLFKZCf@d}$Wv zVb#IN3Q!vl!M>@^(1j^=&0i|!^FrrmouKUHqO z5#xGn&*`r^5p6pPeGiY#WWl%{h)(Rc=<~*hy!M2rbQ(`bE+P~`)kwzobt?$6Lk+?Vl+tSC0W40vA|33P#66EI(UuZIhd+Kaeyiz?oE{Ztl`*34-E;>OShk~R zjIXG7vsHEgT62>OeZfOMS?XxV^`t0kp>qk0iiEnl`mX4Z|Iyb~vLf@+xg_A3JnwtH z|Ga9yCmWItp#EMM&`?y|-e1TrQ>CvO(~yxNZLIOS{`W>(LYxP_qa1LwfmG5BHbT_<0MoQ*%5wO=6zCy^g@q2>G5>U=&0GG)FeVNZ zmG_|`8S>CUu6Mgl!sRCz&B-^~zNG4*q)f2)j3 zP-s(lMsg52=UTt{HxXuee7I~|m7bjqtrQ?`*TB9w3aG+m_1M}FrK0^T&F;*))V}!aHjSB zQ<2z19#nI^X>R+w!gx@p*Wq?i70)VzlQX?=Q9|LA#hfoYJGN9nAtN7 zDqZ!U_d?Hsog@eJH=w5fVtdDGyF3h(TG6vqdzct|=cYZPgKi}5Kfyp>-!L#UgJ!Qv zsZN!J`-8JaKsLnm>OrFkQ0B=i9EeLy8pH?og0r0x7ao2;;(6K{Je&F)*r%ZKor&Bo zhr5v5)E?;iA?H7O_ie_U^pGzrF*%4vMMiSD9v_B;+~GU`>UK@@TST7>!_GVyaR?`= zY`+X|FqE&>4CI9(=?+d@x7)CI)2NqD!Xrdic;XUnJ{Kf?M^DOzmOWFJ^~G#zYvj*z zrJ4Q6x`x^atf7i~Z{=o1oubl7?Mfdz;`zUFFbzn#`!I5x~RC<_HW$*y1=NQ zAYedQ11}4@8bA{h?CkAGACb?IJ{)#Zn0EE7VjIUVeFH zrFweL$6q{;$G#(3le`FSaz5MRnYo>)R>Y(>=ggAOLdwY4K|cgUKVaL9S3Y!wN%Qj~ zT(c&7J8Rpe9|b~gkx@}WB$w1Rmz$U8?(UwRmL~k^zDH0;N5|^ws#!CJ)CG*yCNXX8 z`0Q-+6^dEmA@_CJT}b-ta=AuAICUCsL;?4hEwUBI=a%552k&m6#6JV6ZY%pv?E_J1 zX|L>uHo9UG5}RvlIg$4*xZK27W@h@VTBhh9jwX)%I9ttuzWl%z|5Bw?a#`&V`IhAX z<-1(z3#9iwrcGMsVu_A!`r;l1xNyx~R~7QQfnu;Ma#9~`Ke~q8*lEJIpRl~=iNZV- z^W@Ji*nJ)UyoWF5^clYho&L7ZaEJFST!DovRr>e$qw5u^wI)oFw0gYQr$1akpI-Ug zwMLU22Svc_I*WyuIkn+Q%g&MngXr+rxJkvvXJ$gfuN82@;h!T=2OF*a{ti4sCMG5u zdq^&InC~&;5Fs~}n+XU$3G1-j#ku2sejqA3dWjh}*RVjD@Z7m`yZiftF*P0r!Y(en z%&^NIUS85+jNj?~iotMB|KRDSDUiu8@oLe_du23Pz#PwCpu99QW1Hzba5-*Ke*5x+ z9qvcojgm{p?!Wk~KQ~I~1&(ISu)w025nBAo=KjIK1rA&D!^5hLv7FEwGTj=PED^rm z!qQ$`Rwho|C(clDPMV65adoRtV`p=7v5?hH71Ld+t4mSNMfl_A&q3Xn!1V+hV)^ZL z-N!`nP<1vq7X`+B(10?ye6!4ajF)wykutXYHA(M%u6rH%9tBn%{sqPo z*tf%(K5eY~R6QP7Or<~E+0Je4s}Okd5h5J$0Y|{8l2=fui@o|+hFG}4s)@1&lg!F_ zr^k^nu1jflcJ^h30~;Y_F_T`NJ;YZKv%JH%1+pR7s_Iru+X9A%-z_ga(yPbH&JL}> z1f#bHZx9fGnQ{W=byQRo{1XVE6Glq`RD)!dNR)eEB_kuFqeIRuw5#?g@G|`!ZhC*; z3-Ra3_jh-z#{!%1Hy%Mg(QBRdUOn5^+PXk;j@`=H+1b!A)!SPf{%rwpsMl()Fs#=9 zBSbeAt*NGfkgxl``v&b=)E@VbF2r62y+4zDb??&tC9sP?lYA?3v1%4}$m#c+i%)^1 z+l7gEF(hB;LWCBmvXRylKzlMXJ#eR%myat}oTX`_m>^*U0RT1B5jgkY{)5#cvsFvv z`lX-0;n;1W$$p`v6n_Lc?l5HUzq>z})L`ANZrxa2#b5-3wTIp@EJXzc6_5r((pH<- z)X>mjRA7@u`XI=;iTAB@dPL90#wG?70kRhvE^Z`ifE3X`yN&H3Av>b@Dn0$zV^;f5oKB>eO@9<+ zJxpm}Xb24HH=(bY!vT2IvF+{Z+VHhUzj^ZpxYq{4Dk?(+=H)p+8V8&F|M2$KQB|+s z-l&LlOP7R#bcu8~2#B@G$gdi#1ASH-M=R4QlzjN+8ZjEur z8RP!r*n7iX$Xd^LK68F*Iu}|kD0<&_^qejEijKFp&8yC0WEs*zBQ^Eu7oij?g-wVa z-8ME2>zc2qA{305QpA(@t?lgW92`jcBXG%iRynF~;jVs5c_4naahH@d36!CLecDZZ zVc_FK=&W<(W14?N9M2=uD1V*+F(M`@!EQ=?JfXo4+fz$JQ3U@|SyE>bU8RGK?fyal+&t9X!+s(KkvM13qMU}k6ES!@de z;8+(<10XRI%v26^mZ)0p}hb5*Xz25+g`Cub^M?+pSv%Yk{AY9(~hD&0PJ> zj5`#_F$miOXr)(TLe-9#&;Kpj*b-zzn}h=T+$qY-?tVtr>TeSR0|Vo=!PGl$^HAhF zh;psrA%vU(+H0*n9GSFHufdwo5O(5;_? z&WQ*KT_1&4>26vKI*f+uy*jT9xW0lWrwz^4!9fgui~Y5J$5KW9diV0AqzSNWcWEZ9 ze2oEVKXEjbo-pJ_e6Fi!`Ok^YXl<95fKS=D-LUlRmXqPd<>gWb6H&O?*XXJA5>Pew z^laq$SVmM-JP@Jb&XS%k>;7SJyQnC7c+=RnP9_!SnWn=;c73AOf1qH8? z4gq*fN=oV&fcIThQSntO8vjqI{ZN}KTv6PGs6|9cNl9lsPXxLPK-Nv`2OVW7F131r zCMc5;)8!%&xWhINy%XxdBUNi9fUuHP8hz0&0u&m0mdP5&5ApG%$ao@)Yil6~i0aKQ zBe+*^4{z_Mh|o+)guSF$?4;`w^uo19ytf})0u}LH#P>5$!^c4)A`_WARtP2N>= zk=S1HPB*XjLd9DP9w{pWgtQMs2s8srN`M4E>w9gg!Wb`?^R(Gl(1su^e;MjD;HrBY zU;czHI_vb*Hsl}pH|te~ROh132N zUQ|r|WaZ!EX`X3Po$Ss?{Q((qKCnL-9MXMMO+VXl4447ps`jx9t6a{L&l4Rv`c*cG ztKMz)qfcKojQ>5OU_!DOOnHEo)EW{WPOPdaA<>G6`hyx)3p$ux9&<2#L!^EGwr-{3h93JO0M8BzE0yqNmmN)-~i z{Kf%0jBsEs1XVgny2oc{u{k;J-7^PZ2_B%TfuCDj?-LT-N}_z02nsY=p0kqIN-Uhu zAH%tWdEpNz=%LaPZLh2ll9KW}FUvfB{J5ciX&ADSm# z8@-&tZeNp_El2d`N4xtkp}ggKd(=I{oa}772RZ35-ZD+`>04WG1mTG#$HgIiAk6rr zs~yxr^`F{KIbK<(V29vg|c zc*`B%xB9qgR9+g(QD=tCBpe#{_UvgAvk!g6Rh?)(sS)jNe6P9Z7j;Ap$5x)Y?>9}6 z!2JGj;JW_8LDu#(I}2}~R3xf@17B*l;Mp$6Y2)RD|D7_YVAX{+J`9Q95$;v(oPqGR z(ghzdYr1Ipo2lBgky=JPW!6x}Ng1?)18aVx{Uz={?e3;k&zehBw(ESJR5vjlbPU*< z_C1LD1ts__1>^jK0PgxS0X(bu)3Grx|G7~Rf8++V{pSS`->4uSghUPh_204`>kl{1 zzyFB%)=TXFYM{mcX{#Bj$Oh!ZaNsM*g#Y!GfOd24Q=!vSn+rEa!(b~S8hEYPS7C4e z^Aiv5Vp~d=J(|2uJqZ1`!J+<%``=IAKR;JNyu+OPbsf%~L2b7Cb4#cD(P&f530RgTIvB^Y8y7PUjk%%GQm? z*>t|YL}NZ~q}i+G%LrdXrNxFfAMpdOf^($OXA&wn&O6K!LnqdYwR(vDPv7GIde|4FV|8kB!f!0O;o?>^X#2FFx#sM8b?uXu@4Hz!ACFF4Q^4`8x zow}dkHzKaqKW@v>7(eQTg62yxA;l42L#Eexm&JPU{7;q^GK;1&;l{vOqVq!ZKH2M_ zSEFc!ng;Btv!>8KTUW%1p{O)9=h_~6r>lO&4V={r>bCnB_2{1$c8u*`6~xg|)%mcP zADz@zp z-~rkH?I?)&){*bV5~2Tm7vhiH5C7j!`Ty_-X06_(HD4SW9yZ}g@%~_xGu*R=eSRD9 zMj`$}eztC?eo%0 zn}5EF_~ZZS>HHu5z5joIqyFE1;A=$T7@-sr5>jT=`2E+Gm!d9>&g?&LK^;3{_TMCC zjPEt(>M{Q^Z(gm-27`jH^*?Vh^s%XkGcclWu6;uF&%1(7w_4hPLGYh1!^>P^M-S2Y zVWlX4RAY*iy9>S6>ifb+1v2s`e5opogjZjVX>&ghoBZO^|5nY+5~9Rh!!OKE@+egC zlXm_ZPnW$-7?hi2Y>K=bvWqU4yD=&LSuN_q7Td_irrb&qSPs`PNIitFpA zzkWrNyVF7>b;h~zc&I3|LE@81YN;AiLZ9k5vPnypMKub~iMh)Q$TkCGsa(#VzkdPf zmty}VioSU_`5R--6d6r2mzbNWfka@Al*WX%YbpJu@o;naJD2;372lS&#thTT4ViTY zupe{SedDxY`$e&PdR9p}?PqxL_U?KTUlJ9EP^NbNDN3Bb3P9qnt`!Xp=P)kpAY98; zH8s+`a~e0#I{N$&H>d2h>Z&s3p$z6CB%MVE+sPo#x&OcYMaUJiAU%eITd3kiA0 z5pkl1i_IsjL9>C^UaJq|r&co;b!5)?AsR@~ZDR=BlZeodnUA0H@-Ejn1D-oN0=4}W z+6ITpNjObFy|CWBE6o_cbOH_RpFe*xGBUuoD^~f!)RZ1BrGuwXgmnDwdC9|QK5Wfv z_+2T;6P$72VUIiYxaF3hv<4A+5TXUGdw-%Q#^yxkC=&}y-?wi>D{i?m@x7J)muCPm zw<`MrH8Q+3t7aAWEW5tmd!gB{>?s6Nj@h_tX%QAnAuN%fpl7j<~$ARJ! zwE{c>1i=iBj}wzvDJw?;0+_`^j42Bc$fHMC#Q^1yLbD603D&$6@x7ghUs1Io>#}XB zKi68--FEz4Kc%f+QRw;C!I)=kABCIT7W&B(t*|KeA1d8%Dp(;QqE78M6f?KC}7d8@Wl!Fz> znh=Mww8+M8SUf^Lys^NUxRC}!_MTn;2EK3A60{c0CAN43BgcS+A+YicQ6DD}IGrE_nK`;w{l#no zOOYDo7J0~r-HxYQI>RKHeMMj_3`{_%+Y@2oOYtBm{FsxC&F=YgXIEEB z9&_}4z+k6JP3W?vAk(qYY3b&fckapgIm9~P(1;nxhCm4~Nv%os3IfHk@{GaRJ0v4l;qppPl8p zcBkN9tt{-EoS~VL#_(tWo5(DLiMEX$;D#P6MsOhcN@{mV(2W{r-v0M1tT?DGK~lg7 z4yn}D)@DkR345@0o_c({$6&sg$?tye7NgvW%u_R(cjKQHdQ18}Jl#lXJb&hDRws}? zB+-7(nx;887aa&6ekW>Yfa3+8lR*~y_2`n$laI=b@@JJ<5AH+-U~bkOP6dcu6y}T! zTk~b_IYt{ke6go#WF?+vGxjj!v&dinvxYi%9c9bE*~w_@a_n!8q6k97A9$}_Y{*(h zY{tkxV|8Fr@6{5@;pnrPbX8oSAm^Iy@1=YJ6M(9!WgFBym?bf4pJ_-CH%oj4R~Go5!JyQ zsKPS*&z|dc_1wUE0m3d76&3n~zYv|*j{TaT!DUS;U!h@S8r<_BWXXr}?wGK+zJCAq z@$ZFzgN-M;jgVTZHZV9i$aNSWA5Y4r+lnL>44uU;g&H12jerS0(*frlV=lv37 zQr9qN<4^~sF=@D5s4apC-W$|~`S@{Opx=S~60b0z$MK&%<*W$H(+4dCAY=(j7Jw6@ zBd1s2v_MT{Op}`h>s%7#TVlC0Jo}jwZl(?42;?+0G;u0KUJ#I;uVpPGLO;6*fZ*ce zWh4)r6atsuMdW$6Jys#YV0LH-pPc-3BPYhgF!T{yUZiu&;5loxPi2RFRj;?Q9t_H8*Ug zsYV}tsejXgr>?7wzT)F~-K{rn@*#J{=nXmIFTYpne8g@xs-M+Z5w!35mK%%l-O+o? zWhaCyrY)?^EU)6^O@M%twqVY!^e6o7;=6dgjxU7IuRh&au{XM1Za z^Dr|GKs90rD$F-bKt8-LcWlt;_2koN8;k$h=BJ%-sX>Iw4}vL%>HtT3EW?YInGY}~ zdO%ZC6XY{55lC!yWJApK!@kho0mpE_m3j;%O0+xt0yAFr6WzW|PtRGcKfd@2gbH{8 z7|n!fyc=QgL<6aFak&_ThtLd_PvfTLLs|r6AS~Tr2FS2hL|B+|%N!Jj6j47x7PDK= z5Cte0AbLwN&#R^Z5vCfq00f45VSjO15!JN&A#MQi#XxW zY1Ln;Sz7M_LEscQ@{3AU3Kd<71C$p=nwqx+!{5AlnSvfP!a;e9%F2XI${Yfzhma-i zLGJ?z9Y91=lahw2qDn=zY!DhhT)utqXhX~R<+9XFo7lvb=+JF90fk_$XezIy?UX{ZxkE(Nlk;U|(vP&dxTWmwBZn+Bs)^d|1^Q`K2Me(tQp)l+P7caJRn* zd*_I87_a&TeH7Hy*?JmaQZk?Wflx3Y+40---|NDmcSUPkjD}_^wpE|HH7uxQMn{Hc z9qjnur9ipBOSZ%JL35`fr{Cd+5Ke8rZ1nN z=;vGY(l>iy95!sLt;jBO5Twmnp?3mrhIHXxV)-S# zeH+*b%POQF0VB{1Vw|DjR6cvDD^RjwZ)qieQKysoeg)8-Fhru%)EpOT6{!`wk^H=b z6gU&I@9!V>_xEG5ztSfD{1_3n1hRVdnHl5RbH0YzwdZYG*T z^7ZBUaYsp@gV)JYC=@Xc?WidPvk*lIXB(6|$3Stl1+g$Q3wj?g4ZaQyg&t_+`**xB zCK4qkaq(*qbOTh2g@aS&XNbrC7K9qWc8w(`Bpj^9KbDGn!@sVE0r1$~4>j}zg!mCD z@pU`I)h)bOPlwhQvi~|eI}dnf0@!5ZF>1oX5p1&^l;t65r@x3`7hPR+QlhoR+q^Tt z#hk8xh>42o8dxs;E_ROX8EywnC?uOyL@8&rf!2|vfoDaE_oY5_{HuJkgn#luKpa|Z z0Kpb1kYmOvATa3=jJt|5f+mg6mo1m`Y6-nfQ9%VV7p~#aUxOn)i%3->+|qVMo;dg$Kz>SwHgAAOOkk`~1H5zJ58< zpPr+osfWx{`n*aiuJVN5$>nq_D>rY)KFcdP`90=nR50+ipNh}m;@80GZ<#ZhI^p`q z*s1%9KU-QxR8pco-|@28PE=vKH38T4xYA$^y{CM6`^`{EeGLudCRA$AqhC*%zCb*X z+knVOIFUNR&t0hBCbcBQ#BB;5&dwr-IHZvnEC`g|2gw{ps7=7pF+O5Nn z+C@I`D(a3*;=H^>yEJLiyx-^M{D!k-t?!h!N4*i98&+LK1X$bIv4!8Z#TZBvB-C15 zT6{Xi-h{mqQbEuAT4X3`!Vu|wtPl1ZE_3#W4~YZ0AT3b=sXhdr4Nt!abn=7aV?;jA zs%o$%HY&0?PT+H%6xx1VBaU#kFm~MBhi`pGecmJw<|@YD(||YjhU|xzw}(i>x=>C^ z2weX9f4snLV$@_#U{L8|r)E$07Ia${j#x;gtSajmbIvsWtd#Yxe|3YX^6VX^eTch8 zp(-H1TGQcMKUjk59=uQ6Te~Po_{F}?GNOf23k$n~J_EnhVKG-gvH-&&f0FDI8^TOq>r?iw*<|Y*Tk)1~WyhMn;A?r@!G~!@q z?~*55ReJ-EoI2lTp4miA%uoe*OMsne4H-(UevreEshm{>7diC9$*HL`v$G;@8)_S8 ze5@CJ=ygqgH))W{k#Wa?W`%ka^vnmSOJH3qNAXRuBPIm}#KfL8u93_WM8~;6yiA(x z9WQIB1`2rC*w|QD@g$nvuO^X1IXUsj>q&4+Xe||~gxnDP-iRHenzr_9vwV6ct^_s` z>5ynpR=iq3Pg3SB=ARl85l&JcgGPt{_CSzoVQHz{^F67ov|tUESp{cBH8uRgR`xet z8TJwT(6H_8;dkKIzQQF>mT-|hAe?KjX+A7LWcz?|10s~)3pks~$OM;+ze$S)A{>zc zoSYi_6jJ#N7`%y}3&c!DsZy=9I%pkkAKhU|RQk3m^&L42P>VY-E_jQCNWHqCN|o-J z$Sp0AqdKX(HEB=dUvyW#@XOD)0qK6nK7{@^$Ulf!vs|tHuyCwBQB*o2iJ!`iWnKL; zDB6?v^0U;(RxR}&#rM>FtRgQojk9Md-gE0KJN(c}lYD6#YnV5UYad$P@pMiQPqxHq zbwXuV2(qgW;6l!vfW&G5eZYQzkQ_9KKw27&|4G*5I~g`9Qfg{LeSIJ4^SF*;t)g+D zh|5ZA>}ODaw>k)yK+&~>gtF}Ho8w{ZrN(9v=@qq1JpT+!m}lD%VhEi?J2Qol+Xe`Q z*{JR}BuBid&541?!D`V6vs`peRdb2&xct3cT`0}*L}XH!V)O)PJ;oELn$+avVbc(I z==x___QVU+MI%*eQhUvr@2)P^#UJ4&Ti>QwFhMyy;?b|clWeS!$CCZqIVb?pNkhs| zKM<58JN`6QG!xGxF};WU&t^gMm&gR@7#N7#icSO073iUY%Ooo47S;1**)&2B?BvZr zMt5c)FE)imurm zIlbE%6pqeZJ+A0i?gN>dUzYIK4byH6t{f;thJEnY zIheNnY*_1rWW(`~e!B`ZR(($zWnlG+S|68Z%bzGm85tRbNr8!#bq0D&AfA{kCgG|U zzxsp6+Y2)yAD{N*7C1Pn(t~Bu0ce=T=*-TAuuV`NhKjw!`?<65^LBIZUv5}!k2kS}yS72-Z}M}Ka_vi6MPqmq8X zxUGG*xc2yO+7?Y$NsjoGg0C%@*mUuUJ|DCFDF(tKA`oKmJgX{5_CgFU5IP9&egH_7 za?@Z63-u16_lG1o(1NUPZDA&2CLTj1>iXK+VRJn=^I$4iAye`N@C`ol3~sa6WVy%| z>2KfOETXJGpR)RZgNb?D(G?no6WH?dNO~Fr@r2Dpdnq=9H3y=wPWVhkeV=zY3f~`? z3fC?wDJ>;w^D4m4ZAB-Pc8MLGnbGG+;^*hT`=H+a`HYJ%QG9Z2+aN>G@AcomW70tG zeR?qZcxia5*)miwaQdZHEoetdSB!>kly|xS{xDExC#|VIgvO6c9D>Zr`FU`Mt2h&> zKZ!Gx#+tv4OeN7$hd}BcZ4e-G&_WSvY|t^o^98bOD&;1yKhYW9viU>GgL@jN>Ax<# zAc;pC>6NE`+D+-0CLYjyjFfJBct=1>L*uT;^m}2?UC3waoEF+h7>a~hC*FvJ&WJEk z%DtJsskEf~>(t|)wC8fme>aJ(SgP_|Qbw%#*dlx`0zO_j=9Dg(Zx=@dU*?o3+cIqhuI5N{|O zoOdhV{SfkqXn$}@3kBx|VLRiBvFH3z%boL_)EqPpUOoQSEviOZo%d{v@_8TUh6Wvv zwvKJ7dy_LVp6TeISzR54=negawBD?2&^~|`OXA_)p{|ZFOgwWQ!!^(VwNk)Q_-D0H zWv+y?Gk1cao7(|s&Sfxvxt2dis;nx++V~Q;ySa&Bcr)te8j==W zLinT#DznrmEgo)QP*9hDI5fK>laHw0;0!urlGn4aXqs@5b;r=eRDdb~>YwR^3EK9T zhqyl^bJhOBb9T2ll1h+=j*bqBKO-Y5|INA4e!I6QVecYh-+2)Mitlti)Y#f8!QFSm zGnf(dhzU2Yo#5&{i7-nDL#~X+a>5@ep<|l5jHOiw*9{i9e;@6r{$RHhws>>~m{>@y znzUiXH4bCo!bH}&zY3BS6qpX~-Y;zZYP<7S3BArl+@Q30NZZ%>Ma~J?F7@e;_7-v8 zXc8wOq&co3m37m=2rLShc(uj>yWZ^4`gB9j>^$ zK5enf<^C<=*+D>r_V?)I?P8bb{9ECv;hoG;Qlk&0a-RsfleyE~F}Xv57t!V0yuYN8QUKF_?rDJhSJQdfU#P;;&c71jA5eU&vVl-J2mrDwF9?APw&XMIN z6&g^<$jL=h^5a&)7O$b{)M?pmgycH zT~=9H+4eSR+Tou+uPhG_4j{DW6@C*&Z6JIQd^1D@#jA zYvqvEy-IN2Zvd?@&63Iz5s%w>hJ0{Tr|l6atujFL0YG9HjN(J|kYx$oz!IpKWEWAR z#6i&qS~Fy1LBVM0i@r^1{=2BqHXqhMT7r^VLdrxk#@hs%iY>uwI^27n>i zxVXJ|;QRN`7Y5qej5tqPo{(@Dyx~M)knlnHKw)oQTU%RM4Fad@5MW`!JbJ*BNzQKw zLM|ZBJ3yv!@Y~59q@;`TmmrV*&DWDXv5m-01T=cqnzx;`|Jyec0BOL-cS8p@ULWX4h%<+rj6Ef~!)*$8Cd$9Dg?e$Ab zDNGyrAm_VEdAFyzVGm+$trs}uAd=F<)fJMM+oKlQsJay68QteL;_ycvjxDdR^Mlj< z4Q1{ov}Lgx=uaU19zqo9G~lSx;Vw!^pwblz)YcL38v5XorRQ4!5e7YvZ12gN3^e*# z*jW-niBZSEwAyEB__x0y;ADkaoW{yt~(IuKPj=ENm+}NMT9Dd_7u)T|I+jBXb=9dPMjP;Ua-WDWo5%&yJ9q%WyL!e0+Rr z_}1StJTm?YJz}f+<)4@U>=}1pC%Dw0Z9wlJHez5i(d{Xl%sPx6;FCa&*DcnyI)44d z)*Z-EfMi2>=9>M4i!T=!7r_TlOhnY`<&W?pmN=TsPyF~Hr&WQ6MfAZZqfOzL8D>1`iq$DIi*VdNwm}2tt^Y3SPwL|A|aCMTJmKJ%@t`7~S zXIb=jH+T1R`z~$8Or(56b*>RxkFlFk{$~fz3HaNzhW)R2LUxS4oec;ZWS_H~^ctL04L=exP0fha>a(pFz@3*mc)e zbQSF)sDdoisctG(eUEp)DKcC4xT?E5oU^;ehP`+^K0WxHVt`tO{@F^d+u6xQOM=T9 zGB@6N1F8qbeea#&x6&zz>z2XySIivz_*__4`?h}cT~8feo(tKg2u`}@t7jEDeiqjD z_3}A-_c59=vGGA>j(WcOmu52R1YSP##)s-T;!nLBpG@S(GSgl$40MSrTn-|4B+c`C z6~_StP(Lt|XKxqlYf=W3e7I;J(M=Uz&0Sm-Trf~v&ui&s|$rY2MQdr@+(H57Ll zdvcNndwL*$t{aN<@7-OoSkfP_Qg9xT1vF%YhlRZW1^8Z%M+p%=gh_z#&$b|v;c`xOSAU?>7rZT9h2g*H@H@D+No*k@P2&E$|-pJC;3IV=3 z)2XAQW1>VKP0OD&KqMF&-@MHBTqk0fJd9z==_M{JTt@X;19vp zEgKASy9Me)MoR1u@$1v?kTOje@s~!}16IyS6_fEpLMm_X(I*DJN-48N^W|<6^;SwE zv*>%F6*CRB5tEk=;7aZsx!2T45+n6KYTvzdXM)GYvH!|`M;%V+27X_EKkSm&vjb?w z_<{~O!wJxQ2M3N^Vsf|yFkSIOXj66d<%^+pMGa%>tmfRZ_)Yi27$QJ|hcO6_4i9Am zLcAe4_K$v7NcAJzLr;gSU&koBqU4)MQBr^Z=7=kO7PN05QNC`sLI*0tQkT}|O$_$A^lXYykx#OXdN_;7SY|1yr0*?5pH}y_^Grjt^+}^w4 zxYV_KaN+K6lx%NKYR}OOr?_1^j?l=RGc09>mQtpJLu3u`c4LAz-7oqrr~of2KP@-y z+Mz5&*2lU$g8d5euzlASY{A3Ep6t41H~1)p@-yV+7LexVT6m>gT_3oyo*m8TMCjhc z`}wD-Nnnn8RNk|HeMkQ2L7j~bV2T6<caEmk4K;FWEn%lJbVj~}Li4*c)y*;SZzCReb|LgI(28ipie^rv7|>HcYxBYVV}OQqfpcys~efgO3jt@D0YsUajWr5=-AS}Fn z=pFs#UNClNMq12EZ1c=>s8EO%kA7!v(ZwKwD}9s4>fLgs`r-XY1RCU0*9escOc2nD zKq<1RI;%G=RWAV2!3nG}Gt*qWEA>&5D-S7DU^gH5XI!8*f&>Ou5JvnFzOclgL&gNA z?xo!430SBMv!Y?~RR=<8I(MdnY%Xakg^G(ALJw;Yd*bc_zy)HO%O~B5eS-|K;H*ne zPY2b|uOlu7ki6bN7BbI-2CThY5Fs}sS8F{%?E5n}UxoG`v4X~g`{cm@L6=SeqLAI(E}GA5YI?;ExBBxjTS#qA5WCSKix`euIUaVmhnA zubJV}&$i~w!_5sAd$2MylXIKi`nqu2#p+h0zQbtsmwY1AXBrwgYD^%6XZ{&H%MDWd zHuE=ssKuOz5_GSXfVTo3Y`EbWYchTH+gd-Q^lgU^;T0Q4uz-da+^~{Cs9Bfr z9&(B=!5JvgwmlZVVQC8q+pX= zz>|ziC9ns;O$TvSGNFqVSBeT|-9^Zs1tXH1#ktd?G3UWz?hsz(c7n|`? zs4!{(MghyJhEz8a#P0MFz-aOlTm=+S-5%Hk6u-d~y|(rcrnBT`_euQf>Xi)k_C9U#Z<@tyL6O?U231h6>DdS7&);I6jU5)tZ63(9 z^EamX`llXYttJQ_Y|475SdK0yhl2R7r<8)DX7qNm}mxOaQ%vRO9OJy4CpMPoP+`PCEojZu_Cy?5Mj zdy6x}Mw9J5r>HMlJU(94TKXb4vGL{DBR6VSnVy$jcHA!nyhUzb2cPJU>K%?m zU-uOYeNJG-v0RBxvk!QG%+I}u^5SUi_ZHXY>W?lrp-3UuPkSC$G1$@~q3_v$E`QAK zd*>3RZdOB4KA#(!`MNd~r51(RJp5<$$L#K#_VN*OYxlZrb8pg(1&M^BHiV4TOsq|; z_gT1HRFwX(+jl;~a>8-)JdnwF7yUE*-Trhn#V1ZI?)Nx5ulabT3yEl)yPqsEp~Sd# zdqj;ecY6khb`w5)_b>@KSE@vcnT@x-c4Mj7KWG!CRCfM%72Ek?xX8xY-mF~A9cnO~ zfp`W&H=vW9JteExP5&HM+Y->|Nl zhCN>d-!O4;o8MU=mazi|n@&td=2h}SA8s$E!ltIV-d+rZzu2)?C;r2S7{~h}B2)qP zB?tTaF5E_V1I^loO?AS)6996X9@;j@%l|_oP!Fx-1jyfS_B;1TMh6?AC}(2$RZ~_L zl2U0|8Gb!dxJ^$i-Ox68VydxzN=9Whh(pcr@Zh`Xe);kxz@^hRq%%&pF`+0BVcOZ- zBap1Hv1ywCkh8CUdVp^fI?^ z!XBMfFcnoyMPdtt9KiBU0HjuK2LuEpJb)IRz<%>t3UeY8N%~8WQK5vrwMQ1ckq7%k z-^eCF=e?MpDIOOnW4e6*jNFZLg9%tjjVDjIL9UC)znL{x4#g)pL=0SG!cxAz;+JzU zOYKtNQ3(qQ7!(Y6i(k@kK0YTFqyLV6T}zlJPfZ+c6SDHy@`9)5A=$H?uB~q%H4B;( zvXa)ZVdXQ_yZ&=}y!L~D*Qi^~?TJ`N#-p}uywD4fb5v;eThM-v_@q|CMW44E&~3enp(D0I*;3Io{iQS$73tD=}o;ftOqehNS^R z$ob%$3q4Z@(A=XaN8b*IWFO!bJ3xU)w-{npWw?8rBR{{pY1f#E>y&|~) zDHZJRiN*0Jb@}+|)7?3a`Iwu~*)@9X=$$+_jl{zgv0O{B$^dZHL^(88KcZ|YI8s>X z+1xj>Kn&a8QT+1~N`Pj8NZHsz>K=3-q1fchKYv@oP=jzL)l$ZXjKLc3%h-${k`0c2x9ryC20UjXjy8tQXp?@mk1Iw}JnceU zK#tD(S@PG#&c$+dRNqcfR;>PBMHpvrZRi!>PEya^q~1Rh z-x-WG)v~J?!qf-Vj?1`WxN@d)cdv`sB0}67o0@2RewD)(s&>N~-MW&*?9rox0~u0L zSlI)x@6DnC4g=M^e=aacCk1cX>G=Asz4Ui z-3AdorZZ)woAf9uvUJvoULV4%v$&bAA^8GwC>iwvO`94Uhu%VnmgoEnH1R9|q7U%*p0)Yss#BLwzEUtf{P zAP1v532ul*Y7+$@HLx@sLVwWFB|@X;sRG1dn=@ja8W)!u(+NBXutnxci8dYuuQgmR zkk;tbovC1#q!jW4k+=mCPKe|&VSscQ)bLw*OYMN9bi@UjZqwDvpl{-sa(HFnQajxqIa9`5l*)`|`SOzygaJ(1f6SUl^cB-ov6~tDc z(9$f%H*a|VWj^u zhLm#AxzYu^CT&o<8DfYsJ$nVq_$&dc8j^>`O|Q|5+YO(m_*qjufa|cAp36v7MCfZL z+@O}0mQro(K(oV*rxpmGHE3OGWmqm?-Yl!h(#rY?ix9Vd|Hh*v3o*B_prf940wZy@ ziK(b%0|}zy4vj%x4eVfTg&7@)12x7m2D{&ga0t_-EqNM0qIycq1JJ>dQnY~E9472H z&eBbd4M2@agsmJ`11Df)v~Y3ZONI)U2@G)m*4{9$q6%0U4tID0Si1W$@$g9fJawwj z7|=wKs*tYjA%McvJ_2^gIn34)WRT5Pe9G{~?89qnB#U_fsa?4e{IoM5Ps`GAs?(%B zARm*~(n|dFX&w4hPD_tg`*Rpi)rh9!Aq)t}Dq(qG6?|wd5LCT_)EC-Ru1+|{r3Q63 zw|#-x0H;jlU!+)^*A%M+a{9KmtZYwo!^^fHZ4L8<{5sq|O0b)i2&FfqE%YrOwGb}= zKQna)Jz@I@M6&=eBySJ`!1}^mYh3Twkc)@O>GQQ<6C)U+c zt{bKc4(1* zJcP5yUFN|ZwzL3EH%^==B54iSD{MGpSej|tiPe*tnF+~L;XVuHW@s4?62>6s*FMe_ zQTbj&In zqxh+Ub6In_{2e9*Dv33aAr62!p5z9Vps%u$Qegjmaw;{hA)KN20 zf}{w->2j(yd@<1J!fww21K@X<1wsGQpf)b^o>*v=1i|MLl@b~Z9y)@b z@5vsM;^W^S4^9I>yZuD}i#dim?I(Pj6FiU_;ok-cfZYOp_6Ur)u*j9j5cAiV^Gf$r zx6x1vki&V+&38;QfWQ%9!XKBFkwJ`TZT0jLDk@RtjPD05-PATn)IyRiZUntWK1Pp= zCE?+#und0@raQ+upqxMuU1vz4I=>LFB11 zuNHzf=R3!Re(u+ksn3~zy4G+&d{}C8JYD_%Z=%&2Pn}$rpoYi(=dV{AA3f3u#C+sV z(*9%-_P>ABpZZAH2RmeXZWvjrWV}YxnzcAp-F>9kv2;XRvqqczTe|al+$$aZFRb?u z6^14Gt9(@S2Yjrqo>xYH#W=*qa>3(!-*P*P!@6fCzGn34T5&Av1D5aET9_%z^XEu! zO71y$vM(pjG#$)lT0j?&Rl=u_;PwHr&ZN(>HvW7y5pYR*kRIf|z)C>!s?OHug_P7y zBB~5un4T40=^Y&IL<&MSbpulgU@E2E_4W0AeS;fYu<}%fSN=xRYa*&ew*A>z#~bxC z9NZv`Fe29jEG58_r+xKVxhYCzquQ6ImIk=<+U~S|op|P>Qi~k<6MsYluR~s9my4R3 zdSe&llwK!$CbcFIECk2r%fQR#=7Iu@J`6PIFgHfK-jbUxsO7?4fNB-@64L62$?ifz7J0 z$N3U6pFp!Ti8DgLm$rIOLNi3Bg9#zQl$&0;K@*4mS5-H^8eE*=eg!VBuHe-pqNKDv ze@6QAE@o(Qj)ytnmzZzR5WqE~S3;5=#v4v)|1#{?(h}YD3%t+M5jlrR5Kqm=3^a)`*Lgw=LB^d7-~=Dayl{}yZ$*3&!gL(#WD1b%ZX*~ zNAde!bC~7_Jb1N?^mn&el=O}e3!Suj#)@lHHAB*j@8pTGqlDZqWJU>=9ECpZx za${$Q{h8v;$ut-<49)HtO6eNWPF{RHK9bo_OR}K`<;2E&vZkuGd z{Qm6#mos#aav2aEV+GMq_wIdz;pj*_0Q?J?(hwC>x~R>rSBc(Cp4J49GJIT9(W89u7bPup>f%|aYNcfc0rCJRX$O4w313ubC<@-rNxr;-sf$G>PJTk z&g3&O*3xDAdz7vVn9kSV#XMO;yq!Gr+#Rz8bk!oZ`rky3DbzvS!It~$L8gjtk{_Q4 zPDRbdKV9Msc8hrSnFche{hTdqV(mAsAWQa@O!+{3f{GQ&*)DW04e1nt?SYs<;JL^= z5fKr|G=Xja5HYcfy$*1xBEnaQD&9KRCDY&kDC{R2UCb=tGy1-C`^T+X0)@`1Bkh*q zhQ9{~ofT)`TyT{aT? z){xk%{=6+^XZ%G90Y)!7nJcC$8U>M2lkeEopjK@*O<_5xND`as1c`L8u=$8otV4E zRwO_5PPgRi?o7qyoY0l=Ke(0=vL%|fniK>F!<529#N|b_{G_+S0Kak(0r?BqAHfud zPeQ`Ttdf-skwp!trhwGWF(m?k4jZgt{WB=xB#r@;ZGpgZSnT|TEF3ozv!S_+$me?m zwrKtYB~N5}T3TttuVI|I^w7|+{4J*{B59SCl>kR(4t((4$H>qJH+8_Hf1e+rbO%U@ zA>}X-01OG50((z#QpXjf`rqIMMdZ}%1QKn~{kcgaC@Lzt6azK0rm|8(6y5LnaW;0C zs&?k{cbrBL-sn)%$IPP;&xTG{Gvpsq460e_J6+2U=N$f;MAX#O#9F@*w^R8?gjvDZ zwG~tSCkbl1q!%=v0Wfnxs0~?wX#+k%k|e1KFGZJ-n4tyL6u@}H3RQXozawHZp0JLk zXs!3__XW;Lnd5#THfv6K;yy^h{e=A6YlYwW@b3&R^ms1ey-G%Zrj)5o^_hYcIe&x0SwPmjzOP#1=Zmy}i+5?;wYBo*G zXx&`jHsRyM6TfhRkYF$qyuK6M7qlz=1W{T6e2d&+PmfMTg^_ylr*|7OSS;U z@=oJP2t0p2O`5=Y(9C;llW`Xp^9&N|(gd8BA!Q1nMt`^%A@pJslT?<`6V2p<=w2)G z)zy`0_Gh9%2nLhFll))pePvYC>)S4%7+V2B5k*2oL`A?YB|{p3wB%3&N_R6TFo1%f zBA|4QAl==mQc8CWDUw5XGv^-n{-5{TS?8Q}*7@}E$tAs4ai!4Aroq!VJ;u7CM({kr&ZYWWja&fW1D;arX?S;|NE>h_PM?~i6> zY136&?()soziGwk22sDgn*W-O1rAj2r)@7Uu+JPEMbrqElvJe5$T_z^F`3@K6>6S5 zlgN%;7bb|#2$GbeC02K74zAz00ZA6XK#*HRVTojR1?@KPHfy_?qJsF2>fi?3{pZqMM(`DzmZm?Y^*iP$tcr>w2 zZBEH^Vm+3-)NGrh+m_{c%oL2F10 z%UWi(kafm~JKa39MX}k#tsz*t+NS0uLd|YXt~c_r9*r6qb$6&KTn_hOT~WY+SxmLR zId9TkMf4CnQbf+tOcSQn9bk8a`0auAavYb&iq+koYN2-)v4)M-2b!Sn1~59NXrn;% zorTAlQ2DUTr92cCD(u-B%pv~h1{Ngp^OwMH+vbV@>>@wMh@i~0Kuw-tbVW!xOmQJa z4cP6qIPed1*wO^W?=E$GW9#neNzCixEE!%~Yv$hfuwD)4$S!?|#Ddc>@V0`}U#R3@K*uqdT@h{{x)tcG z1}Es8_O2*j(SaVBq-VdLhe#*GRT=y)q#R_NG}fCRjBWn_fFEf3rMVbSi1gw>q~IJeDMTlfv?;C6v3c7Hb%_yx!NPOnh!^{)zQ|1 z;*Zv2O>{jR_o#9h%U(R$>hRDx?B-E3QD;7y{E`+pl{7VzIC*d|t+!N_>nh$L&VGGk zw0eq9o^MWiuIJ=qhx$qgyNB97c^>PM1+p@K3&ONAGuUxzBda|2Qas9cr=w4vy%gt% z1Ib>_6n59{F(VF=;w3%G!PXoA)~x1imu9;~=Whc;IXz`+CtV@@02ZUxT7b|}M>!q| z`iY0Juy98q%NyOE$<+#rH7hmsY509MHVLFMDh(=uOv-{*-kBSM_%P@KRyBc9FyJ9JSH~qWi1B#m5+!e6$_5kz1-T}hm*imcsGgYA? zO%iKxisg)3m$VgcER&uA1pKLNzqA2dlL3hWpS7~N+;E zBZ-mXBXw;0{Aw@O!hLIO`fy{~uH+>5%1;RCUafDB9?}Xzl)f@DZM!=o`Ps&RSMP97 zV^GQOh_{&cXxWLdEH<*zvg3ZLOtGUBDyqtPxyIm?k(iEKm4kmV=Kc)y5{e84CCJ_9-$4N`cC=%F+F3YK*)*#G z<5~hRH+%RXYyj2f9R%np{u_c6n~W}R07GRt` za8OlWe}Z@e5%x_gS}Ofbi4rI(+Qto527~Z0Co{9hw~b9%Y+#7pi#rM^{?M=3;b|96 zsNREe*L5b%#HpCLun{@c_K^sq@BnigArlp%p(lU^y{E6ndCAtkQ)ahOhPp-5d2^`;(~=e^_rAw zO@n;h=_k-%kCGp zu+7YSQ!pZW=GxGX4|4-@E~>lgRJl08O$Yo6oCJDRZ7k`GS<%65dz? zVV9O@>@vhZ1S?R_w8sWo)Ci%nj-o8Gr4<-jOMha;2g}l@09DP?Q7Pb zr+>0@C<-6`8XFc|t9OJNM!8zF1hwD3f(zA;%&`Qex z@?A_kcwF{o4hLb5ozQ-W6y~*=eLdV$*;gEvU?e3vKv=4Lj-+b4y{5-@i)GFWv#h|( z+q^VuW@&b?)|0%pw`QaF{By|8(NT#-w0W4q{;$-7zxgkB4B~k*C@}~7i#2A}R(Z~@ zWK&=8y~h-$<4v>cAq{rY_ZpAk-Y*X64IuC91JtG^HL!aaDO z<$ffbYDbM82aRw~Vg|pH;$rpv+qZ9*!`Thm-RT;Ql(cSIy~6__Km!XU86s}Nl$J)E z`ca4%>F3Yg8GUKp&C$~a@Ox`|Q#o-W!??1Z(Vlm3QemIm?(F z?JnAkr`VucQy6e!gW% zY*tym<2G17i-2|&oR#03!9py*8X6vc(&i}#Zl7^c?GsT*u1(@%A#$D|svg$cwv;$9BSbv`*S?9|J zLgIs=Al_3ut#ZoRv;YUj?) zwu7esy`eX@yZ`CsSU{iq#^`S;87f7FyJdMvzh3O-o#C4)$|kIJb>W6Px+0S?$6k^(xyuB$sitpdx%yM?i_Z|;gqO!Dk`E~(hL0_71h1kKA$zh|7Tyz6bfn2>2;rz3L!(Y6tQ#ic$wvjq^5<2_N zC}?>%x^`qd)&hHGO|ay|EC|;v%bA|IH^-_U_NU34s6|ip491nK!}C2e8W+X@%4SHZ zi!u0p=H*p&3gI2C?CHw~%4I9;$FqzS)%V0WnLAX4aBtB9FIJvm6)jo$-Ma}0pUO&M zr#lB!Egt41Ru59HMk`_+$U4$?N?%kINM@xar!~;cIPj#%$>`(jacA^m23D*hdc!Z+ zhaT6{FXvW@uF`N-ir%i@?|OYv_Vhm4+GD-=Bfb*;*c?H+es>6s(6N`2HP6dwcS{;c z+hyMmI;eeQ_Ref?zS_^#Q7gCKGU-M#IkQz%U^Q>~o2oBG!C{w}mv8J$=p222dfv7` zBV`R&f8EJCjP$F-DG}buGh$gD5-im7bi>;i0_mHFJGbfqk-EX?hn08)nt zdFlpwwi#WAgg*`rzh)|Zp;TEJnQP3Z`*Dl49Q4{(VoN8asQ5)D{AT#g>*Or7=YPa> zrlT;|tI89@!o&C7c(2uIsHmK0qd;$JzLp0?Y~{mUS}6gtAA6pIxp#q z;z%M;P@d!^T+yQGWYE$5^L%v_j&)u<5l?c=hGdpO;2Ie`Z{ibop535<20!#RCy#x% zu(Fyu!+{h1lYTr)ehR)v-}$!`9YTWQ3-N=&Od5UVsgQ%u={7p~=S3uYWYffqTKM{3 z57YnCsRd)+VNqCA^yze*q>?fTA0(;9aYO#DY$D_=Bqn~OddnFb7`;OrSV&$Sw|^|| z+a~Z&EIdh$KlzV;K0Jxdf6a1X`!}UNK0e^yvqt(0tTq}N8-u9|F@KVMZ3Uq;yzf5? z&UUjotitA}teF4ApX-R8njLRHbShu?CkEORdDoX1yZ--oz0v$6d!nseoII#8!(J=+9`Ny9KKMMuK_y=B18IQJUlQuj#z zNxc8c7XIX7DRU>(I{R+kUp-~P`af;PfTIu-XY(h-xtW0!%LT~<*Ux*(&MN!QLb~&q zB{3~LoQDkIc$4(cl!1jsMGgN4U;n+Sl92rG9z--%pGjid!#{o$fAD9Cx{&(Y{{H>@ z=Sjz=AyUTJc4vr;AzGXl6)A=N8QdJdz`&gJ^e)rzOz{`*baQ6GEakDopKn$9w9ov$ z!RVMSAZ#yj>(ASHiq;2{V!_=Jmib?>nURom_?b;Mv)-D0yG@1w)d9RW)&G98|LuwTe_b&})aeG(z!Z;&xC8>tm6x)zvcTDopbZWRDzuIu*BUYtqRzZB z{p6s(cZQ{eTjo=kV;5MsCVHLLy~D!t;3w5iZdR6j^E^S}JkyQv@64X)bd=ELq?*0( zx9X0Og2mQftA|g;Hhg?It@ibsvjv}DT&Y0>4_EVuJauC_ePcSKQwUXj(L??iYXr{@ z^5|5$Dbnvw6Q25kioaU7ZGi=2;#5JjN@TRpLM*B?JfK;{5jpSUQE|ppXUPH?(Qrk6 zGhqBIvu#XgxU1YfmWk`fLjtZGv0ZAt%pK(?3Tp;40qx$!UEaDzsB%D4%Ov8m0Sqf3 zQA2BZ?>aZPO-I}Vu)pgh;2Yj7(4?t=`~i&dq5@oy_)7pIPEAgNq)8k3^RS#0`x~0E z0OV@vjd`Fj_nv+AgdX6>--TdW%4v4U!>OsN8uIDWFR^DG_dwSvvk9bZP{6wX`cBT6 z81Ry~RScQYePfOBJhmdnzkM>!sU0hnGFu}h+8_b_gi!u)AV*~>wh-4_>4i~Z9 z{7|H_X)%&%q?S}zNEE>WrM9qASp-7%R3*V}SMH1>FZ~BK;-GG35N0|j*rrTxWlp-F2uRL-ed|W?JV}TyU)K*wP3%QY@hx+Ko654W_CMmbrIxvfWdAOtXsx~vaXdeuc8-_T*bE+U*%)AGn zsZPbL`Hjb6#}CIXyD^svAsJJ~FZ5ZRNu?>*9_(n>Q6Zp8&dCte>>LsH@C`t4fqWJ6 z6~Sn+2q8^saH99R{{-~%s||nB`1A8EoYp`wegpFo2LSQ#OiqP4*RcL0Iy*OEy)B0vt3OFb>} z{^`{sZ2pzaH`qEb1WJGz(q{2=ozGVQb8a+&JewStV2>gTPLk*NOGg>2!9}5 zzY09J@)m}y{esv-xs3b!_9}Z#2<$EQwcuFO!t=(bOjH$n*pEQH-JheE^GSJS)(BEj zN=DGpdv)J-&()e=d|)@9dnguo-z4O?|2183h*YD!!kQ)uSWY*~$%k#9oK@@c(i`&3 zrG6bl&|gU7)NyF#yB#;)Y4*cg%E8$7c1@E4ful<6&TE#i=xb+wjApA-WsUYG`BOmf%A#R1nj07e zN5?Fc_xwq9>B$uIyf@`6f5?w?+(SGdMs#!q?P+R8MMmzHcmm0Rsq@E_D*Jp*<@piDVN-6#~@H7`FAE@LCVC3PwQPEAHMn6wG!0gMEvyd+<#W? z)i?)1Nr#?Rtzyf_z3weOlr5DsCJH<+px0vqX(jkj9|p^m!ZY2$AhHmIfI~pXtRYYy z(E8r8)0N#$$9#%dwmHCFSLx&`IK)yic@LC~g=x%q%qZ?Tfxk0YLA+{E{pS0{i>tzh=-u36W0f(y-%`9)2;#_J{_wv1nHJ4j0Uxc8E!UqM6wyyW}N z&imFxgz9gNqJ+B{H=RKKsH6{;QQ2f&o{dIw>=Qg*D!WA=ns4Kj^hYjehV&+6$n*Kg z*S2OCO+oLVtE&qLbLN%=;O}eL@*7H<zNJHdnF9pzG6CMNNM zPf|$=9qawtlf(zNRP$zfdK!RlB1(De#Mx7nmi3d@Xg?k&Sd~+?NqRK+t;Iw6;=)X& z_&)QqKY|zN*Q5B}jNadQZD9yB#h4PZ!P-VaRu-u66E+_EL(p0A_INhRluH%I6jYpZ zRDSUV_#Qxn=lQkiypQvHXB^JF<4|cr&AqzM5Aip1bX~w6 zuQ5PyGf^mA^LRaDa7^btJ|Q&ZnAIxCBZxUPmewH+02Q0KR@`WqAz) z>iMhIcceXrMzq*zwu7aj_dC-}By3+PC4Zq^lvK#TWi7!aiAL3D7(HYK=9iSr*WU*P zl(D=OEyQQV^swAQ)*_czdT$)maVdpWh;rY$rF5mxhP-_4+EnauBZZw4w3TTA#_IU4 z%kA297^obN3A@2A$xDwnJ(tw^dh=IL!DU|44xqg4!8Y2~3e9tfk;-DW%>BaE1~F)> z5VU%Kdb-F;wb4cv z*vlj0Sa?jndXjGOK2TEn+Jcad+)rSKpP9cyJ52Mjlo~+&^LeYX|0kKJFu+w z%Bdglp}S9@iW35GIrkPpbAh;2!6`A7(WO)FnAZH$FUw`7@@#|4J|-dwo?4b-EvqbLFjdCr|+QS;$e^{NA1wd@sQDS0U~^ zsfo+5{*<28osGdxJp<(>t!Ko*_5caLixL+P>|>92YMO#ef`WJRbe?j6X4PM#A?6a` zk-HLB;n=X=C&5fY0+&R?Sq*LNec)ZBQkjq8(#C+dP3EKrZR^Yghr`YO<)M;gXb>sU zNufA4%b*jTL;a%{smGXKo5GoD15TY(W!Ifp%xcP0ls@@vo#s6L-5a>sDIM8HqQ_f0ED?IaqeF z9aJsCM#R3VUC4}anfaQgx53Op72g?p1;vWkW9C3D6w^sZtEC>%>Z5iDE0&jD( zJ(U2Czh(XC7^?r0h&mUxE zxNJ7-9d*5=xi&|9@VeFV%guy+jH-&gz%;#8QJAB32~spk@8TR8xSCXo9WUch0d7E z*SeGbv-!@QWw7suMlF326VN0Q6YF%F)pT?iM0@O0Q7e;A+bH-t=|1MGnx$oD7Y{mw zq(a+9%8kQ6pbYBhsc^l%mp}DwA$AT--AqA;K^0SimC8O4YiVw-INF<6Yie^%3mLdu z^2jHL|CeIV-?yAySMaR@V+Zp!NAo}0jF*C+HU1tOCSy8zW>i&*oom}fxSjZH#Hm*B z3<$hBuos5l{?L~y=Ge?xl6r=A1rs9qm|iK>!Qjx6GmbiZogDe&vx>#J&Db7A`n%6O z3+y)OQQ7m{a)d4#eZ}K<^s04^wJ9)TN|wE`CB5b&5KDeLlHbtZq6VdhLQtIUnNew9 z3vyogJ`)%$_{{_F$hwsAJ|9_|2=cWPmB*1)lQ4-zpjafT)8O8KEu$$=)m7H&2een}PMW?kJsJyk?5AR_K9K?)+K@pB+FR^Zhx2 zcZ_F5Pk)m=F)5dF=CN(V`tZNoUhX~^BPVXVS)b$o^)z=XHoqP-p_^9AzMkLEucvOWeorRU$_$| z+IkXym0WaN35aN6qTklj^Sv;{S&?(QiKF*Cdp8+g+Qp@uFdR05Y`u1K>1G;}^;k7Z zI#1SLZ$SWf~Db7=Wh4Np$B}z~owststGIp?uLy z`&ZnX){};@scAlX5>pk>(Cki86p~_c&!0R+hJfQUPue6D4-0$9b)J>O)M^oofIx2H z`-Y_uD+Kj16m1KA?>-8N5av_SOT(H-q{(VB7|EmTz7O|Y)Uk>e&MLd(%r^<5O(QI7 zy09C_eNUb4yq=eB2|hQ(qie|xSF1SZl}T14UJoFA;2~-C>l~H=U*&{{;KIf$i0K5E zcuRMw&0tuU=c_Gfhkp)1c?0CEOs~`t3MS$EFY1B#1QW7N@I-|?2JC{j@Pl`McHRaX zHBm_ThCkja`LvZuSE4jXK~EDn%PE~;8h}@#~1(OB&RDYDg6?A5Ai`7Qf8-rBw42$f1-5`IpzbI zfk5IK9DnSajsbRpYC;D{GUS-eU**&s?Um1GcdtHnJNvgZk{3>dt&IGR_vYW#mt@>^ zE4buW&#y-QvggWw8*RRgeP#8S@j!havgR++(FyJ9sH$GLaeB)<3(9GrbB}ls4#8MC zES6X&^86^F%a+nXAUJ^JLWgz@kpG^PD6!)Cg`AXF{zIR=r{*>J@WX*){oP=|DM)(D zwa^5N9r!)uhn>55w&(k~4O_Sji#n-@%nP7bM*CcpFVlXjzS+I>Q+Y1cm`ktvKuT=y z(|)u1hV8hR@eo&kH|TdiL(@w!N<5j`ghfC3Bh^Lcv;6?wlqkLC0l z2Qms3gVc4iWWmS5iHlt>;@r94Pitf_cQ!K)wlk{xfsD}&rV%SB4yTJw-e48#_UjFu zWr5bwV#yejsM`xLIEkR`H3J)gCE)ois-JQ-)r-yWdI5`ele&m}^ZQIoWP$gq+*y>__eWr5>l11k?)N`U&aZ7WHrCjX~>X zyTNsO_AXr5v#E1heeD5dfeVv77QvVQz$~+iR$k~Y>ly_X^XoP$blT%)b#JL*dtO>j zc{}}Q@zlu|2}SuB5p}g7hdey?Xivw4XR4rzvsrQ($a%}NYLCgu$#K;InlDrBYnICA zRSyfBAdJb0WQ)rddt5b+dM1d_=Sb6cPAlo$;BQXE6SiHrqZEW7ybd6?R|i5>f$=og zx2-MM7+0Qkf=1^WdKzi>0Z4d1gV-4PzJBbLoN|I_-E^FHpif=mFz09@4UALZ$Yee& z2Pl)rfT+dwo4)fpOFEMVUHgl?@>yv0kRif@S}W3id9TM*o;b_M$*?l;QfI&UX+=*? zk=S4@IWEm76VN9mk4ch za99I&_0D~xA1Lt|1*K4Ig0FpUYU<6FkF4Y46=nnH7})W<>G651Nm<6!bk22xaU&oA zY)y~%k)w|_jZ1a(2b!eVK*8xfodi99*@Qu)To6&D=d{m(rM zhTT6^&wY35Bde`Yil(SVCBnQX^`n=XU*DWusRzNGaUDt)Vmi-!R*AZ*svB`}sP_d}Bs5 z`q8_;+F$%#38U^g`c3NMamTEOZL9|E^gVrjlz=v&hCX5~XCzoCw@X@wVgiU@OVwSW zY>a&)UfqI$XwUBHtACX#Or~$hent z9bQ{hD0gWff9A2yFm4PKlP{N+JU*u@5br8)`OLtr*D4}kKPT+&y|lFm#T}SXR>nC!BVO7J3pf*p_>%Y!e13K z-zvIi@Rz`wU&Wx9^w^2x&SOR5y1Jvp+9T)kV#YJVa#F2|O(vL4Vfx_8(D_n-3hO*d zyjpx86H0i~8`)h>|Abqsa2AMa^i>eQ)+p(sg}j^;tLM5{1R~R>8}bVqX%b@p8)I`8lMBHkMHFMd@M8wn>_d zsfA2{=!g3yoTpN2)oJPBk=7hE*Jxzp>mZ`23GNDx+wusOb^^{oO|2KCI}6EQfEbF@ z!xVWCj)4AmYS8Ui z_&%djy+xU-ZR#rK(l0C_g2UNt0+p|TB7^rqcN z*uWEdGmsh7WjXx7T(Ewf0(SHSv1?O)97 zpR>Ju0ag($EiFDT&7=S(0W8G7CsQRwq9-Qwoz7ur=z6Nolxc3#0p0l!ZtjANQWd{+ z7+GC&A7V1^j+o9g%)RYS^0#1x1jBh)?F+q3h!;+?hc>*Yo&}SqB2$F(_Q@BOt_~L#q}A_#vmcajUCz8J{iM#f+1FBSnB$T)3K;uY?)?$fJYn|IY6(QKDX8 z`o1EAO!s^Of#`=0==NR;ZtKeS$U!EN2wU{d_yfIB`88`P(nVx#0r6G^0BfH+?CNT6 z36lQruSzI=zRX3qHgB%77?Av&6%Q&m2rx10-*PY4J6a2;Pc}cZr?wmC?_IOnn)dK^ z4(!QuJtj8P`NcWwli<{iz@mf>&g}s*)Q#U-2Sf+H65Ps4)uF#~0OvtMZJ!+%C^F&l z5O!>D66o{TyU$`45a#Nn^}nV+X%nb`gpduqSXgi{Sj|h6D)K6J(BttI zej|zY34C7Gh!J>Iq96)&WI2ifINGLEMW|xBwCvBT`c9qDS*`M7pXtaeyMBU-$#O)- z$r@ni=}O`IrBW5(?L1F0KLhKG<&lqL&zF+OdqFh`u~zZkT=J9DMq>&h{T0jALoNnr zhgWFE{N`)}6&qLB)N6L?xkHW}b%&S=K_eN$cpyzI-$}8E+{tQR>#+E;2%o3pbkBXa zo!nLrY8}N8-zE8+*$aQ1~77Iq)NkQm1wZS z=fS>jt+Wv6dCcS525l@#Mns}PM;|ClVFofz)mm$zOj3YutTCuB;B}T+)a~eCm%p+< zz_A(vyE8n}IoB7lef;122_uT6^{QH0_@1zXgM;j_`~VZsiz{4616m9q4HMdYwQr@% zgh=xN`jU^lS5Ibzz>PY3{PhRWyh4WP>yJS=rElKZtl9e;2+!|CY?f;@;4&sDq~~#1 z#KVzZ-i#M_?m1JkTtQYUeBJ4@8`iFXaZ|MSa@8-NE16f!gYS4V+<;HE0Dk_M&0Zul zGC(z8!*Tw=wTl1!7GbN@R|*q;da4$p-LQYZJ0S*PjHho>`X@v1+|jT@ds=wrdqW;6 zjT2}ozIk&yDPc(juv1})#rQfyCg!6y*Tv!C=OtZ_88+Wam&cn)9W5f0o<4n=3t*gy zVXFQi2v1m}jrgN@9;Ljqx1a91I5>qqp-#`2>-^AOW)9rMQOT-a+F2G#RQq+)eM+Hk z7ifFXO^1Nob8@9+fk52^+;TdPJ1&TFyS@rhi9?LTP(kZ*(9Zl7kbVcTPus}gA|4qT z8OD29<1nLeMr+qb7;GKkJ`Oi~1r)#w;>h3_$X|y(9glD?49j5 zq3@!iIdpM2Rw+UHAusZ#fQc}%{}zWNckEH>zKJq8HnaMd|K*_iOYWrF+Lm+&tTol*gqX)Q$ClhlpyJ}ap_HQLJufmpdY9!W;$#S0@e;@#m@_AuTHq`asy#OK!RI71X5*8*@U5o5dxME!FWZZQ z9XquMFtX_9_qAwOEl}_ig3FMk3sk{d$(Ih{f!*<^r8`3QLkkS>PBUL~(l>y1HB8n^ ze@f!;S$vXUP3ukgu>xDi{O*9SkwnA=!3VEobq&LNFKh69fwtojOBuMn0IFAU`lsgP z6N)j)cI(UC*{pukbwy*B?LZ(1*ST9t=)e|OD%VD%2xi0Ygzig;ns!{J&0{Rv%24$< z+MQ8IU!0Bu)MZdh>zRWPflgv>Qcp{34+0kkT7}RCAzJ!7+A3aScZ*;OhH@aaT=V8! zi{=BA8LNXTJPcHMrF{zOv5S4`@7eWPyP?b&P#GP{ za#tC)JEnG*0aX@ml5&yvBp%&&^5XrWM9{`SXk021oG?m3zgLGIu#s4yU(S1zOA7vd9Nq-LoYYD*55;L8USPu2fr#2dw;}s##Z4D4+!Oh30EpU-C zo7J!HIo8`EZ|59Z#byFKbK7t{h~?cT-mz!i+u=4_Zx&u};QWTtcayLiOE7b&_F;H*@#4kX5;FU2-1*ImXDwOE zh@S(Je`JUcIhw~LK(fI4^(_!F^z8KA5bQ!b>i1+H#wyP#d*Mp$3^16g6YVlT0LebI z$#{1o`FzYdMq-aZzzS!`jaP2fgnsXct|2LTR?@MKxsfHw&gTbUXw{vQewRp6m!y3p zNbClmc|Ggtq;Lhg^*>&C7u)!AjXw}$YyjXm)R05;5P0^gv@R<#53uU?7RBZT=`+^% zIGgMPEj(6aUY0`cv60{VJ9}tc?{!D1_E&$H3L>P~(q-e@A|T{|z{seuuw=^AJ<0m| zdVKeNl(NazQ%>-PJA}4hs!cy5DdVCnCKLLBcbf+aXtL1wl7 z%GA_Z5J0_vJ+JqCQH}-}S|PJ_=EhV?xRHErSkOFy&$P>n^2X+rbR8(M@xvJ$nd$m^ zn#;pw>qH=L-x^_!T@8_da%hBk6WkF*W`vlL+Ut^_cDK37EP% zYu73=+rF|qvZv1A8_?57XB%glJ?*h-9}Lqn(X2PIXO+E!-?ptF%Gf_mG}dQ^vL=zl() zQ=Q@KOJ9bZqv7t*zuB*s!{z71i=8oz8GOXYrQDtz7f1A!v1K|p8;waKb{o*#LW48*(6ZfhXN<>Y3<0DsoVKd|rnN!465~_rJE(F;a7S*Un0iMc zigk(qkneKOe)0!|2FfL<%rxVfGK{eooskv^lFsx#gO0f`U%mv<#*%4a4mmig8&iEx z{mabz8F$iq>1i1FJS!>EKpRt(|5?6!&OBfJSSs4%S;Kn66+fZWO~yTErb7ncN?8^e z)vs>|QHA{vz_G**1VGe*mWR&iJd3nQ9qQJ;;SSvp{Fg_*INgN@ozSt>_|RY+Qw9Yz zpFZ+U=e;9#UV{?rxg1y&h)w@Xe_v}M^>v$U+Dcl>H*M29sMquMc%ZQ(v(&S`#O3U( z4!Xs0BGfdq$GMy*|Im4Zp_F)4|4R9x|0EvYDh#Grc**)GJtFk zs*_7=Z-$|HKyS^dnSUM1@@L#!=a*Vq=-o*A%+UNacb|0xZL!ag3s6fPzs7Zy;BWej z08LR~Wr+2CjRX3^RexfKL5$d-g$C)j({r!P`^@Yr#*zcJV1jJrU*AVNgXWcf$Wawp zgoVA|EVs&{pUc&&JzUQ{?YY{0J$RNV#mx<~tTl$B|MudT8dgoPp~o)aPXC1BrRCvSfKOG=Lw%bUEXbJD zvt)Q##HBE*c%*^mfs0jGJiKP0_CDeSqa5#VLjl+RSgu_x zsfMzg$!{isv%uNnPp@tTtP~PLz>2Rxie9MviNr^5Q+g$!?cDr>EpNXAzvjZ3?vA4= zLwWgDm_Gkdpx!`ZdGkA9%RXl>$B$N4u?ZNqOI97gmC_7VA@#`XB}KeWbxnf@D*SK< zhJMDWfNMKLcN4m9yfnqjQ`y zm^|g{1|20kQE%<+$H}-t-=a8&MMNsa&)?IL7w!@aFo4dVUV+EKkA5 z4od*EMTfY~t2HL+kMXUxHnd&(`F|bapb510dB2Kt`0_3;K~7x#a>~!i6xe?zS5oZgjC8E%DW_eT+{i$n?zfa%?`-D{FZX-=3~({yM@fVSEw7P~6*Jh9 z@Yj2FFK;jlYHZY*b?vDbK8iE_>*jTW!PYWw#Y>;~lm8AWX;QM76T;|&NAXTLGUDIy z+vT3l=a*DjJ>aN`CXE*1JD+iF9>3a{m?qiBtFwf-Dt4^+vS{|#V5Quk0YOP+i}oJ@o!^V`0GdcTaK4sS0C#w zEfsWn{JaZyxf?7|k{A9%G&=4`Bu{p*CnhBkLy(ClOzV^|pkX!p6*Yc-6Qs((pRe}x zR0v%CL{36-Jhxvq3si7mEHtgCnfvU)@pgYAnRmon$Pp^F$@N|69YEn^rZNC-F=wyv zw~R7LOv4MjzcC_2ZhX2!LUPr!D$WY}BmDBxyyssL#R?;@h{6~aP!Nz;W?X^)D0TZk zrtaI6{oxdENPx6s>k(ud^ETHRN{wL8ZHWFWnZd}qxw*kNfQc_F>(@RbD<{`OAniOy zFrvYcbN@D$0unKV5bkMecLX3tUQ3v~raQA+=I{~c=S~@UZbSV)Z}SA+28BX_wOjpz zJ8>|PLqC6B@_tw-2S(#imOpyr#TgtD5&{w1K|vFuI`RGh!QuiYaK{ih2?$=?Q7d$V z;B#y1>@Cy%_ckfNA<3x&4=!|VGq`+8<>vYGXJ$=bK~G2@fg$}z03@#W{6ScL{yiY7 z!f%U+7=WG^dK|cJ2NIqSa9?-as-Z1Dn8gJH4P1P%md?!1269tDJ$`;3h8Os=u!Uly^<-pa zi?T%>3s|#sH8s;1A>U;npl~%Ph-OH31uNPna=*>{ejDk0Ex2h^C^ixl0S^b$8t8k# z2SI5HOBnhkAr@FW^$` z@es&mg&4NFRyUCqUR~`!(vjImP;8M|e?0x7?pC(QhoG341%ib|g}3+daM!$dACEC% zy0Re-cr#^u$N@B?;2sSh-^=-nT48+q%(`B67M9=}b}nnQE8z9g=D#fEy>n;Y9E>UD zwIj8)Eu1R`76se%+o<5Pz#q29A|f&}rCazu2TO2YJnu&#*seI|8--?+FK4j*y7f-v zm60>;VDf^;nd@J;$3Jlp2S!}aaJx(uei+_JFR`p_uxzlAsqHp5H*jN1c3pIsDvJ}~?+p+G|F%(eU6|T>dO5MjjE5fN zJpT95&kQVb0zL=$49u{joYPbqE!IQS+WE3JT+6Beh{9;=>+35h1dKTUwwK_H`Shu? zqvKhQVE@GhX%4^3>8C2eq`=jGu%0e3H`oWY=uP^(Uf35tp`FQDx2?+*_P z1FFv!Oy4Q4?*~6$K1m1EHYrJBs8I03A;D1K+?&BS?K92o?K#=m)~2SpnjZny16lCK z%O8_*;r|MVW*=F$(N}Qa;O1`ERbyHkW!UfdoY$of6*7DR=xA=yudTR3baHA=PD#J9 zAhWqjTY?789ac1dYV2Yfm&s*}vaW76Ik1VoFEo>h13HO5_6ZHnM=7=4TG$g_9cTU( z@NLlYo5%yT5KK(K+)QeDtN5zIS1;Kuxv*yOcbveNUZ~`3j;sZ*h5F=5>O%&jmHNKk z6Mv|TFo(`4efh814UN4`4{(nG4|u{*@PvdMOsoZK@tcoBc1M%ow61ia(Tsx>_uJ*!Mc^;7?(@e%-Vg$J!ZF&3Xhm0F!?<`#5e>V)TVMewJ2MT3WhIHo4Fc$m8o| zX#i;g5V?{U@pW~}xn#?fb?<@p6Gg@4jT6jg1kHYVdY#=ZbI%5c0s^AAc~Y8#@ez^K z5$V-|`OhNlx?B32?)}N*kIBL|2o^gX(&8;_EnEmKfyvhU&qbXJranIqPib8FK}-Ck zaa4B9JEzJLtJpJO<2HQuBx7Kx<2((`ce#-B-+no5I&8T7dwR@9f$2`b(c~JRhIq)o zziT|K>RUR%-oL_sHC%QS_*W6?NU=(-*p%2PC@6R@A@W)%DCj^G6x0B~6Xbu;0z$n} zPy$h2%FAlMpWn*{zSo|*ek4$SIw#A{9*s(b1_cs=bpV!3IQjsFJwpf@lr7;YM9(su zc`u>2naR1hxY*XNZ(7H}X)5)iNXM{LQ}bF^Tbp?^pyTaWGBiCQlw0WI;imVJP0~oa z7whI{-@{wUP02$p381Vo1lF;8>>Q`VabP~-}iydu~!IM}0-p(5Ok{7pgVV+N@ zbF!~3mS@fXSNyG;^ufS=Gu`Eyf4~1xMde8YHh#GEA2Q4?f;`bzl(4pm3DWJ>S1$yy zmG2xqmx7a;M}p10X(X&#f0ALk{_k)9F4RdiTUEVfsqkR9)ZtgLJ(M(0jOp$DodKYN z(DBf-BCDDK)}0cxa^<=jIlZ=Tj0yhwfivL$Z2oTngUpwKE>TI zNJtgRF8QoTNIGNvh|Xny$k@x@9DF?}6_Wh2mxWhwQ&}tN$nsAiw*w?M74pF;(&0hN z#QK;lk#-XJ9_Cz$oTwhxo%$icNkXhsCEB(o{&v2N_0f;j~W*OH5R#A?fUrBbvQ=m2e zXN?;9>qv@`^vMYRX!KK(*E+JtM2*=0>~x(Y)135j`|HV5QU3K`k+P|b9!bk>pb#DR zCkzTRIO2@|EE*eME*WklgdG*HUvA7U_a0=}9~lT3d^KYX{rJDmr zzU(Kz<)0$`JUh-F%740zn`$$;6 zXmGj5NB_U?5w31ok|y`oG@}0JPQ8QxMNG-w$o63mtbgCg?-(4F-izaBX6>(GQkjd! zj#B=P^HLByI<5B2KUpAt(8}%mHl(&gfNthXH_8VEKOT-ZfwJ3fp(660@bkP znqf<>Qig^R0$JP&cZNs+|HSIW4+UGx{y=Snpm*6(|J%mgC4Gk7wVnIF2U!nr<^S|Q zQL^*tY*ArRGe4L|_CGrbkSR-ifBru!CB9s6D<(F~O-1T?XsSeQtQHFVyGDfEO+98G z1%g*l$c877kZCGCO@)!6lRc2yZPHWDGEP}ebxc%J zVD@ds>SOTgu>O10QAUy|b&5J*AJr`76b8=o7>&H7HAlRELacJWd=A%>U2tlOgQl7NyY%rqtd4ex8NRJxZOsS6r)^KXeRx>R!MFCOnGY0FtZgX#&6F` zl5OerO@}#4Va;-r&eN;^k>ICN#RA0yjb zyKnHKnSBAAsNwSKYo9?)tqc@KCRyOvP)m!*+&=xKkaKBl@a!3{+R0jHVyn4fr#v7j?bbFZKy&z_aqRL{|c#ltJ}H1XeIQ*Z6TS7nNBm$9S2 z)?HA$Z|Hk=MGJRYX6~dN3bF7pz$P;wfq4<+XK4+mwuL30oX3~*`0ZaH#dMjwZzEK6 zE;$woxmBXUr{4xte#n&F`{$0R&KW>qQNj){{FO8VY4!X+Ee_bhWR54!j9F+Mfo!dM zI8k)ffS17$G=n+}umpprz(F69@;w@8Z>}66E}OWPT^c`lo}+@m(HZo%-j7#y^tfOV2k-p&S|hdMzk;s znZRz}za5Byu7H|x@@Rva_Y^g=MJe8fdrex=z$lCX)J=~f!SbgsifJAU9Ua5p#@R;G zLtzw9e*EZ>8rs}YQcA#^D0^Xef^O~tdK&M# z%yn{;8(shy*25Ig6vGoAKz0Hau$p4>T#iRgYZI<8N6{i!qHYdjw?LP7cFCTu0Xy!5 z`4>id+JqratxogfTJJx_1^lEE7T-Cemx*rK{Jb>1HrP`$YzU7e3=4<=J;7fwJVyDd zKVy~H5O(gGLmPNB+(s%LttU_zQJD(J&3aT`kk&5c?#WqsBOcTx;un+szB(2cx6i(d zg0(yakl!n*VoVlny&jUpS;!ltwT{;KjbEZwQAgSEgAoK5(0le(7`wNd|77;T<;lu3 zi+;)snO|>Kk;&$Sd`zN5$vwrGu)kh%wQh`SxJ02QaP3KT#!K`FSmnI_av7#vd97E< zV&Pu7Al<$^W08L{!B4v#U#KB;3!4y>kW=*;(o?=r{)%7XI^^1 zCosC}?c0SH?Rar31@QuMMv@kR7SL>T?EQPWxiv)LBr=U54=ZgDUq<$ma6vLTc)MkI{s4TyfIY`PepPDC0Bfby5BtZHcw(1 zb1x|J9K&nhyRr0@WH{gW>F)0}A@f+zbF0^(i7SID%6`%P>ydRYjsXO~_osuR&kgi*R z(<>6i@+%5AD^$Bc&&iSItu@aHf^D3eQ)v90D+xd$xB#+MnEi@eF=2q~_7f?lE3QD@ zQHr4YJ__v*zi%R?M_SC2Qex_tT%UMjgfUWOW*I8>ZK2#MVPYf1itja*s0QE9`%)s7m-ttpd(YG4z*Ol;?riTWrKVEReFe)PTd+S&|JFScpG%eDo(EL;2zD}R{{qeg* z&Ik;#JGpnA@;l1h2K^DPK`9oI`~3DFK9aUWVtuF-f{lYSf{Pk@XqhWjy`o4O+f%-i zDNb#;iS)u)$Su>0L*cGvmxN)H>NqN};)-!Jt4>m~Cb1xhm=mS^7$3H6y(DMZ7v>+6 zfY3gLwvGrnY*<^{pHhO(X#cG2fZ1#w@Qx;PRukb9*BjFrHL|^!Q2uIC;P0=Yb&rWt zW77`3u8w3>%b2^2Un^ik-uIGV@A*LwdAJZ9Ampt|zQPir6!2Oi&6?jlhG_G$9?~}g zm-aAik7Vqw>@pyV*|WfV*}`uPyel6i9$lv2AGcT>8swxVt4pqH(Acw)W2ax6GLh5+ zl`8avz|-~j4}UYR!0ZUy1&U_IkQhu@9{iHGN?^6PIQqSWO)o?;8e>-&NY-%r)C_un zJU9N#A7558fD)nvf0!>^tnTPzMT8Ov20H2+Pfd;J zOH^~5UfdnQowNkTG^CRCnBUtCED5&$0G2r!m0tvy8tF3yhL3t9 zEd(9qp{3FOE?~^t?w4>C^3|CdTZ-sUJ-rQe_#{BQ@J>=}miffXaj;p9)UsdS6i(D9 z+v7l|kM+gPwCMse5Xxy~o{7z|h1HHJ?Mq@@qu$-1xR-xLKX?18MiH&_s_`8DETGXk;fQRg!^%l)paqX*T@qykh9zre*&g32 zA~U^kK37h*L5wO)>=J(!0eP2BO5ml*JWC^%7V@suT!%qD8eVbJ=GCxrWnqST4q81I z&*qL1#&0sDA-gqi5Ayy|m$tMF0=(4rU2>939+&ofF;L3hHA(21xys?E8yT)Skh_js z<)`)Sgik8|0S@-<9ZfIDu9*MQP6{;gm9u9A&F@G}E+e`_P-Lz&aHy=ahX7Ee020Ob zTB>FH)6o!_i&jOSN<#;?@Z`op6Ym^;dy5g$nQ4VCab)KAw&xJRkfZzrsVdV^ov%ihYcQ#AbRXS-#={%2Rz(mt*@^)CEuG7;N>JG zowV2LCM6}Ma+awV)rEUr98SRxbPI^YSebzbvP=bqGx~>??J4k*9=V2(oPY22C`3QilTZi*i&bPCGjBz&-5b zt(=4aCIYDF?RB6{(+a`vaN=ZR4Y&-a(jBA8{&>f9RSp*ev4;9)`!~+;n z!EXxd)V79yZWA7SodrUeYQ5{8)v@SZn_l#wKXU8ED2#sCo0L!WrF8jxw)suB zl|i^TtJMJfDLR)a(NC-|6kvqrx{RoERi9s{vc&9(dKnM=K4Ngb&-Wx10Nt1JD<(PA zLORr}L4QWGcf%<#SV(y@Xx{qTzCZQST-{Kz;^Wv|Kruzf_bcb;WTGQfRAhc@udTh@ zG4~3^EDQyj1fX&+S)Wy{HyfGQZ1~hHf*VN~1@p;|q-E%`B_vJCeLvKM@YlXb<=0B7 zsI(cL$|EraFk!AS8F1IH;33tur^x&TGA|F!FKw%cy6riZJKr$d*I=Z^?bb7o6gnJKwsMY@G9(yyI3v?u|S%cl-Jq|}Pk%xr9%oEER%fFpz=F~n}=QY86e zxWlfk!CdI9pizur+yv&i>heWlg!fYW)W0I{o2?8N=h7ke zdjP$oqf~fIXUvryfAdaVc&B!@Q8sHs0-nD5mc&v?pw81vgKOjSZ?E|uMwiP@T0I_1av?HPRxrwalBsx_fs6372T1k~Q%nm@{f+N*aC38br9tEW=DMkAb6=L#jwQl1W$)+HHLE9>AmuQsh)c)8*)0)KMv79?EWCE892`-V8WmC_Q0#;k&oqic6yCM*4!ee+vs!G40P*XYO+g9KTcX zHTHY`=uoW@&gxboaF#r?*_pJW#I>-oO7vtpBt0l}7?S%c_oJfY z`dQ3$h9gk_o>sZPwPCPI6l5Waf>~a`jI=xLK|lcwS=7cb-zVr5xLh?ST5=8(DpF2U zAf8KPLaIq{_MG!8n}f!Qz{tG&`?tE*MF8RzERnCXB@9;y61tO{Js@#@x+QRL@+Qtr zdk!5wm?^i1o;8eOb(@Td%~Y2-4j(hlG2}J~ctyUgwoO+@6oDRzG5o9dPtx}JL~OF^ z(|(d?FjVXor>Fg2S(Cj7V&G13oFG6hgkB9E4Nu?p_;G24dyqdf4mztjD(_}LOW>p> zZg`tO1Z0{R44w%p>Z_E&{;9zOphv42q!E%&=Kx2YUp8oL$s^q)NGuG}g*UIRpV$nt zpe*2XH`Tnf8=?pG<1qDfWAlLc5rK@{0J+SUiAdfO4`1*{%y=9f^#>BAvY{KnNj=-5 z_@5K-=Q{2x+D=QnF^TpOQGZ^rcmhYQ>PayP{guvyXoYa}KK@pGY_5sG@U8loV7g;| z6StEx;}pu6`^~erldK;iH8|a=PS#k)p~XxHhODiALGn>F&h&CY-`QY9U*}VcdMbke z@-@Qc#>aLscnL`KOOqjdj5v^C*&JldE%6+g!DhnC9w!s_r(>u5sS=zWZ2~TbHWU3N z(h@av8FRbUKi2la^#ZDOqG9_tE@kJ-y9&sy{yq{+gIR-l7E7-y?5NNK&fXu49migu z#1?}&GMN7(kum5W^QOW4j5aawtWXd3ha;w(VlXaH!M^8g8OaE=0HQGd;}R1!!oREv zx~p8irSJK=L*Tsw_=eUKi`-zgh}ijXE|wj{x%#y>0KlY>kvF@G==f8@1pB-EUPcW3 ztL;WW>T1Jr6o!NsoCCzUeutUKt2d^g>ht1O`;8ImUS$1wABuSOeX)be!0@! ziuADi3^8F`Q6%?#L+pqFp3MOw-Qxeg`Ky6|;8+>Jt!O#ynE~r{%#}q+yNV&XLWv z@+DTdx#{p*+c`d0TJ`8M8x}MVI#-2Kis;@kGKZZ#JcFE&=;8 z2F{!2HHX$vm`KAoKC{$jL?|TThWvdMvHF{e2-yC-cW3cffp8G%=nL4~u84e?Rp;!N z+cBcDwJ!wC1`*xy+!$C4BtWEr5@o1mm|tipGorR}#r&}4E3=pd0cS-N9`QuJugK{G2asYmOVII*@Mt*K<8_shdR| zG?~qMrA;N`Tsd1!l$d{uS=~%I7V*f#m0n0T@PaP3a=trgu5vG3P6RAe-u7)H3tMjg z{uoqi)*HPxFO|!((3|(09H6WrVAJKE;y*bDV<(g(4yQ8=jH;MGqXtfFPSj1Ip7hGd zcP2Ax`8@2P9Yton=R4^fT`fd!-)mMj`zX?X!DeKbS+yCa;ILz%R1=Se46<`a={(qQ zm{3(gs^7A;k#;VtBIY@%@*VSP36lM0WG=pSjQ6v*zM11o7GClDeyzaAF#Xqancg3m z1-TY`?)`pYZu$NTo(-W8dRl!?xKlK@JQ@tu{3m(?`TG(0_OmKoKm#E&hk@(WwnafC z7lj8>Fcaqb@%_&6)emi4m9PMsvM|V2>21vQugv&p3Y-xgBUjSIE?IjlTa5MMH_L}4 zCJxoU#1&bFoH##4Yh6FmYIl4*I~%J(%ct3Fhbv_ z!2RBouU7A!3{4-yYD?gQ))>&hU}wV=mMtnaYZB*wrH~d*{mfXBSA#~^TdcVUT8FN~ zvqaY$9U~Mu409FW)>dmUqOfNl{~i$# zo*G#kjNulEVk%fK`45rC!^+T5o)-H$1)TOO7WSk+jFs69#SrHDDl^~VH8-dCfxFQx4n2=ri|jFW=Yq925l%7=&TL1O~$>LOvoI4I^ODK89^J zwA)SZPEJ#3YTR#lY(U_KQZHJ!-V{Ws~rCee{+lauoAww$&&2>X;ZDWy$AopU2GDdS4=REOLA(17pY>ZLOa zW3ILl%@XsOR2}E+=f7YTRwf%~aDK10G8LqNHt`8x^G}J(h$v3p`+5HRriIWN-eATc zGGPYTFLnU&bMtdi7+!l7%~g~<8V1aJk#-uO{VdpC8A(I$ah;v+`7m}rr!M(MDvFA< z<=-Hxyw+T1zZFkdd2-9Zr+Q(7EO$`}H{)Fy%KhFx?MGW(n?H7TVgV7J{8S>(l}tMu zL#e|juXmprfDr2n63&5upBe_YN~Is`r$i2S@7vA}#dxQMnYYHcCl;O+LFoU+p$DF` z)T72lH9EzrWapoPp$8QJgD3#j4dfx^2gjEyrf$Fb&IpZPdZPAiV+1wpe1G+oCsRZu z>5b&1N%iNFt^82H=k`PUqGk6_xc5uDqye7_L%Ugc_>Fj$LIxw&?3n*;(tX%BRg)ZN zet0xt8Q{rUixZ7yO+t;YFi6jh9C;|&eqlE}%-4{CzUU+2u;xG7N#`$eNmVZNYT0-) zTUWaRN{T!@{{kTRg9_#EEE19&q3n-Q+?|sJ!S_#DbywT3b#hMtmayzR}pePhRp>esg=O296G*PVfEs=}xJy^%u@ z-Yhye^_>!*f{>d%6%B5mc{#}EA>cQFt(Xm1QCQ^f;t;BhPsx(~WJ5wyRQ(1bm(aMT z!8V08T*)Q{V90;|xA8b2gkR-|_uLQmHBI~ckG>wYEh*OgsP&&T6^r47F#5lg?^nLh zJ%@ig?|-q}Br$oxR4$!$_?}-(J^y6LY#)lO>@i1lhj*0F_&>-1C~*kVK+0&YxvgMD zL4wtL@EO^_0~R93MRH8K{_jF1=sH=sdmeG)pjOiQ>w^6{wT&8u!Kypm5a}d5&r{(Cz&Wh6@C=fFYf#=SVb1bCQ892%*cj2 z5~m6Xw>n`k5%?be4^TayjKgGci`cL(e&VM1w_h-e{lAtfl|{C*Wtg~BYUIxi8zWx- zl-H+1c8nQ+OLO@`=BN--nx3+A3RcTpw>oo0h=<}mqIXZN)>7~^rq$?%Q88RKGq-6I zO_O_ms{epZNBiFONGO*x5TbuM3n+NUb1j+8PTC};bm3D<*SKoxE#z} zq(4wCN#yOlwR+U_RG}z!BA6JccMwEQ&6IZd0sW{IQ0MUeJBW}+lQtMR2J%FXJ~?Y> zp{YvPu$RNGwER=;5aP4WMMiCWa<+D(>KrodOlAR)zH|D+^tVmD-sQ9yKRh9&2m zCwc>Ng8B|SL5lWM+?uVqs>onr2O+B!hWs$I+!HSN;PYp?(P2^iWI8>?0b};$jfeD= z+1Xt-s*^eQh5Xa1Wvmh}ycWf_SU+lgBG}8AM>s=n)r4)aVov;-5xnzM zY}*hYTfB33ViS;Wv6vq0Li>ovk+8Tne##z8gW}w&bUCFBT3$8=vsZ|-Z=5`y= zuaIV1*S1ew4jeHmED@p)I&<-eC9Ou;xg8&oEH+CuS?&{Wt9aX*Kq5rp3#$tSMX2UG z_z$wk=0X;`^uY?YSm#}qTd;))O`o%xFrWBJ2^V5 zDtPs^;^!;H55)DR&P2jFp&@TSvm)^XdH115_AMaG7ly}x4ypw)gqCzR`$rH(6*Kg1 zsaf43YXKB%Vo!Fi*Nr-}+vSWC)L*L&{GKJ_G62K3fmuP$mfG1SX zS)qNi%~tC2-$!qE^OIFgS-59U?t7DYO#4O`u9mLmc4-N+8=v#AGb|1Zd9GBbx$kI9 zkxXe3EuDt&lLC1EAIKW2Sr7cjUYLiGwdO_F>RI*lozD}a8%+?ql7bH%vkM0I@uPSbxV-&252Y88(VTA$^TV)vBM zgSs^CjhA#p;IveW+HAeew7k_gAY}C~=F0SL+kKPIWq1GcRK?*Sj^vH^Fzx*ZO9EZG zxwl=mb1v_TsaJ_PZt?L_ooRDx$9~tG@Lm#%_XZ@L#TvOTalJdh_qrrkq7%PIqW2rr zefBVJuFbie{g9ZuRlq(;wwc2$Ugsp*in3n?x7M`MoYPeOHDVONv|eTUR2~f;b1)I$ z;7)_yel9gd1oYb4mzsWjZM967n@po18P2*5w--bXHHI1|B8&Pc45g>Qb}YP>`_UD3 zF#WsTO|I4pIwlDM+>ereg+oW;4wkEk3ipxx0{6Y%Q1{;S$O$L;;=Ns3_FLb$G+Nm@ zDGGk`J7z3t5524yT(BhdV731$`o&+`8nchXfH}EVc<+fN6Ic)58n8^(e-jvPZw3*M zB07Fym0ijJBBX?^I@~+ydENV~%A-*~q`(0ZAIh+o>6Wn?o;p|BB)TF9fkr>&kvR&< zia5bWd7X`24ke$}IhY=*&!6LPx(GO?ws~u}yo+3BuyJ|8x#=jzXd!g?kqLA;q(6tX zQ9s!*;qr^bdmvD=_OQD8^j?y&>G@TO9AJ!A;+hvdMO8DEIY!~9E9nOq5l(hK4X{_r z!gz?{!p7t_A8ax;BO(vKgzH^BzQo(Nuo9}bFnyC4Nc1QSAB?he+HKG%j)Vl(#rGXQ zmacj|#`6oZO*u?gASWA`!XWG!{gn_vP9g~q{}&)zqSeD`&f;pPu)Y7oPiNaKYNAB; z0X3CGqSt?vACH9!9J)v-#MunPm|aqS3K1X@GUjTPO>=U5&QAS{45i23N5Krx!6_W}{a>~j`Y>*Wp_$tQHGS=+S19YNntg>A5mHfvarw^Z&CQl@*WZTzITS*6P zym%9^>I#SYfEERZzn5xf_OmT>T5pCDyN@R%Uu+NPwBIl7xes*7?+1!~g4o&|YdC$S zL!7&3BDq&Z5hegS$-5pE)nI(mtro9%GDz-Xh#;`X3tosa6| zIIE9k0g9=7uxfgyF*U274Hmn_n0JaCx7qyQw}kGm)AF{b8CN`^Te1-l%RFgT%xRUkEcaCqPy)JoamQ|u?SUMlx z1iiSN@Vp*6jy<{0(?4mtB^wM5T@jQrOQ4oC|3dxZonA&!(dGv>J4)rmz#qafS$&Y@_K>D%l4v96^@V*#F{FT_!>KR4Zx^M8N#% z%8DC|`%^U@6ncC_eNX&OXJm_ME;%_kvfKu1{8GYUfD|fD?v13>-S+A1+=9kaK2aZ$ zG?2`UzGrOgeDkzI;c2CxLn4aJ3%xlom53V7x6CM5p@C(6X^<>?0S;5>iMXF>YpAXO z64fS_j3<5z=*g<_DpCv( zk0(b4*V~aaCk+$S*At&vPSgv^cwJO*?`;oj)2)yqQ{Fw>4u2m-%1Q`aIA7M;?R|3Dmu#fcf)kFMD++3vqU-sS3+f*ewfa~tB`InjfpXI^9o?X*G zCT`SRhC%s{Y%xTT$^0!yqD-P0s$w5{vSc168uh5m{;wHQ)dsOX#>q<UcAB8vZh>O;Hhg9zqRM*V)$i~2(J8>uwK)K z@hLq0D}sE^T>zCq^9YVHUo&4HFOW}Yy6@2htqO60o`z- zX?vTpznh?G$J=-9cQ=!?*ZbRkCv}@mgVM`&XVMB>18mQKl+>{$n#BPxN&3N>Vu9qb z)P;{>F&y9j;#KY}FR`?E+aTA@TB5H9@Kye(SX{$^pE=?1IY ziYgk4n;J!K{OXXoUs^~1CGyNIm69&4dK{#@lLjy;PhU!wi)Qdpi~2rg=tccYzbYD7 zwoPajV=1j{OX_#1I~pYTSz3K?eAo-TXgI$=Da3g9yu(9n8cV5e!-lO9p>8smb|`H~ zKh~+kJjT&|bo}w#NvvGSBgbe=_O5&p{?jzNaRO5%ff#`Q7Wdb*8UNUzgkOc(?E?)7 zz`k3Tjee1#l($X|Ssrjq?S3ON;TST!m>4bC{ESF9 z@-cG{RCZdd@3}eqc6}9>92p?pa?xp%vw-ydGn4CMsI$c6*ioZn@ z=a|5>Q+9Uon2tnsHJR!2fenO4PUO}YpO73E!MO~k|7Qly&)MDL1KbAz=NG~meX?}j zUw48$IM}@(>0w9y<1(>F?%OQ|e0zH3@?da^0@$i|U_dllpLE=R1F`jmX(7p!SE5GM z|NK?Z-Fm3;$xq^ijX4_;gs5_=DW^)j_`Z0DDPPn3rcYVxllLa%9JDmwmr8~ehX(nU zoOi}B73|vj<~HyMnSMbuqlloEaC`koi+CbSZW;XIu-yK@R=ne&Ww&MTmpGw)YW`7V z+Yb2Vxuz_PD-lwn`(P7hZ>=WL1X^%Ij7!jtN?}&inTW}sq9 zLy=I=aS+<)%bLcwAoWt}*frCx<|JI*CDHWWzUl6+Ap2yDz;bA_@q5y>!@%&>d7h}?q`Umt_fKy`gO;5Em zgS=5^9H!K;DmhN78@|x>3+8`~!P)gbIdSFB%P$_I*-}-TT>`R94=HI2Uw*Kc+077N z`GMo9@?bH)lHuN6`9334TJu0GnSI!VBjNG>yUBGtn+QT$y569}!=>fJaTi)f9mA{9 zUxI3C#$=3}&an^vS~^D-r~(K3m^LI?Wk~yU#yw;quK?(N8c9E4EuvZk7xf(83b3a8<EBR?Mp~57mGWT8Q$rVqtR4X3dEHey^z|+jsWrSr#|7gf)5EWW zGZyuVPnXwnC7PETN-;=~YYP&Xs_H5KHJA~NQ*>vlxNQVXE<`TTh9eElb{Y@?9o^~Soete}){jLIM|>7|6ldRE2SSiJJ_9HH3HQymlR zQ8^@ydmu8NWpwNHY4gK)B3(rsEzhP zdru@E@U9Bbe*390(tvqNSS(%u4)B0)s{QA!vp*)SNj8_yi*}D6`%0pG zgYW765M)@Juou*o{hokx z**h%$iD~1P)0$QP630m>Q^v{e@?MIIWP{pLyGyE1KvGtl2t;j>keO{WF6C{L5+dJN zK+xM}FO)-{A!5L(f4KX2X#VZslwQ4&ktfqYcX^O|M_mf>L!?i8ezv>aH@vKq>(k9v zz0CQ3_4X&}s^W(~c3kR43jNi!tG=ZcO05On_?FB~9>#M>SlQXP#+R!Y%w8gRxwv|4 zrV~F#I(U?MPS>QGLGa>2h@31Ny>*Q`0i@QBTJ>)upVM!@sctafzLN`>LCB*uD+JK3 zFUG$;QAU5{!p?vica_1@3rdE4Y2^XaNncQ?Ci0!#lYP0f(ZCTIdv`qtddm^IjfynC z|FAmW7~5TxK1wuR|LlBGd*GrZ%G%k^Cwv1h_v4@;_mz(K8)r(xcDr&L^=*V19S%t!j*b{J z5_9M`592Oml2Di}Q# zIgd5)Dki;?${Hl~`qq*I`dSyq^*dU3o8I{se$t1y%0g(jp!-f|`A8np>E>FIe9)_( z*tqo4kM2C68y#e4m=*ngJ&B)GTz4bji16uH;H*TtxHxmnc+O8m0)7iGynI{=@Ce5p z5AayPVf($=9*4>+PpKc%4+@Q{778*1UIS=VlG5aX(+D9GM z2FTUN+U3cvgqsU0D7R5Z1tlYD-fy|kny%S-R`y+OB>a;NLa|Ci9`%i!kLX%Wp2Tsj zalj$QgqAZ2tAMA9Wh;p$r?n@$7ziEp?1pcU@sT~8j>VTN4-Mlq+iP=4nLNYE609Ab%sOH@ z^-|?DbT_Nb>a+<4p(nbZELvDPd7|LEZ?_xcPv!X3^!5#<-kyqyJ194UNY^^zRdL?))6;(u zAEPXRh|Larl~m}5a7JN>Ez@yv%`mR0LVF))dJ{gAIy;+p6Zb<{aG~`|ZPr)JWs? zT8Km8XUUqi_D))3!w2xn*Ws#^{Ir0ZRo?4G7lJ`P(>b28N1v*f+{I3x{apPfBBW_w zJz!FwCr~g{z&|SCW!A9Px~?3+aBwaMhV$XJAIT$3r41Aoe)u4J)!Lo3#x~!gTyT50WapXPM`Ny*PCoODjv8G zcSn@STFvRimxa8;Z~u2ZopjTE3fX0WYL=7)z1b^+!Gqpbi-(k2CbhzYY+G!O%notA z{_=~&wTZA{f#@gM#~B+w%$B*g%WLj_RwI;j6d5HLT~Sc?5B-pg1PLA9Sz@-=o&$&s zL$H-fVO3TegN&Ndp($;O&`D1&QTx|0rE`<#&V8;Qn%!5kDa+BjD3**Hs4J~;n8G2@}V8W_$f_`>p+4;@9y8b^-~ z-bc+jrj7gtRQDArK#ZQauWx!*`YvCQBVK~0gQCe<#^PZ~F0s$zil|rD$F(}eO!&t_ zM?kWWNcab;b~y5G6~nFT&@*lWYh~n}HGZ5>D}fruA7^rZY4>TX{{zcfZ|DeT@iux-mw^{q61(x-w#! z+l2S=#(Zhvm12HOd8NWT)lwXmG6B}!*#eqr7H*YC0R zJ7!ufcGNPi3Z(#}?aDYATqtaKkeh&_)jvN5qFYtwXL*up=DmC>WI38!;~sV+ZU78F z7H6_Nn&@7>`R*aPn&GOO|NM{ov3K73uk1wk(KuIR&Y3OhAjY~nt#z%A7V8uP7fIf; zSN*-_oUc}OZyMpy<1}ygW4skR%-kU5=_&F)03f!z*fTXH*T*HPmUp!u9^3NfxOJg+ z8}U#{vkB6yo2%(!!Dn^;{6KGV8iHnX9 z5*UAL7B%pqDEOm|7tck2)#Hhc|68*;uc`x6t%tjd{9$#c%z%U3(2C6pM`(L!KPf|Wu9UZ zcs{%dhc$G#gDb0IMvt|sq}<_@(&BHkn|>MWu%vC?A~?L_6W8jL1|w7m#HEH$;pywL zZ0Jc?QdD*G3ncJlBSM}{=lCmU@cfos8#8tEzw6G#-Go2|JI6$y&I?0eo*3B<1$BAw zK1lIq(t3&zIOq(U%sX`==MW%=O;!)P+2@iYy&Iij3jSr%F1h{GQEiKZu}^I2vuJ3uY7IDRHV4NdnPx!zyGh?B1F~X37XjmmRf{?Q=E_Qi4jz*O0}inqVU$NQH4nX(r#zgm3A8CqDn>-fo0w4Lc!gx*-gqp$- zlZ$SGR=2Pmkf>rOSvF+?e7IXcuc4~GtPdAV;crtWh5?}PQJkYojzx~f$zV@P!S(VT zoumxt(~%P_uA`)i!iC-QC?N9nwgr3?Lxg-JL@# zB@Iek;oAAbC=YGJJjy^c3=5c{2J@ z;7fT)n$c=!MDmn!`Z(DbEp=XoBvQmt>hJKy&@y74P}KEUkRFi^RFcy(R^lY32*jlm zEc_iQd$0B-N&J1u0ZuAfEA4x8xfwgLw0J&tvxKjw)Qgqz$+z~|PtqE4V%h0d9fV|& z|JsJo!I82fgSM4cF-OE-q{F%BcJj#$^uPs1;x{Ysyx9D?}g_pni6& z+gFxvhEX9O)G{#flILcQZw|NdrMj8@cdi9%TnQXB>JG{pJlj56VP0Z#WA0j5aO*pH z966lMd?V<)*obhsiZiyXnju{|ORv$954k*_&T)kqER*6!UQ_q$U`xAOzNzyo!<S_B_SZalw;-`=}WyR{BzHGjIxh6!6lqLm!GR!A7Cr~aohq$x}~_>2Nf`&aul z?Va)We|mBLbbmzejH3fJeod2EC6{K3D&DI_j<@M0sOA$i4@z?#L+|X^xdM7;$Ny`X zAJ~P7RHT^w+<_7hi{}!V-kfFE%Hu?|&g;>&ptLmLynoY1BhnA&`OZ9CdCvPv1H%9u z6;_rFaq%lDjnm_oim2wZ`3-q398@*UV;k8_fKEB|@sqFFtuU$>KSiMl& z+Iy>z6G~%L&E%`B?*>r!a#`I^)?GZ(`}H*D6^ef}!%q=3&THyo$B51va7A8(;o8*! zE+Mq!JU|NLx~KMfG&WZ$OV7h?GP5vp7{~d?p>rRxPkh|Z*Zw{W3tU>_FTgx~f02t+ z;+1aGwFHgzr^Wp3YW@l65~0g4TvoX!$Ajmry8bokLZF2fzx+C6vQ z*m~8VzTtiGCY(O8_cx8|iv`r4dnvMK33D(*-AlU{HF6+~U_5~q z7vx-aTn0e4HOg(rhWeQR?Y@|!B$)Sl3@}DW^4UF%k5KRe-(t4&SyMJJAz%RnE+A;*en=9?A?5?CwiOr(&Sl{bjFlvHK)@ z(f0$syL8|=LhvGXH;;0p<7%#JqPsj&I@g9yQD63r>pvfkug$fVtJOa6{H}NZ{8CUu zCPKD7uS3A~#=CvHB5qMffpdiB{uYfE&%~A~gN^wjsGLXT8(A7ySqyR8CO=v3A6C-D zIpVG{ek@@C#Splnn|J&7vAHI~wXhMl=iwXVR_yPi+^nO}w-$R-DoE9jY z%(&t0)#&GOs`RA`diDyXF$6-VebeXyt`<1)EQA|Ru(64t%>;k6>9EaKq61aXE9%}v z*Oi886t{FOAe-Cw)3D>35NFH&^RIv@&=sk$`FgcI@4%7ZSXI5$0o>f;PRkQ2=EPK} zM8{cRd{ku|Rqp7pft;Pa)D9|Pf333YM*8;*#By0yxce~74BqDOu{VZN;IWdLi(&L+ z&cO3us`vM?qQH+m2I*$icXyUQi6IuM+jt9qMOaKdfa)CR4cNta6$>>g;2OLZs|fEi zvGknlw=OV^*S+C12kU(uq4?Jr@EfhfsqmGvW#XJVUD(7WEG>zk0jD07IhUPa!m8D_*}?U_iBDV4sk&^4BeuaPczp6|Ghs@ zZWpG#%`|7>L7SqWCy@`^D(~XQN3$sLy^2+)bUp1bo+;s?8P^YM6{Q7sr$kH>fjgAv z*2nJ5Zvk@o{MtIX_2R31{YfNp8~ zv;UTzR=y@!etDM~jAGVP!TmN-4+fPqx9mAB-H#a4C#ALg)uh+z^$ecvvkW7U-SZl& zja}6;%;aA$!Ib9}Ow{V5(wki4UT;VeZl$_8(D#(@5cP@i<>Ew;f=qt{%DiIS z+PLKIG$gl7ET0;82Q1!Q8IKX67yi9C7{iW*>Y6jelNE_-FAe}@XZ)yJyvgqPM}~B4 z(Hy>Bb+;)fKbY}5b|T$k6)!hL06aRS=)++CZc9ek(=|1_p8r?sHXn^$3t7t1O{?k0 zXWha@uTf^wp|LRj;F2$4qfkW4D;9t``W0d7Z=RdqA{dK%qv5WDNFQECy?GJ$tD}Pa zUh>m$z&9d{d9-(ZO@bH}@%=)U#bZx-Tt|$bHTGdP3FptZbI-nC>+mhRb#8*WtTZ^7 z;6vNj1nkqfxN@jOJTh1_2VskVDb$n#@Fob+T5-`dEOFE>d|XU>jOSTYxu;8qa{{zb z$k7dtm}zG_EI&tdD}vr{Z~;m!B^!YN^2k}-)?T6J%ZC+5hi8jS#mqWx^&!i+bPd){ z%K;^|H#s|&b$}#b*`>8Aq$%Tt)R0I@CHEM~D#{e65vZ*yQ9c;bT(`d5+r1R=sb?7x z%q~?z6UIf;@Tr@Nh$)Xi?p(kKI@z_4`W#qMhj@IKH@l7csyOkFK(PAqH<*Lvy@3q* z;!2^%pk!LU025Iz=q;m}1`gllu)h*+QxBr=uuxf`z-$ z%y|hOhG9cFYoGCvS0*kG=#IiR{Y-CiB`W;1e+BV&)&Hf8GKR93+M}nZEF?g7css%1 z1yn8i{Y-v_{4-Hw+i?&U*K7_X*+5^B7i0e#4|Zce>^vP517zdC8Cp#*fCnGRk26 zNVNvN%NsCvMVwRpBP9$pS_q*{?Ev!L~7BwWIx!@oJY66x|M~*_j8NI}3kD z6`^wDcdIi>YOy2*!)^2v1o|b{x`gwd582g7=A$t>*`TrQ)wQE$|&zrQ` zRudk#y(CIM0>HtHx1S%4#(ZeOOxV}3B|DiEyi5dtzeY$$&G%6k9w6*dOUQCf5ehj|=NZg3AfzQ~>ngUj@FJql2QnaA~OZ2eOdZkTMK zgd?rG(RmjlTl6j@F;MzP0G;_2Jev(b*l%aJ$iW zY^djAz<5U`EnVw&Xtd~oN!Z<@Ci@>+t3D4?xEr$e*ns<&-eg%#&>@cw0Mztm0ae(4 zM<~TCYMg?-Kf`zITevjm{m<7yNnwUw%(zlys1x{RoiF9!wGkGbTtsY(R(iNZoLSb) zxLx7b7_WajAH8|;59X}nu#x6dKM`O0Tzx6*5? zj*!p~S6`*i=&$qeSQKHJ96fbTz1JOB6WA(#i|UMvOT;Jr8l%28z^s+aO6_P{B0_d6 zGsjyFk}_sz`c>)v%Dli_i6_0EHlQ>?Rz?kHPwn{Rbknerfmy z(N~!FZP*H6xQc3&0F0tA3))46A zDNz|id-$Z}Q1gD3+hlSLkJ;K0BV|?)h52A(gV2^RmtXrOC*@TaJWN#c@t}nxMB(jF z;ixCdh$5-{=pEKmiR}1DT-Z|BnPqO?y$XfUB0?5q{-fftkPI2WJD)l#Hb0j74yat! zv9fe(5H?6?u00$ziRpfE~dY# zGRH45cEC#J6*dSieG%MBRB_4NcEI9v<5VGkH!0crjMv)?I^vwPx9AKw$BgGf@5QB$nijI=E%> zN{;^!TKTTWw~RA*8BhAVxk9w9od@EV)Qd0(#jDsNlruMAZ!YJLIgn>xesl04{bUw; z2kZKfrHE>{da!@?VqMGPm)xW8-y!wczae4Q2s|F~iDY@l(TKLFyi&z`dGegEojy7# zBnAg#tSM9Df7J11y-e1yZ6BGyb1_=x5*Bc;!8GQ6KeT&iq%=YfSG+=hMv*;^kKtdG z>iwk|2KhcyOq5`%1bGY8kI*Y%z)OhGQo=O!PJDW1u3W|Q$HY4n{C*<)mO(~W1|;N56wQy*or1(S-@DbSS_F!i-%|3L21e{{ z6kgvBb{Q{SGUF@c1PzXr;RSz|&iP&=ZiV;s9mem!A*B5x6vWh?0P2ylVoQB$masC- zB?9D5EBX9{I@0@_!={PmsbfaJ(~jdVNM}1Z!RatL>CJJYqkSe^*LBTN@-Wcw$Mk}f zn}hwpQd8S{?e@-278VZF^&n2x!h?MRJB>icYus5`d@NKm(vR0Ccg3-@w5{qY>S*3^ zdM6p%NcINkAG8cNisXcI^|zZz z9F?o9t4A!ig4wqz%ic``(vmQoPo?CNrFtDeNfm8G>)!)Uc8cFtkj-Ms{Qwy8 zTa_sKO5x=P1Zv1|xQ38JU6~gVLS85dioypH`ZxppOqI83M_Y@v)IMe)UexMX=oJ3u z?;AL=z0r9l`8#g-#9gEnE4V7sl&PDBVyUPZkt!Ild4J!b$n@~ zd&wT4HmxdzI#-b289v=J_r!()agq^zSU7;D5`nCUY==!h9dwOscfO6C;)_MTy!~9c z!D~v0OPEgtri->v z)0au@ReS6Mz!?}l;0(Y#_pOJyV3`X15Y`r$q$%Et1xgN7nCRi4E0N%kM_mEP-F zx%7;xxYSGOzX7;M3+F!D1&XPT-2qU1>AdHQJ-_?gLc3iI(St|Uz8`AZ;(V-fciepv z(?h;ae`zZyU{1e`8)%)!Y~d(Z(o1ak95(Wu6G!g?R7GDFFRT8U;=zcTB{~%^k*x0w zSE$*|Bm(7J`6lYae3!RH_YF{A_SxkbvEn*$zKxpJ9V41M6MC(1r}G*kV#UZ>lu#QU z*(Kqe$OP2CllL8r?W5Ap+gQ@P`(uADJUDg&WcmNmfp~RsPVcvg!od!n9mFCn8JKT& zX@=W8Qn*c!EK?6ahpzG{hck`EWH;kPH5b%54ia-E$!-C`{>xtSZH>Z>X4;Ic3=aZt zc#GB+cZ>|}t3ScFI%V7OIM|6N&|schorT^PYms%kTMcE7et#R7zwa=FTg1=YrlPMm z6QNnjlR=5oV^|BH(`n4>!xgxmr+@-7DraD~%c z^4&95ns?YIZkJk}qN{v=L?Z1(9NzxuxudS!FxcMEsY3t6$cX9SO5GATj`ZqybD{Nv zE@g&clMMC=Rm#v!I!37Pc&dgmXLw7~Q{(;C7qJfM_H6Fs?GuW{0B;YomBSe%$3qQ_ z=f7yjNxI1E^@J?Z2HKf9=wYN^h(XN@lY!a5FOpaK$@%&-qTKVX9@!$#lXoZ)deb^D zFfpv9UT4?iB3d`hn%kKIo!%__!j^k|nUC-vL>v6Ifp+;C8VmU`GE(yXYG}3Q9DRCF zbpl9`>`bQdgMp*z(ye?%@gd+(m9O;{*iJve;y0I?SCX9jPkcmv73Pr%7B$;2P?v4k z^DG>Dym7WhIh?;ve~u2L&M|n%4~)#B{Y=hiB79*NvaGuHYJTh1m(lIv>8+7G+6vy% zR_Xk^W7VIeOAF%*0n+VFC$O1LS%)6uO7LCK0*{9isqk9ibs{iYI$xhMI2i10IOv(X z!G}-2xIw#9{dLGT&SAN~6RO#->b%Oi2YQO@hi%4 z9DwIFIbl|4efuat-G9^~-=HUCw{_?FYk1(c=W{>Y$5$D0)-`CITX*+9J0sTMHzANs z0lEs4l6#+Szi(msOuxxvhB#zujB>jrd~(~Iy&0X8EXsX4$Kqnpe>@5h+uu*VM> zdNh_lgt&lw`-v`obNg49e`X{!e*~{;Z>#@=r&93@IhpH#OgW_hROFH~kEI4=TM9m`l2P@+ZF~;grSsj6A_c;v_$sJh08z z2rfv)Wqap%i?L^oz-s8V7Eo?tAxhzy9Pt_Bl zae-+sYR#LWzA7p*A=7YQAo1jTcwF7qth@F6Zwzfc_9&9(+x$LzdZS^2)Ez}KWBRgv z%^V-CYi&ho!=Z9FibGeXZ+enFfMo7|e=VniXzxW!)J;~O2$*=-v!jU2r`%*~WL&(K ze6MK)+r{2VwDouMbvxdpfdQwS1BJ-9@aNrp_6^hB6}c)bTTYAu(XoC4$26235tDU_ zrLFelJHv73_j;prDR0$R+>%$C|c|#Wmc?3$FN%KRAuxkX|(EqhI-7KTJYcnE*VY-r2LU*3zDyGbYCm&UX z+ti2;=R0$*Ix5p_w(6GT$~Gd`7LM)%atwU*P9z^ZW^DXF!QD|gmnHKHSIKAJosez3 zTPI&Iu}ZXOr3P8~H283yO=f*$yS+S}ZFBYNCi*e&n~{Fs3?UtA6hsT^tR3POh-}s! zhMLuN){=vPM4zFIZ^|FN?Zth&?)7HAk{Rdh+no+_Tuo~!gnEAkK@yEA8iYx&Z%=-9 z(gyQis}x%_I3}hy%VV}!!n5%z-%HUbqs3h3AMcjbunq?? z^*Enm+ganIu*x^5F`HCUi*&g`A22*nr4;Og-I3V`=b>o04xw=l#@|03%j_)$SI9~U zTDqoH)|jJ8x81*#L43-aoWFZYk9ZU28&(@}h{dqQ@>pdx)G!_EM0?AsJ ztyG74*AQZyN>Q=jYB;AuNUT`;zpyrk?0=h>fCSk@nC*UoSQURsx9qQY!XiyTCTzyM zm3cGu4EN97I8;O-qf(YUU4+8hc24wf#Zdetr##J{uU`%r1y5H@y3a)*Kxh@oUE(X4mn1tvF$Ir8426;yge&YT*s+ zI!G)mu350|IP?OQC!jJg7QP2s6mcOgU8d8qHE}O9w4kn{Xj$nso^^SJ1v7KanKELv zPj#AzrNO_m?mEYJ=oJH?XM(~ehwSR(XDhq}$?8g4QR;HztN=P_LiGy}Xw~BC^I~6@ zDe-BBw9g$m*3l6=N|Ph=tpk(+rNO33?B<$#>`}yP1nFUAWa_?I^mnrb6tBd6jbs5f zGgh@gVQNp_ilpyrZ@;uy+q62FpT4@>mHz&8l-=Ie#Acyph-DPUkyYhjPue`hzwyc5 z)X)K{Zg`XL?zNWCCgNhvh>tYszU#noJN|U_+eFvUp|G6Z_xD0_yo&AEPtt{sExqa? z>lPQlPBj(ZsAhaN0|!E0+gGJk{* z>L3yL(&OB_v)xhIb2f$p%g)A#WIkI4`?=I1-u7v|L!&bEC+VWd$#U5~#0tyq#Mxf& zGOGm3j$?7Lz0?1De7yEb`Idif6_#CCt6({~%_mJe*>Q%(ZAH|M0~=k@-tnp%MteSY ziQ9%B^=a!X>lGT6)!ER+2kmFC_z%m&Kc*T2YkWkF1V9jw5*`Q1{t^Oh1=r--fj-7s zxP@b-!sZgMqtX%PD_6LlCKR87twdq-D`IYYT_lX3RWh`-ld8NjrIj7_LNTXsGrSrZ zaPkL%WDsj8RH0k?^s}S3#P8^wawR>5Y#n;NJe2r(AzaFuS}9KrQglwS``vW>mSy_f z5^7r1_+GCKLvYDIIDJ6?eJc<~FaEuT3i|g@n9Zzvq9=y*?lE72;FNE$y z2n(bIGlAtmRz9xS}Oh7N|lU3LhgW-`qA|7mz1!DV)KsySWQQ1qB7hr2rRwd)N}l zM;ZM^-$-uzlV_O|gHTmvnXa4{ivf62q$f&5&?e;$@Ms_=>pNA+W@&Nh8w`Dnx+BXP zH4dHtttf&Mh25CvND%05SO|y%#DcxrbVaL})7POP1S_T|)T82~%98hp`%J7)T<%34 zfA)+E3hG8lJE1dEMFfGg8OTPOl#hb=iO|{U-S3ui$P|Y9LRU&%O6eRt#~M)|i$WqR zdYOSWf`1~)$Y$4L$XYC?UhUtRH*1QhL$M^hplQQH}^^(bBr z5%@7e?iG&6&)}!Q$|KS@Tal3t+Hh0*)3Vp`cf4O8{=MU~q_NOiPoC!>t>osAcP(>|GkM(Ir zm0x@()aA*`hDt-{PILLed9p;=mM#d2Mv*!|Bc*TA7JK}zNl!Bt%!xXDYf*;=UI$+nuguzbiBCcfwmwcJu|wuWH({G5 zsdIeU*5PMmKE$SDEZYx$Oy$=|x&y*@sh?T&1$l@Sb4EVXmP3dVq|UVW^TD;rBHHm& zZ{+E_UWMdy1StRK`>628kUZ9f8>3v;1C!@QdL^aU8j|Pc3JZkB-3ObRlx)W*U6V!V zGs9)B+aHoI$e$Cyj*7N2)W$+ji($1OAr55ZMILa>Fkr=5ejoNZ3HJkV+Y@hjgtd53 zkOGrraF1tGKRv(kpVXq8t=nX!_43GBrwCP0k;_V=) z5V(#^QH6O~<)*4g_0#^}#IJXiz#Y?S{`?00rF=7$=tMYufdzUv$*6q0d6kh7-amHz zGNo8lbhP=aQ@}m8@P@_)XSt2=yz_N1eajm4qbh7uJ{t>kCW-Hg?}QI53IR(WNq$*= zrFals>d|yr_ck>e@A1CP2z$+~XT`>P z6XbsD>2ug`MZ=vypl2Ke(4B7(FxSdJPUuP9MK>F2khw`&%bAZUv?%d(jqWTM;R=WA z{Tf*ZuP9Ors$jFq&b`JdvhgjTZNmDqMOTGyy{or#!(7}EbSl# zv-dM$(B$Q7)SLuRHX^9U{{NfL_x+(wm|%zG<(#sz8jDHhw?-H>MnYHjXkh|iXE2nm zkpNE(`ze*J3$!ySTOY>7^q$TMSz6g67?xSIzy+cTm;djH{%>&r1^LcW*F9C)VAUZc zFIT0uBfTo!%*d${9K}u+H|=r3iMm}1KDf%KtmMiqnaD}TPCBf_MN7sNF;%j)m-6)^ z{m-BW)tJ!LynW3?=23;E$42&KAlq=$$NU^TF@+B4N$Acpgi~O9JmS>*un;5uK{XYL0_F?4vn5J1Hc|gGY(p_uC{@!-gYY;Bli)dt3 zyfzLQMA13HfvG|61epPa7mIwmuh6dP8olmKF^1URuK_o`JI#v~Vz5hmj`?l+!Os`C ztG1K|t{%H$=@0L^TKOD0V`wC{(3`JhPCPyghnU7GZtQ^jP9w~Hx>oi;rgNrcalUcO zuHF=iS8F!Nig%gucl_=E1timVTvOPkABE(=DUwkkxl}(`ldIXQfvilEU!x#3|1kzR zq7e5u*6D$qp8pXz*r&%>^?x?pVI>aCqVLQkDwUlARqiP{Yohc}EY}pbAzAc2M`NoJiCL|zy77B0{-L->=C;6|8ZS%cX zXo(88Ggk~4O;Tja&azU9Tkk$!(_wSBh*CxsgRfHzIEG3LLWtSla^-#VoNCWoz4z-0kOj$(HO>FQQ z+iSJYUEO4|eVBCw+g>wruT+777Kp0XtGji__f>Ooq-kF^o% z5=nm3DH3W|uy7W@937gKUctNjYv*3365c0`T}kS+i)cy;3JNNWn*{sQ@za-a`D$tw zBFf^S;XtmFFHQx(x`>b-@`N@6Z`l2k4mExiB)+0(afWYeS;I)#!FBwS%j*W2*v=Yb z=OA*li#nDLDqljd{ijNyHADdzB4gbsevHrG3Wxg@Rfo)@MJ(iOVvsOC1`m#`OZ!-4 zbXHX{ts;TAR7P|ldj>Z8$;)eHR(LXq8@1Ka3%^60#osy`eyi&_XX>jZ2G`XPq{04v zAfSnh++k0dd*{jK!I6?fFG@eT<6s`W%^z@@talUDQj#;^UWQ!?3{Z%A6Jq`m0;zNg zILG&MvX7@J2V=VeQP=oTi9nYGD7E*ri%nNi0ktAMDM?*aLgEQ8<@k5)4np10Lx3;^ z#fJC|qi^)*0P1wAa#wr_ntJ9Cg)&Cu9y|=7!7m@M(@e~X9N3HU|H)Z$oH`eB^7-7= zvS*GvX38FmGN0y9t@wjxl7F!@j=_+#3aJ?)uF{lV5w9H`Ir$F2 zLM-zep~%cNB*b`(P)yT|LLsi^_e88l1i{s~pkhXB8X6i~Ha)J=^A_hFF(NiS+?yfN znGJS>n$7mT@r=ORNzv1eH;;dzgb`=k@qbVy`xk3_y}jy zbLSmyETajwBPT*f32aEqqpo&`%pth4@ewH$n=<*ABKH+;^PUoH2N|w(yc6fYfcCD46h&83l=5CIZW;5PQLk1lJL_)Px`=a(RcD z0@-U*OdK3cEVQNdTIonKUtizWfXBZsNahLH*ma)m9yUn1z7A`!CEi>rymKnF*qGJm zIM>CUFj~nXRGR!My(dzPn}i~48Nh~j^2@WL(D(4@Fq8p_-?jD{6H|n;9`8`YeA0TD z_fJt4o!HXmM4xTIj;PM+$rcChjo{b;0b%m!*=ZPSmU<8{1T!=7T7QikC*9Z5pog(A zbI7UGt)EGALs7jX`r_$w;QT%veQPoJ?h&!kwqw)u=ga(mg@0r+zyG4>)4w8?w{^3l z!zj7~eew33tjeU*XC4C;74`PwLgeJ_$DWxP4ZIiLKi?HX4j*A0Pfw)>6JH4Ol9D!! zg2NG;S#qR2a@h>Vx;dz;6*k-Fufu8c7Js)^S~B2sB>T(VI5ms=s?@sOFP|2+Ef!`b_ESyx6 zoqUyecavD;F?rsgNta2s`u#o=%z*!UtC_ej|JzFpBdtMq!fe}ymaqg*%X`sb+5Or+ z?`IuNtzxA@LvqLZoR*=CFf+Tj4F?dYMfw2>d!!;pB`!po5ymGzE&XHQ#-!B#OWX4n zj&m3n-0&p$U6093$(3SfWB?(@oCYmnFZw9#U{$7b3mlUYiBUxdS|A`M))f>I66$b= zE-;eG6a|HYByGvbEjv{+pxdx)Xwl+<$k)!Pse6B2-Nnu+@kPgJ$L>d~5AjmMQOFK~ zV_M0=^p+*yd+d5ex-;W|$y-UYaC&9ib9PBbvv7+kRaW9dm)+h+iaXnL@+Vz-{=q-K zb(6(x4qhupJrmcA2P5ei=D1WXe3)3?F}Ta#C2l&GY$i#j*SNqsn5T3ohEj?YC~Hr&eBw zuEe<0aKYk;31^72gc$J-5kt~%^8i`RLex{`VpqXVn%<32+`7kPgR<53I0@db z?h+~*k}$xa!7#g{872+KyLF#nvk8R-605qy_dKz3!B=06kaNrwKBxeg8rt%@yJRKRdC>o|@>nteG zm3^Lt4FU~@*}Y6|9NJnyN5&^$RG<qXNX_|?f{Wo3N4-|QhHbiET! z>Fn(MsHLgtV2A6pI|7j}EGS@@6|w&Ol@CvLf~57s4;>e$vv2mI9G;!Z65JeR@PsO3XWP9Z-tn?lsrWiOn6QR8`wyqwXRDp~ z5HiXv+1;t2fV7GF3M`QR1cJpRb)t}zezmS79oNfIF(tGtOt%-o*+w*?l8U|uwzrCZ z)g7TbS}UR7P~siK!;8G6V-R@$!Hc;)I(_GZU?vV-tUg_-x4xCkO6qs~E_il*orZ!% z(!fPS)AzBt=ClhwX%7TM+1ApsYb%RV1i1Z=lZ&|hmV;_*Lwe50_qUQoI&anL4vK!M z$ZpxYR`$JAwD)dPsUz!cSuxW%3m2No-v6LSj@TS$%pgO!=#||77_DTYr&89|{QNFO zSb}b@mv1-!KdkEE1LEd-iBzMEPL5;08Eb6n6ocK`aN44xdfV$mOi>}*q#|7_q4%o? z({mK2%%GUzu{74d9!GPBY6<8y{Zr-A;=Wf&)|1(-NsO$928`^-Q5G@-*@9x?;=J~s zKNCVWcX#R9TU+fhu&^peXnJ=WrjqCSbR512zh%i0g?Cgl^hI~l+!S}qcj*+4U?*2L z{Sp?84s+io(@(J)xa3@CdrQY&w_6`MgqQdMHMQ%M$wKZxQ z8H4R!c|9S-ehJJm6rMeobCsukGx!O#iU6spb3B-Ajtx6mYagF2RWnUBZ7xVnCH&c7 zGfQLG^vOAm78e`ar~@`|tj-F!0~Z;FcJ8C)pH&yB9(AT5k?0#akL?IbQNhyZ3jT~u zH>D;*L^=7{O1!oak3Vd$CZt|eFK+78`qMQc;l-lmW=~XtTgyaCKs(f*vyYCz;R3a^El*)s7$_Nl(;k|vLsOb;vnVGK-N|4&m3CDhf!cNq67^#C3;$sVNg!vq)Xvhs^ zeej4?7%h%?K=cQfQZV+5P-{bpz*duYf@ zd$(UuORY9Ydwct8v2unz1OoZ0bXL2B*R&-m{i|~BRafj!UP2`igv?pG*7e}iB2yx% z{8nw@Biy??Va*BSZwm^xwVoR0+*fHua;j~FHLDhVqmt}l%Nu=9EIln+nh`BJ6gpAJ zibh%z>86A3{}6GILQRC5?ji~>*NH1L6`hzB4=6N$J7=f+^W)}? z0Kb76a{>`}Sf&+=o7LsnSqlXrVMD-Tm9YwXr|>%|i}7@J{+*p2yYPqzmZ7P8exK@! zY#SnUcY1#7+}N0ERBQg23LqGym^${{NwN2u?T2T^SG-{5kw3m8L6-QZnPB5i01$&46QDBr@E%= z;?g@+>Xr8bvYPEDd`S*!uePs`P!Bw)mJE|cX1;_Y5YJxBZRGZOSF!~b-ql}xYc^8M z;l^c@nS{#nJ;7FQu0E7+BDgX@ddlTW46wTPZ}n?zx5Y$a++%3)Th`4Z-0Zep&4;^# zJ}c;Bh(`U>L*Twn(=+o4WGB2YM0ZaX|2P}#=OAm)I)9s{v8~+NOEkAHc7n8Se{dQX-p|mY2s?1Jd$H<0C58)g*K3%z8tF@X<^bRGqqz zYNSVOq{J#SRxD4_=0*_Zk%h>k4NF`mA2{kLM*=eDL}y{z)~G0{?H5kOv|TBa_YeH6 zON&90rcFhu!HU9Q!5EvRzMPo@7^eEaKtd`4{j14@BXSARGeqnC!VY${s(S@fYteOBsADMj~8Hr6UQYjsI13+KT!p)W$2=Lf5i2uV+o?@{myWr!W#TC-*VrgykzDsjaWLXly>Vg#CBz>Uv*4m_T|8LKt}i!M#GSzB{AI zNWF4?zd+W`+{s++#WsIWv;{dQ*&BKzzWoCg#N^rXNqBVBKjM{fJT~2-&)h>LAjQzC zIwSz-q^a2dvpj5-Lgm*R&sRDbZ)vPUZODnZy1l(tGn^s~8W5eT&)0oV=d%Rtmt)u3 z+{HgST6?CE-H>&SJ91$E9%T$pQkFEmy*|HpJ(^SO4GvBZJZO3AJyYO)A{~Lbv<-t* zRE%F^bdV>IIC;`#4aM&b#gmMds49~9(UZW7IC=EnRAu{6OpGr1H~U44~$sd5LffFIN+9M_EJa zpRDT^glP2b?nLxU-AD{Hmxr5l58J>|9CXP^Ic0*d^v8$qd2|S_Bl*R?$&>yfXptu^ zZ6Lxt0O<3R0+?z%N7VCa+>FaeuzSUkk7UVNl7gK4@#(btdA&2~SnTR*Rt?A9#YL%^ zc(OZ6YFEI1;r+=>;qY}d0fP~Zxl6fn21f=tIe9&qHiC;*Qj%B8-{psUyW5jBIH>CV zmmbgA`zi^wYR;c!&cNIAJQ7t%*9sC*JR*y|z(woWAg1S^XHz5twD#4tqEB&&Nwi%B zL8wycHDvXR)kzjz4OfXjtBImhX2NBK0V0Zt|B~R(eWD^8iCe@tN;am2vpWLQn|6=m z?~g;IjxFwozl0|T2lW*>X?m$5!@^+8t(WZ*!-PrP2R?B)n zF!Nr>+3T^L89$ZMxq}SM7fhmp3ZjrXZm`pUY{LFc1TK0a@WPxzF#=f=#jBmc;dZKC zR3=Th=*Q=;5J0QfG{Iy~&0+O9X%+9a1&r|esM>>6UriDSkKk?7 zOCt1p+<#m57pvj`(K9kJ{Rsf54eFxRPeRCafh>mi*=BDZrC7^GWsSQh?6-#hL?-tm zA|hg{l(iOJ0kFLg%XM)*CF(m?v{fpk$PPwek$$G3*&kS0Sz3eD?Ut3$=RBYF>t?3{|SMuFQI~#zoG)P<%1kRh8?qMlU&KoxNLs>8Jv3LT2d{`O!jHU1dR?3qv% zsaFf`&RjN9U+n@QTWJ$d2GC;MlxaUGAj;DS{rzbp62J$*s?>Bsk4fDk^iN+lRHJ-KIK>?`#^6 zjtr!Ua$@ezzgfiUEKI1HIR^t7y}?MWaG==MZg6;@Mf}mN=WB_IF(Jf^k7O?x3FR|= zhnEnEnmPyIy-x?3jzf;HVX0RwwSb%{!{oE(HXh4bKr)a-ukg0G+15bhJ)>#eSiTP!Vy-(Gu z^m1`6C!CIy9}XDoCNPIMt8KC(gJh(_3D96sKgdH;=W;od-Pl7CT3W>o@KmK@V)OQ?WGaM&CA z@;F;E@aYGy_2g$IsVxK(&eNv%hjR7?&0Sv{23F3luEfr_81p*CbI1$+e4yNW#RzO| zw|)iIQC`rT> zQWO1Id`U?0cm#}Qav;35SxpRQV!1_g?#<~?ve!X;=YaZ0GFmY8V8xACEk?@efNkCu@c~p*Rv}+2XznQyq>eHJbuu za-rv|8HUXTPOUCIGsRqWJK$Bcsdc4)q0a+J=K3!(h|h^G$#XuTD8&yb&CWT}m`mJs z(VAOG>lcLv2vS7@HQ!2}!}TAYxjx>zH2i%5qRID@MO>t1@;o?RB}-`>Dpxevsm}g5 zz>hj=&~JX?r>&uii19^+QE*r$2R_&r@q_*d6MBA)`0dkKP2HQVt^PLm<2JR@S!VKZ z^sg-wr(d$Yh>0_x#_ewRJ^(|{(PKIj3ssZ2FX9)LxP)IF`U{-8UgkOMg6u+8f{N9clTgHNvsY^^q~81GWRIFf{$IV#xqFGA+;8Ffz-qtJ3o*>OvDhgHd-~rEp2LS zPX^&tG?#PfdQTYL8MjkB0{PT=Uu=4ODUNWfMMXs|y}i7Qu0AbY;Fn^Yi?AUJv6xv~XINNRq~r(| zn8g^JK|B0ise7l4v-sP&Jz&32?}eNjS;)y$?&LI2cX5dNwgiG%%8f%>BDT(HUUQo2 zDPeb0(v)kUa};>|7-3{#V{s^C!PmhWTzm;qcYuURWB(+jJHnDQoS|n*tB@_v4MW_g z%N%jK3EsrF=?R_h8q&o8u{x3fGVo{$V>=+)G4k0hUp1kIw5;SQC;01N6rPWL zdxtcY_=b1i&&+I7R#33nPK88pvWY-;(3=*k50R=Vi)~C3!@& zRXz^LFD6o;k?=`*CqB%70YQZV9$J3hIq&E+*w5~N&(TMRj5<34bbUyfv-4^xQS!;F zo_?oXtCZsTr2SNCr1rkb-*@9Z5rQ|l-wcGQ8DPF&LSJGn-`*c&l`t?eE}Axc(zuK! zVD#JD+Je|PI_BAN4g|GEE666;)t3-Q;!t)y?T)5&0`rJpY$phcEp!}Z_{Bx^*RMGB z%V$=#x+$P=#$88xEhZqjMNgQ`)>6>V7%0S13ZeTTTH)$wQ%=;YY2Vk~Ml`jnBKmQw zha94GDby-GBe5qG&xkHM3Fc^7AbFzK2(H2f>5UFkGP>cQqTWGrTvG}iW2lhDuIC2J z%F5`U;Tz8+PY0e_=|6x4v)AhC&rHfngH1|NMGE8B>9PJDu*?8#5Dg7Y5dO=Rv2aTA zc{QLngmXZw(yg-7f!J)zuC1xxf1M^tCs1NUK0==sbUQOt;hb@j>+I=8|7O zt2O36n4O*fc!{QdQ@uj4DOSKVQ?O4&gq90s1IRIU=>l(F=U|pv-eRnQbMD!~u_s4v zhImy$(;6>nF0nq8{EDCV&)RSjP4@m6PU7Btj5al9!k@{X_iRAw0vM3}GbT7VxTQA~ zEy{MSqx}Pg4K@k@+B*W5aBi@#4_9}WVU!cY@L;AX4v< zA75kYi}ptwn#wT)R5wm5+S0@*ezaY3&L>~KBv5Pd0&*>F{R$%iV-+oz+%1L!z${Y3 zr2F%=rx-Rg;gni%T}NJ5($&{e#l*U7RFoNQh`$I!s$Q5CAeSRuzWgr9X~TDl_~?&X0Ov@yliux72j=TA zU*JRiJifhC%sf6kKP3V3-d+;x+^t7pnKGK`xo+M}hh=T(yh#z(~9C8?mV1K0BAU-P%!2LEIQ1v_L z4WQoYTv;k6Ff(E{^%dCNJ!S7ufx$JPxw%V_1JzPs7pv6k(ttQ>0F=+zF3O4(JA=nI zgA34sk4hi?+2~^(S6-c$)sZ;mk-T}N79M^&ciD3ovTfyAreaX%eo}8)fVegu4kPaCK9oP z7y%x>&(p(WCB<%QbCWtOG?aA>&{LnXLZ0ppu6a#NOpF{+{|N2L&{^KI;cut8$0eP~ za&TTr>*smBuB4rgbD)9P3V{3KZG;l^pa=Mt>jkHt0}|t znXH`|B3#Udg<`W zoRpH%m~tlGrK`0*DX5W(>I(z?43Mv}iqAzs5XD9b&82DI_<(?g%pajEsZcXJk8VT> zqj1uimGHqDh@05ztmk;Q8}Pqx9X47|UqO=O6IXAxQ;kT@a8MrZdO}c%ul_Dw<4tN- zm@BfVX;td)kz--0^BjAEV;@)C*7y$>>#g^_j@uhSK%yQM2n{+x0QOVm`*@k!3kwHl zO-DmBL$6c_qn5rNU^!g?@x`;05j{D6HGu+?`x{{6=q0?{Th3AVpqI0gk}8H-q3s5E zbeWq6aALy?ZMQf8ppx^HU4Yn#ra^rGxYG6gQ3O>tkSI28eXz~Z*6~Vfql`q4?#fU+ zwFNL{iIk(lZHc{Jv*LrrSX%XAmfPy-I?}7E#?PZE8P;=^F4=Jgh+K7@wD{*yKezMmrw_D9jz zZ!(TEe)yL#pVJNddbX@;W=~#W*!OB7`V01M^o9{DgZVgG43-)Q{z^?%58ps%EA(=5 zc&uly*gED(hTN_#7Zw3(MKUS>eZlVK+T#6PjoCAKfH9-7-E6tek^d_=bo=EdlZlBe zqlNaf5wIp(8~e^6K8r5B3u+ri_LYqtNxX4)?%Y9Dg7yt$&F`6%k4a!QD2rL2Lrq70 z`kUt862H5W;!dp1KrUFACTpp{2;73xc=L7>))I2s)M)LYox32Z3XTgEbQ?IB?@H;M z{oQkOZWT=Y7rN?QHe`ffXMW}#9v!6!g4X@P04Tc+|5_w*bALZ$3Gm2hc^In1*egbt zIBh2Z$9J)IQlzy?uMy}R;gCCL^%;?i!z9u$&0Z1<&9j{Zo5=BL+yz;yHy`3^77F|Q zP~sKrD;Ut+%ekkKfvijb)5Z%Lo&Jr9I=qkB$VG#RPuIG(>VXUcg3i}lYyH(S^5H2| zBzW$u*ByLDLg=WqXO!c0+c_7wYWr53IPHQFn?hKjTQ6W{ZJqhUjDsS@#NihZZ9JFv zmZ~r#x$F4amD#elAOD`A^%`r6nEN8d#DzPNS0w~wZdysnI0XO~FPNNZ8*!Zw=_Oyj zHCClO(`lmQ$Y3B58(xNabG&863B=3m<^OY_xE}mZZ z3>2EW^6y~1CPhZlJ?i=95%q)|`z=`+ZVup{;$7u z#M@2GYi655zz^r9zX+p3Nw6%3#?AP9YNWX#Uu$MDa|)eMDNfZ9E%5wnXhlRiW)Bx? z5wCWq%o-C7bChFl$B`sfo%1teI*43`Xahj?Ue`xCs%h+bEcQ`?bO2SU;I=2EYW&R` z?|14yTpm>6yT7vQX8>Vvs*&HL%kJ}2DMr=WpN~ z?{er~{p8cJ_l_lNq}^ZXEE*&=&jcXLMu2q}ZeHQ_3`g{yfc4wJ0$i^5Mx`|13}#Qx zlqRm71EBZp?7+KL_1;kaWuGB^ieCr%iE*3j>v7wgn~8i@Gv7UcJIS-PLN=-XR>a%A zlP<^mj5l74YRmh0wOwnVzyA-9QFbf6?dpTWd9#zz(`@LK3DMa=JW5dJ62ju3`;>)m zML7N8z$dtEGz=-!D8tKmOEDr*)7O9x0UU`y)2F?i@thl01ER;fILaVDyQSiBg#KXy zO9>X;IzAqo`JaDB*W5Sz)6(7w;=`ph^!ltn0>JTHMu|Y?hiDS+WuCphi7Y|7om!PY z@zk=s$A5lk3CQ9oagoTenOt5A&(Db72(G8(!bF&#%LAs{mjQX&JFZ8>WYG8 zD;E1o$rVbFOm6W4L!<{^r?I8Z{akHtHuSw@yLh~l_nu4`>S4csc`XzVvOLTJcHY__ zm(Tf#VLl241_mAh?50Q%fPhP3eLGw4&dWJo>s+&n|HU0EcVfNf3k8f@##ZBMPl(f{ zMv02bHvW$tDw9*w1F66v)Xp!iVb{EyF<1!YbY{ZkZmkvj);jv-XQg#nvM?}sM3=`O z4kNt;7$@Am_K`!(ZWLhD2&E)YfxZ}`qV7LI@wtV>xA)i9(=C^_S+<1)bfDx80RLc@3)`)}zb=Hf_IcyLx{Xz@W*K6@z$mEG(7$K6 z@mpy3rAjhob7pvz3*qp**hORx4`z9Oy07vwIjHGUj(A)@?tqYQaWaj=jA!x_`?$?I>`w8-1a!8_NEBWR_%6B({t~RU1o)!R zNs@kI+q6T2!9#Ri6n(syMoeYa`Bes_433-l1evJ1*N<4kLSH`voe!^`fG^l~C}aS^ z)@iowR4J1Fdl+uOxOPrt+@28{e&^4${#9_BbApNLj8X6kMg8;At1Jb(hpK{m?k#jF7 zzc%nH2!%Ef*_i_AzJ_3z6gCI2rja>9;sr z*2YukJof==EVc17HY!-9PqWI-pn26SmSJ-I`m^d63kxr58k$|N>^y$}sDW9xgYGcr z4$X6XuAgK?M@L5kA97di|0VTxt(klHUOPQjU0dswwB~I8Yu&fK;!EL#VQq-Aebp`a z(11=bjKZ_EMW+q~*8i(#i_T{Ol8Z^mp}$Hb}wcKel~hODfxeJubyxj0{;n|<{= z0B2>9bN`hsnNo7Daho3=6hH110X-y%J5z0Ouua@2HxQVxB7qMNNi3V2AA(d$yuzV3joiAdm)W#FR~ICMw5%Ka#2vMqqZBSR+PBd zWiEp)jEZfiIks-@@5vXM93GvT1YUFjT6}KthAQ9|yLEeOIp@81&$-!uWt_gXwROkU(`#gTeBd=8v^}`h zwY0dnlW;OwUm)8b@ZM_;NT}JZt-c3lIHXIWE)JIKm{bDb;_Cj+PKqs4Lob6YGtvAF zzbv*pd7aWkp*&9P)8qA;umce1z$~MJMm6HCoJ*Aih^sdbZJ@tm!Iz`vqYpHl`zq1I zbJSBO==>`s!^3_9N;KeHsB4`rKy5iLjEu;!1E#=-y=kwI^paOzDK%}tNR*2kp0NH) zIOroP^*f>3wa#r}Hq*G_Axwa0aiHtNf#?wlN-LdBN) zLHhU5`=lN&*LY_#=XkE(dd?m^tlr5(s)L2ptenZ)eh7uS(E~RD1BigBx5g|oW#4Ll zM-E`pt>6ut&X~VxZp~b}EXna? zJRN_(rmryCx;_HzzR5xg78x#vB3QOxMDLxTIijIOl}UH z>4T_osUG>P3YAf}$6MA8!)Qit3w-&Z!ko_Sk2LKA4nGm%LCGZNMsi9dE;aR++yux8 zpgYTSA9Jo@%AY(qsDJ8Qbum025d{YDZFB_%F)R=bIs>VY!4rk`8@+#o(c@vnPS;tb zsAXfobIlqh`iYy95&`g%c0k(RbrQf6&j6oje{2*0Syp^DdJvc%9t242=X1Nq8;V_N zaF_KBFqE>m8D=tke4ih$W9^r&q=)jQquxama#{WUu3qr2U1hS-Zbjg1zS_*Li4oYi z7{jKOnMNx3@zd5kIe|KCF-p`c$Cj$NO)|50*pAX8zg&1Ohc?PrRn8x5_hhcnp~DWM z3g~xjZBzjW0f|{=7M{l>$RXr%G;IJOIIV1PAllZ&%C=9$)1FrFnHd{wL(+EhwmDRs z2b;Fy~4` z_kd0CI#VhzMmnf{v(+|+SubnhDNi0LD(iJ*e%@Bp+BsI1j!Zo_a8O7_@Dh6z4R~t73bsiDo0uQ*@>bX>zAG!t8O0`1dAOO zoX@D6p73NdYCtgsQP^&vRGeoS=bYo9vdLoSj!%>0h+!|q4Qh;4bF|u zF-VTyb|0vs5MSzItP5E zP3IN1ts8x1DgTCU6J5?zaFEW$H3Q_@^GwaDZ(z;0$bWYN4iVy&JzoEnJqKl#uk%gI z$uYXjT-r)0an0Cc##E}>J0!{8z@@G?6kpQAmYf3H+7crQ5u7Qzf7I7}VW)R~vA16v z(!rHG=iR-fr~S|!^5<%iOh8a@?m>i&t@qw>s;LXOhA;r@V7?K+4i#GB3uLmi)&Zyo zgXBiPgK8twzJucpxyS=G_GaWy5Y49i7^$GMSd02X1bj!H4Kp* z>dDu-{a&G}W!tkb6n3)v$?1khIX2RZ+yc(O#sq*SN$;%@DN%bzy4nc%*xY_UM@L3! zJ+6H^ci=rUc}ZE&CWw7WafOGW{~Y)l9lW$U_kM6@Biw@g#J?6GhPAT^aB|X9QROo( z0cZ|!UtgaR3A?daWWn3Afq_x42CHNu4zDXFLPA0e$hVXhIb#dMcLynxoSVZBLsYap zi^kX(#KXRrkleg{sl`0)A^67T`{6_ z40SeBkb(8?AU4%3flJPapdT+B2CLj&1BSLQNjm5wHPcH0$M?wK zCMTin7Dv){{eCwo8S0$4y5Uvv(r0(X5(BDMiK|pq&?3$8lPs|!7S<<+WN~R~O3IB5 z0Gd{^n=T$#&#tqv3K@xg$I+$!nj_?P$2#VMC@K=5!8~6sJ565pr!(WkcZCdkLvx-* zz97l2f!(W>B0*26ILJB)M3hbMR#x}Ir;}okH~)fz05X}spsbX)H_MraYN&5zTDPnx1}DJ7ZxQThRf zAi3w$Ez}4)JX#zM3xtyD2u>RCu4`rmI>4JaCj$KpEgXm`Y{qO zeDva!@3GpH*h)OeBZ56qe1tdGsk{Q% zx=R2Q?p&OjI)@cQM4uHkM&|J~16x|H0A<0T)m1s?z5Qxrj^ES5Ym1-yQm`d(4lTdT zPq_%l$rJ7H-nQZbMfnO-JbRjX=L8bLY1*j&qzerX58vN{l4;af0NiwtOeBmfR!_dB z>yPlkff%2q^$Yy1LpHjSXLjUZYlNtv=eKNL(TCw~a*H*taKEF;sJHGxf5fGY0Zapf zRln)yJ&<*3bUvKt7@VEe^ldW~ZhqQ~9lbmdtt_MvzTLt(1K^Y=K%zAqi*kKw*xp)n zKD_XP*CgsUvh%VMV%kjDX}4cQMVU%1728NVMqPlZIe;IWTLmPYM=!oNHS^)Py<$f9 z4pQ~CV|3DKMfA4io_0Lr3u+!uxXexfi z2B1aF9E$CuC$!`B3#uYK2l$PPW)l8wsT30S)v~V=hOI}WV9$);VS5Qgc=oz(-vKlcSy2Q=?$!?Q$<}`FDu0 z(|B0?8jYp!wTV)w(Ea%N8J%F|$UXW>oNA%P=mLKYSaM+Unyih|{^qVsXfyiUadK)8 zVU`~EXBDxK1|>WDD_fvS8h9A_z`9bt){&4-nZbU@w}AhN;x6Ex9u+TX=|7eTH$Ok5?JXev5nFeG&ugooa+3Z2$I&_m<<+E#gMwQ*h5V zC*KBesKouqqP#91-o1jgCe3B4pnb2D$m9~~?9@s9A@vr#_NH&aJ;s-pz8Wf{YfmYq zd`}AtWfVg+@jtJBp%sx)Dz;rMtsa~OQ0tss67Nqw2vpVDY85YAKrCs?x&n=#%Ay?i z_iSz<$s`_!))w1WK`g~2EVjbzdz9Wd|0H5$)h}dz_@m)AW`q!Ob8ba>jub2`b`na3l6Fzcf0i+xy4_tn zIi#vO6ldfG&G+Wf@HyU2Lp|e4R2}W5niwLtYh}#g&nb{1a9+A?ohCPYjpl?A}q=Rycb^|MhxLK zR&Xnf<490Ds-@2etT8VC4Kub9Eh0FS+x3ZG8a|EfepWU$`3^pGI$Qu97};IIq->C1 z%%0xRD`BGDw~$$?grMEv_EndBPOSNLCDF^GFfc_(&^xcN!q51#p-CD6mHMrplE)B+ zz0gYHV~Ag9OV){Bra(RBfM6%NQ(*hZf1BdG+BWfkf=!CK6qyts;oT zBlol4a#pFcJfjrN)*XD2^3_|18uUuum!B3}pwvAbTpKgYgSwT`iqgXsvqaZ#@S_x? zzQxBQPG76}8#vvNu$lEK&g`i#?ai&ZOatV?e#Pal=ybyEqtR2dFIQlkGq+-TnGkdw z^=t!Y;k`zz@3N0UdV%pOBq^-;(LT1tZe;lIxy`f!Cz#F(ss9N8g(<7o7((~#5y444`&ikYl#-S@Bi>DaN5+$K z?Fu-zHrR5K*OZzH-{^8lV;Dxa=Dv~I4E$Uv%U(o%Dz!b2mYS?tM#8}!5m5DFM$0q`Ypi~)37fD%151Sbh)r~ovjLLi3Ob5<{kkQ z2L()3g)e*wU08wFolR8FE!QpH7atowI2lLcv!ibQSwK2G9JFcT;R;CQ_hXPvUwyH6 zjy(-O&Y~12nU*%>0)d7`G54Gp{-|%1zK1fsdHGc}-e78WvAe1~~HwhudHRKW0__FR&v?IDT%-?MOuWIf41 zLDp<9%oiR*0D>Y0SoQxQplX9;jP~psccQrTm9FB~m=W3V;SMsX{M|Bjg zM`cvfA}5)SMTE{zW{FeTV&^*?ftb?<*KsB_KF0w|qjb^c6QK(bg#!<5&;e=>)h2#C zJD=MR>#4FwpprTEH}8oy&RSgEbjoj!Vwr3@=wn9P*GuW!+h&XHr)iZ@u9WQ5D*aDc zw=Y`W>zhjF!oWucQ?hhca-qrw&h4*2u~3si8H4VLy+X>v*8I1n-)Zx=Yp0pIbzo_H zm7bt$9>{jBfQY`%w>3Om-R>g?NWiBcIH32)T>&Ku%>m2N@%&;o6NT;#N;QLB19wsESB*P#<| zWxnHdYW+yo#C!Fp_H5X>{s2oBwOIO0V6QO(OCu6n7Bib9(ZR``_&9SZ&y_5N^8;8IVglv{<=!qUWIo%#F?)X<9W^=bckB=c_bYfs2% znZ{&25}3Dd3cizaPr(3o4i`j2`Q?#T`r{3neBzu<3zbFWk<60s$VV#lwhCy^#E>7| zs+!c`_K#+TJ8b*GGBad_QQCOSZ7lZ_6MgxY-}cu7ZJfSfBpd2K?ieklZr{wJ#eTco z93Iw>@~?eu*GtFO8v#BdAF8QvnD7W+lr<_<5k(Emd1_(B$aayDmmlFPi421atKE8< zo>*q)^>y91r2QK%Na6r*Is~qD+%2y?n^>7k-i7U)s3q`>nfUpZ<0rSng5OP^B(>q4 z^Fk6Wlb7C|J{Of1QE!3P`0(TzYJrJxdD!Jove{lwZH$9Y4VO(U3=6VUF1y;<7nBY4 zC!XS1MaBB{2EX=Hw%p0r8}et75VFlqSmvZ_Ul=e_RARCYcOYrJt?IzfW2~e&Di?ipuektcdyoxZz6qTR0xNTa2G^n~Gw2 zfTVk04_kQi|0B%`-a)nd&2i0-D<^@emuQKE!+#nz^35dCdODm)wMVrzFdftmKc>e+1%<*X4R6-qiC3l(0GJeT<<1`r`;4l=C=Y z^>wHk?upt$Lx-d0CVI18|6i}cL|8uK1r{qoW7v}fYN6a4*JCy~Acwso;-y^eK^j%M z(DD)ngYc%+^&VOmOrl=Xfaz%8+xr$yj16nf7*3D{wT1y~FT%vJT{9J6oOc=^&_I?) znbvg;6T|L7a>;7Wm-_$%^V#3xtEZ&nz}hLY{AgW6+-<1?;n`CXvBF3H=`bbJ0BQtq zWZxH};(_Dzl!eD*v?9&!_kAsob(_ee-Ik+|p;^`OR8(aUtN-zBWa^Lw7G~)9F7<%u ziP>7ZCthPgp`<`-lXb}6*Ij4z;gRRIq_b+&Yqwr_Sm$gK2+tZHK+1-v8?+v)BTwq)=_EgmY^)a9etkz(M+$*|3>yKch=7z1Oi zg4{apwO`+!j>Jo^H%I=HN-d_2%zcOQICo}m>$}m&WB_z;7|OacbZpz4FNIWIVYaR! zbI@p%JZUtRJUAh$rDjp^Lqyy%(dRYT4>#n07WoL%6xVD3+F#l#HyW)XqZGPpTegq9 z>}m>5<4HaLU1N!fiz#8#%`-3@o1aKZlMN9gfs&wUnztI^?i6Juwn7M%xfqw<3~9 z==%?U_@ChVyFW;al9lWo;!`jWPP*cky+Hu+5#5|RFee3j{I_#P_EkwvvI{i%OqrO6 z{tvjwT5Ule=!hgW$o}__CBqcG99gxSoGv5(g^nqTV?=aA^7voPB{T)E@m4<>Gx<=l z|5nTWy^iBO3vgS^$+1xreFCR@kAvfP(;!^z6^(0MT)aYKXcqsxNf>{H*K_nIhp<)a zQL!t?*2M1RtdU9o-9dVOa6)f?`(^)mf?8(zE5gO-{{nrrh&`ExK$~<-)c*d&L$n&V zA+k=mz<+)cU>Q_`6SJuA!w&PXZ7e8s1Qw7vmlP^O4fka@8Wk!=~+pL03*zwhSnjfq{m%Q=e#rS%H!OPqb zA0diaF9{OWO`&@}xfDfw=~+$hlzRZ@G&;OTuC9_jKMV?yRy-w~*G&{=rX2qlioq<0 zP~{;kgqa&9D&wL*GS^fM8B+eB4eo6DoUEY#;g>5449aY00h zDuBF`dP#hTu~d5Q@MJK;=Yf^1c~ydK)q;b=0GzlM;*(?X!odKZkDl>ARX;?<&LtY) zp*J*Q!W<{AP~3my8>$}%ABy*I@J0mNQ1Zl~);w2%o(wVw*4PE6+leX|rmu|Mvu0 z8gDicwy0nk2#G!>Bydht$~DC%0P_Pg)fK9EA9TyMW;}t2zci-mzr$AV#%(Oq5rqdc=KCe2ZOJ zuSMmR39MLy;i7^a%t?oNBQ~L}cd^Kn@yreH1ItSbWdv1_x*>EV9@D361WOx91&IC7 zjZI~&!A*&)KtLlYSaAm#iLzXs=3^p~C2ZHx{rA=wE9BVIhnp)uHz=t~1$u1MWP&F6 zTTTiKcaCy!4t!`zOXZmQ1s)b@s*MumZq)cz-({pn1grEcU=T=bsmfRA?b4OTBRnx9 zf4OJ>>-K#uzy`5%Ji zHXg&|c9Z@&voJ?g@m(r@X@xsy=UF$Y<6tPBDIx1GTY8dfAiE^f#;f1rqLm|v=P)jr zfr+;K>HCjDSNeU5QiEV^{f{j9a_%Cra==XIY17ABh{b9cxemsjW@Ey?zvD7zeTVj!dcNXMUsT#@V*ci8ceFeIxZGEl zS7w1+m64#W?{-^2xb$)F*Ug|ad7h?vB+WPdN)IRZB)98w-R#xv=Ku%#&Z(cDh$<#1 z_B2WR2!pcBYJ=%N8^I_@*0YC(JJB&byaQ`Aaa_e@=!B!fT|xsiKFrSRszp^|ka!rf zRiF#M*6{|t;>O_qVbUP#dZ-uvR~2XUR6w7}n33X&;Mgt2E=TYroUeG}cST)Zu>?IR zTFkcA#~s;Xtqwzl)N{m!P^Dv_dUf6`NPVKDS2~#EU9!MKh2|4=DE#+b{{Q^# ndR_{G`**#>pJs`b)PR5K4AF-<=4O-ZN2C{tH0gvM zTIdi$NjARcJKyg6p55;|dv^bMo|}{V%-or|cjh-UH~N)^A{j9~F#rG{Q&s|N0{{g2 z`0>>p0{l}95weAU-Sm=G*1dD*&fK!*681yfEoa-CIjYQs# z^UMWpQ;NZ9?{a4=$EUrzwy#JCSnS9zw!@<+>oKt*4Bo)A#!V+ zGiASSqPAx0?BL@2yAP&_68ln8>aIpw_taEX-#ln+Xjngm!9rKM4`u*bw@qHJ_QqRWjH!DZ9=bwXi;FklkibkN#%aUh+31${`Rc8= zM$M;9$Gl9!UTQ3s%by59de1zlk$l{V&Gv*-gj2}?9dL=9N)YrF+Db>t)*pI7oYm+Q`)Cbf2JlSk9X_XQx2y`3nV2M zFqm>7*IDnYZjXY|O$6A%VGGU#k>yAYIT?)=K3t`JhujO=YsOwYbSx{s#~?M~j=dT?DS9aE%AcvGt{&e(*yy@&vH2!3Gp@J& z@=RY(FTtp<*2^;@;x;@-9ElKbUGP9$qy4;nA5BBP6cvd+f98PK3s~38jKT00WzXDx zQ$a@ub}8(=i%UgjW~T6BlgsPZKbTYnxVF?nERXB(XC@UvEWM(6ey_B?{}^Ya(|SA7ut27><8B_d-0=7&R;NJ|Eve}r&WbzGEb7hSA0J`8cf&<5>}DqeR<#VZ_NB6Fv9 zOz67Mz>h@l+wz|y~8}*@XqP&1ZE4oa6y5AjDZI?(udZa+OE&U_gZnG zpjqEl+Tfh#vgQ0cfQ;CQ`g*+SG_L}#qM!6~H`@%+q^g__=HVWRDEe(rl(Hx$P*Kw= zDk$9MF|{y2!lglC{s+v!8Pu7dujyy*@87<;w=Uehdl#D)pDk26xjkhb(gS&Q<}cv} zyG~PM=j7zf?pka%9a&ypK8U&l8OoU4zDEh7XJBw~aWHE0uYt*Pq;jMZM_3Z<+s%Kr z^zy2c#s!;{e*5;Sd@`0`FET1CJBy%1(nV;_#I1vls*s0+Bg;jZcg}?=To$`40J}RZ z4VtaCEYRf$InKkKAen&I_;>XjYHE1=0p5FgS@LHthF(@gOZO!(FhH$0YSlnx-zCH= zuTM&KNV}|UYzT#f1O*APj?c5Bzg0B&%nxMR))^IPV<5i<2aDfsf%7UWT|p{Qni+HC zVmTV&vYoX$jI8Rmb*4OMT#FlG@!L0fP27d>P&#j(V`@ai@%*L3dJ5{j9PoCI$c-JcwXg#I!Y?g5Uh)$m}Uu~Orfg-RcRgm%V zg?6W@k%d-2qJ$q&{Z=();&4+OpylEMh%68K(AbMd!`e`W-ISD`1XJ8CIl5skDd%s{|kt?4} z5Vw%#dJz{z0N?&BP%xU2oE5meHjtE*q*(;F+4=LFbT!Z6YQzs#{^}{?`Gzp>fPiH( zD}J+x`|kQ9bNr-WK0DBk(*rbPz}m8#jZpzi_L3)8k0RuY1yLePdnnat^U|dXa7sI3OME_#z=9GLn;u z7-!|T5Q09T)vM!rNKGv$BqS6`GLVv-91|0J4RdUm&30{>afLET23qU0<;X#KLzd1+ z-nk>q{8Wo*kt9%;ODnvG6+B++20sOu8ohb*MpF{A2DwHwFSGsepx=L&<94Yap6XwOpJbM4qtx%eubFg z@25U`C1)R~prED}*S8vg#UK|$cPe6mmz_j@^B%}5$no&9T;wMeo5h&6>FK7y!Md3l zQLIfUx)mobA~HQb{-(xog8p=S(n(ueCl7*cZf>)mhVG9lGI8=s&(BYMA9WORTcl)U z#IB{lPAua2x{^l<=f*d8H~m*nr`%wx2}q0cuCSYzMrrDr@czL;3E$n#CV||)P)$e7 zW97UH5xChnw?Exx6RTg&Ku0&z?1kKc;O4poSdriJ^H(~FIs$fFpcVZ?B%?c$jGCH$ zX#Cc1heG|b8f3eE?sXs;K}Uh@LfI81CCDGx>sCLQ@SbE3tnDnT4>eOCaEv#zk64bL zUMehb+W;Rf!;C!750-0vc07-dCL9|kt+qCIN!!{&^vwg-;X!A+9jhba`*^BpHrd(P zc_C++DNi);Ct6_Z>;!vKl74w{+30e)!r(W*b?EQtm)3rsnHKlfIW!w?~cpdgL z2rt@y0!#r>FY%}q%#45Fk>7v7uNjF4bYB5{%?6?TDqz}WjNcr*N0dii%E zO^!-cN!Jwe;kvpi;AZg2L0qhzgaixad!h#bTiFWzKDKUQVIeklws6G{_miH+=-F|0 z{p?Eb<~iinu`u9`dADGT_Lra~|Dx@n;^-J<&YM)tfMTGj6BYMs-ft54E&Y38GPTt+ z{6p%rOXEf{d+S1i7z=?k!($F9$w7t^v_cu?sbGo0LEKALibGl~bpXFO+fDL;FJ`lX z>`r_`itXAGivYfXLvWRaiK(u~iJ^+|cI~hlXe9s(mX|jK`(w-WNV_Psd~8zHILvfR z*Stm0q34hLJhV%_yEfFtauT9ujZL^|RJSgCI8tMxE&?wv0)teisz}Jm*+D4-6VuaQ zCbxRO>+3!Qiuf6`S$x_aPV`gQX$mct>Y71d6_s2<9IgPCV?Q?n`Z7Cfj55I^|_>804 zU`|(7D3tV`G=M_OMO}S3nN46o8dO$Q{*aLo1bY8?A{`P>79WQ3J3HC>aV4((m)`?M zV5i3;6-k7W>}f;*LfK>7^HNwS(?#Q~;b%?z8C$>xW(qNtR~H=MXJ8;}_4DBOK@nyO&n43X11+oO1A*Q}J@O4w z^%5wH*IMGLj`K&@di7ethc4wf=2G*n$Xm^7X_BJFHfw{QAc3_jov@Nhk!!#h{4iG#K zVyBVAm<}l?Ch6+x!c!Atzg?toYed$lv7p#&M(Qa{7LC|R%Bkj5ttZFRp{ZT%<4J*p zw1==274bL6MTyPM!6*Mv0*Cm<*DY=x-27D~t}OldQFxq}vXM8mE?bJs#)OK+eW0#7Q3U`?x&U0xI_nm4*O+LGK}+SZ zZ5?oQ>Bnn7gQ?l%6%Pz84WrO=+&s_J@=YQw$2bDJanb0E%%zU}?0#ZT)hhQvf*%sX zdf3ymGmT*wbHglDKgc9o8W&g4amD$W14qsvlJW6Vlr{^2UFW)$PJyK8T?5B6X7w%e zO5d4)V11Dvvclz8ULudc^`3ei(m0NUizD9PvMW_J4Hac|`5a(a-ET2wmi$YhY#kcN z#hXr%aO6(xFsWPxW3U=2;AnsBYG*5x0~frH119Nm93w53vnKz_8SogFtfLJE-q(ow zG4svMfFkKr(Y~`_h--7aja1GP3YM6nz)SR-cwzj(&Z%Y~g_`jR+?uGFeD2+WF2Jx_S4M`m7lMSN zeJ$8=e`siPBtx>I=;`VG6SDbnrj>F;_gLAUTplH^HVKqye4U8;VH6d6&;c`M?V8#(1Lj$HrDSHNYh6lV~WzBMl&SQ7I=z}6;R$M}l}gAn0q zYmv$Oz5@w>VL$#{Jc!ULpS%tU8DB>n-p`zwL6$kGDclFf8&yR7ex(lr-s-f3Cc!=6J2V+XCGo}PcXr{?({(}p6$e~1^T?33 zd}~UVM4S?;tM*2n_YV$+2G!5zy}zC_<|fq?z9visPjH?qu`!h{QBIg=GB+BoH`sUA7-SI+gLJs@VD( z0tPy=3wK?VIPitpdJ^Sg!EM9M3Ho37atM8Vn$n|351gHxOfq5G>?y#c9_P}EQX?b7 zFS;D@3U9pLq~J_eZTO8$gH3}>f_iIhB3|7DdPqPv)=JrGYGMm$?! z^5=DzQuxw&kQri>JQSL#$?oOlZ2MVUvNxndad~-W!LDK7!0~9s6mz%olJb{!M2kY< zO&W*mkHORIK7kLAeHNMJ*78NVq&f#$96VD?vyI)H?i1Fj`z{RXbp_sLMoLO|fSGE=5fKrBJ@Q&wTHwOTEwNegTUtwP zpYi!T52s|vk@eZpBizH#^+{!)p zQ&x1SU(NFjYL1FQT7?sT4giUfjlP#(_`1zBgc6~3u z-Xs!8vk}P|@e*tpD1FxTUhb}PbO#AG7(+`>L!SZR8mi>rI{5V^S2Coyp@?uY*P`GD zX1+N~NPd(*Qu}c*B-^9!IjYl32J6;D4KDTpFN*Q^X;PRm>^89tb391`mwDmqC2tA2 z!Bu(uIQ@7y?EJ%rFl;Dj+ujL2Ja~jeBz3KiuUV-3H0-~bd~KdNHAT3=+B$EpK$Wov z+)^ieBi-Rp$UJ~imV(Ezc{GolzWd;I;!aRm>)el zayY7LDI2unXTec~d1d8%j1g7dyEo#9KhLLTf6sHWZlnVHgzqy>@lOPrj?ENB%Q~`> zfo!}_l5T-=gK>fFaRWW%(?vN#Gol6WfDX}vCf4qOA{(1g+g-rZ4CcrA>-4nm_f-fC zr(;xA-pjq?{RQhUJ>m^ij_Z8Axr15{Sl(Rrye>M<>$rMj^d}GEBs~I4+pzsa4-_F0 zdXil~t&?RVty}KvwHsttkCQ4lV%#?d?#zC&G*Bf>QRlZ$dOX8QTxOEb)LXp;A3*6D0$*|TKbf69dkj#ERa&rj0_`Spo%n=O{ z6XH2bzIv0XM~HXB&MyczEP|XKs>I`g$F{yra1;6uW%;MCA%c#e75NRd)@`-cn8(lm zEX7X+71RfR%2FjeeVXw$79?)c| z1R(i5U@fK}TKJ`!PXc6hadlipdH=qE88%bRNi`;fNpgD#wo*Ihhikb17pY8O2fqkz zB~TO{tb?3v<1U%{yl-xhFwjJAy%-da_fqD4AJ-~sFIQhDp9sL^4zDz4iaMjYt-$$L7>j-j8v_B-a?b7YQ_}pMpO_euZHSAeH2kc(L9s z^yE5f+x7%b@Ygh|cJh0NG=`XEv5YKD_RGsKr>8IXJX?L$8-?G|;@$0!$3mTk4VAx* zZ>D)SSwGg6=^=)nZas82llbut+F0nnfhifaPu58m7Z+QhT!BwcXy9?QIs=OKxC&ZQ z(pvs-GS^_^l&Fw!P}O_!qtp0c_^ifyMv9)wheE!6E3zjx;1qSM`WhbLomL*%kr-kH z-RJq{ojXMm@aNaQ4&{0q2epn0{Sz%k@0#4e?TEs&7!f)uz~+WY$1vY8=`pX{dQ4|n zXBW{uN1v9DAD2{*;f5!Nmk{;%_#6}iUS^-hv1Ru!v&S(fj$4~ELX$H>da_L=PbZC% zS6i+JIEEJtjR)L}Jp4Z9%m&&iPOA;1gdh8#yC~V14}jru3)qEs=@k_#YT#S>~N~ zwdA^dSDRC2#KbR*$&l;hOcEjv*h2|7e){tAviO36 zjt1G2K)G+7jx{u?RF@s5?xy(F<8u}L^-9yx@yUgm(J*{=icg$32!r|X)r|jt{`|j@ ztN(j8{?BC?ce0cbONOF^p~c1W36G};=jP$$vZ;JYeL9sJfP>7G58GsQW_IgxW}bqH zv%l7Rjv@;D9UCrqHrVvxKAoD1EWRa;BoiW~B-7{bpih+*=nJ*}0y8YBz>TCfN&R+qJGl zsAr3eI5imB`HWv};q=6bsSZnSR97q6jGdgsZDwRJ`+S^Q6*L*1wBxM!qq%(NAuSVc zs)~t;@x~mFqJq49Uw0cUC{d|9pnd50=tHq>NtZ{%K5g*IozK1?@A}wx@06(}FcoQ` z+V;w&&B3drZiH_+)!9>ArrQQw>vAMKehLY(rw`%NXgo?N@kGWJ6hz)8LN1%{c#EYB zY+n0M`DuO@o&S!W zz6Tw+uHeLGt_Hnt~2 zYqiT?m!mHQU6pbyUVX$vDmHFC_7p-wLZe|@1bC%T50oFB&79v|$Qs#|l$4qYwUXEN zzo@KJ?4O`Kd;_5hBJXqPLrCp9u6LvGn z^P8$+fPCyPF^1FzQIv%I;y=aPZA^iJv(u7zNyUhgHfUpFtJKvj307NC)X-8pDExY` z-?Ui!83NI+Nbw=H{K#OfN+R_8yQq0rzYw#9&HgAb=ot^Ux{8LYqq9WNMVxWP-VW+m z^MOV~3qDGkXnQ6@F!*BdNCG)%aBzhGfh;=YJZTP4DgdU# z_Tdm;i!}Os7vQ2r%zTOLwp`EXoAIimNk@UYy1(BoxEc@=4y=2EvYISb&9$GV#z^j? zHbi+?yo?O}4eb}l;|t6hkEEseB`EW!s^+Rgt^KFZJwBEc@k;uxee>{s z!6ni5t!diod3Ic}1F_&%@so-(W=3BjBqEX#wMHzjt7~niNHkPC@a&mhsvQG4 z5&XDnac$W!c5+7MZUVOo5AYbB@c>Evd38GjYG6H3`JzWiLWedqW-ZPR(l`s7uWiA6%R zTAFgITw0?AtW}TdskZ(>ikoDGet1;=K`)VJ4(c*nyJ#LW(QjbhbkMtscE#>wHbV5y z+D^yrWg#T4>coYvPfXE^=~5Tlpq{L}5ad+L7d{!P+(nEiG3^vPfa!Kl$4Z=16z0uk+FIR z-9?e{?|W{`B9-NJ0#eVvw$wTfB(rsOv5-gNn`X6KPR}id9qMMjlaM#>E)x2NZV*h- z*BL*2NH63vGe0*zK0mRWZIu&YTw!bU2bU~MbxZNbGociHhb;BD_;^Bn1&$Prz?4a= zcymfGkDU~1$1I}FVN>rApX09`G|1daC>EJC?v@j*M#I|Q{gG+@bn3~X z5ker4$29#QcCP&1B+g+>0k@#x<0OyDHM=wiMsW^a9mP8_VUCkfK~Cn=S?GcioKL}m zxa^Ao0&K^6vFlO*_N$%#H}Ar!hu|dEcV~TQ*lG5H#pa{RiBeE#uny+8iF#M=tcUof zD&qH251n#(2U;bD*;88vU2wU0wE%N-q!Zyu`PSB^`qPQ=d~6?bvV!b=R1hnh5_
&YU+*|jS78X z<#~;o3lUU>i#!{fpx$JShlfi=1-QFY1KHHL^&m!8@Y-p7{R=e16Hww3YyO9R>QUe`O{w$F za09&r^NPXOUhylNcc%baR74k-I^$_)XD8;qmaPjT$8C>ac+U@f#5c9gtDtr5UFdTC z0y2@eF{ECZlYP%K)ilxtc%-C645!8y)WMCsaz#!aKgHFe~QUKwjFG$WqcX^KCi1~xX z8H?14Hp~`L;zwqkr)&92=Cl}gThV(p{FKV9AVje!@3SH?oW8S0!9I>sl=I-7o4gjY z40Ckc7K1AW8_UUbJvXR`Ydj*Vs(j>?pkd7Rwp>fyCtkmV+q6zhgcaX6F4HahCLhag zrcLo-qqlgTI^c1jWEY=GDhEHupx?YMN2)Qtm0@LNMI+BkE>bxAlLb^_5i%C`THn{# zO_LXX+(C^;S)QI=dNMMkL+tEq+wb0s&(1~nTl4om=~iW>j0V?oagH-Z8mu(D;}Mz0 z--!A7%pJzVAai7vlQSbawC*W7R6E2kV8i6+kj0_i61~M89V_@Df>O&L?C)%9>g2TZ zBD`g{*lr9*C<$y~M~&$G!W|)W7ck4$4=t>v?>I13su{Maaq^(HT%-8FcI*}0ZvHNK zAJCGrSay$GFp-ShC(xR5W@BgX(60;Cp!`{@co`USu|{(4pJOeYT!VC;oTQ#FF$-DIZ)t5g(yz34gZYE3Tzu3OHfqVTg$AwpQwDTHH>>wg zdSP2MRU$3| za#!bOjm4$+#&rL>ka2OJE3m$A+T#}!C|`qI$sOrv+c8=7V}SY#JzSNTnu^t!^VBnp zR=JCH^4XL9(m+?ZWKP#4Hm%Afpwwq+qGMZnjeXJGWPsPdQ`{Nl9fT^$_RF;oboy(e z`)(DE5L}XrTjV!dQOQ3nrx3V$8@7}o?@7Lo5!#J2ctYgQ@etH4!}~^F9NUiTGi;_V z$c}Dnpcsk}#fkvgcsb@fmW`TUMA0@$mgGIF!jS-}ZRP{Uvv8h)-&y|fK>Dypl2c|d zt&4r`5aq2L8<_Th4=7r5fBKJ`qgvb`ENG$X{bUkpjgJ`-_I!DYy&{)AjvOa(H&XYl zrv2!OJU(AIYr9-j>y-oK+1^SZEAaLzBvZUa5Uh=N+lAlj8;Xi58ptN!igw}aPe1f* z@$pkeMuq`}s^G48K=9KJ7}nJN5Fo`8Bz^uH&9uh!nhJkW^8ojp;O^fWnPyO^<5rq9vdFz&duFq^Xg7asc4C)08LXRd`_C{!*Z( zA9{57&N^TUpf-q49RIn8{=b_Y{wLH7`wLZkD9Z5sNuCqLE3o`yMDgEk!SgXGlij}g lf2f%G68*oaR6fStlg|~sNf+jHAI}(|EUy8slzsi~-vDY)RcZhL literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/grafana_import_dashboard.png b/docs/0.12.1/images/grafana_import_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..425bf057c799beee09f2297999ccd7e85528c5ee GIT binary patch literal 68172 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 literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/grafana_kafka_dashboard.png b/docs/0.12.1/images/grafana_kafka_dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..147d4720fb9d48079c08118ada18567f1f4ed7d4 GIT binary patch literal 1422724 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 z z+cD*0PRam%b@+I++O*LH)ZZxE)-ZI% zv5oW0s?EPx`}L!vPO~k^)4@yIs6kWYSl_wxY}arWLAO4cr57KrHT;?BTY1%^Rt-IJ zxC95{BTl1y4_Aq>=52^)xV(Dn5IO#bP`b76H140BM_7y~*v=?_1u}+D-_EkSyBHku z)A?I|zF3^LVE#Hmga0vXyE$Mhg7q>J&4j}*t02?#+KRL7+3t(<32X`JSHDmA>E5>= zh}qT*V+SQDj|8-Cmx`*DffBm<+y}68uwSgFsvqBQhi9xTyjIbl^$lWW7QH6@Hzr{=p_$cjVHmp+v!r2_9n?__+DF@+Q*sCz?*j%Us`+K zKaae=!j!e=F*)5AK|AADcpaycl6X$QY+(6gt|V>|fcID+hu@3LUsd^(ZffQ2GWdu$ zeba5uBu_IBXll$D4^6DW)%4_2G76}-X!$J1JU0^-@{*}`cS)ut6&F&a`9~TeIV7_~ znLw&v%qZ(;)@b+XyvzYhTGwFJ_%Hw2yf@@KL4qb{>b#&hSrGj4#XYHL3eE7OdjaBn z+%*p;v~6cEdW~kyB2|m#T6X}#&RIW)v%!q`X%R)gvHB*j%1^LFh=U>t|CzArZTfcWjv^^aa_=QRA!N&AAH31a|(a ztl^KZom==SAx&Xm=m8TEg6$6cd>+vIJA#Kn;CW#>I5?q*FZ^>dF2!%BPSDvOZXB;p5}!Ql$pk}dC^{fT-l|QBg^6ysZZH=MedaGKifU|x z3LnB=EG6fow@N+YEqXMqxHR~3HzoPX9db8xtn{xi_;fXV)y<$$T6e)5jJa8@eo*4T zGPK`sy$eZR>UGI7V@aqaiwTEJrPURDB#9OkS!J;pbk~FqwHy4nKM6;h7a&KlR$@XE za~SX#3q1Zb)RK*{@kL4jEgd=dyqv5gavK{Vq;Eq2mH8!GW9^(4&fuiTY7w-;r*x%b zA)CC%OLpldo7@z8C_?ydBSq9OT>g}6;hobEV?U$0`gQuu8Q=YtxWI4Pf?-yg*~rbp zel1R~yzi5oDlC-EFE@H+fnT5I*9!Wa_@&|PMH1=zF3Y-$c{L9ojEjM_TqPqFWZ5&Q zyDr=9wet~{2D7vOx;V_T*8Cht?^Yb-59AQNejPAOgL^4%HxZ}uiKNa8hKBF4vU^Y=h<3le~TBft9^z?X)hSrwuVosC^PAYy=?r>8)Ow&#*{q(mJU4b5~ z*R3t#sQrv{% zV&)h*JrHuv^MV0|FT}ITIA3GBg{}|;Mr~NPFd-Oa28b01pTZ0y$i@9rfmxm}pUBXC_fj=5MDn{z%vL;B9exA_z#R6H+gNu5t*B~ zPG}7HK=R~+QSgJFhi^88gEFHU-c%3{t!h29LVw0wjrp^C`wb1Sx%|f z`Qef~@s+UgXFsv1tF9&I;&8o>S5`U8pH9C@O7_O6sfe)|9HvEQl*JO9V}~2hl{?uu z-V*qFKdS7No=^@*OVZ@Su_SoV$1S#*Qyl$324XRp&dI>L&YqrBjJ}=d&Ls zrb<&#?*y3P@|Xv_2amn2i@&2h%ayeGu)gy$H9kw!)a1WTuuN`(R_W_>tduST$Ci4Y ziA!qyN~dU^8%%^?wus}FRGUjz^lB}V&K?1BXfI4Y@s`3s_KL}v|MKlS=KYNU{gcP* z3LFIu%bm$k|6bU^4Ayxf)DkEUd>C>aye5|*>2fKLiL2omg$I`kc*{bBUynaiPS!W$ zD&eha;$(n2+?w#?jqV zh$tOl2DoM8bJ?@G2}HayU5i--y=UitmAcraYpiUKJG*?ev zX|iMhgo=}RreEq8x=*i_mwJ|@;X3(<>r)7^T#oJzc{pOaV;~iN?!5A>ii)>SOq?v1 ziXQnBQGb@WfWQxQ+^1=CDXy-_c8mBt5{F}K-wZVY_#xQF zjx9=GkpeDER^e=bR{(POTwdgA+_>VR>zblgTujqp*%bh6y2mG&Xa(}cl(Vib2iai=kxy{DxcFbYLA zAeg@VXgBo7cxk%bRPBhdydmPd@{aDBN513WJ-63+{X-9;e`uDQ9aBfV| zKX3IN3QJRW9r&5s` zK2hqd#jRvywJ_oHt)n1u7Nu_l{_Xb_-Rq0pf!q5hVa85T9&Xjkl7_ED3`v~l1R~D# zJ=+Iraaj#L&@;-IS0vQ=DpIyTpNgdry)k-g2o`;|OHV+LMIPN;NATN5?+j9})Xu`Tr*4iIi92cS&gb8Pc?L5rmmO#OU(XVRNO(;Z2CD$GqUw2txLpeg z?{O|4xjOL4gcQ&|(>+5eI#UR0UQ1+6jDu6?q2sJdM$97tp=$3WV{!97$(5d_EyQq= z;|GS*ttAi@$eI7HIBc-9p77xy7ozNhSa%$~btU)hY!a14_bsaTpU?O2B@gM+q1dE2 ze02YEUe>vqx#9q}0Sm8A;GpqlDeLDevB+Xa4q~(y>7UNI>|PEEvG+-ftAv+?&{&NI zJrC@);0Rl()whaQho@ukO~yWg3QBdY0pyvAYtq0K>e|Ta#HtmYHUU^;heHrRo$v~0 z4x=j>D)n$UM9v^_WE*d&H|qO?a}`ZJ8+nyfzIGW?ja0Nn^x&{pH>F6!!$8ehNXc=H ze3e00_#2qRJ7E}Jt)vl z#m}Sb0@qD~_I^mztm2<%xZR$Lo+@nQbbk3Tee-=xKgVWlO^%Pey4%12N44NU`)$^6 z1y~!n24GRbx9gR6j9v*T!-b4%65$yjj$$ch&`5a9-fKd$wDxKlVvWn6F;~Yn_@~p= z;>@HqY*I_l0wXg?%9>H}n8gkp#cm7igCj34Q$|nYJ#8}|-ON6&dY>@U>R-y`{;*V7 zUP~=+SD!gtI@f?4ESJ-cNe|`v2FTon#pirnv8Jt?mPydJz&f_EVr%AkdgvMHt#fG6 za;B7sVYuUKoDQBbz6y-dkVfkN*tz#_b<|luG)!o1%_r+C`9zP9J|B>tM8u{AycWLz zKpXE;hBvV#lJ{Bpc%gjs;Z?E*%xWJ$XcGJN)EY zFK@_sz0DPnDU7(MTlCX%gn1TrioAUzu0z%DqItfiB4>^AvWmsu zcLQ=h%W`!jTKF8m>h5P=XLE!NlqQ^0`*lsWt z_hSkhy#--4)f_(XvdRv75^R%MAzdUg*NIAJRDUA*-mP5;G4o_6>GbM=6d)H-m%Wqx;fdF>?PyYu5wsf?-XXHN)NGgDlU)w8N#9% z81r{y7x_P97aJb2To~t@;-S&`J+oZK1}0l&9vv84Ay(AD4hr zAM>8enJt(*i5yYxY^~*s@J3_4UHk&Ca@kdv-0bUs_Fh1O+`*^rBFK^fyRFMJNU`RN z6fJS!Wt9hJr~2W{!PJ8s5!vZCWa*Ip?z$Dqf$F0NJ6@(lCusfUiz5w#kk{Kd%<1sJ zh4nqPq`(*lCnwCJOA{^+`u+%I$Nrd-fR+5|Nwdn$jbI=JesSpWHKE!FPsavB>N5^d zOOlvUT~*uRVSqM>*>@Wm;U>0p?otO^z^VLMslV{)3m~Z1qk0MlA2S0X0&dn5xsP=8 z1_I^cu+RD*4$nNc1bBiHJZotq$lomseeW_*AfV}%AZg8AC3tFr`_lnVCTDQ0NzOvw zNXO$-=Mmx4;Kr-ZY#{WsZCl;R_JvUNI3Su5{ipDch zL1r2m(y}X7XLmbNcDI8r8v!AviZ2y8Ma>D4Fra|$YcGvxF7uZ;tXAR6zyyQ)`AxJD98J=$sV_U>SN!Zz))sKe=QUh=T`;G0psSe?SFGd} zF&1w7bOF@>C1>iBDkg^~?uf824lwPMk2gds_-D4m+};Vw4rp5w{ek!0Ml3Vl`}Y

NHlmL;zig@iwW!*LU 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

$u>qP{kKR{!5wwTtwa#pVUABRGh>fXJ#xh*kyN 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%0AsLlWoeG&WR%iuGG_d|+ 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

    {n$;zCRWU@zIr_ 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 ANI`T>A3G{K$-s3F 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

    bT9coF6k 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%0DF;!wpF2UxQac)KzRJJYBZLd)F@cWWy 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%0A6^PSeNFCy@OOcd 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ℑDf2cJ$w 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�!VXn9Pg5h=zS!B627nTUdk3cG>nQSCyOgDCG%FcnfNqUGl|?4@if-VprP% zmv%ZjgpX@a59&VaxtxV1B?Nts7j+t@5*W!9qj+LZ_a3O&XhTWC=T|S))P~fb)|q^6 zE9@qJ3bJ;o8I;y_-@d-zAbEO*MRB zh7!U{`uZfM))EX}Cx0wPh<|BhKle|XFmd|#jh=ckHZW_A{~Ao_in@q`*$1Z?W;Zn8 zb$9n<7mN3s0siT{CunO#{Jr|i&$+?=X>it_*Bw^F*oSLw9T+G96si(aig-53fVjy2NmpNUrH6(GQ(Ho6u8Hj zRaLZ|#nFYmT-NYr!=E25Q_jr^U$VR>RQ(9T*z0CxvVTIz5nsM7agR+j^M90=9HiVuNOewsmFV}cxavN5Pznpd&Ks4}~}1$1(P zf`Y{FsmRDy8*wn34EXa=7d9t&tj^Rktvt=$$l_o15@CAz5^B(wkFBm!Lv)AlucG=n z-m3?U8iv4!3kb}SQc`~XTaOx=&;Hh+*Oi4$N`nju`S(o%p^f0juxP@lUsj~eNMmEF z3uh52Dcp;Tt+pXEg;XO<6Kqmz172S4lUF?A6lblzY=wzQ)w{8C6cD5K%g=?M7kHpl zd92{&2Lv8ob89G#zBcnEVrOTs#!!|K3%JJR;dNR6QK}MWDeF+~=;?@=kf7|i)Qa`G z&UkPzE;CE{(J(>hoTZocT?w}=&UL^1dPsNDsJ_yuI46C{-zMee^m49O3>+*lhBS*c zZ>`Dc$+$`itSrg`UFwpjqs&7z`B*`Y2SrBh^rEMomk>*{7=_i}TIVgxnqnn=!otE0 zb`r{4AFb6*a-ls)TD|z;#Z6FqhH}S#W1JvBOE(!#YAq*L#E3%PbSAbe2M#d~&7Y`J zLhASnE9$YdJp>H={x~j=V5~MAG2b`i(*-tht29tJF^N>;NK(EZ6GR6$P4iAN-_QB9 z=gFc*CD)_mZc<^9P04T{l?lDgm>qa?C-oJB6>6H9`T*~J8&b(XW6f9mslu%8k*^~g zTeTz+xv0(N*}Lplq*Plcdan*!fAFU#zdU9`KtR|#{%Kl~bQxmwo=)cSwy35X1Gc=d zrcjid(tsy(37J2}3+ziguX&(=oKv=X2J?gzMkcQWakcSV_1(~ke|d7A3IYa4a|cnP z%!9&8Qz}Tw!M3}RzR^7U{*apn`>k%Xu-_77NkmHZ zEiW&;m(r$^rK1k7ROBu=**~?(-tXSbjtz~PDc4tgB>#e2)F|(UmW>&s6ytL;=(5?? zcjK++5JGKk8gw&peRyaPaNQpbRO=PmI2)^0!+)2XCK}w4!L}?ivD*==vwrr@q{7C& z?)%ptM7^D73o~WbF|x;ALIi7;gm!jp*>LBlr{kukQrIz|DG1A!l)v(}!cNwebOOr0 zUVlbrd(+@7YGZ|?3P%J#x@Y6*7?1KvptbG#P_OZsbg!OX23sKy&x?SL6WMV06%q$ z%_nM+$mC>P;E1#E@yQy@t2ON@!xNH6dAPjvI!OIU8t|2%EW;M$M1J{PzNd&VX}X+{ zvCIJ+^fG2;0$`&EJubU%-d-)4dGy2n4k>N)gaFA_pJqZ#iUI8i_ayS8e~*S+8Qi99 zoE1Gb_T^!=i>vEPx~1yoP#XmvxeuqZXY52GRkz1uvx}sfICmusT^NC|e&2c3cpRCp z2?T zvyPlc7H%936gS-0<$@y0{*wj^eJ?&ReHHt1d^PxWl5i2d^Jp-xXO+&oEzg}Bg zOPbO|>kW@E{foRe@qL)wROvgZBbBs~W}7u{<5_EzN(90pde^+imY!qNi8_T>Vr6YI z!$+#IZN|UK?vWjNEDpVn#El0;cRT{TVOE8d&2`F>4$0PIH4^W$6VTurMzxw3x2i3_HzIy*6xsa zxdPyEZ!nKXIr#4Y4HxR+G;e{WrKNz;>2~H*M3Y_LXRu+D3kNFhvoB34>P0vqewUzI z)F}CMWAowZ^uAJ>)31F6UD+mG{@_SW*(T4(5Xf%dJyztSF8;wF@E|b0tE0qxccMyW z(U&qZV8_(FC%tn6G5Qt|@s&BS0ysYYbw0n9g&HAnqNNlJOAVN&A$ zs(h&+QVSZ`b zNaY(MqIn&WVyqZ(#7V!~%(CN`dQ@deK*N@*?Ot*-Af%xG(rDvrP?wKoI_z=Oe5V`Z zY*Vloi

    lv(e8Co`$+wWg9+|pXMk&!<`KiDV54%vGOVy? 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 z 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

    bj261NI>ROyRV0HyE1GlY9|FF&$%HTD-W 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ͦ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 literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/grafana_login.png b/docs/0.12.1/images/grafana_login.png new file mode 100644 index 0000000000000000000000000000000000000000..4a228edba93f4f254aa437e67dbb165652e0c5fc GIT binary patch literal 34562 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 literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/grafana_prometheus_data_source.png b/docs/0.12.1/images/grafana_prometheus_data_source.png new file mode 100644 index 0000000000000000000000000000000000000000..673a00167155814483c91631c1265f784159f9b0 GIT binary patch literal 124583 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

    8>R4oK8)iWl5}1z+ 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

    dJ;^olbx$p!~4>&3|s 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 z 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�gYZDwfZ|4D(*$ytyAKbDn|1_9`-8E*Mslp9Z_BXJQ^4v!a;6*R81=p>$EL4yAh8SP?-~t|RiZ*V>4E8#f4sAz z{|m};~lpC7OhQ^;Qx|l*M>haXKVCd zzk+CjO2QGifJb>w=DuzqqZ8gX!5%#WTB1W#o~?JxWoWw{aWwtDJ1svRFl{9T8R4E8 z#kFJYe;T<9IWG}&ZTt{n@(L%c2c~5fnzxQ)TJF$dnV5aQ8`>z!JmZeK5}{{l?h{nE zb$q1hjvVQoPQ$B}w}qRNDE0J>6PPM_339F|?S%+1Vl$3QgCxbg>vK*E#VZKFeM$0C z^T81un2fcy`*EcXxYX?IK$uFV`kkOsCoq*bw-a5`oqcJi)zQNmCxNm*N??N(UjT@v zsCDFV4_}S=pJ%#Rp0NLM&-Unxnga!OqGFXIeBd%cWeN1m{@#zg21J16Jy0rHxPr}{GxyAQ*Q zrTmq}E5`0i6Rk|)q!+e|QQsor2J+~dI5bs@Pw!afCOKHNnLs-M0G(w19Q0gYbom+N zh&n1yC_fDi0)L8G_QSS8qlpWZGG@`?vSdLKNomFLt68!8! z$UOzYY?~C&-~vcL+YwXS8+k!vf1XHg_dM|aP9Cc*gq^wIw)=E8T{TC?l@8498+b%j z(eg+7!EQiTeOb`tyYb;`PflXP-ah;g#aF3*u=QA=AJ?B(xNb|rmTiD6qc-Y-g!S|{ z;f19MJO?)^O3q{T0j8b0aN1(<>b=#$#R$XpYf9(R`410x#FiTqlT>7$@P3OC?!%|c zU+D9;E|(YT^TxO2IGR{p%VD#}S>?i?h}b80e4kI?e(JtPFcooHd@FwHxXFi|7rFDM zCOjzKsPc;8NQGI_YyXY=Hyb6}!xj39Qm5z6uIB)Dvo(q9iW7s!C_yNbB7WuvPm=s> z?{x+;u^WXUUc7`W(sz#3zEUUUTN=e0UPn&(Y@9zAGHKkx`$3xj#l-*i+1;bdrZz%d z52u`W_IXnuDdhjYT*wvMpVz{07dK!uqK-2nB|{{@hx#5hM;rc+{~I3wP1 zjIEcJF^vz^%{QLDmKh!6?(ZZPs2G10n_xPCXbvwzL|)=Blnj2D+s=;-UdiAR-CLRi z$;(p!O-$Ow7uqFfT7W0NGIvH&rt0Y1D~V&xu5xebY8QVyLD%xg?u7M+Gq-#myB|Jm zRC0>oXVh`zd-0c=45TPC!H=DU8SwxP%VAwUBTyufUXa4`#6O!o~vF_f5YW3fQ?U7*KF z7mZwC#!0VX?;1l1zJh1r<+`J-ORkSUw@EU);Rp%Q`EOj*TphZGosTm1{TAMSE@Y12 zzwyK^&9`kYlCECbF5$;+5Ae4W^Atn@gWaVTd#ym1z5j{arS)s0$De$?>iSydKweMu z%c%3;-aZc3yLnT?x_-;xl)xZGZ^Ph&8jk*jm0LTcqwh>p)8PW?uD8F>&Z^hbt|PO80k?T7@6dF2(a)gROb< z`gaz1yhkkg#PzURU;U5yzSKH!*-su8@7E)Az8mKcJR+A5*E@bAgX0{NO7Y4A6GPaH zq}@rnZee)Hh>EIZ(hCh38C4P(8EUN-H%0T`7wF3e34OLmP4P^i)E^E`$Jwv$+R5%1dsj9`HmMG z=gE4wZa!6fskLA)L|VqAOo((U^H;7fVX5zvUT`1Qd6Iaj|79+QrN!G(qV~3-JoBAK zU1mwUISpgq7Y-MGBev(ESvmzmyLdRG(;YEw=*{zf`L}{E3>KG)Ts$B|QBAG48>TGt z+f^57y7D~JK!+30_)2rx{5?MyG4*+Ckl&dObU1LCT3&-z^M?OPuND2<*(`_$bT(V` zUtNBy&>44H^ z?=xrot>nL8rw1BqW`Vbv@c7XyuJh+x-NyMC@wsWI7hIm7o-ePYLRuw8tOaz|sO@N& zJzVvQcQWZdjr#*pN}R-89%2K?#CT+s9k-||q?yZ>|LNqFgScu_-I5WY#n(+<|G&CK zM(kfXuk>uR*=|0bIWEsEp?)5U3;5`Jja!u%-qQOkgA18R;&P8qZyNWJ7Tt%>7A&<4 zVlwpecOa2<8Zd2j?(i`vKB@l7F1Ocr<>QscMO$@RpQ5H$9~j6Qq~!h<6UL6H6zypN z{?FsXKSLK7B0+z!@MJ7RL4!Mo>R^WYhq|Q8!E&E&19mRJ?PdfTlxU3kp#tJ-m)F@OvKutAemB831#8BIy zFL83DNmZ`TyYL);L$zq$yVeuwlvd_Ges#`Qqm?T1Ve-gM#CZ9!Q66iBzPGlMbIXP; zL$?0MU-GfbG`nlnm$`M{r#nT6c=6sXmM<MZ=HJ$yZy%z3&(5;>Kk;* zP*1+FBO$r$x<%Ir1Rej)izlqy_ zvmjC+`GaYJ!=!A3yqoj_JCaF*gbgi)DG48S+OKx1cl#*jqJ7#~Ts}l_JdU~hZHF)? zsAd%TzGXM@k-5Vld(UP*PoyncUUO-{|DITZI9}M?ZjgPsF`GGmt6QPatU>qfHlMb} z?LVonJ;V_4@3D47ywM+43wrWDb3@uB6Qz&b8EQXWpCp{4Kj?@<=q3}0A>N*{y{aiLVSthy}AuA ztlJ{rg_6!GN4u-EgDXeq0|c#3o_DcYZ^Da)yDp(HDaDJt_cGTb#WW!< zbIb!7tHG4X&dQ#xso1_UlO3*5OP5!pT^CbAR%fJ?qlBzGD7Q1;3R!W5ecaORz;YN8 ze&1f^t@a2DXHl8Vkzz>IxxI=Rj(zms6H}Iy%^Y>WnPrjHsuVeBg?>4Au}x>A?tVtB zAio{i;)jPa8JZRg?zaSxO@@)guL;s`7C!7MCDaF~BtsUqldV_~DMaJzZ*ihmWjoO2 zpiz}f#^6DUZ+cM`3X;aVFA%bH14uiUT#f%A+W=6L)%>3cVKM)=lMd{)q?C|B!5X7VGc=zxh??V~ z@BAvC_=s!AI8!K7FL~Ta&thV*AhptkGSRVLk$rid{!;RG=eyBAZs5*;l&<|hd;{a| zGtZXyz9T#i{aE7zl|DERdpszjm_@}NJnq5ocIn{l_YwC5_b z(<>_To}L~>VPlnj(UNkoNz-hmR5elhx-+aVK}_`#ig-BS8dW1}8IG~r<0K+Cl2Q4K zyDwaaQe^W8F>mb?Ie0K)@dZptqX{a2b%rT zuD;J%&uHDN4%_%}=B&^6TbDV)6S05}q;=)k*19(gjri0d%;ttv8FcVVh;V3)(D;6<+0k8z73t@5^Th?Tu6@G1?;MJ z_8wPa68LZBG8e)*@H1i23;WLiYcXQT|3}?h#$~-`>*FHb9g+$vNF&|SN;gP{bay`> zAP5g((XGx$SiFD8gKDQod>nC{eg&hTQ0&sXD2k^V3ORye;}At4D;#F?eA>LO`r5A z*Pr3B)A;0`p?;UR(mH#xU)OSV?ozXSnGNJqTt7G6{xOi0zaS(XuyLlr#)iEoZ27}>hDUb``xjpP>i8uI@HB&1F4HH3aY=-bc_8+gfM3PUH$^MS!&pUBDZtrs{8tD@yf4! zFYr&}k*5Aw(DnltI(T>_DMFp$T#<+S-!zO_%)PB2$1kw&XbmWeb~R9S zGpLXq{5dy=IK>a?HyrdYjEobDG*{3}eNW0cK?J`@`@HXkukPKq+Xk90C^OG4qhbn%_XC4c8 zjrPXl(fYWf4?=UDe9*Y9OeT=CP5il4PywqTcA@`e70CaQR#6SNigb>}3NVGweGu)j zthZo0LOb7eL6ttk)}XgzFe|swbTe>$E2rz%^Kkz2gV+KMA9NQ+_(3S4{wE&9dezwU zVS4+>+WK`OWYw}T`7FV&gqcp7<#v&Zc21Cey;eC5c`-cvnjLTD3j&iEoe<+I3;X$>1WoRV3c)(_~Pfa)OGp1ao7r9t#+#nWaV z>oIcp6I}WWiEnx&a`%8WmnF`3TfDy^>}x*yo7SdgAux_JXVzcFf&PCojz8yL1kuh1 zzhnu?e%WKy7KfXn08!}l;p!&X+_hHO)Sf*gac-2{2({xYM;Dq z(t#JY%`GDoYn#NoSy6p_hf6hWj#pYv^!)CWW7uJ|8q)N>R(F2?nm(7$zGq?TL1uV! z>L+X)SWd_0oEnkdn%9q=&M>S6*`TsNOZp213Q=b^mJNP6S;GH+ovfECW_2Ry?T@bM zS2!t@Y7Qn8(vYyh)@u#zYvV01SkTNNrCg45pxqdT7Hj6hn)ii(-P~g(F5dCEyD8)= zoa(v~2L}~7o3-JsS2lKuKRR}yZD2p11U=nS20Ly@aM^eSSV97tJEwij4qn4@sEAtb2WwuNjLJFxxN>TDMM$U0sgKjUx~VSnKWk&^RsuJc z-TMn`6=nG=Wd5H=c!d&LXmE+mgxv90esO$ zdfVXPHb&Eb#zjZpCk4@_a^LarCWmajNe@nAuKkYyd=252>c<U;SUTRNw2=REji0b#9vSXKPP|Mi~kS^^`|8-_VV0exrj| z;1$OG*3e>Ff8Zrf`L*Ev#ecoQ_I}c)%Kx*5jP2aw?aIqeC-0p+C?PA-*X@{2mfNgx zm3=9YBx>)^?)-bzVjR2c#m%byZM37-FnLiRYG|e=svbG{%G&$qg3fNV#o@BVV%0Q9 z&AYKTvdGBXS)MhT2P-<9C;8uj?28~?aWaSggQT8mCqBXO4xjR!SU#s(q(9B+d%qqT zB^*WZccD<7s267SYt(zm5m#9kPWJ2Mm>Xv_`7dht-JCa99AE74v}bO->?PWYCC0|^ z%=iA_RcD`6)v6MA#%{g-Q(RBR&s(VX1y^DFuH z9V?T*`V))3dS14qw}76T27Zz`cE*HK;9216ORw4Je;$}f9ck;=W6;=H^|3s+qmzrS z&>S|O^dDzwO=E%Vh{hU-L4G}=rhn@rdL1vjHeU+Vl8>4DA&$wzBP#DfLx?rWRc@i^ z5sJO{_=3(wzYq)LLZL9>#LcSJ0SLtu!?IIz;obGY8!l;4`?J!)@3iqBUWDr<(p)id zi|%WW=IG|AKU>cZT$nfa$W8xpnjiYm^6W5oibN-FR+#Ur;GWd5`5a54R#hQry)%(D zif*+2G&cc>g?8fr)sLSJ26*s zPm{dzRO+M1x5}HXM;?v5JDD4LcQOk*?}UCHh6s_yPr*O^R#(2{P!FE#kBuZ z()B|oz_^98ZsDw*dMF^X)GI6UfxR;5h`LyVac3kPbipPIBnZ7G!!Jnee`OoQo62fw zvpnnBpA<4(TXuCTf6i2cI^}|;Df|+>^YX{4-akjg`bT6QCG+BmYbQ|At+bt#$&~6?`}T)VU1swy^xpEo4YzGd6jIq}GPKMK3Tna@a8*^AI@URz z?A5s%-F(gXmCIs|<<3~o$3Kn!EOD?P!IAvzE9u#cNrfbv<;{dv+~fk?25p<>GaV+2 z{^^2&RQbW>;bDr~6D{mLN|@A^+}Sn3TJ+if)!DWFh| z%l@%Ue`{yt=d!ZuLN`hCXN4}jf}0GLqN_rFk2g_RZVm}g=!@RLn~$QzwTIxc8Ta#l zT{iUJdD)UA_PX1#Mv!|RvvaA89u;;2n|UEVTR^gXqjn2flEhG}D8vK=MDu^sTP_0u zkv%`6<{*qdzyFT@(X0mP>gBbYiB!wIK84a9ds2fUok)s&&sJVBj)>awnY`zmmHP*S zfozPyUnG_6 z#1`zphW@lVisjsBRhQkWKT(AmQf6DxIgEg}$V>Vou^T4p%$}Rl@CO$_HTIF&_CgW{ z?13PUm0pvjN3XYq%QMI2XuIu2U5zH!cy-x}Lz+Aqt-^2J5)N-hdw=Izw-s*1o+>)Fd)%!D_H)16}aGDo>g*TY5sF*y9V zbA4n|OJ~|d|X!#266MEiQ^vQ!0(4)xES zIx+e$7gJa{yL*<)(Z(qq88z^x8^?$)vY^I+ALH0xu_hsc0QMGg+0LF80XiI7Ef6ggSzeq*)jSkc`6@!elZm z^&+)p)VA)s3+tX5qWxa`9DXNdwFbsX-={YXEN?e%c>K&!^eY+zrIFQMy~Bey_q;*1 z@F^+NXQ>CIF-%{Yf2A>;|JF1{yJpmWRuwgxs(8&K3f41d{y}h({M9RgpH)8G7a4nr zH`Bu;hR-0u@W+$-Z+bkX;PEgpMaR#MrT(5s#^stW@9QH`Zlp7<6HPl6%Ucb^(*EGF zNY2bcrOEi698;J%C7|3`wKckue4ruZ5f%Fz<&2P0UYV$2S$o_=E~2@u<6(@>v+zZDcC_&LX~0#sXL7y1OQNL zCk-4cGZ%kw_dRw70rwZMDQ!{*0QWHMphXCf_y6gxwUWsK%yH1KVz34O+;P5Ar`dCe zN2YFd^y;v^hxq((#W>bL>N*&nxflI=&-$06@;fo`-dTrMI`xyo4?GXd?Zq^llS@en z7>%>&T+U7s+tV-wO$<%`PFD z)~VSv?WOXo#`(56-#)sR2l>SVIy;kxv+CBjU}D(rJLw@lJEUBO``3ax2dzGnyJxQb zH!Dea-A~@zB7>opzmw~Msh1d4@RmkSTO=xd&*^pe7u90ak0&7Cj9V=(3NE^>zlQEu z9H=%N+08X(lW$k1&29{#h*#n@)WEpyrpZw>p~pKHLX)6?&I7L~0I@AXu1`1Oc<_iLv#%u-XpR{%uVREve! z2%D^&XUx+&X+s(yOS$Ex~;SdkgH@|1p(GrFZIC=iu54I1BwB z-XphGctG!Vj7BADED!pyh zU=(pQKj(RM5l-4}jkywevDA%MyT)X}zAdg)%VUrAEm3vRBAtxr(Am2&wv)D1%YwaN z-P?@nu5Pu0?r4ra1MyRAfo(PGdh_kLR(-#qPUQp{Mve3V)9o?b-Z+~ss!#sj5V_4n zDJf7?<6A?%;4@BF#_$jq56QIKe_Jm$w{V;Nnfx5gnV8c}v1sE?k`xM2|D~R5*2v=$DSE0<@IMO-PWU<&(ANFO!t4t=ramP z03Hx#cq(bbY4QbO&9A;_+U*Vay_e1Wx_9;e^SzJ3XJn1RqQ=S{$i;fRY19y4%~}B| zI}K|vI9ogE7cJbQuU!KK?t$XK*3_ZR&A~CyCW&jh+?Sj2pSvRN5?<&a44ei^vkeA* z%cJQno?xg`OxI=aN0tIbh3y1}-)UvU8EUuB@cDg@?XkqmZ|#YK z9*S1I3>+I{#o0DRjXG(A$(dj>wFB8l6HE=1|A3AraN99gji;RUg(;BM(!s#I{I-#Q zG5>}H232||Xf{wc7JmyxEE)otpZLkagkwF!?O63@2^qI_mqznhUg^2!<1+bDhr);b z8Y5XL>mJi;f<&VlfJWDv`}Ai1*#r$E&yD>#tM5^!bLSJmG|#e0kB!`D6#Z;BXjAd2 zdLoUmrYwtq+jqt0oje6@>!0vuy77^9T6WXqDuBSQiOQ*6|C(0NzYg~-y&xa0(jOeg z?TxkWiciwWcOvATJ-IbH)flv1IoEiId|mRQ6vkqh7ik0g+543+=*PS-#8#(Sks^G| z(;ppPEFf#nVea9Y)~~~>{x$P|RQ3OzDa^OUQY}D_e|SiSCi5Jd9H@W9893*z3>qru z#-2UCf=$^2v5#JE(=Ln5EzKfrVxm3!t8t$lKQ7x-JiF-{l}5Jp!kuO|eT#a@E>dHSpKv1S-p29Xm+Nb_agR#oyn zvEk+b^R&sZ+33)DTR+ihRFhnO^SQXob@4tFI(70hQ-H+-gEfBQobl<@D90(6CA}-@Jb$y0a6&8)G`0{;519q;Z0KTLb(`3b?}J0OhW# z!1D~P14QW}CmoTkPxIS@2~D5aVc3(ES_kDm>-AcOu+7jevrR(C;gGWp0s#NJkv7Es z8`o*G098#@Rt#a+o>VUjyyo0u>cpIPhtav2s;!tz7oTWa&(k{!@B;mvZrWHZrYr0V zc?wvXvr3a`)%n5$Bset2zW^No$n{n!yhOEtPyNFYrvEJ-Ap=CHPPRN6!Kfljp+Tcg z5DGSy29nU;%dkWtuQG$PF{Wj8Io_GxORG9GPav}7z4waraNIOHZo|cB6>+rK(2$sv zbYm_1MzaXb^Rfor`*^}aZpvfJJ2vX3-vJC?+b?g6Qyz_|N)p1=E=cUb#E5ih(;pSp zrN#9}uffa8@9kEAcW6Dg<=g1e1)y@aFwd|;W%B^Vv?S!n;<3LO{<-r3V z>(RV^kBl|g7A2L_5`NuoAhc?t`7vq9tjCRC>r5bxx25y9S)wb&cs_%ZIbKD!=1XVg zZxlQ$K#BX)#)U!lD@@Y0dWYu13bgSh?wk0=dT)@CD;j6SG8+_NQ}7`9&z2ZVB-q%- z!R3^2y8cE^sjlF7sc*xK+I4S$AuWizP}fDo<<~@!K+4y1gYx{i5;G;A0mA6@`ZzlWJxlpI!P?&k7e*nqIQiJ z(02(Ep>&Ldu^A9$=8shYgWHXj8ZzJE^EhE*P`+UCK)T+HN*YGVD*WQ=ks?A;NmMtC-lI4BqCl!8au z=G(docOEvlsUDaqY2dneya!XhRts%gtJ|N^ac`6tfN%hQMBH*Oui?|4_Q)q-4Oyj0 zCx*?oRK17lRQ|cm?3HPS`Efyyp(JBwRh(fy4G3=27u&7}CN6g|51?u9Ti}W&5eF#P z>A^M^OGGdGyGkv?6jucm5&?L%B(WoYAmPcu+T_$s?I1%~{CyusSl(Kaz8&%}?BPDu=W@W=t66 zKOLQnPx>nE)GS8nR518s#0fh;Lq@h9Jy0FBno^{QWgAQ8-~~MPAIhQXusUhux08l~ z%AIq*h5Q~7Sfl<)(oPr&i)KB&1^{?T``h_kDScd$tGLrxbs$86v3OqlM(LJbV=2f>P1G{qtl-wtQrAI()Gt2K06Ye62_9=zXa z{G0N|Uw}sdJ|0=5o~$Z~eg2>16ik7-6FA!EjvPPgcdmhqLsBk}ozBLlOWpdMLqo35 z&ebAM&l)I6Q0MJu2GCix$wYi5zYR=VEdeRPT&Ry>9#HY$aPYtIsfGVb?+^8Z`VIG+ zuH0WrW6@+HW0I(Q@${o=XhfeMZ6JdUWh5+$p6Yl_1p$xl@=CQZX~i~U;>do**evT+ zd|AtK@(~e7vwgVUdO?BL{8F`O`)zk#$w7t=dxb+8+vCuWU?ztD4!m91&&PY?d!R6y z)@>i1cMhM_bcy<7MjSr4>9k=`@6H1DTSx*W`yntzKl5-d3JjHx3!ee2A(m=MQYfxH zCMPB)w*K-aBa>T-O2GYFjtZUInVBD#!)$}|Y5jIxepf`J9C+4a7MvnXeqgPZm`-Ds zcJ-{YO-?)z%1;7Na*G^(6oQ_#Ybfa)9srWYOdB` z+Vy5$ezAI^_Yv2NUFEH+sX?~`7T%363RIiP5v$geD210Ud3Q6Fvi)?{(q-qua?4P_ zSmj*wpUw>1?Et8@&5n+Qh$L^BJE+2avRmiqy9=wTPOpl3b&>Vxq>5Y|b0tZ69V%mv zn#>Wzr3~hG9tQJoIz!cJ6RN73EmaWY7AUU|7xh)5h;uk*%hAx~_OE&`3o9Iso*S6E zlw*Ad^XIln+L47^ZtL1H;%Eg>uAJuSQh>B_kl|NadEi=$I;Z%D^0C|>7yC>ps+=0vp7K01KCV60!~n-5+{^_qv4sL<*BT`XTCJPb_C-nYlE1G*!rLV?25JrM}G zbToOST6Wp)$#U=R8hx6{a8|#k>5OQL;`K~}Rk^^5=$sct{(FN~p!k>`MM_Q{zR(_; zA<>NkR!ea3Ihd4lO+|cxaFq>fj|+c$5ORyy-h@x9qOIN$TDv30RbNPREeNR?^!FFn z=}15LFfq<;L0)#UT||s~#L)aD%%z9Tq}GS$h=$Lx#ey17kkdo=(RCMX<}V8lnHm%H2uktn2E_dXiQM&@Ji=ggHVsXXsZ4Zi z{S{NOZFpvHtkL=htMO_F!wCyci~g30a*Mt1P|O9JzKHkqrSoSNdqBIe{oHM1lp{+a zDK9)A&BtCWhFd@o{j_Q-9?es7Vs-QWLeZE3w8qKF%-_ePkMMO=c-!F`=ZI69?_->? zlR9djlkIjTK@Z@An$!$U=J5$A_E?t1=tlaEG7@2wqK%EYS)+1&o<1ga$tgpr4P%Ls z0}?KxQevADbaJB z-noadg6{U$x0bTAE=pNj*O=-|g0+#VG<*y3ut1q$iD>>)0D z@lRW&s8Yl2Z}ZV$ucf_BSkr4&*hb!vI9u8_~sXv)a2jC2&)^EFrfXf!_i zX-}}1o=ncbAi|;P8s*|-r+fH)TGuB!n$ET13GHTMDzM>9T@k6l+DtV8Eq=mw=p!-- zi$P9mQJG7(V!OeSt+S~22Ss)+tf40|=LDR$A|*&?U+HE)+e0guyX9l}^iWt(N-UZ* zZs9OBt>oktl75oCFRuL{$p^!w(^vaY?d?$E_C8)^*cbcvgiLcA@d%5-1FX|za zuYic)BG}rqTtb15P!3kH-ZC{YakQ(p8T#boQDHrUfoZ7ong((jZCtHN%@r}=D3fP} z{fTqrt+kHCIF=hNETkl1y~C$)V&nyvE6&aca!U4~#Cp~dU+FU8@e4T#whOL%_$7RX z>R)wKMg;m@a@nL=uTV*z&8C%#qVn3{+{_yxAt8S{nxhtjbUoWNY(lF=wZg9aNS{kh zL^?$cHycyMg3iBqF-=^?*Vk%>6@ISF$HjVqYJ##b(Vunl0g^2P(I|E|tb8{jTdt_; z5ai$fY^lcvGhjlON_kYC`O zPHp2%<-O~^OE-RDLi@PdZgiykYb5Ybd(?2#uu^-aJxdKY z6-T&F5(M8G9sxI`fXluN{}Nh{mR}~-;(xWVMaE}&m)gsdY#>dvI9zOd-Jf*3sa`Y$ z3zB2I6;Z1EiY`2`(#EjeXQwe5>^#YPT~zY}qhWuYX}km?JnMghcuHOlWR2FdbazM( zXU12hiAW6EJmw(KXpwWYi3y9I1zy_Q+ut&TO?0X{x@r6hCQSn8pS^!b%f*Z}yqK-! z^`nF&O^td)Jj{V2&+2Udkel3Z^^~?_$Hk;SIurKxw20fL(z-z3NSmyVP4AUUceK$Q z^nmItP?i9J;-K-Zf!=c_jN9Vk-<+n^&}_fq)vtEG$Eyic%c15X$Xq#B7PgE^OP%e| z!DTtH%cbTTRNg_;7z>IsOl+Nv$0xcIS%l7ZkA7L}vd*`ZZiBs1@34v<>?AZfw%PeS zCw=_M!d6;cf_$+npR`km?cHQ|M*P@7Pk1cRfu?eympnYgHL|Go^)4!HpgE7L_4O_c z6o7v;R^ng_73^#f+NNcGkEV@e2DPivK$@=F(y)Xz@Qcjt*UGY2DKM`LDoLt-xAxsT zBYhnn-lnD``l_OWs{x46#qiwH1pL5!E!=1MTKCx5@yg8y+LT1MRC%9hKDcd8k65l2 zG(mi4g3O=d@-9&)4UoAlxX%MyG$0uInbBFyLJSrjuipu?S;%7e+31bl2Z?5*5wM$JhWf>WB^8erh?BV)fB9@hxms*@qAEkw2(}c`67R#9Y zDCcuOWI(|p3lQ9HK#Y!tP~N$du*+@UskS;Ezqw@W&bSM-c9qrD&payd@g1u->Wq6n zeAPbRSM>$EYI6*mMY7~m0xL$;nGG5`9D|krn-6Mo!7}C?3Dc%%GtVO&t29^R+#7nX z^3AwSJ=o9>`}lsJq*&K8ro!huJX*$iX63HkEt)0AxaeZpHSa9w?jy0%&;$2!a}u&H z=F}Hf$p`Br7!88$YhGS5-m#n!AjvK-cNEyDIDbCVrIItu@NubBq@F0fGe9g4&-3K+ zxxfjEwvVVgd5UC<`+i7iE#FG@+tR6WGq${Y%XP2*$d};81YHHzlgi)OptnN3Q4w{w z8~4L1=mThiT&g4+q)#a(2Gkz-vCoj01Is#jl38zWkC!5@^rZxqns)v8Ib>>9K@IU_ zfOuT(u&5|zj#GO2z!apu zBKq#`44}|YcF>_+DLU0~+EwRo1kbK~4yM*c9UwmMCu38%+OFTH_>qII2kFLGVRsne zT2{leq-h1XlfvL_|0(abq*L<#m=V-FOszYmpz>Xr7TA zGh(#qRE8MN+)Wlt4ryy>=w%~g5RTC+cWT9c)QpB=U>yYydlk9j%ns4qJ#5Z3Y7qS1 z6!2{pIJMm@)Oh%px9$4D8WXfe?$M3j`q2w?(m5M1HYZE{P)S(zf*Try+#)w7R#Q7O zz@xg{S3NpNPdAEyQb4z7iq&rT>FH6Q3Nx{Q3`q^ot>QtY^k`=ApyrH-mgt#Vi%D#WT1{q{$RD<@Hgif7BK(D zInuAOEop1Z*ydg{GX%#1GO;?P%wi`-YqTmj`=~iGS?PSA>RaMRJ%>LGv9?+YxVg(m zE1jIc`g*5LQ(*W@r!V&#D7X6g$%Qoh8*x z$3;V9@YrX)ptw--^h8`*S;?i3Ea|+=V^z}KamqiZDBr@r^j=YQ0>V)JHSZ<4%zxh5 zk$aWo+t!96f8SnHNwc%0^*ozm}Wn=Mn>zUA7qd|3!3D)uj3Jb$C3F~4r zUn<;`iCp8^iLr~DQ0PT0*wkx%xq%?BJ_TRxYIcuLa5&WI9uwxOlG(?awkA5e5E~^X z0))7eN(nL-#?Ix|3*f!fTf{2RhCZi|(e1EQT?rKT_`hPYIaqhQtp^ z7XneSTo%MeVPH7hAdRYlmdMi@;eTMMT0p@s>3nU=DHLY8R1=87%RlV})J=qaJ}n04 zo;tNz>h<&vdq{)_DlXE~m5A|GDN%>EO;3j_xsMF{Peo8d)4woKP98oSpb`vDXG;2H zFNxGvuLqqsXBla#%|$(&AQ?~GhdvoM$YKClvtkls$NsT4sM|u}snM@YTH#Cz#{uNg z@GtzJG_4Fm)9&!A`--wGwm17ZQIpx_d;q^YNgHaqRodZFIFUC|O?7pj{ABah3_7RE z8>jD#oZ?-Ts_~3VD3mWctYMKpa{=S6(MD6__(cNPd5S+l zLn^I8EBZIyRypZsG8lbK-bmFCoR5!vdUGgopPt1<`7@tK9tb%HRHY={iO)ZJe1Cnjg!-my!~>xycy?nF!}zs)&}Qo$oEssj?13Ma8~-vD47t za=Ja`Q0jFsHQE$BK(}j0HAU`!KAcwKb7FtFdxg6^f3oI6XJ2~+lNCSmIv{wH^#0R~ z3U`GoxL8(R>rY~q3MxgM3@e=n*&r{To}&FDQ3h|`Y`atuBtDl{U-wzzAu?T05CL2mss!{Dz1 z1ge1&qeq+y?`*Ipu1FwecDdtjq}CfBhQf}JwyKDdoBj5k*dpnk$@{u#DDr2oOn3j1 zlVoB1S5AVX&(Q1`kYkG0!v_D2vS+X87b5x${o4g~us4%1W7f z1Ock1mS@HPa)b}dZ`Bg1GviL_$}N>uJfX2fw?r6BPvx7-GlH^{%ixh}*d3jAnE6wA zruhX#Q#Z(|{iNhp?#v9thds%SI~z3{@Rzg7y~GW@;?e!uTGqB|`m?5+x)=%i)k zr8}8tG0v|1`0V}%mFAM*LDmS|zmEh;(m9(cVprXc#U)-(unnEW}C84sA zg-Ft!C4^Z$oPR8F9)D9HoC=ZVSPOv^x&(ol2}#?)Ud&*llMX4 zNA;K3|4xcMRb5B7Oq!3bB`osKRyOxOQKEPL*{|Yvf|{>gr8@?C*Kvl;)8gblPl|eh71Io&5#y}Z#T{C4hn^NS5L2z zQ}f_DP3qBq6I1uW3|62ux-KC`F2#*}qMp_?{+^u>`3^nP#9e%Ln$7#SSr^8ucNECZ zem=#b;h_Z4V|^|J>rTYn&BBSN>yl~A$%k8>rwbWhgxoOZAO|e(G>hBzmzfyD0_f$F z129Pk7MCB$_3}qFmIRNPoyhSHd&fgW=oc7TX}A|SqeHwoU2as+36xkiA||ESx%Re z9`}dIsJ}oW?^clNNz~vwU#PdoVbh(a7!CR{{RChNnl1|Mj=`b4lCrYl+U=~BB(u4g z0!nG2BMKW%CcX5V5ht=9vb07b1N8Wg=-v2qA)kOweLSC&YQlUqSl}N2*zGYWs?qrQ z`C|f@!c~u}6_R*02@uK$R|k@yjiNUZM;p8WS1u|lDlvg3oU;`d@VII|_A9P({@>#& z$n2m9E|jS}wJv{kkGk-}u=YNBHslf^bj~Mf5UY{;TMpv6=YjR2fxqPD8{=^S+q)PC zva?7w)zEz?WwbIp{pQj59dW|(fTN)BlspOi;q2ipHTV~25YE97;D0!qOc(kRmmNEl zlQk+HW=L^9u+aT|>}kg&>AmYT7hRhbQEm;Ral32Ur8K^f4`Z6ojm1vmX@hgy9D1@) zq)Od;ty(xvaK!rpUXJrG<}xaUsm~NJSe}e)2X|I=RynoflML6%YsX&A#90zhMb`OK z1+*QUou1X!@%RI{>KG0wQgngnzew=(nr;83M!86A^!J{ z3V9uWxE!w-?rA+eAo(e@b!RhCn0Ug+1DY0q0{vjf^`tBveVG(99mam&E)TDF$}|#O z%Jv_CG%v_!8UP#(|FYyrY8(TP%LkQWUT@fxSU#yJC}eU?iC%opM-?UUQS>j^-G{-0nqdV-c9osf zy6%RxZ>`OL1^-Iq3>ICwyIffHgytXZQ<&889gQ#Yhbrb8#|3=xFkG0@4lSCWI&DXQ zF2$;#2}=}rx#ZDZ`q}WncpsEJHqUWRe-h_m)qJXW$rj)E_h>c2iyhAh@d*ebCd$(u z33}G~g&seZmv0&8SadwyU9f(sMSt6zDiw16XlZHbN0LL6w52xL_3`{&B4R|PF5xhc z@RO%}*{_Ms2a9d^Tvo6KQiby~`70Nmq${QfypD+I04t=Nt}nfC=)U85qbc`oWOQb; zbPCZ#Ny}u!^U4l*iiUeFZh9Vmj$aiU8Ye4gdc?qxUiY0$q`i@01;BeVZ%t;o#3c}w z`zYGFG6_3{NF$a}z77t`Xu_~v3^!HC0L?$Qp1aCXZ(XWDhTKW;R{Id0DFEbLzFjGP9d5+EEHE7Hyr zL=irWkkQsA11to66d2uYAkWSLKq|}178|(pmMwZ$o!U_q)(Kz(qguzs$qIb0rh{>|Z0X;gOnN$XVGPA;SAthmoKo!p@wH_Yq)?Un7dN&dTG z0V#_f1Vdl;h=mV7w5N=96`+8+q8HQ^9DeW4yF8z3WuvP(E^OYpyquz3S5YN z1{_HKd;aCw<-6*=blPxIT&7fByw@X^W z$N9uNVGN87ua}zH9yhMNxwyo_VNi{?b__3Cd-$$$m1{mZ=n)^FPit{SNzT0PGNa$q z49*L8AVwxtH2Wd$9?NJ}>$*)jK*j&L%lnjjEaRu@J@@{Ea8MRH&k&1>YTWXbYCPvV zzZOKZpQSvStdLMHCs}{iEH9aSp!?YQn0|5d`o)pMQL%M2C=>CfEAA9ol4V47cQgT1 zB&eZ6y#vehR&Ek(u_HFR^2|`>n^%wR(&zheDU_S|2sENjx9#XV=vL<)o*JBgtlG4v-)|Hi?+=cbR`5C&nccKo9tL~o6zx+-beM%j2WW!-}7vu5p z+v{bLjWKq)tKrM-3p_jmP5Zz#Lw|#P@ha7OC1xCk0-;O}*ZJ%>r^k}qEJVnlVEYXD z;%lQhzU@MtX*+q?j4LziO?4*}_hM5V`xGdZuAC_hRniTCM#`9KpH|vMyP%tN`$iG3 zey{rKL^ww=?6E&Z$S0bs{K>fbp0IZqn#9PFK8NCsI9j@0SwH+VwN{risasz9Hw6BW zi?e;%#fdI}KCZdV&T|L!0u~>BA`P>Ap^Td2_`W?wYhi`|*+Qs_MB&X#T|~y?*vlLd zzfw2tuSttr?!XN$;=>b|;Vg{O24NUzn=B~8+i2jM7aUd8-9VJ*FLx={=waJFVgb)( zRktVTho3Zeq4vsQ3SAU0sL&=&!vKSHCjm7$f?lIHG7+CF|{j< zt@^InR$lL*0ueID36>;01FC+V(sBWvgrfUjNd&578`C8VI&0e%N3D9zs-DNXJuKM6 z#gTR_U&&*yF_=0=i?quRkM^J+_D0tHtJ;%%8$39p}F*8rRR%9*B%So^%tgJ=0iuwj+58(yUNEjQqXD?lC*_5R-EKh z2%=pwxz!iDB1@e|G5QkuF-5N`0@M@2|qaBcK14GbOaX_)Tca&4m2G1^UTJ{5q%IkikV10 zjd#c?SSr*i3^t%~wE@fw%4o-XO`f0sG8;|I= z`yTfTsR*%p^I975K4zlwf;qe|v(GqfvhAZh^Sab$R=(eXZJ1qnMuFUYE2JtqsuL`z zQ+e~YsJ?lWilJFsp=Ny#-Z1{V&=(764fgfTXg+GL8Ed|O+db9c5pMX&ozV)Dgkg^; zKF~s=w26LTVAJ1VFqa+ok@6m#-h; z7Zu0jhFb?7D=A7Vt8+n~A5!k)P%&1Aa@Tlay1w?A9HI1;nlW>dvNw_xcX%SW|e3`xf3_{VWV!q4Cn?xcbGW;n`!><>i?A#@FzAZC*we zNvW4K1N7(l`~)zcKhO3v{&rj&_vJ_&_K5O)6-AHx(rL*ex#M~nYWu)5?`N6`vYD+A zt(6^bVW|c(55J*r;Fk;Pj@m=QabXW~))j64#LBLOy1F~dUS8Xom7H*thp9Nj%fP(N zI-$JzA>B&q1q*(nx5>3hkhC=mAsKlV44=aTR}!=qH&aQYr$-PIVavgiO0NW>ORcV| zL*E`X-^_zr;tcB8>&IsPW1gZ|HuoT+1Y`^N);t>$v_?t%pF`GweMc4l^59CpK@Gc@ zSS^EW_j_vJs^+_qOU+N#4w~*@qJO#E^T~C|?coEN3G4runfM8}eBfj{(apU4VLKLVY;gOmU9?hbN(pQ-N^oX#w{^nn!ka79B$wy8DB^l0gY)oa#q<@jb=^ zid1cT1;of()D+N?@v3ni`x76RY9&1#^3X)9Xz8385`l^{o74_rCP-s9KIcBBgKYFSBp_wf+da%v`fp& zxoiqv$F&wt3@q4e%?%ZlzQ+@~6m#mGZE1ez&ua%K^+r*mg^$T}sv=ZwQe)lGdSh9o zWP1=qaF7c4S)!*lr}^;;AN3sN>yIHWsg}Y7IvXl|{UQwnO$_{I;j&x8^9 zOs72fYF3DeK9Svvk*ukm?AE-+y^_S$T58(;CT-{FI}WlL{p4egM}+-EFOmzKH{XzO z{AAzG?G;zkQ2yjcK3b(7(DLouceU4Yl3!{=zmKexN`&0|aXz;=MofLLWQ-y6Y8<^K zvgm>er|Fte@p?CM^6q(7(kN*i2flsSw-4XzaY;poVk*Jh##suBB zNR8_~vFk=Xpx1lT^WZ@unZZ#&E4!(! z4)&dpEZ#YlD1}D%ts(a%vf{YHpE(ECiE^(5ih~tKP4nGSJK21PpplX--eD6Z!eIe+ zKR;M!{Z{9-Dd2dpifR%e&#bVCZ@;{H;1Ch#Ra)EUN8Jq?`c@PV1~V~m;B+9={}~zG z`Y+DMKd$lOD$QqyRf!G_8WChfd`ao6eEWP{a~Jsy;u&L7MHcOiwrB_f?OjOj(jVO# z*qn)sM?fsKxMp6;%3Ke+m+r=o@7U_qfkXAOWIVsbuFp{m{R}yM#5QnUtUpJd_dYBO zf1MmuU>)Wz7=Lg9*!02!Svd*t$TV?%2rP0x&IY`}(?Fvsq~bgpQBY7mmXwspX4Ivn zrJZ|3*UV7xT`+TTsb58)heN}|Px*>niFB`det3r-Q$)asmd}I#(tfWKSs_No7SJoi zkap9@!1HQXcwM(Jxc;@;%ArukX>WOFoWQ9|?Te@v0qWSp7{T0XX+aF-)$lq?q9MG5 zgy%Jm*S^mTk`Dg=2%nX%DOCBlSX&7!LqXQ^%m0; zOX&Fi$A@e;>ic4Al;dAR;}j{oOFek+$q2uKQL^puQ%+W7B*%vq8hRlq>0N$e3Si>W z3}AAoEpK>IALtMMgUw9Y?&~Wy7rnfFrQ9ci0sbNny??KKP9-Gv{y9P zR5W-Xg8s$kiH(Kx_!unSg01hMn8LSqKVe)jQpFSSAcg=L_Ywn13G_jCj2=yiD-gI!T5vD?#@w3_&Xd8fflZ|hl z^9%mn8tZ2*JGiCMgu@3k9|;0dA!(R6Ylfe-c7awzC6`zU*-mdY34eSH-Y2qw)39JeNJ5LLb;nC)}^uyK=b#fRT zTz0Dc>|0C=<>uS_3%-%ohqUZ9P`YD_DAZ?xQ08P=eDw>*t7Yp>gUsW>wnU)G&PFQo zk^Lj|?6dD>RGbKJe*`kXzDk1Roa4nkQP`{GXJHf=*K762dp1mPgq%L45L9=ikH|5y zp-=`>Joek#f_N@yE_G`i*y!}FVkmMfWLy34&n5ODe*dkRz%>zx29ay@@pD3~B0y@E^+I-&`Etrw#huSY(( zP3Qn)q)M5q8-FvOebecAP`MfdmusN~W=7l!Sz3eXKXzJRp4F3Gl(Hb?cD_nULw@Yx zQR%V4AfXbUet&pw8v$Uj)QnU9qb6)H)cCM9mZuItIBuGMIUZwmGSc^XUy z1=oag2=>nt>>#g;Rvz$&)o0#dVo$=ZW%6dOe7fKi^}2_DTpwrU>#H$FJ~0JBEDNLM z`8;)|0rh3Ri@NHa-7jHhgjD@tCR^UTgACKtZ5El2Q41Eu17Xm$)w%nX4mdv6F$<{_O4wE$wRXy=J39 z??X-37@z;&u-_Jp@c4g|-!~mYtidu|_rQ4HrtyQ@%-+rBez}mqxPzr%CPde-!#x7XUfh&P zOz-6oWaFkg(jaMxxC385YdH-c3p`rEn-9%<4}5g@bH*Yh(RbSZaVGqaDA|ZI!-5~6 zU8{fkuq_}&e$vNXiDn+qq)sVSc2A1b)(UrP7@IUCm&dq`xgd)Q4sp<8lm~v?(rZU< z5hjt)b;m}_Aqffa0JXyZ@BsP&-|61-(W3$Dh0fZsWSnfD_O%I?h5VZ2-9S}irdVs2 zjd5|Y_G^ta<*I!W-|+>JtjLG}Y!|WF*^C4`I_9de^jr9qP4mCB$BFjZXfi`1hzQPV zqMYnpS&Krs;>V;84a_1kIp%Bwnl8h7L$8RGYY1pO&lNWv)fAjHWpFAxa_)|6+b4zs zv&c3{@-X)#*P zD|q!ncO*Nav!|bw7{xB}l7kc9FcpcNr0~!{r<2(4sw(L02NoM`GAHJP3npbGuYQ)2 z0AyxXbx#7m7pYi-iviFCl|nnGGo9y&Jef35NRRu+r{St*XWHuu&z5E)E})rblK))R z)5J6!X6$11Ja$9l3s0{Q75vXt#>PnW`R^lMeU164g=$B&qLr0suT72AtxZVs6x(Xk zQjS95;l(+d!q0==AvE^Bpn@AG%7`PJHqZdjHBQ5D-XCbRg_iXFp(0Oh+(iB2iFOSi zR3H-bed`H@hfYbg!p1fhX`d7jG!~Oz^n1^LtUVTu@6FaH006cUXurz4Wj4UI+^V1o zjZ>ifQLp~QDN^hH#3_Ie-iG?QA`|6v3hkajRW8<*7d?ZDe5_EWLQb0DA9Aj1Ta{w~ z|F`h_ggK$By&iAvwP)bK(Hy^CBvELwFu79W|p%-+&R zppos2PkGH$!#=>*s#NMg-SM`JZncHa;l&#M(Z>=8PWJj+F*GX{Al0ny!PVsDMk2>F zSo%dsP-ri7J|s++-t`}f-IVZ)r*re?i)WhE4G0$j-i6|yh?c^16_Z?c@IG-*+fFk( zrcHeDR`6O%&>LhjtovA{f@-tJyW*1Z+HkjBf$U;k)CcOI#)e0NZZuOC=W1M0>U zLF?qyxml7USsoaj2$UbWq-Z^}g?hL1jGqEYuB_wJRGFa#hayhvEC&YLJw#pEMaE^4 zS1VkliHH2l&AoKto_a2z@2u(W*KeI398>&{yrx76%bYF_?CA4WPK(_oNdM7H(+HX=NF%rvi6B;IelBa z+cXz-peZ;!%=H=*%(x3%-q&7>6bw?238D@|$jvhN-g>Zwy_tY1Gm-OSW*_Iufao&K zZ;JiLr4MDJ0ZVt+2Eu_#-J@e!rT|T-#N3{LM!MiQ;iMQV1+d{d!9=y5-;^Ni&XA^W zk{`Qd=bILnV!HU6r_7w;-Mp$%ZnTI^t@KCMFEo8|9TayTGpG4>m^(0H@o9yC%KD9! zTWPyh-7E|U=KW88f9=^Mp*JI1gQr8qKzgT380ghMoM)euLT22gu!bQWc9_ZoU)$16 zX^$o4lH;%1Bq(!h^e=NeWY4BWABcjQ8vtB!=2c(CD735CWbNzuZ#Y3aKdXl=_9aan z@nW)y*gC952+bq-G~S;_p>|YR_GEP`)seVewrS4q$eQZ{kGF_H`3Z14aZlcr7>GNA z8*n{65Vx2lGq>Rm?Uxs)pM?e^rlb}gP3Le{_i2S{0iAEWf5(4KTeRcjD$}6zG{+>T zD?JErl{bG#Wut3&+-z8ly@EG_Z2$00JeR^coSwB_H_M}Y1%^(4{0w*Ex$^GupeCc` z9uLR@5S=Qj0g`I$!$pLw^G6{$Ey{P&TOkm-wEb03a@8=q zeAL%FRR=g#a7)g%MY`jtveO>^*9x-;D$E973ADi56aH1;)p`RQH+}j?)^z5ZjjXAi zlhrH7l)*n+Ns)#%t|JbSmG$SElF zeOaJRu`XpoYGM4i+#}HaJ-o+b&e3WVf-w5O73uzU+S#kO9t+{}BVNF?ptCrhRc@B^ z3o&%$Ihe@2M|n|K@DdxPxBz6rN@)TTHL4HCWEjabA-quu;R;?9jQK1u&vQA*aLRrA zZy3B@z~IH@8;vY_m*rX?URgRlH0`mLh@tOiy8GpJO|;K}N{i$wSZ2PBjFZ4m?qI`Q z2JNvOcii0f>38VuvwX-vb!qND52Eet#duKV!wG)n?H&ce09i(~EVi)-r9r0*xMYv+x_6kOJ$E zgCf7`u&^r$&Pl|J3sE7C%wsalA~}A0=cLa_ZC9Zts>QtDd7e2plTEb-C_{LX^Gg_}^Px`V`(?$^iHL4}qefPzjULwe+b z8M=GT7d-Kh5cMKX<+CzH?U|q&eO>vr9@}(T>zK5Zo>8NZ$sVXeEHMms2a>_R_jCe! zAQ4s1z<~_8UoPfE>V3Q!Gb&dWIyx;G;Af$sA~GMly9^F?kH1JIff$)Jg}F`i5(E8g zx9u6SSD}e2(knJr!wWWurKh0d+G8dtZ!zS0f|#Bs`O;rnR$klEH)3-H4+wFeZyHCI zc)D3;g_ZwvA-JFyB4i1AA)sd26+Gf1o~Iy^1DobePTTO<%P{SMKq)uufQV8z3-zz5 zS_Z%u?xxUZh&#Wj9mvYS?MbM&Z9Sj{rQDSfU&C~jQ_g|?J>V6}T|>AFuX1_NP~`F{ z)ST7toHOYLdMt@H%@ZKka=4;0^8WWdIXOv5BU?@Ke(!LlF^MUJ3G6(&uu3{%t*~zD z+JA1sR6|(kz--lBzuo(*-PG0_X zQZzPhf0@Z$ALirs?>3bA`yxbFxxzOpaoun2oftXT*J{SZCJww>BN02TdaX{ZUuvbd zIPLIlaTF0K*~4Z6qso`oSmG6)6>&CV_{UvLScYiQrL8=@iP*Wu-Z=J zow~r8|3@|ZX4tdDCW=OL%1juJ1>x@HrBi%71MgDam)5_LDW8&6Metpxyb z^^e=X7~3wD6Qp8!zuf)2s*VH|NJ)SLS)2^mTikEBp?hS(IS#Hx$HPC3`ST^10ZNH~ zMgd~8I^r*46ZBVdRsp=ic7XHSf|y8q{5D&vGs@u9=DmN=h=U?^Ym6B%W<2_MqF=*n z88;;IrY-Z3dW)jRqU%V;4h1?w#}Vpj9vlgesO^g6Hbta}z(DQ;GtM$hK~v6Ge#;uk z8Ml`XDoTL9>$@k~a|~u?zfS_wgVc_|`QM!Xp{4@HseRfmov6WUkW7e?bOxt^m^XsW zQ^=npoQ0fCwbI_jXk*-I~?_fZH4qa>Ex=-(>3m3 zP>7q(f9o;SA8hm*TBLBJ_XdU}o1Up%e6Brqf7n5`ekZcXEWVyBjMJ4dSV z>d4s5Uz;v(eq#Wa<9Axq?p=tPFdRmaJdN_5U+v3#3`K!Y;ViQkfK{WN?K|k?`4@Cz zVk;zpJDTL#juGrC4`_6%G}Qnt1b?>-+Ct_{a0AK+InlgN2(yr=$Ncg1Rd+BemYs8X zRoDdc6IEV}oy8P{IG0tfky*(5u1r63`rqTXT1fRCPlB-AR}O!7R_$ z5mefx0oB^>Z6aOi4P{Yl)4+ghL{hiMnZK#q|BJTvu**2_hUY=8U8DbfZqXNeV}u`p zZd>l0Yi0j-#=03t9jpcr65HqK9461Tu8fV2n5^r1RK>21)>9b&GI)*0PET4;_MUwpc=KP$T zDKh1T=6uU#!-XwOf+r=bdkH`{A$oNOy=K+X{ma7J%7FGc8?5H#C;m<)p>yUaItEZsz2<-#` zTo&tu8QuB~^J@$~eIB$tcLYFEw2!lh55}#ni1>5l|DK!sLz8WOfZ602q~WUafSCBc-cc|K4P_8u?+tAxKo=Q-=P-l9OJfsI*qZWX}Pw^4hd;Qkz(=W z7uJzSTaAxqb-$BK#?brN1U>xSZJhNAlSy4_i*UpRosf(PCxQ~wd-9;@H}!Yp$v+`; z)tu+FCWpYm70noyp$FYNZ>{{pZ5Z4D>}6_n2E|@Ce_=0+zzeUzHzyb|pE)Hv&u<8; zo^vWs)GDUvFq)(#1Crx1_FywrfoSzkwMrJ>Y`5pRY~ri!otU;5#iVX`4VZ3oi>LVn{msAG}Tig zD4+Ld(<9VLwemSi;HZiq>E1>@SRp!*dj(q88oKG&sP+Y`>T>f1N4lhYd@^y zfKSUL%w?xg>}MzKhtl_cm&DH&fKm^=`KN7fp;{rE1v@n31ax#8pP3$dsLY+Ub0PZF zzQQ60qwj5@KsSp^(1Ee+g&(?j{~$ z63cr0y_Fa4wN9lOabJ-{ck~7w!yOb2)v!!|z@MC*RgLF)N|+1aAP7WLk-HAaO1K|A zG zdcT21sYAiyH}1;dnvptA8vLLL@(R0>n+8LpoP*mPLGto1g2X>YNw(7!%nb>w1ks0w z%Wz}b8Uw1{{tH<_GH~*1Tk!40RV3Dr)o31s)ZL$HN6oZnj}o*JPT~%FuIdO5(05Ln zO^cgd)!lIYGhX6)*O5(Hi?iZRNdXu?*V<&h;{)BFR|fDSHf{sG63Wh$SIiHZW^_$V;5bXVeHIN5gu+S9YwUmI)aKF*^aP=;sg(6p69BUv9^V&3z`Oi2=zLjkmWF-9 zxTcs}>f$=U+A4$*^kRTmOvdAF7>8aa;*Sg0f=IN4$t-S(>A=minl+IA) z!X}0S48PH}!GT2>l%W|(cY+t?YT9j$r7zM&FVp24%AJZ#q?T&(`(dV;8id@mp(CmVpSk=`duEy;kQAJA{k&2 zJv z(>YQDde}3t0tNIikFh6cM@PaDcwZM=@scSF`skgb9J~!O*PLl;yr5**04HdFn{U(*C{zp?G2J@LzPCBW)aD>?$=6G_E;Ig-=u#R!ay&TD==ODT8uS=)M^(@232=L z>tMofI(b$Ry~HK6<(zJ^K^J5+A<4=y1o@FX&nan1`?mj~E9tht=!(zRa5uV=|24Y0 z^!_L-T^DpGwtbltSq4{yxhS{=2G*l&O>5-mK2%upnJ- z>9D4or8TydFWA+h6}2c|0`1fmwQjrGs#$(Ke0ZyWE4DtE$Bfu3oogo~wGTO5XDGgm zVnnT}BKH^cgl`}bD4fpD25C-5jJTg3(bdkIpB~Or<>AWz*CwV~qcRK<{ZEwL(dgM5 z&J(1V-v26>#+9)Kz=SvHzrS7oWA>BEAj<2meRm33_p(`@tghf=WgJp$xDx5^#A6OT zauIDD;{F->^$fLj!uN7$Rm?X$#buC;=ibl2GT8Uj)s@*KsHhKw&-`*fMjbMEXw*-Z zvj~z~dj)x&Y?}Njf*>3pDm#IDR|E&mIj?`N^#M225Cw`{ zThs5oPcGc2lL9XtZ3~>19jdf6Cq~LMt$S1CWagTRY)=s(o0*jQAL=7^{Btyi_sa?whl;`lZ9`M4c5=n>&nk*_A^xUzi$16Gi2-ai9YP^^j3zohAxEPy5U zw~O9CMLrSF&0^SJRWkZ`Z2dJMo*8$8nb`davpQq@EO(gYJKZydx4(KUax{yC1e0d4 zLgxBfjrfjOvt;i)=c;L?pulFp_6<$CZM03r}2YRka zGo&MvzcV?z5HmaDL^N=3O@8D*JYB>S{CN03`ksJC8pC+;iBs5z>_6KjMrPD1kRLyX zW^jFT3!8u!+*E^ku%{yD6p(!>S>~v^`C-_FiWb>O0xSYkiL5QBEPK>oBwjE3GZKeF zS&FUjJC-8iFP0(_V1mHi5j-fwyE8i7US_HXKFcRmVHh;_iJN%t1)#-(jtG$=O&VKu zzcU(5!zEEefpX{~h4a<-l}HYwsYvI!S*Do`Zs?fox1?8pEJ~x3Kg}a^rb`8YAl91l zKR^(hW32!4zqjhGA0Z$9Sq+}x$0*J# z`1;gJ16BIqlq^DGi#>e*b0i8j-2==79(NS;w8F*^%J^SF4bcf+>Iw^r-0TFyNqdYm#Dvx9e)YOGERo$7zQl2{k{G6)Mbfib$v8j6?w8(Qzl$ z0kCnmq6WlCgk6hk>y{Ek8g0OSFp#rU#9kE=Tmi-$_b>_0e3qAPLYZ-2Sq9?7pwhA{ zBg#Bgqs(nW1M&q;IQdGM!lI>ei6}rCwlH_doV}!Y;t2Kq)iTd=Mn+&_(Sy5bIq3Ja z%yg0xrRnnWzW~4mXp0)-ylYVmf3>J3-FkT#x3NyPPAIFIr?OLt_a0vbp!O%bB~aAv zNq`%`S$q1dlmvo&I5JXfWWmq88aETq9N|UO6W()V!>XeDWxO9c!Mw@raQml%kA`ho z>GpI8?oG%%3|)2R`|100Rrijeonc}}?F|rVL`;#~dzcc|ynSA-sms>&Zhv`C7Evka~e>UjSzg*V!0}?I44q)KU}4njs<= z>9PddciyR*caB~FwkoHYX?5-el%n3;KmikDuT+FgM@uPb+4ye zw=X32k^pS6)B14kA;Za}mBbk)2GHQCGFF{rzS`T5iLV^&Gr?+dx? ze%wuA8W`p>c(4rH=klkupRr9tZgQ?88jSG%I*L zm`cXa|5V^$P=Q-EZN)xoxlxp)!>-`HE>h&91*P~d2KK)R?=^v5J^5e8iV#;9Qoq*~ za@7k~#MKRf*@57RQ7!3MY5NrZh9qY`rb+uHhN<3c?=kou$nHF%JbjVqCw*3@$4_+V z(SxVk$;PL74onQ}^endrF_8g{v7zN&kc8;AG0Thd4cXZ^o3^)ag;PK&To_1_6~E&G z+@rqsl;0FE_X~UQ$W7NAieVlCLd6UAy@FlwpEA7;Ez_GxcV#;IuQE-?Hjsp^aRMcS z&y9$#_63NXZ;7R^8diq$r>lp`;P~c3u-8Pua;hJdb^0q zx%FJx;Z@R_ZN({pAD9KtTZTa0uQW8I`0ND(78MC%=XZI(AIzEJw;asNt(m&h=$Vl@ zGK0OQ(3`xxVAMxW2xgs@!jx+aAF{Kv=bj*&dX7kYwoAKTQSkEQ#e3 zkR|9T;z}85;1s!Kq+^1A2603>(uVaUY_m%oOLKo)5x9479f)MT!sM9J_VaA1d4qA( z7{?ogT17zSSVa(I2)|Mm40{DaDAxM7jmI9w({D?buc|;ph+whV?=1@dt?K}6AgVOT z{pw^jNLF;)-@_LG)^R?H=WYl~OUs!r?bmd3Jp1Xm1Whl!eCZPj!X1T$*GR*|?|Q5* z2sn6n9^XTp4YQcg2w^D53YqtqiLkfK6L+aTVQFCBlI!+0MA_VvbDhyQ;-h?2 zXoFa>^)tU|LHDbi>PKmw01sxn-r+&5zwlsYt6OiKF9wG;*&hxa^F-f1i4)4izXPkt zpiKNSIhx+fUk;QVzupZ!f$&&Rz3JmHadtEo>XGR>I;Ax75G!>sOiGQ!OdvXX@m6|J z?|>dE#goI~ngNZ>D3JukPzzGgzQSnu4qNu6Vz^W-}u z4F&s5jN_l@AZGi1?jgNNaD& z)6&vdms80nE3GN#<{%DVD&}u@Zz^wZu8LO6IC&zI!e=ZSi1XDd+GA+i$yiv>>)Z9W z45Koo5Od{X_RnUk_-Ci~WJE+o^&nA8&|M6<#qk8mhbh1W_e@UO6ghrDMt+1qEVG8P zcs#7v4kKwU>r_9sq-y|!5C?Wj@boKowF=W~#(D>ChW zs()MidOM8gH_`K(@FvniFNu;eqyjbvicir@I1dI=fLr7-yi#iXAI-uKs#!=Yoj^5< z-T!QrwG0Ul1bz`9Gzghgbn@`b;Km+k*=YXP7K513Hk=LQJu6MK2&N`2XT>}YUhHUfqS}gOAQOugobCPFfC+ff1 z?_2>UZ8uPqX=I%V=G`lBtE#GE*z{b&D6~(t?GHZrO`ax`Dl{?IOwNC0cE#87JmDNK zoPQHkDh}^!y)(y00T2Up9k%fAZU6 zlR2w;;S?BSWH1xGu9!6J53Dx2%h&6KP;!%88)l2l9<=6EW}KTSk<85~G)Tb{VGsmE z?Ys6%&k`mNi>It{%L$cJO3JGgpo9=|#2o&i$7ngvU|4q6WS$o934yVE!^X zE!{i^-M@9yR`Gw>{ii5?)w^3ZcZ!Sao);~2c6BLOI(B|+I=?3Mh!7VSR5ZR0&i|IL zT=i0b$!TYLV(e7vxaRT;73g92)ymDh3)!}~-+L)(N;c2(9u?_zpxK9tg%Ri|48M|! zNDdNkbx>;V-!8c=Iw>tGVueRQT9P-U2HVcZ8o1vN!br(RCc0%t7KrqzN!=jk_m8EX-3!Vy9atya+=Kt12w_$IBWFG1qtdy1OX}-7+Bg@0Ni? zjH8Fo9K@pWQ6>|4u$=>jm*JMQ6Sq`h11?6($+P;S*Q`AjSrIfc`o#L1pdQ~R&fLow zJu*NReUa@NSL%>Kh#!q66LwKFUR=qgLyiVEghrw9BgF7VXeF&--7k3D`rBXgf`?ZD ze%o2krX!q~)p1TenFbaK32CX>@4+VZ3kR_6QfDE}?|jemHl)mST=6hn93HaEx0gdm zCN9850QN1*&#=wNWyrkc#^*8}M@@Dw|DJ&CG}fKYj>&53dgfJQJ@0;|JJ^Uc7UdVF z3GAG-ytdb+I2MeLV!X;aQ`%iG8zp{^9^ui6ms?1`67kuTA)3@&ZuaeK(oU;yxcqb- z<_gMlXRkVNwQpL6kkL;%N;x;;I`$2^fT4Ov)8(G|S*`ahn)^q`ZJzpMxr+}oG*{d& ze*`|~KN@&uK=CUO#1*X3hqr-TxnU*>G_MQ&cP`zT{FL#PXKZ`+GU3lDFDIR|&mcr2@y~}&c zxS~{8;2mmS4U_@3mr@K>{OWXv&3ZAN-P&v*Nr25@Qy&!{@{vB_q`rA`tYxdP@P%%( z8)QxBmQIb-b-{0~*l}KvD*u&FA={L3ll>NAY6@9{R1qNwNw|`xMi_XMLHFvmTsHmYDM@xHwz1ASR+VkcIm3uc=gLSTsWdq*#kUp}qz-}9OY*!z&6CUhS z3S$xwSABm5b0!9!8K% z9Xd?%{=Jf@N9fyE$AHt)?GOBxvNo$mqNYZx_yqV(P@ZJ-fvitjTvj!nrA8noV#(!x z?@`HalZC_Y+FT>*?|s1ozVfOuuuRAV3)XcSeB$J^wD9h?HrTtBONCCG*NG(xwIVs~*OD{axvmn4;>}gb!*V3g>FY4e$0@&pzIT}5ES2zvZcHGX7v%XSqb*ae zsbjtiPwco^!W+AgcZA`@zSW$fg&A6ajo!A7ndG z=)s=CYxuI2xv%Ac=pXmZT4Ne1KwjTgj#A&rR zZRRjU{G9O7c7%}K{dT6GEk&y%Bj@v$7vuRzCD>fBAIeR_46pY(rrd=nw>)RwfV~OK zFLPLM>95&dpzo}-@h1MZz8i#iB@>YbT%K&|oo-JV@MZ`Hph-w11aycCh3j>MM+-NS znAFuC8$fqnfc0-V$;GvtrsIqWysn5W_4`<*;aw(Qz!KsQ+^8MDnmmQ&<*Ab5j_sy; z&T1c`R~o_GoK_$mbZ;t+j`&kje!~=Ur{A0?jCe>m*V-Tik#N7aag0B5(1w?+w-Yxp zHsUu`{nNCt-XA=!1<%IDgdrqAq9!=w1CVKe&cxmR{WsA4`#KzBK_;req8?rx7c@$F*HW83FcX)N=hulC`CAPe;-N36~)pw6qxbv9X=KqaGK}t^-+#!))jj z^{KR5^xCN&WIfa>U^Fb@5HI`gP0{Ug1;+m?M?W+il#wNt4=t0=czJwrM*ehfRccVxKDF9!Fuy(;7J(O5Ks zxLY+L9rZLqjFVcYyJp;aWU^vaLM|It5kyzmG9(TQC8qY{WQqL)H@Dggi+VoC-R7a> zh;cj8w@8I?@KVoUA_z{N<>luW+pN%gAa6Wn*KWj)IX=bNzH!0>57S97VXe(j)!_e2FJ zW5guuZjjBfd46MJ`u$3JSVyFAmPwl7N2Ijk`t%zN>bJrk4L2wEop{E_U+WiK)e{vP zmw6UkNsr19MMkCi%3@h)Sq!^}KWLu%HqUJGYOknqxIh^)Wo_g$G5OrN@z8nEFD4dmjZh0o3MU~0z}D=kqrv#vpT!{o4bNMztTyE z3O9wB(pK7`eK$6)I2T;b0#oto;>os+vv> zI}po<^y<67S0=UaO|_2cQgh#;qOlk*`)9hkx+X6c_x2+C)VRo>+6h|BRjM4-e1DBc z$<0E#SLjMw-A(1%bxJ&Q!NFRRj6rd@qgKIL?e!77-?EDzO30VG3b9z6u}lSTvpg2s zZ5lA_OF|JB7iUzfCSp=6Z=AL_E!OXPr(S3CWzS9uxj(_Dr7U-Xz|P(t(?R&&q@cuA z;fIydQcR6Ab8x ziL~|f!j4Prc;k&9m9yn-R1ZzJBNh}Cbar+E-GX(X%^{J*e}uy~^7McUM{G8=h75bK zy`N`;H%Lbs-88K${pdxw@7Zh{ZE$5+!jjN1LO-%Oy`?2s?@htNJ%LPTW@4fXH;iSX zMMQ%@9|~{Avzej%-2B{Rg)It`;`_rxMSM43G z2Dz-{JVsF_*o#x|RkDXwR90EIL^72sf53WBK6q986qAZ2KNOyk#WSXqQ#uGd=arokFP$}SivCXpnnxMwfJrulq;vK#5>z9}HQhS1|1fuT zb#*5!t9S1{Np>V;;}^cm27fa&+$pFGFDGgjG!LNRo7SE0a>My7uicCNYFj8a!ky-R z>X!RY7Jl8ZgL_2#?W?^m%L~tC5xz#)HRt$F@z~~;lGuI7<2z(iL-p(>NruD)L`}Rl zX@_^B-`{;5&f``Nqm@8AdajJKXzty&lyGnn$^noJ%i!bl|W@$!*BqgO?0GvQU#TN@|RHaA7V^Q3Vq zxAIF2k!G4gh!w3o)%$>U+3OgXz0JZ@%Y>2s?)i$DHyO)=EOjP~ZG-F~He+6c^DRTR zn`+I_((U`9#M%LZ=H};XVeT{!-dg;sK^xYPxE5~ZvERI(oJyHmR3Y9T8zlkWZlg8Z z{xw;DZ`)V(`BcHZ0kwL<^2cr2T}5SO2vcgENAGoXQZEp{_A0g?;w=z=N=hQHeRGfM zl{8$Efa@dKIF0J#CO^3`s$X4EnG}Krr+yms^?gM*RqTGRpas5ekYEzwGK0Qk$fSs@HhE zF@oP#jldY=UGd6KH005do?(ANQ%{}8H6pWC^#{33nSf8} zh~sLz4qv#i^@Co`Ii%lxk&@_%@p6?#ythBUlOwg~0gwqkMn$!(ec0CHfiv(!fK~yw zk{Dwfgwc}ceLR$p$%lC$p^1IEbIR~1$pgBYp1mIu$hTtFcuJFNFdQ@mk+te3&5}Iv zQItE8$F&|&!fr*xzTx;l9pHTGf=d3aeQ~z*fL2Ndr(5br6y=ut-1cBW9T~K1H)T9J zn!83y8Ef6BthatxVkuCmu0?PhIzoReXqmvd$`&8#)z=bHqAV&$4$FX(Zu?GD+M0}x zC!vAtGs~Qo!q|e+PjYak_#;N-TwI81!?*Zqk@sU`4P51YZXw*|aIx#AwC)U<^zNt-Q1gyo+tSPx&qtNL< z_pE4a4-(wB{?S~%_s)7%5%#vGDS}6LTh2n+oeY0IIe(tFvcQGHbVgqbCt6;6%=@#8 z{fl(@+i&=N`$kSATpsbNTW25K4%HpSKh$sf$%cPl+Mi08Za`x7tfZMuU}U|#Ru1D7 zZ@J>tyTm|8RUuIbp<=Xi|5TQVrE9CHa zmh4+}uj|=L=BB<*#BSZ7!zo17Tben#_;mke`^xJ;!BTX;i8qULYc!rEcYPCOB%~o+d-4)9p`o^Hn}@t`O*Z?YWCqN=K@?!cVD z`Q;$F+w}?e$*c}CN=(8nroe~&vG1mMc6;LwoBDiD+H)SEb;n+XBb@Jkx0p_7__CBct6q_vRAM(0F9Li^gfi4w zz#;X#Jg-!tXq`aRh@WZlx%cRX1qCyxt!#586WzLFDUpcPL735^4cFK(^>AAbE1)s^ zOt@(4{WG-N{Me`bOQMeOPRcsRmy@dT=A5wSXAD)7$L4Wj?2TUiucQdKy^S7;QRJrN zJ?d`#z^PZakW<>|Qzw~bv0P9`8ZfZFQCVTfPJejhtoAe61GYaxFesiwtFWV#yt331 z*Xw+lakB0yfx``X;9TWrQgM&7_egxThcO(7_j@7}PEvfWPv8p0amna@pwi(RR1zqt z3sv)^RCQw|^*=&BEq+-P&AGkJxEV%iQ!f-Bk>F#K*!f7;&-!XAmA1dXxvY$#^<7hg znPD_)AflzO&y+8@Mz3^LmJjp0W)r=ukRqo|`o4rSJVI9no-3Y%^vTfk?N<`0+u^Fd zG)S}>+uD03NCT?{5>?UOZZAjs7_&b2dDGmMyVAp-7H~;K^uKhGHw;sKH!F2xU?6y| zB3xf$TkcmE0y1{$1f2YQbm-O#k`lF1K9Jr^4W(O-E4JBNZZte}tqD%XUW){}ZI*!( ztJdZP&GQC(HaD56_mx~$-VeJxB{hXsoY7~4SaKpqVuV{xX($EjK70Pks(;H%33-`M zH&tQj1IgXZ%a%-1iw+nvX_i;NB|~*qVrIuGg7*|<^o)eDdqw}98Wx@4m`E&?$QxX3 z(YJ3gJ!MXtLs))&kJfC>nwbA}hIq)~F`sj}CoA;Rcd!161PPsF*;D2j#2wPrG1*{A zT7P?k^gc>bqRMu)zquPXH!?=q*_VTS%cEpX@5ZNYFTza=-CbCs(R`--h4vea@Ef<% zRduV~SzaqEyVf+n5LD)OhHbAu-|&o%#@NcdCY9bHm;yHc&<_MnMUU=F{#*&vq-wNY zFLmPFuC2AU9#Y@1{5ncZ@K%gnH;1;!1gHD1kyEMa6u$H>U>Hv&ql1l(W`cQhd#F~; z@FjxlEBf#eLQ5RUxJXpjsxMJMfhkui6~lvyo0>@G_hKe`%P^F%d2!6(+Ka()%_gS_ z5#n3KP4(*=1rJw$ZR2-`sPv9>sB3&n(9<0Agi&n}xVL5``%*?x8lE39eo;-XMPz&XZ_cPVlej+RrvGt@`ApR%U`C^u5xJH-W`}R0NLN zFJw$#kA+1RGQU;my~N0BbV~I3^XT5OLcaQ2QB-rlS#@No{e#JbIfm(UOu(Kny*qHZMmnFKxF zgYAUf0Ow??#nvy=0W|!u&hE$#+%KO$y1#Fzm(jxf3pO&kv&`a=m)FK?%sLNp8%wR+ zOnM$#m{^smeJ3NPLko4W%>@>dc8nR6`ns8^iTH`}0RoHgulrUx6enCF_j4{?dl=}& z)pJ%GdKCN2K5EH_QyTp^aCH*I;;>_=#i({II*Yo8d3=bR@R%2#c0ym+VDE*VV8-(_ zHbZxt#2ymV4VQNP5c>6Is!Fc%24u8s8Mr=Y&kg=`CRG6fWyxRJzuvr4_UVQ1i_Tt$ zdvx*W1l2(pLFrl}=d@0>iTuRlS%N!}j)76oBtuZ8Cv*5-Z|>a5L|YpIb3Ze9Id6FS zVI@04Hl#tZ{HxVF-f<2NK02f)e&4^85S$0^u~#w?@e^B_wP;l{jxct_G~bi}qHFqm zM!P*6{#yy>r`z)V^7i#i4Z@QrL3wEZi?DZa53Adve#1tMZ8k|`+eU-Nwrw}IZ8d7s zps{V+O&Z&Fa(CMIob!J7`JQ|KhP~EYV~+8gbNkgTJZV$iyru;m;3kpYoCpoAIva?l z6eMjS86hROqu$FK>c_&6t!ej5T*vL7v`2b5zzA7~u?Feyj-G`w07BR^HMu za>Y?7%PiLH;ufz}CB8^JqR4Ms3Z(-Q9l?)^N2a9Rw9Kn%N1r}xtX2V?JwNc$rK#<8 zwz_r4HY86pKRWtENp_uJNX2Noy%uVd;X-nG@F5n5SCV^tAId%;zjt95l4;bacVJs9 zD$ZAiEsy}q=74O?<#@@UcL*IYXK*%V1}bgaIB|Fh_rvNbWH(^I3f4}`!cZs5G}+sR zCG_=)+n#qA5b(JQD#0Z}5b!Il?oogh#ZU#P4EH0Mtl+d7H61e_r{#5Y#u9w_UpJV& zu4jq8zU*1P_z*rkPDIn5-?;9xmMW@{y5~vtlt8eD}OIv*lR$h=XTnYz_(s z2MHTtfr^nZB^{Tl?l0{M2N+dDuhUBUW0zzjL?-5RorAx@#8uy|XE;JGII=Xp6Yw`Q zWWAJifu$iV6p9_v$ZurzI)yz8+`#5W#Yx=ND-qZ$$-eedl~;?VT`eST{*j+bE-ErU z2DAs`$6%$)DO#2i^B67*T#J~@t}LGfFd!_a;61xd2iokKFyd02K3KMSQBV2YBMhz{ z|NIsn>+6U%cb0z3hjL>h_Iozsx=)Gq!;ja?A2~HQ^}!j{kUW_*mQjQBG{RO=AM+BV z<>d=x*NbU~eg}8^hTxxV2}@C0qum`l&?!_&)pj|Ym=K?kTM&LzmY)Ur$6KAB|0#BG z&x}}PkB1kKA*^p1a+Hyz4PwdFxG!`d&)k6~!P2y0EVa1+NCw+9i_ehSiGlNdH<;^; zv!Z#6C-it{Ggo|+W3*kZj+OFF3mtQV7_wAQ+47bH6x58EA4ChiTvz=|!M04%yM8ZX zxQw~jA=j{5>Cr1iG!skq4=+Y&+Xc8%vwy#1SHrPV06kR0;V%rgLySbFCy+pV) ziBfH(pU0vs2e_{|NkMS~^VSp8UJN)~9CALg!lbTEm&}u5v3v7mW@WiG(CIXU0{>4X zrl*hL-}JCO_I&#_^IX}lyVYNdi-r%8=6iF;`Y%4aTU&bbV=I75p#;AiHAog9q!FmM zp@}-dLl*cdDfPVQa`l1d@rW6V-$rQkR6NETJgeEMa|D~&(wohF z$jGfkNv*{V#&$TCSomye0#gt+dVq6ndpM=S_>#@Y2&;{-dgH@`kFrU|^i+rfMbr_u zI7KQ1c25Ncgjj1}s0Nw*ETo#ganK=QDPsiYqlaIKJ_BhHPDJj>CH7pC;fEfH&v2gV z?0Qjj2KTv0aU~h=gKKR#U|5HgE(P222YdDzc1k}}zQ0cD9sqqHDROVo3P%TGV>_Sl z2P>lnbrar%tdCNMIvAH%=cbHugpSTp4pHu!^tM+ERS^`u1*r?hOiMge2kL%o+ef#0 z?rlzjM6jHnz6#u4|BAhPv==#A`M9!SRH|P7*b+&MI>O@OLXMT_0mGD(iipRC;zu9T zQyAnZZ>IMpTc<-Fi)M&VuG5CIBzCwFhZJ;}Q_87kbVjnnD6JqhCe~q=zd&trYN|?Q zSNno_YH)sXGK^w3o|84Ok;^Tvax14vONO7csRX8dwr(a!=lK@CvA2H|#ZmVra7x7o zg@M?k4zXriGH(+nQq0kfpqdUHX#>)YQKcp%0dFXZNpGu(EMbPGw zNTqi!jn>K$%r;HSk|YTC^n-NicJ+71)!!|a*rW7+Jsi4?v!}(Yulv%0xQ+%3@gCpL zH$|r`Eglm;tYyG+AgU?mE+;0}ACYF|`>O-RBs5e}3t1(UaMKIJY#wYACCpF2x$iRk z5h3EZqFZ`gcGfio+TgYIF0UKaB6sZv*WrP`%rm1hroY+4(AE#n8#bMOT1c3M-@O>% zMOS^ra`Z$u7TqbpmfSG&k@&}#jYFHk1YcF3v`A+5ecq6$qf>uDUi`D1pwDL9ro=}r zUPx^om7k3u#(#f7zIebY_|gJ@EBg}W59V>m7-fbwE|uIK8d5eBzbybpzN>|Sfnn$B zy7^k}=;-*l+(kfeY(h#}+A=FEjuQa^p`yNC*ux{ZZP4;J>KdI2UH~*dO3|)h&j3&b-#|C^em3I_f?^CK%dw)GQcoGg@fIhNB(mLCdrD$ zcK+M7@j^lwM**%4L0yz2TTtrm_z2sv$Wr5UD9>5YU{)GyV7nS%n#YkLmN{^$8j|U` z_XK=aNd<>lpad~uS)A^z`urfYJ?w=`Mm~44r_lr#ZJn5UEy*^;3_<3spylzC%?0|)EFAsMNFgr|V^<9!s}<&7h?T`3 z7S3eSzt6e7cO%gG8QHty+BYL@rS-rEA0yap|9t#a0H1^(uWvNX@GhW;dnw}jbVjeU6WdmoY>VzAR@HyR*f zNywtv8WXO1)N8L4MxA}mE!KnkDXx0xf5~2IyKi5_`9pk~la=VGoR7CVKXYyr5S&G5 zJf;7~i+h>M$^`SEr{IEIG}tyn@AFDU_?h%7ywyn`dw2MG)2rKlkHeGCikHXEy%X4~ zT(v8;2{QYIZCKZ-e`rQ*$PdEGB306wo?0jG6x4Cle4n&9L+mCiA6Hf=(m)N)FVCAv zgc?Op+n1HgA6fA_Le5Z(xim^p?zJ%w^QOwC<2tkJLhyNWW&-=YrEnaxRrcUE(8<+R z?{)*0ke0?1f|R2pyknlDWbaa^k3d~JMzz_O#(k0?U{>fK)HaaP(v49hI2a$EOZngNGXPyehP6(V# zk15RwY_5ka``n-ViMRBu@3GP!1r-t!M8J|CcMBttm^iSs@|H5l| z@h-`s2`F@GC0Zq6F!AG5qeeR-0z%;N2!l~JPjrppD(tb&ApChpTp_+iVK zW_7*7B|~`Xv)b$}3*6o@B70WLB*u(ubJU=sMVVgbcc z*9Q!%@<-{%ZyI^ChJttQ&oJ5j7fGMzfb0Z_s?j*>cKjOwhS~TTI_s29qjq1{w zgHLT0{)#(`SW~&2L3dGx%m^2J!TC-t+4q7-Vq{@?hLRmVHydMiu~G@ zfd>C7lk`U{z#Xf@Yynw6L@s--0yK)9a0&K=dYE|t@7YL~gb{k;py{MV@?DeW#@drW zn?QC6hz$h>F=H883JL7lHp~NrmH{F$sE=DIw9hIfgF2uVh)O+#gRWYb0#C}1WFNH< z#cA+Pg3dDx<5GzYcQ_Xl&{51Oz@eTRyk-lD6vc-e~t& z>jwBY*BfD1r$>?$L}*ugRX(b{L&!mn)hm-eAa14%xx~zS zW1#A_nplXUJ53_XWn@ZvY?Ntu4DK|w^Sr3YC8i{AE(^MAs}ZBaEHu|rc)ULxNbtR6 zf-OMg8NwKF_aVNm#?wR(BsFzB?3q#fv27@2o=jJ13 z!L^Kg`}`?V`t*nIw1ydJ2xs_Z;j=m`*w8q;chVI2%(nMJZE#&lC^pz^Y*($SI1x#q zurNxTO$Q6r;^KVaZ@;OHiv?>My)ZAP<<;<+00PwqP^yfo^OPk(K;`Cg8iavbl*d7e zuiBNIYDKr0s#=_hE`h63H8%#h*2|>ioFlLIm=i~fn07WxZfN8bQuPwp7Rj@G^uk^} zEMZw$VPQ7iRmS+2cp)kYCLQ^|NE;f==!QnV16g%wD)8)1lC}O*1FtIeYTm*#mOy_P zqy&gkhsutzeQ)3g?b!U8!^k5h#E{CUikM&00|k=MTQX@U`35jXmFM=DDZsY-=F1L^ zPtLr@Qu%tonQzdDcuNM10M$DwOkm%$@NLDyPK%`r&icukVKX0M^A3b{#kA1_|2xdR zz+x3Xn8{Cpt0H5{=%}gCc8fa>HP3q@gWe+zZ41p-CfH+0Kg}O{=-NQ&c+;6+IOV*Wam7EV4GSeztc{NhJ@8fOnBc`Z+xZZkG*T zJ~KPmGw1kSN+O6jA)#ALMtBduw`kArtm~$7xYLsVumJBYt7D#Zd>|GAzP_YlGj}J3 zQ$?zOTizK;E1+O64Xo+MyTy!mdGC3Ot;O#Rg=}gV7&vUEt`O&2W<`5GlG(=LNrV^o z+JoJSpomJe`&^im1AjAe(cRT52^~XIfN&i8Qr^Jpg=^#WOpD^fNfqjS0aiVGXefWO z7YP@!I++~-o0kNme;;w*2Y8$r*|zHEC|`2Y3;~l>bcGd&S5_*ST*$hY-f~QOsW^~* zi3$@`sj6zb!|tdDT;o1wEWlZDd{c?!>1OC}?=a%i(7&=%rhB6Pug6FCcE@K(bhPP~ zQz;V64!#VG|MOCLfFdZHkop#(I5Yn%LRswLG1r*_+*H}r@I=RNNYAt031c5{FR99a zQb;P@_NNru_K=0BQzp5YyDW5TVsaPYQmeH{9_9Nvt8j_iF*a6kUYu$8yV4!H zsq}ZKClCu=q$Ny&kmac`-nt`?CfAz%#hpsKMc6k1!h${1ED{BHMxoPiDIV5LoRC$H zq>C!?TAh#{=OWL8b3)MNK9#*V!B+K#vn!=m(Gp;uOdZ;Y9l6_?e?4_|-i}kHt3XpIf1Np>1Kw zhbPchaYCE6L?qc!>`CYbj~lRuh(UaNQ~SdnZ;4JVWTQ){=Sai0B1%EV>pW}?A8WtGVW!fCLd5*^}ImF_$+7K=A&ML_mL%PTA) zoJwKox<9AVvWGmRQu>1BQ3d0%#Yvx{7?6eJ@K04yfGGUdTcW?aJ?aXYT)-i3loHxH z9%0o+(>wgf<}=17c);$J=y+KFuw%w3+0kNEFG} z9$3M6kH`P0xL%ry45AZL|yFk!sw~t4i6K?OXNJHK{$}DSMA2c#awmln3QNKeZQ~ zR7r|G*GKaG)r&D4LJ6QRu75Gx*{|cF6&CH;CSs2RC(mQd_)piHr@k-@i%; z_C7Z$0GuntTEyOj+{Q}H@S-;oaF{evmtU3zO*c61soT4N^-;b!?M+OJQHS+U16>ajR#W{(Jf~Lo(**2fEM_^oNWkrdC`D3M;9H^FLYpQYcA*?8tINK z#rd|tVkS_4qGFk}?Txu=yxiyD0kJM}PzVNGjM77eUaW10=y+Q?> zcHi!YWAFNZhTb`STUsTBnmTCozgs}!w`9*BjCyNkwQXPlS%>^JUj{Rt0AD&i8N+c| z_n~DHy$*qm;3Vii$^@pV7DW?b&YF7 zCXgOZbmy8{Lq;DwQrvf&zR!?S6$U`_RL5DYF#jsP5%c~0@6B(`Ew@Tvw2>NaMDELF zFC~iE>ljI_bV!#fy@_d|vsPDV@k9Ujugq9;!6c>&Jn3Y5O6XiW%k2@ChblNG71$#N z0Ixv7^oLg%ZUAP>~j|M$q0CO6h|5>GsqJChwV*tN3pM+oTlrSYIe76$5|) zT8^d{vbTra!JSEp4Cwb2Ji}poXHQrr+PRX^6$ILUuI;yyjrTr<54$K z=378sL7W`N`d2;8$X}_HV6`H5K{K=%7X)X75b*fXn!ngP=M*6|5#<)#JUSb#p_cE6 z-WTtVL)(g=CJq3ZAD8wGaKhGei)6SZW70p$NX0cC(+4VX8tsFKWXJTDq23zrN&{63 zBC-=Mr=ypY-R{w-;HUz5nyBm%uKz3WbUjJ;Ef6Bir{;NVnDdPzABuwde4QZE9eJVz zMTY4$5CXA-eTm0-A^s7*cQn%o^+X<&*Gp*0NJ)uGI@bdi9}|z6I_mGg#%Tyl5|4`S zIN!vJYVE2>ncl;}Cl*e2N_0%E*+i3hj2p(mv&zxgG+Z#1laOW zYO#?x+dX=Toj>tdz~6Yx4D&{%{TnB*4VjeV_O(t5#sv*wK@iJf(WTCeFwLlKwB3r2rV9cxt}S z4CM}8s8-YwZr-F$qI#m z(Wc8sYqG2mKe#*+qX0MYGhBK4(Z4-9rPmKr121$~Gt;2pm?CorC^UgKGE4_chIC|W z7AS6xww5Cc`U0v<(ZU@CuKKG@q$Kk#5e{*>clVHY=MZ{|A3&)=j?%XyR{ELj?joOb zqb;Z~s^qEkjem-K)}W&Lu>dakGcr&*B*f03V8*h_F-0FTA=;}H*)R7`_5#a9uX@;hUj<+nyZT)|S8t>CXW8p=gRla{o#{EPfCuc1I_6H?s2AqcRx4(-3|c%v3B?o)=x z1XVo?%P%bDlhHzA+#mokF3$ey7e8%g_;K;9BXsDiDiI}zj}CA{_Xei6wzeE?e4vBh z}G?O?cpjZZe`tfx)BL{X3#);(D5U1w!4P8?Tevml@1Hn$K6FJf4y+Utb1PqOPuFYO=ZKzMS z2}Sx_`&pd%7D5QBX0XK*Xj`U7vpN3K^=Mgwu^G)g-z|5na>|<_)4LT=<>C4P7j4b+ zrrXpF$bvsF-K2Erldj(`!*TFi#`kr3z3%FYRGWsZ3GKb#`W=JRBN7cR`xCLVJb$0# z$u*jY$r9!>*(Wm5|?`KDTkZ<_dX6E}w3d z^Fh)mA6IA%bnf;?usp|AIb*O9?DtPtKj@w$h#L00>ut9@a zR|aD9D&`*t{h&SEA!K84!=|*5$FTQ=zSjd_+W~x9Co0z5J7HDJJj-U_Y#OopG&<_SYX|__7LD4tSQ3Av1b@ED{~j zb+BG9<@{`fvSqW#p`6~9V+94YE@8A9Gj17wrb6a0malvZ;C~LU#`5TdDDPCDu zqV;)$U3~`St1$7n|Xo7{00;lrl@)WwIfUvaRbQls70(CYc7;uH) z8s*E;{sX@x7Mhc!HVhER*1i$c?S{?&EQ{KO*=FJMqP$S{a^^>mn!9GzpivSfBXXck zyxFU>!3A!8Py-<=zdR}~i@HESj~uumv2z8KF!AIJopiY<`VuYsG4hgxM^P)+y@svI zBODYD`>8$Is$}P^p{o&06L7l0hSq}Q)(*~_8(g%qvBK6ltbrJ$5l;X3$lvm?o26uz z!zsNTZ`-(#2N`R7>5^53Q#J~?tSAN{WeHyx9mN5#E*w(3E=VD)BW+m!5HoUyuuWuV zaI^OEVn`&G0z&nt@j!mG+mC7#Kt~>WeUxDZT^Q~~@r*XTAbI8~MJlKgwB)DuGGs+c zVOp_wH>V^8g*(t6?Q$B_?SpsfE_u$Z+!26{XO@mlR1S{zt5Z7tyel zEqeUW+dKiK1OdbdV4!A2(7oV??X=pWMo}v%)Q7_u_BlZUq`-BcU^G@V% z*CY9P!E*B?jE;JKeGW)w9yT$X;FA5`a85_CZViyqLG{gz*$PGX%`tJ!Ns|Zefryrn z;bF{~65?3P6B)Ws@3C1CRJ)T&*trxybuvlV4;cf0_(TNE?xwwUZBF)>TC z$S3ETRyETHCIvd_$ zo(b(J;Cucb@beW}D7%4YobZxQwkM2w149_uGrA16>on!k;>bJ^Vgy;C0OceG(f`Zv zP3V(er8-8}<9kB5-QRK~4x`+Z-{fP(z&i0HIta!v)VNiGD!@N-I0}b!J&LJ+u<#+k zNe_r!sCBIsF5v?`J6uzY3Bq;fLr}#bmNf^oM_qMb^$@6y-&lof6)^LJzYMO8WIBn+ zdH%7X&Lya?eR2Ic^W4nSxOLU~nGU|*z`5gV+-MDPe09ZjbyF=vIsnSj z)UM>bJJjOQIEfiGwlheBSb*FgGAF8n7iP!c|W7w$Y5+F+Ekc1%W zl;-#qQE?=v(xMe9W4~1GwMr?!R}lvLZ9?b;rICYPY~{uMGQ1AkpU4RWd8-IQ8D*%B3(gab1^p2|d**C~jct>n?= z+MOT|iL>d*+MyRdiV49jJB~v@=1MPI+TAae{jIUEn8xxFCp~hxYXUHn_c6Lim(TSw z8_z_?K)Mc{U!qL6YXS6r^QU=c0N3$Zk5$5q7Nr6wtzIKFA_CRQ+A20SQA_x0+ovCt z0CcRPs?tAyh#;B@>ZQL?vT;CmNLbJXnF-aAy4P-vI|1R~YtO{>pcyw2gr9c$SE3Rm zS2@wIqB#O++bL@)GT)r}a@ou(l@owL9Cwtn1NsE}ouVDO_N{@Z|9ND%`Lc)0D&A}h z%)^Lqx8%e;Rk4KQ3BD2GadC0izH7tvT-$3))%-0w*x+!UA7YMI?os8fZ0bGj@PshR z#qAxy;%`o;!oSLckN81+GH^ZSK<_%m)Z462(w_Oj@2vZJS9cSbU*Fn?&~$Kl!5ned zK0iZ=5|c#eiKz*=s36|>U*t8k!UJ(XQqp<|T-aIfycb9O;O+Hl6mT-BL^Jc8baQ62 zKR7-ZIxM8`^1*L@JI-&Q);uU7KO{d-wx8$X+xe`&fSMYJBz9rwCmJyueaP&+yq=tO z_k}x|AA-a}TN=MK^NmkI+*n*oC`ey4m~38+J=hhhp@ajvI@cr}XnrubF_NDI zGUqY9H@=dalalIF)iKKjGu0(?;}_u8BJ8in+{o4Tq+ELca7B(?K0_HIuqIn;dyFC4 zm|l_K{F3)MN$_XeyBLC2dygaNs1PSuNQPHsdY;P)QmPuQr7mTVcHPn5KHI544U@vm zADJyI)NsHo*yKG!TxzptGQA7oaK}1xExpo4ioyyHmVl$J^oVCKI4op{wfGcLl2QiC zCy5T;CC}V(AB~ONVO$Qz%vj%AS2+xf&>{*M%@?7It?5JIJJaoMAAX`olzE%Xy?~5K zQMF3?#(hvzFlwMqquMFpqyCN06oL4R_nFlK$Srh9GQMJiB3O$>`R)3e+BrUwQ<JPOr(LN- zBw}B4Qc_|ReV&7aL)ygL!B=Nzw|?&skDlLc#%vBHQQtj|tk&Y?|NJD}LbXsGM?93V zhv!m6S+@B$36TSI*(0;8QYb(KeB+4OH8u>jUV?e}M4+ir5I9XYtL|q<&0sD0X8QOj z#CAVHwL&Yug32`ER*=2rCFIn9+8WmZlAYPHQ97E;04Ax?s{+9%Kb4O+?#1&ob>4q7 zyM^o`qMSJ2kG`e(utH$ukS!`MDrUb&F$Gti_028Arn(f2D7Nz`^C2jAV^dPVp_0H$ ztxMMm9DI|?jAsw?U=z`kh$)iLTpjJMDnf#yAYWIL*d_05JTDgk6;Kn#Yb$8msW|i*R*36u%NIUx#817vW6JWLQ{OH{8xtPsY z4wa=tZgo>n;C<016l=_2XEMyQ)EQA&hM-;COD9 zO-&mjn%Zx;4jzy5(qpe0e-$0IawGyptq|i|4-E0QuDt(smEO0!b!{W%@)2d4S`u~6 z1p|xYkueLJJLzXI^{>h#^kfohPD~q6I?ADsB2Q6hJz7!%VK|_vkuFy?{iLMLYa`z< zWAnraR9sC~42Y|Y-)o$4oMbn|d>@8Uu2Z%^^lG8V%)yV?*wnOhnLpR)4WI3K0fq+e z9!&%b3-K6E%>QtlDXOA=r5f`^{YC|~t>|(u)|1?^tAvI>$#RJ<1;zDah*SYQd+o7; z|9kH@`EVfFmX|mn7k3dwZ%VVi$bTDS#{^#QDPsxlyIR$AvbA)2MRPrC`4ZsxZ8he; z-Vxk==~pKc5B0Q<)>^Z*^07CcM+R*9^@m^vqt&Lx?}M^szj9Y1-2vBKp-1D|it0*Sl4|hm{C}+mFrd^> z;#bQ}xR97*>qB-?KA!(!0Zcsu2pa;W@{3Rm?$tSnrci{;w8(c$k&o^$}};O!Fms)55@bBu6QX zd)?omVVUD<2?a6^3mP5*cQjQM8j+n^JDs>?2V3qW#3t({zdOQqVZa!U1Q#x<#s;#` z{((ZZ&lV^Z3dKFiWtw)cFT77@&oT1FN?6x@l)$DtBwfM>4bp{Y!qXUH;cW406Yq+; zy1qJV!i~GiO;$trIP*}|AP+Vs5m&{m?zcfno`1KH25k>5G#6`_5>MCPYd|D&wSQED z!6Z{jC%sh%TA(^etbCeBKaBNwv0Z+!3vh}^k*`L3YzZ7rO0ob_)hKQ<0JRG+v~zUQ zY3(c>A7yb@4F{9}W&XE+l)(6Io;iScP3F#O+UdoTYVcuzydos6@FbiX6H(K_)kU+} zojLgil;9s}9m{Jdb)kNNs|t7DAlx5Qk5!C}T!6|FEJ@N_QtOzU2Bo8y^CLOuqRM-L zRQ(*S+$vppYJu(IlLgHAD3+Wf>>UNjj@S0`>uUSm_Bay-s#@o4CA1%ADJA4R-1d2N zi<MeI5|?p<@M1`W>g8k~-Uw=yTY%%CP_5$fj0jMHWnFCNNnRC*nG3#Z;HkQu0xzwy5 zgmHf9rt@+Kp6b}UOzlDSgmV=uI9vR@LKFzOAGSBXf6^#W5h^E3LEgqxUTY2b$kVA{ z=J2yzhk=~J=MP_TsIYqTLsMO$dN?*&F??YL1&=Q)KMv&6Q7JGK>0SUP-uzSGt_pIX zMMu41fNz61m(~ZHeFFaHjbqDYe1{ zcK=(_+(qV~@lX+3^!b--v{`sYyk4~M+AyhrO^MvEN@Qeqoc2;NB{L3$7_U2+zxD!R z#1AQit{^HDBJFqoj2c=nv46qc;1~PE3c=dF!%zy}JvyO2g?{6(SEI-2aI)H2W-U|F z5w{%>ELQSzi8c3NsKVPl)Cro^%|>$jTl*z1)&q*=PxjKe)Qi3amOQnrplOQm#GNA5tOVjZXLc9jO%4ESnMu%4h|0PcH&VU_%S!`Xtpw` zYKJJ-7F(-cjw}k(Q)lyo?Qe63R;z9K7%&S+X~AyF-%Uw{o!DnN-)5@D|Bc;}?39cT zzag`EN*=X^QzXv<%}%C}4uS$2+-lkM_%8}^-2;zFCgbp(jpm!5Q!^>?K~T(-4RTV< zimMcd-&*Ui0!Cd?kdq2M^zi9vyD!t8G6yTUN^iKgn0SfS*en)IYIM8kY?nkwURO!8 z9RgOX3CNI?6tW{D=wu2CPy#gWqeDx!vbngpJIDIo4GtD7JGc+!%*iUTy$GIVH75J4 zE4jULRmFS>;?$0hO;Qd2@HlM|w|`fz4AS)80&YIUlc?Vo8pVe{yy}UItRp?i-p*zg zr;gA2&hu$ND$nZrn{3>d6@T|B{HvJMIRD6(w;A`B~E%O<#kN9y4a>hBk2pxrASb)PDjC^yNbedD-kUhT->hVXDzinWWp)D;>)_qUUmR8Yz(C_aOI+y2BV#5M!V9QPbQyaZEU-V z<&Blc*S8u^T|OD_E?7K#F?2U(g=xr_qdR&32=W=~miS-|vxrcFNmtPD9?m`Z4eiHX zG)APWQqYXaF9XYIKa5d+OgQgu?8|91MhH+(@0aK(+6A&$kyX>8*y$;8QJ$!yG<6=U zk`JmbYLC$S?f9bm_tOo8*dN-a#8_%_@WVHbXtXq&g%r5WC^7RSd=)9({N>ywk!`%r z2xhAtaIj#C1CSMiM5^u8-^LzMWfU;}GzQ+|2z~qZq<#+OD&to;zw(P2y4NXnNBqUvSyxv>Z&pIH=FcSY5M%wdfI|M*U(>JNcc=}zlY zsjK)PQ8%8!IPiCzgBh9$fO%q2n{Teg4_dF@HM?_ha(5xx%AIamt-Xd)4gqu7Fo4&uHT?P!Q7Iv^g+`h%kM;s<$xFFcbIm8qE>S-F(*1CQvS_DzR)a zy!`a&sTY3LT&^Y=M_R!ZkPoL~XN`-p^A$msI-T}9o+ciRd&ypUu)?6Oy# zqkAN!3#yNcs|=P4G{ne2PDVUgKpFwKah>Yg5g)ez3=vt5)YAk5QB#Mh|Lbf4_Sw;I zxZ63pkc6n(EiyeIZ-UsLd9x;}=_i<*ByxX5FcaTt!E1(VIdZ;YemnxSI+-48=wC=I zzN%urZv{w4$~OlC0IXy}yCHB%jZXs6E4Wr)O%q@nA9u7RxLtALpxVq>zBwFTFlYe# z*$)W=zdoJ71LO;*te;H=zmUBOxs6vvU#X*z7y<)L-{Dw1(8JG=t)*3)bSw^H4=2-> z6nmQes-sm2DeKyjOh6{gnIKvVd|w&{VHNr5ON-@IbsXQ&f*JuR(7Ia_Rs3)Ir2zlZ zMd$Zkn=vMk%LoCBRHo>3NRHpGXpND2u`v)yp2S81OSaCAuCag}DgkHcaIx;RT3kqE z6Q4YDQuM;Aln2MgC>w*3QfIi-B#1*69sic^u?7t{ZlY*eyO4p4m!m@sx z`I}G{p0#yw0UMF@1fr03S4Y|=7lY${Tl-tUg91?FZ@fE(DYUg$-XR3kib5_uUm?(h zQ^BAgKbNkb6m(ePqI~YO-+TJ)vu>7#&_6O{qn6HB@ZBx(n%C+)9Wlm|zl-@vVw8a% z6V8oOGw)08aRApN?3%0rGRl8?x1yFZlnDZ@>ZyR}jJ45=8`7fsV$|U_M~#~;dpx3dRN=b+T-3N24|z zK4-8fHp;H3K1dP(<|d`8$-~)*N%w4r`q6coMJ%K2C%?wHR$wz>x$sV*BTq(AP(8ZK zCnfzwKNhWsa=D|^-%}Wl!3_o*J_&XdpVbT$4%<4RPfkK?lV9?5*^Q-qq~VM80XPo7 zb+wRaaXD0nC*7}MTs3`H-kZA7!TIi91{l1kB-g$lTkQ{~;X+#<)*J|6 zz9K6-2fR^Cr!S-(B%Nl`_a+C8A>I=S2133!gO7$zyxjM8}{WEX#Dp$^0G5vA(;%O z`fRPsPQ=OCZA};Mp@C)gaG^Hxv`*9;rmjO%0Sx%^F$ZNP^HFV>8;y@_=u49&&~>b^ zpNcFau9EC-+1feV$7Mns%{0L;ji!dcT^5nDUt~9cNYJb-kbrKqkLlw&k=#kND5-xp z1@KK9y+8P7d`(5l=7jV1qZj6+<}a$%Tecv?VW@rgG<|EVxh z!wn7&Qc_V(nIqtm;epZY1a&K@O495&i%MnMI~isNNVik0^KGGv{L~J=c=EEx_~2Mf zw!_P_9G9NncjFG@CF+oSbcDCHwIz|;YF=`6btRy$A7`}iI0`LlZo#zi@+g?_L;Y*> zIQucy&t{MKX-o`^D$|dQ-Ts?;+XvC{ku~Y7j4wzmP`kfRZ!S7KpxWl1v zdT9`xu2gllMEan@^Ja|CqU8WIuTL*jfzAynli^MIO#(0SM{vNH)jz;|g`D2fLq zt;&8Us~L3lOi1$hl=BqRTwl?9L|pE6*e)6R(NXx@EFp=*X~;mEOL1osguD7i>#Jk0 z%RFOf1Z~%IE!>QTrLyx9Nspl>q` zLABqIdPWe}fHcDvphMuSAwps|fUR8rB{h|=xJz*6$&J>SV=d-A!+T7oH`VGg)eP(n z6S}HnFqDb!^_u@3(`|a?^tZ`=aL#3O0e#!Ev=Hgl1%n9r%V3dEU{}!kyg#~~)n$(r zL;U(aruCjdA&<%KoPk(#_T@V!9P8z?mY~z8b!W z)89ID6!_7(T?ar!1!6<`t|+#gUl#IMJ$_UiDD0Hn_I=s(SXCXN>yPsr)cEo6E>a zF<2sBAG$Oa-S|wc6)$HLyVrVgqWMl-D2fqt1$re2yKlcqaE5gcw2cY{AO4R$PM>U_ zt^D1f0aV9rA^ZdId(U2>I{n6~ar1p)k{@C>BQzu}7TUh_G@0Py)Y8DCHt6Xu&i4fI zcgb3aD1?B=q}V?_=(~L@hYwaTQkQ`~{KULMT^b#s#a$bVsVskyF-ge|5PzL7@B{$G zbJY-+G`_KQ!^GTv5(d!z2AOYHw~S)k-_Q;&@TX4cG&XkQ(a*zh=K%mL=Y)C*32k=8 zmDh6im3+yOs7KS_zY z+5wa=3c2j?yM~5$pthlJPikHy&-CF1%=`C%pOKc^++4aO-Xd# z`_x3yg}wC_0tGrSnMk{kQcn;RP61fz7AtEu1VAE7v+pR+-BEb!D0FyU+4Bj-II6bF_DB?9 zcr)O)Qrr|^QT^$^iNS__UpLw83AY**J?B@#Mgf(T;X`#RhpFfu{JY0Fu zz9qN^NxtVbaXX+z)|M$+AKoS+i2l|#EGx%KEaxG$oqAVNm4A)|-J7|tHL1^&o+6Lm zc8zV*EcnrDITkc8No%29Btn3={1wGf9O2@^SJ(H2oR?B9!|z`B>EU+fef^|h z%V!{M+H0EU_L|wPY83eH*Q!=vJ^m(4OrE6!F9;EYMvrd@Ll=Vj5nry9~ZK?{^dA$q_Jj(Tk_Ro%zu=uvwalng_ZGx(7lADoq( zg)7hlSNuv#J$bb7HjfS6M^=7h!Pg(LG=viJ0{`9;_{*&d8k7G>-6_dky87~CM1|lg z>+u+=E#}6pLABU2m83s7cNn@Tg&~W{dr7TQd`{>x-Nz%O52#Xep^zsl6)?DQnc*$R zX=JBsdZ;53FQU0Us;`UT#ub7<507Y40A`N9C9{n{^1Ggpx+&!6^A#aCRY-4cVQHso zzdsX69Jt6wpo1y6L~d?wDTQCJSN5+lGCP^r(AjP$VOLY!V)zUFo>dKB8S^fS(c|Bq zjdb57Tqm7-B}fOhI{)p%^!Dotkm6YV@-W`cWno~Yj6DmN*RNjxH&l_`% zXaQkiL6!QDlW9#1&e7eOw_SGeNDg~h{4Tc8fGEVzPc;3^;{Y7ZsyFviC;_fCqJePZ za$t+cD#`;u_J3(FRl?Z zUYtJRg^ii19y8kEWf*B&^&|!q5)ky0)=u=8NP*0Ud&%BLt z&)|>&=Ri0!HZZ`)TgqQfzvH@>r%oh2@-x;_Bj2cjcl@IIGf%t!%62y}z&&d#?T0@Z zow#eWysvMmjzQ}aVxV_r`@lLE2p)#l@F~`VTE*s9fc4@XCYK*ZFmJ&cmOzOD9z=X_ zD|cA}5mD3w#BzN?q3e1ix#4o^r`!iie3_4kor`$4g3?Mh7j-B~dN0N_oL$x8YnuL= z5lQo<9ZgZ?;s%P&-G_Kun$Jm}qY@^5iI53NcZ!gedV8{YO5bA(RtldmSG=K4R!ID| zm_u#Rp+JfxR*d$GSSVd6*C+#pj)`9Wan_`*kpu>kA1w zsxu5mn*iz%YcXnzf0%+$HftvsWgkMHofoYol(O?pJN*F8*uw*-Jqs5~F!Zac^D6==t~&IgBuUr6p!VQQF0L;3OO5c=S}?6fk=q{)x{AKQN>_&t z*9ht&$DF1=IU)!-=}T<&%nahB#R?TNN8tHR3P$bOI;IxYPu zQl8wQcwLtJUmqc2`$t4ylqOSxuKP2gt;gDOG-fsMh8r93cWG89S92y7GQvY>NK~m= zYOqA3i7!XC3v4zKHZH{-6PWT3nek{Uk3i*=cVzwEg4L7?0=eN8K_XwU5V`w(fcSRN z#hc-WUt^iUBmJA1ayDjL0el}MvDUg z40#G-N>0WgR*0sH~EhogK5$e(f_v2M-z(R)&bC zazR@HN~D1y&fjU-S1eHJ|DyHX-KBfFSTP|<&t)w`K~m$ld+9A%wE|3@|0d7v<7aTk z0!1p~OSFo34Rbx^Z98&hkD)P4)eU+E9K%5c zTE)k$OrqtDpAQx@E{Z6yF44fNR%K5wAMh~2(qmSK{N}$Sh_0>bc(h*2QWv-;Lk#Ak zfgZ)9h{|fqE$2Kp^~Md+dYyksNOwZJfNf%^pjA0)TGL5eqE#j6f{lx}#QS(~vWSjr zaPx%;n;4qf$E2&VYI=9&^)}H9)gr7{ajD?#(u#^ka`4>K+JySwEI`V)M|^{mm;x-;%hmOg6Qz~F zz`P5aui-zYjm{0nvmxbZ7h3f7SFlFtIZr`BWB7o}Gd6|I_hQ99YChsEuaGrAOr#m_!`IOE&yzGtYz)`Spf=6MA?}$KM-g~A3JS}JkYrm5vB~s zuNkYmOCX_Z#J z2QI}GA;iC57{Z00w@b8NH!k@nm)Qi<7u3v82fURHR&F?pNQ0ABO?My*k3G0IVR_h7Hlx~xv@bau>ci$wFvGREVKVL=qM)(vob#(|QJZaffK4Gp zo?nsV8{iR;i2DwImhUwT=T=zj`~0B^JP3d@PcJNw{N7)zN;(H_nd`UK`Gvklw4GiK z)j47a`qRl1^cOQAe@_fJ&bhVh%6YS+1R(Ew_<=eZ0C_(cgbGJB%M!ag3m<&5+O^m- zCIw4EJ|t*35qVfU4SzhXLJ~p=lafa>87h6|U#cYl{eZN00swEp{|3Culy@@ZmMvba zTMF4i4>^^$@Zp4YlO9UQ#A&6un%6yMC+e&N^}Mg|F`&)Ha7osA8Yp1W9W0uznR zji#=iO5c>HAzE#}>SbzXR-NWbZ%~b|oRF|kXH|>)u;T!OOkg}pA8S8x#sWAn@D#R#8%HSFCUo&Ub^ zd~P6*{Z>Ny;e7G2OP5k5D=7S`Jhwr3zMx~8Yu&LA1Cu-2NQi;&_W28V4f+-;j}4lV zt{`LU)Gh#g9ZK;s4;M2!-Hfpz8T4Q>3eX9C+CWxD_cPmlQ|qqNlYgj3MugNwPFEo1 zC8$&A49{kTvV+Sba=jKLRgZo6|7g(fTPH*6BI8FU2K1VUb1m>ffm}MkUM|Un8C}J#Ccgcw$Tr>j-Kq zfM7(c(i?BD@_KY#$$E(pMyd(EvJ?qU^?V|>Ud4jW=#K(|%d_iPM87Rep4Lpo$d8KQ z@)co_JsO;Q9m-TwB!_ZpO!Gbxafl5~v#khR#wXD=-{O22F8ajGcH**wm29}XnXLWn zYQta>q5Q6c6}F&iv@b8!IoY_4>h+*dvHi0K%;*?S_g6yvpEY}%uUbUhq^y;&uULY@ z)(w%st=G`Z4C!fofPAX#)E!GocP?!fTRBu$GLCw21WLkNe0zIJEK-@V5mbvw8B)|5 zQo{jp(XxO~KP}~2$U?>H4F|4h25MvtGM#3L>3ZLspuy@Pw|kCDI9l%n7^LP*)zbzI z0f=nH^IbW$hiUPgFq)$CDoE`-WCnVi=|Zm^0u<&Z;(7H`cwbG~vv)WmI9B;Vp@tO1 z#mGq1PUp4}6KzoC)8$sUZ|R?h7?Cj`DqVV%T0-kbLUJ5OqTlpPj%DNjYqi7on|zg9 zGJKzdXJi?&%R{Dq!JTPz%&Ht}mTvgX)Pe??@NE-11=u|Q_Ea$c|1p$55*pyWr&=<* zS8HP$=8LP68!}nq)O_FuRX4R6=Uotoi{(>BFc%)>yw5D+s@oi3c9qK?jXtq+N){75qdFb%_PlyV8(8FA z=DOT-E=I0%ehekPZE#Byz|G1cGd$$MC@k6LMwu0!y>amf_UNL>C-Lgc_V!EAz6 zyj%PGQ|sHMJDe>TOWS#2RYgyZgX)#s0(yg~}EJ z1~N0kMqp>oNpCQKPztC9aQR(9sZZu%^?5dRB=V7ujj2Nfy=m{=tC zW83Wc&Gh3aOD{Lda*FI0H_7eEKc%uqIaD7slxBa5N_MWo11CDWkaFd4yNQpb$rCHX zj@Zp-M@@rMX!~6C7jTXYGXF)#?+sYGWE5cVNF{yXA(UXe2)Hol_o3m-4NXf}N&f-I z&K}6072o^N3?bSz!O{{v@HI7GV{Z^)Qp8cNyo__)A3B2yUM^HX?8;=Od+QD#-U_ z;#|$y-lYyG?J=FmEZIHd zvE#*Xd4^7R{~s>cgblxEDqv==``grtAyAWF;S;9Y*Wd~USK zRa#)MCf```VSBL^SW7nOzI0vR8W~+O={%AUjjvM0Hd6P8;aZeowvwfvqPD8T|5dt$ zrNK)h3$71jzxK~(-|(og&$Bka1{F_Ny=vA}#VUueZ5_1@P;k8xTy`(Al|MJ%S+DRA zCBtGWp;f`gd>)SfzlS<}G-G$}?g~XbHs1Cau4`aOlT>Gb`+JL9|p1c_(w?hJ1;?V zL@E51L2_6kL~wPTW+G;<5co%EjW{Sf!Yu2|PU8!@47vs~=)q$138zep|xZ0q|vOizK$*AcPvt91iV|;%86VZ@UGb zFUIyGyJNaXeo zRk;;Ll2%ybpCzC<6xaL`pvq{z@sUlr0-Rx8rZZS-!SN3z`FFm2UhuCQ2c__APL9Fn zTa_p+77#V|AxD}zvs=f!poJCbudzYk6C@P)gC$U!m$k7FGjL4kSC<7*ijL=UVvqh5 zL|JXiO`Wwt@CtS<0bRPWvn%9ib=vKizEj9s`;2kKq&axahqdh-RmxIKUOIufvuh9W zISbYHcgV3~D>QP{)I}2YfO1?V`|HX;dmnbEE~W5zDsXAf0oaZ;9ubU3 zFk`sbn;C=U_rkg#7w}%cPIt?;)Si9X0*L1W0!~DfN!ZrFzWu|YF?8%V6+La$v>Kf=1z;n5t;7j5w1We_XkVK|TZYjedr*=z z@C$iBT*#1&g8OJ51Uj+e>o%!uQn}WrbloR$_(s3tg)+3m1Gms1J37TSY9a^B7SIJ7 z8>+=UJUkv7?oQo4rn7b?v<)0Rvj5=ON5I+mfNlc4&B;G&l_@F??kFZAfXkI>*fm$& zbd~E?Q{yJs`g=a>Fa96>f1Zk{O3@YtOCGb2XXQGfUz~$nL&C5QMHh_JXez$(aTq~5 zqi^5lD!v?h0?8rUP#EXG(MR0_=#IW(xd`5W1AYW_YvB;E23%Q7a3HfPG?&2(*b-R3V(@5rV zH9U?RlSL%6Wi3Al*0mr?KNy(|S>DXgzKCb_E9QNr_lCk$EJC9 zC%c-0(u8af?S4lT?aJu5ILIQP9zbhQ66;;W$;vA593Tal|HZ>{w$yJoOe6w>kZ~&E zrfMe0l17IEECdLv>6G#5;j2>4pPJ)v2s?pZ8nW9yZKC?Wl*)IQRJ>sz8FV8q92&^> z=AT>@Bs%A30X(l*%KI13J2n`*JVVEIvLmIu#6qd%9iY`WU7aPhY&F@~^_ zRlM(r*MCZ2;dPPrCD=yf!$p6wfGsMcQjZLYfSOARy6gyo3*BuKIOmAew|463v1vvo zEiXC9-#sBqEMjY~x8%X0H(0)ql2i71v|e5FcqV<5FSd8Y!Ht$Qh!%BHZ$N5ob4$3* zhCD$%h@{lR>%3aB`*O`GI${2*)(_{=NF#?y`S5%^yca8C~0xnWK{Sz{K!)~mKaOF$=v&~sJ*^qou1p;AYkdxfa4A+?Hq;? z;mL*Q2xIj1Rj8M3O3sx|NOIGolJRjMSF&kz_V!_C#Zfy6&=>o}W@ipD6?`Z2d!RxL zW5^%|z6$O|^>7IQYQSPV4(E~^zNLdEMQ30X5ib6ER_`|^!P%Icp!DFPXG(6e8)d?~ zm+W6|mC+qxpdE8Gk43!h`Cf#Na5U`#MW&2B9&dIBmUh8EhObhj{V09q=WT>U z-p=W5U~iKiCN&dzvD>r?`^)G#@eSTNC5DvHZF+!uL|E^D>*t ze*0KDhm{y$G0pcOZhoxWeOj;j(30iX%J^PGzW}n0M-kvqEzB#0n z$fwL^?`|o3Bu_Gb>}75d>;0cgd&wVqn-_&7_{z<+Je=9#dLKhh7O*q$=PJKQ-o5gA z)Y#!f*3=kISC{=Uxr*%MR|Ic3XN5(~^fHt>k?^TvO606oB?SxgS~Aph*I9`i>Mbge zp_YqbdPk?~DZ*%t7c;C8%;xU|+qnv;>DROlUSOj!-coToH9|60fk&O`{wU8U$84oT zZ?W?HrK>l)-hYpLnqRdY>s9ANEsV^Oca2`*GkDB8Za@^nJ0TY zr)6lHzWs1R{N3LeAxQl?l~nLkNQI*aksqv*F|A;0ot1p`95nx%Z|}E-V@?k2UZ_Wa z9HG8PL^Q#~z}#BkN3tWA3*TVE$8eVHGX=hisu0roOo0 zycQwoqf465*-kW`>|V7+9OIH`l0-;#698`j^UcNkY8`mCqV7~lgvK!tk3oQ1AMStX zsR``MvG}iqEi7p6?Co|>Rf2H+dBC_qmr`%%`D4(g&!2e*zI}6Yc!e{S5HB6u1}3n6 z6B_qrb(6q%psDCLcI+6m*@r(om!4o-1`tAdoGHcvbQ5^6(5hm9+W(c&+&O(b9<|D9 z5jTwzNz$n3j3Ji^@`*=lACWnM=Vww*Hpqm{#09=i>z)0xgPw}7f7z~F)UWHVjb9NM z%$3)fBa#TdJ^x6C#uw0^`T-Y48=TtEokY5GPH!z#{(D|{rr_^6EOKlRpZPE0qv{|a zYKYKxr+|&!5+OfP@r&oMYJOyLZ62exLsr@Qy@BwOGWqO$^D=*MAYx1E$PgQw2BXS; z9h0N71KvajhTT|?y9Yt2lr&?HoQ#C0dT6V?R8vSio2kAwETY2K)BTE>e)EKe@5!83 zCQ>boCtHWQ$~K)o_GIStXhpCgH zOu)m9NRO$sQ=KR5Rm>+PThgGxqfP2T6<=~H=hwCoq0&N5M~<&;^~tXe!^o7Rd}mth z12qk+5SZx~zxdnv5~9`_Ey%ckh)@`cpltR1*t4fvN)!*EWW(!2r3Ni9HAOvc4652k zw*%GW%?_do7$j#h2MipaPvG79h6-q!Uhos@UXE~~tLkckQ+`n7=jWHPdq7Z`(7!%t z*_O^#L59mRiuuTp*o*CHkftOy>=mK0eM!yFD*(}(qH%1+$k2CY@N#qc@`hD_moudp z+6(F|XyO{Zi_%QBwq8tQQI$n!A#P`MSy!~SCsQ637k9p#w`sD?pbjI`I-N@kQ1!a; zKX)DN&O13=QK|K_p@B?u)~c-6F(V~L4Ug7@FsW6&99XHP)bgn*K-_U>1;pYJfyrV! zd|sWg-5p`bD=*pcC^^x`lIN*$@_WZHX^MSd;uPU;)==dZqB`e8DHbouc7=^yHm3&Xi?Ci9mC0 znfI`6@sNOJ4gYYgH5$^3Q402NPL8d7+h`Ac;>t2SwZs}(!VIfztQmS$m!ijO$ujP? z)X@F?eH1M~TJG4^B$%B{@A7#Uq5N6PAB)K8QdG1tkK9mHC!oVGv#Otn)y_MdyJ*(U z-uOiEexysQx7o&>jgUas?5})-J{9IzP$q*Glu800fB8Vt#Zfs~K?@2%m_)%oPwpR&0eHw14VQ`W~^}H>i3H1;m?Kg9*Z5^HG;6_f^Gu?1P;bo zFl^2=v$%O`$v2*X*YYvb9E-^s4LQ+T;*-U=EROQSyF}MC#$KSOnn%#HKY_^Huj2Z-ejX{lQ}>B!Dhd~0c^Hu;6`}oIE<@l zT1djdfYjXVdGY}Rh(h4<5lFB!k3p*@XBCis5X7R=;;@2y-@sv%V>i@$X!Q&VwQT#s zf99~9>-18_+8rfSl|Bw9_91R8OlaFDTU56KoH?m`s1!`{?SY>Z+1G+A{!6YF)^RIR zs1~F6R4uE~$kD6=3ZEc;@Ucq~iAKrR;mpm1Ydc5qmwR{MVf&p`Z%+{g)RQI#xY}5> zNfnbDwsnq3N5qpG?&luHr|XdV-CHaCK3&IyD+z)xY(N@l^?iLc3Zk zBIXV5$1*fh|@6)m{sR}XK4If-m zO3Kr&K#Z7^K8FOGM%O~R@Bo8ZO2i{3dOF1qwUAM~XJOi;?iwfbc!=WYfqsuBR|vp1 zGaCB<(+bEJlgrZ^JRW=_I`yJQ&4PJ+SH8_Y^0Z)CO`csYQ&{2JuiPx%4{B<=rc8Pq z#@K9H&!48ovc;yHx+%D3ZP1t?z99SI#4$>cK1qPjK`w62(`j+tRQi=NWNBq?%^KO! zYMh#3>%ItJ;DA>8g{3NoDLK2{o+HB7`G^*g&mHd+^iaRP@^A_THJqhLDVjlU#1!bo z$Eyc7ulJCVHA3c?m<#RAgHIk~0W$M~FA^GSER-#*ZssIdXtzAOjQh z{LBwZkN%GGb+-s}9fP*LG7aMK9PObcOUS;fb9l08>I)eYR85uPj~uwpOEbsyK6FofjVo;tGDg?7BG zYgeq){k1mDH!KdK6PuZ-F=cy+(LLdTskya7EYI+s!h9`87|Cy{@(q61$jK+!BL`CM z!kK^vRn~;k=<@#Z;TG+l+~kg>C~qvihX3Pc^$}JP3KK2bS57ry{I;uj9ajrs0tMtQ z0iuHe^@r>iS6fdXsYH>%cQVp~4O25nNgETkYnE<1rWKEFp)lTBA2xp_ zrL&S1V{cZMLL%4^k-m3pR5((xAj=|Cmg-qg7Z*T<-dFVoS13B|3S)L)eM+hAZH|bp ziCh+8$*RZKkzWO{PT0ng6r23QG-?%lIHrqSnLpc?%7ny#kUt9xUEpA{bEMak-PR6O zbHO(xBL}5vTdVITnw$y*t(jj#?_daWg{dH_Fq>2 zYJHix(hc7Xx@@X;bW6dEmGW6KU!5O_jp}5OlWE7>K&AhfgJJcN{FYkcYRLA4Dr;D zdY{o^s&4oLD9>M?uJT%Osa-d(1w;j*npO9XzF9Ha(rYE{M?RJdHFf|kb;VBYn z&guOv=YL9M-F4vzl`BiZj*YW9zhTXO8ofD@^Y*T`P(ALD=vt>z!@8LJ43%zKc-(r| zWJ4=_a@<;U&0;E8{jChhb&<3Q5w8Ma0+e|0aMWl>02Nm~eb8Cte0}-;O@h(^_rvp> z$wJ}cLq*hvDt6Q&k*Z$y%%DtQO!sN^ttpR4_iUN>MRKxi z>6>N`cyf#V7Y9J*DY z42^LzuW?F+uW(eNhj|GjWnj3$<>Dg^W&@tsMKCdHWj{5@4PAdB139~ir|!L`t7$t^ zN^_GDosUcjOzHkiY7RY$l|ooj@@gHZSLvCV;Js)o+`!7l=wI4gx5lAq%nM`X{~ov_ zh;(`M&WHN2z-|w@!=f**_V}8ruy??dPY~(zVD@fU9pfp z^6FpN(z(zC+ss{BKQp)lyQ-bB9VDL6T6$>37migxvG~o4YkWfxKG1tm3rC( zs@NJEj21hXdGGmDQp1}Hgls=it(D$ho<6IGY>)jmJJ>~w5zejv{GV8K;uMcniE*)+ zAr#ZKj*7YARwq^u1)bmp{wz&!$L4EiuK055fdRS5dB6#1V~yL~utJo@f`6$!hJ$mV zQ=K%!UbsDg$U197ZE+_9lfVViu^k7Nj*Dc8BKEAcP(ag29;CC6IUn0|IL(w%W+ z`3tDY33{Ht376-4_i!Q>CYNAi)jxZ1XLP=BN3&;IgB*Ejv4)W-Yn;1X3~=}W=I*LslzGne-rI4(vO8!Sd1)f>=qhd0f0b{sRLE~x*p;$s&UQa&4(zLiT>&k+HKSDVnirPb~q2R!igD@%V*dnow}C{*vo zy4D_k?_QXKbFU+wvBpPE-P2J8THU(Q-;&IQJP-N2QH6TDIYb&jnl(r)R8+cIylwgv z0xpf|r4;hGyHT36r$CZS3UEP|lg`(qT;%I4{*7w315r)Ehone*eIf+YZA8<;KfR01 zXdq2NvJ!1sE%uEnJ3JKsqhOM-e3#Y0XTI*->DX5#eV(vzi03Z?Z@+&Etyn<0qAL5D z6gde9wg%gNa&yMsr1{G@hla6G8q6x1fh zdXcNEX1*`k`+AA3No|_0kZ;IOaRXa$S9#f zLqoGkrneCID!a}-`h6QrD+-AhS>H@K_xz!4;F*m70c(TsYZ@V3rf zXz-|U%N!~C@p^dF40~-F+IL@4V~6GEXaY(A7D9t0gk%zJlHYao$VJ+2R+If4bPQbA z#Y7YHRgQr0Nu!QZe6pq$K5jw)n5MfY#9iAH+4Yln&>NKD{eGH?G9_=t)Zle1BZ% z_T~+-0>|X+hhtz%8HK+UJbTev$1KiQly{(FbOA2BN4lkvtvifhl-bcPP`j62&uDna zH`d71$_m7au0l>e*V@h}SY%Y0QQ%9aQvL}Swr>Gjk#kgo>fI$>Oq}#0CVWLZ>9+Pt zW_z?^(ErLU2bKu!WvU5TZqe z#9Z5PxL}p&=z7d4{syxZ;ndh`NU#A?uF-%s#*boRuVc7|Y~Sy~N^Eu^Ftw6ax4cfS zZesTOgr7f8FL0xP_q87qYPJe~)nMmGVw$G>PyuO6%m_$i-5(hDf{M-gasQmFIlQzV zMH_W){!D58ekboNVd+8Wmi@W1@VOOM0C<3o>g^@^)*W(@bxp;?f4@b4X3dCfY*3GSNGi2 zP%H22>={LWWLDNbEVI5s=KAhUuC5lD1#bX_g4RO?}=8`(9KwxuHz}2TVdJY@5DZ$V}VCjj&m4U%UOHz z?0;C__o54pen8i)!>H9Ys2&;q;G+vSEL`dK@x+hZ)Sd4a-^ix(NT+y;!V&<86%1!f zlmJys#iI;^;lGarWPyH7$#`}rP84Te4ZwLBL|WXNWKZEPPZEjQ*EoI6?- z!p*w{x#e!3vIoTDFA75U%I2KmJIdGhax2Q7HC14+YVLfTB~9x zzYbK??g#%jC&$B4C(r}r3d*hG)tKrF;8f1(ts5ncswfhexuQ7}NzY_gbBccwc7MtGXt`k;-7Bc7 zSI_2X2t&?}1C7Cd|1|>)X#I)zIwRNNkD^#f41iD&^&?L$M|^AjLWxe?9|*MBz11 zDOav@x(zQL9rKS(`wE}rf_l!jxv;fS$N^&-JY9M*8;MkBu%V%;b##8Kg`bj0YxD0! zCAH)=x=M0+*i3pYk-+F4eAf*2hbqZjy1!(1X*xQRFubk_K}^?k=#5hmhDHRC&T^)4 zxP0lbv>r>rt{$u|#2TGlQX%CSa5jX&DIe_NYD7Im!2Cw6kdJd-QP`p4La+;$haut7!~K0^(za$SWG*fqirOE@T;Rp* z(&M&h?J;YPC$TvApNU^z4605R5S5Ryhy}H8zkYjZ(1TX&?2cC+&~UEwx_{Zxg#~fl z3VH%euEu*UD7Wrh z)mn8dJeoTwUX$HP4BhtcIwmH}i2;KFZ4i1BKW#+u^}a+B2zrkDV4j4&pY30iF3}eH zhISai!)HJq`>9)hx_i9sby&eb*%AlBbeeoKgh06CQTUA95Ut~xVI6F@5+>f!)Ia2s z*^v`YBp-x2+wdyY*2QJ{{s2kg zoPda2Zh#1Op!VQT9}yw0+7x=5pE9YdY3aa6Bw#eAj+L<>(M}Vy9g4Ojq}@_tl4B85 zz0ufL>XJuGp-OLNVT;l(G~FLX4XgAW-N&norCYIL02U)Ozn?G7+{?vOL;V7}_kR{^ z?CH~EW_UU4vwu-P{l!`4xtcEBOaH(#y?l0%$c0C|(FUsrm#sGBR$o4fsRUo(vyShC z8#ze*RRL&o`L^mc%b?%5--6Z`1PvxkPerG#C0O1Rg zqK^6$0_|$mo7zno_GvrC$n^H>JN1Ttxf*59J4bq*GyG#N&b1tdXaJB9xb0dZh6zds z1Mv}r$%SOZ30{#BB}cI);{K5$74~b7ge>wgwPP}{wEP4g3F&%v7#g@8Tv3pTF5>t>G6~}-btf>_}gYnV-lUg`C zB^bK+58(9KGnBBkSx~VzCkg)zsYTMvLY3`Fmz0V$pqw~7gN6#$$!mrRxnj15TI|Ni}soh4(mNnFOJ z5YonNnp#v zr$$cec0s)>40t_t@*QffV!!xSmh=MzTKFHjY+t0=>AGc1exe;wp7riTP@~OTzqMa4 zMZ7R9PjTUv+!ciqI7)8KPmhlg&-SG&qK(r@khamMgj~>_EQGt2YCNnuh&8`MKjejK zcEx8@YJ=Z~yKv4;irW)XnhGh6$g(B{ykj9cSd=%9ujDtEaMHdf8dC!E&ocHkD~DK4 z5z>Rl63X1Ui7-kwcm!%mr@vLV)L*kA9ybo_l~0vbHKS$2>|yzAjC$K}i2HBa8?YO= z3ALKpJK}l)A+46Jw@ld1@o_@FC$vPW@q4>f5J$|;gQ0Svp%~wH=o#X5&?)fn(G9o-ETagbfbyCp-^6TH0gf-J)TwC z<@(1eC~`FDdA~M|H}~~eLPuNEI9@8kT;fV8vd52i&I9zLhG)5kCK_n>dqw-CoMc#o zlQ{8O>3PC1oatKWB>Wr@%JaqvrEb#lr`GbLazL$iSo8`4b_Tfm*hfQsJc!z4-Ur<) z^fx71M~0LWD=-~Jo5DWxjS-EsgtQ7jPxO)*p8qar;h$C8FT(!UXEf7pvK-8=FDO|H z>}ePd{AOfg9~{qrY27jUBnD1t6Hr+z{bM1UQQz#8sDGC%sC<0<)Sn!IDL0D!$-SW~ zXn_ww2eab-Hg@>26Cnl9!$3IMEMnEG zYoUL;$?Kh+h3^H1Xw9M6{Yj-y1rpdu&YCz&Uiix`_n z_OG9aB}ucQ_&<@8BKb*z@BmdSD9FWz6o^{NfbW@CmTF)AKX41%KUBCSW;p@%EuaEi zF7aDWs{`pQQ2JXAENwWp#l!{Qc$PGC^PDckg^R9}oQ<3CxE1}T(;pEqa97?HaF#*Z zj!l{PbPUHGt(!UjWeQ=3yk}dTpBNmzc?|v({Z@~VpLcqti@eCP(Fi8rpLc|}DEGK^ zugPY)_E-7!(wNHk*ME`LQ{C^_FMyC08!#(W9@YX5TtDMN$bkFIE!6B!=d6iV6}e<# zWCf;zj!vC|U#4ZHC826GWO%E@n;QJFgkDTRAC(j>>cY*2yMa(q@}OWS#bc0b^mNzb zu+4lxYDATyIt|rtQR`>giH{d2s*`(@#-yqAfQs&4yQlrVg)Q$p7%q=&^#QshHEU$m zv4_klq#@zmWF(|+sbqe9_hI*@5*vKyHib$8`eS-OEG;KHkgCea;+(3~o01v3&K||% z4BD>~57!nXdYnuM9NHrrnd?ULtK<-IQYL|ev!Qe;?k!A7^m0kS&Hkf)d<*MnJlG)) z6%yW@60kDjlb(^)IkbpYv`5KQPdsb>osp1#I%q45TqzTlhWwWCk6u<~B4INf`-8%*iC`3(qT zjW#%paa-*Q9FLa;QM@bbj<}Z9!SD074G9;(CJknVJ}?lZl`Erbx*x?Zv}Mr|d}xWw z{@QiJCT2Ishf@U{m;FyHHLon+Nl+rY{1=5TqmO&$ge^AKU&gq>05C>(b64@3QLfi}pH8`N4m9B0DBC_OfxA>;04;McpN=Sa@P$#Y%bV`A6PgYAB&0gEtYO{z^uONcAq zu}xndB4JPHn(D!Mc8Bef~%w&9%nMwJp-HG zsw2+P_=QEXKMrC6&cmYNJ!~hPjU$?YtmXGIp2<|hg0{bon$hOAZD4(YE|cG|imq>Z zHxUEs9kKViO=ACo1!1I^X+XH`)7&1TF8ilVDfxosp2o0z=mpC)=zC$~5}XdeY)9Id*-wbvza zzvk{Muo2D>ZD1TPRdX~{32jWd(k2d{Roa{@iNfpk1{HSc4KH4kBn&3JF(KT~(Mw8$ z-en)^GQUajP8TX0A&~v^AkD4hyxd7-9_R6Y|2GqXIJ55>)gcZ+#3Asz!ww>`QV%f4 zJlA(7F4Z1@4GdXyNm5P{g~knRso(JeiVW~Kc&wm2z}!>RBDo(EazQWCW`1tfWJY(^ zWgEjnllQARLgSW;fo-LRgu?NO1YLBC&sT)#?z{5OJyCwo$+ogr<|x7@h@Kc1+$K<& zaMgENsXx_9oAb2WFRgt0yHiYV=&Pk0<^`-ahHYG7tkPP-mV5bhs$a_UH6ivc9;LVe znQG6Y%F^bv0*n~l!YUQ)Kdbt1I`AOVJ~X-2Bvq3TnT|0;LvthTZPCFzE193adX^aD!3%?%LouVV=~kgyz2}IXyk)<@e9j9S z4%nb!jm0{r}VePmvg4caK zMpYUr-9$rcZ)sDuqcnLxv%f##JTj*XSxNrWb1Ktw{gbpD1oH4AqT|xSGrB}B zp=Y~0M+}+y1I1ist}0x!$A&44o8jfr?Ro|0h9Ke8h}z&pc9l}P9`PK1`In^uTM;C$ z9WE;`t(m3E|I6}U*->R~DV6FhEV>+bX{*`{M|)N*1_gpJ^F{s%F`)k&Vz}Lipf4f% zOXaZs4uuueq%|&4g<(LgAt3(!ZR;}9C%6Dfhg$A@ZoXQl18XIk6T8uYLqGLbp11grKXg_)!t^|Hsu| z1=STOUAQRj?k+)tySqaY+}&3Q4#73J1P|^IAh^TA-Q8V-yStp3z5jjAt@}n5JOHa^ z&+gIR7;XO#Cg3$Ea?8=SM#+>RJ(e)7v=y`FBI8y`oXsMr6j5Rxhv9<^R#90;lC z4}dHLp^=MpG1liCS4x8@k$jnByZNcg{+)x&rv*DWHI+m-=Z!aCKEHcW`+rEM$7vLo zmZX=a*ndcZ;vBJKx!+-t)DnXh3)y62Q1dADy?_ek`PFQNMTb6!7Z+Y9OR+IXhO_f$PMGx z>>>E|j6h>Dc~!t3JURu-n>4!npAsOs3VWcrFz*3bSmuoR-x83Su6vIJlz@8z=jl$i zgVuA<@Aqp#)%Q2tKie{zl0d@C;)q=MNk_6`A-G}HvCy@opu7<^?f#JxK_-ESu6wk8K05MK_;(UH?x zmtFQMG&pgGexy|V1%Vj!Qd(pllDuvol2J#ZFX&V`jp8HV-dS4D__jo>dyNA&Rr}Hs z(V-$iX2{)(=A{JMTwq*f%)g|8#Lg5PSpGYEs!!5Z_JJ=Q-ZjWJo6^1JD?l)yx~&>58vP7b-WG&UEsR|)Pz$WSE;2A zFp`$lMurMd^4B8Ny7pSBQ!0H*E@@n|lBhNL3>Z2>x(v$Tm3YpQ4hUa3#(l6Oeuv@w zd$dawA7r?|u%wQXHj0c5$FzWA+$IRRz#>Yse@?@zpp7$7#oUPjrLXfkb?9_k@ z>dh-HRVUNP+HZ(SuM=p__l%Bb>$Mvwl4#Ce4|(E(ZaieJ##d~Ed_*010$V2Gj4U>9 zq)WxCX7e@tp(qai;p~Bz=~?rU+E!xtj4=1rvgfdIi7YF5)W&1N1}Bc(|9~1j$=lzE zUQe=yWkB3P++@tZxC0c>Kaa+3m)NTA9W0=#@*z&q90txneETZJAUB+005tAZ^B~Z2 zwDjOxE0)<{W7?~%hK7yAqk%EQPRel&)4yTk_P>yJ337Owj1&KI#X8ikAAYRHR-1ZC zVtC3%%xqIVuvmY(c8qWt)7ImfZr>?Zr%GFjXF!T^wQlhDBAS?@yQOFXrFkz+a->KmYX*eaAy(dtx$Zw z+Y!*gHT>hU?vSPC_Ak9)%tqGNZD)J!LU@Hc;v=A+5S~fgltdo4VqDJ`p!|15&Qe}R zw*(O6bUFNgtQMQuBb;kXg^k&85L0?4x$UloW5s$`zep_>%Vt!3y)Akh8Kt4)ZdV)#Xg3brnR2#PCri49Hse-CAJd&2=wiLj#G6aLc2 z`UGp#K(Y%Xkeul>Up>Y>)rBS9ku{=1+Hg=0cBd?M7ASr(~qfud_M)zE&|;)Vr9& zfK}CM1#$8mBfbNIt~LP+kFSq)?QLkV(^ogCSNM?m-2&5 zV&DBnE-vmPTZ>kT0s+RQu8(o1yZ(xDJ;G)3$4f*Kx?4znHv*;CHe*~G@NyNL9NGR> zJ}-D0qHJpq5dD}{0yv+r@4h40ap(0B0a_>G>sLVQM0KzvxZ_Csc>#YiU|rEwq$p2L z^f})YKQy|s8+75ogIS{rE6;2}TqBs>OJMzu_m$uNBj8YsxTzY(7X^qR7inIa!lMb* z|JpI<5_=6}+%^I&{?gKaWcd-N57(4VH%MdPrpfx_>dNCaps)bg&3r?oh&jVKKI;0= zk?mh_OcAHxXgwq(&XR}cEHv0-d!(+G#>McnsrP>iZiH1_^2s^FS$zu;(m zrI%UfM1bibFSq;%8kwoTdM{mr~|CinZCa^y)oZ;0LEeH0;QLShERrvb< zV*wZoL7=py$thiaD}k4G%L*T1ZNtMm4uhJ1Fhf(R~0!EbLX zl&#z^Qjo){sxB99wJaCANh*-*a1GxOQ_x%aegv1C+ZCoS0!`NC9Ou1Fj}`4iK@pGC z@>f92j;iNB9>`)vjCz!>@b~|-;iG8v%~e`Uf*%DpFNfTJgUrLSU~KGI;fvwCPX`UC zL+FxMX8%8$0+YOOc5pt;)w8jjWGyX~@@s9pvjtZ>^`>v;&cU4SkB=?#bGsla7gA36 zCM7b;%a*Y;G@}+@6zEE6;GEnc4#&iMNV2F^lo#j&2EGPFupfl#MAl|T?2rWoizJ}2l0*vai?@g?Ir!pRzr zEZ%#cCM@nTXKf`aQA?U}Kkw>#fhnNU{uF#+h0qyV0)M~2L-zRp9q4IeItU5i#toW# za-DhW+jrvA|B&BnJ$BXopJhCw?b3$Em~!3O;y6+##%*)8UJ$SpjT5a+9ag*J(!FBQ-kw_%lZ3+vL1OEcj z-GEEIBi}Nq3;xDsc)@6zzZb#7_!KHwZ1(rc$2qs2MVU`TUXj5t`j=&8g`8D2Lk?C( zdg;q=6_ShfSYNR3>H?JV$4#TGxYIt99!TAfzC@Yt9gN2NpW7S6>{x5@BV%wL2KIK? zYT3#x&fkW;KU44XhqqAz5A?HZ<|6exvRMd{XEeR*&ma!Za{H+MU-_}oN;bP{1B0_HAkFEu}vrRU6T{)PD9ya^q zJ-+SJUGo^vn$0Q#+4Mi*H9UiQ&M%(hw%aD!TqDB9p%3_Z>LKt z$sPdc#hya|>@W<@f+0b-1HIOK*_;4tVfbuU^<*t4>Q9;N3X5YEAQG*Lb;0^(EUMy~ zXp==bxw&;58Ro~P>3^TxfOO4wsAC4i6lxTO0@XUCufZ$^&Bo_h!g8O>vcAeLyB$oD zwLRbb$PX08!b;?GdSDyR?og%yGC4#D_?@VM7{s8;1|JQJ^u~4H$hp@6a=*=UHNRSz zzXc;nHMa8G=8le(s;bi%p4>P^O4%|dxh1-mE)$V*Pz~1&;@4#De6`m|SJQnusETqx z^;kXQe?;Dq5|$cOd>cCJbrTvG3kVNH&YSmvEQ$%pxj^p?j8(F3qwMSNBdJ8QkL+%h z5Ndu1qLI<`)`vq0^)Qx|V#%yf$)TA&>WimRb&7ptt5gJrfz}oDufajG^51aFNxf|` zFYMIxg&atmtR5x0dgP;v0&!|ZtN!aT`0cMo4iFLXLL8OZ+*c8ws&3I;@&ZovUMa0t zNmP*OzDh;xaxD`5ZVC_FB+|OC zh=%#hw$9rF4X;#W@>~ttae@qelZg1wit}I09h_S=nGpB!5(4T9xHi$h?+HU<{r{Vs zGeSPPVpaWHKEi;v?=?V6kFnN~zFEh?sItEn{d8YVQoGRfjv()Ay%`x2>Bs+Z~KUQHD`Nx63ajZ9+*LjOufPj{#0U?tu?fxxaq)(yT z$6}Fd95gRh47R`XjT{^V?IYI@{Ti`2cwYBHKtTy=Y6?iae06)C zGoOvlGSQs`0vP_X%mXZ$+<`2>l3fopo!otEH&<~?5Fw~T(eclCC<3=RVfracEe9%@ z{?zIacQ~JGe2J%wQ>$r7Jq^pXoe^%z@Jwj?e^0M6v(Uw;O)nzLKDDGTx z!J|D4aiN{1^13^hqKx{#O?Z_ncUWDs0u&jCIh%l+FK&{iCKI9i3-~fD+(VZ+6G215IS{`M&VEo~>%+M;S?B zu|fVG8EgQ%J+Ws6Y1)ehzVIm|B7K5_J9$P4$g^S;N)e8D50wZJ|CjG~x++gi`cByI ziguA!O;YW}`(bz0h`W3CB}&G@cH94FFH_2J)aCu%dsaQ5OaQ40O_=By9eyocn@MT% zQ{{D@6T-q_pr^*6=$u-I@eX&Dj-?%@d0BtT%3I?=y`S znA^F#n3WZ&xKKZ-x*WRIl6e8#>;|*~c@*aU(4T)2{@l1x-(b1%%QV;=846`pJB5ae66jHi*I(<43jX|RmDk3p2fc^^;MH?J~JVNX`?@*!NMCOe- zuOO$OU~S8)2ie;>uh#_sef$1srl8xnSBy#(2W$c0og`xg;3Oe%`cc2y#FT-tMS17Y zM3dG~JdwC4ueCRS7e4vfNarE(Dq1nS3s#k04zj?VefVEJMJi58d=#}1=|G>@IK6;F zy?Tw2@-loiVjl?zI}T4F?`F|xu)Q1A;h=r}d@Y)I*NKeBs#^<2<9;cFNuKSYgAus6 zjLljW>skNrYX;ScjZ<8F4K9AFk$##K#n)-3)kSbpdAp1*Guc`2XBWhVxA-AZZvwce zWLxQ@AC+;fZoIt$^aH|!grtU6!JMM{KLmnTo__l6M=|C`!i*+8!EWZ5SDA*viwOS; zHq$~HUSQ>ZnJW%QUH9oit#vD)qAA76in;TbtXzn_+tQP3j_Yi>ZZ!*QgtdZ^5!sD~ zTr*(%>d`tcWCQGBN71PT@KJBYo10-c>&D$e4tb???Xary^Qq>`jY3mWR`{ykK@SfP z#uu?&i?ty1_V+Wda!Iel-DEc7&eFwdA9$>U_=}U;i9D5j8F$dC;NaL;ut=u)hE4zI z;l(|A=b1rEj%MlQb|fqC6KtPT*nm0)wP!1t(W#b1dvXc$IcTr2xe(XnD{XN=JLmOx z@4jZR$K`$P5cM(W1f8eHeZkWe+-jg(Z^O|#6}4k>knf0IJ;5s zMA!XY*(b!(KQqIeYm4$I>RlDf`CEBYIUhe|%Lezi+E36;?Top_y76XdLd?TEWp0d7 z?s=dMm8H$Nw0oa%*gI)In*8Bs=f$iyN%W>bs$%+{g>M`YF)QwWmU)RDevxb6-6+c% zh_+U6E#$Y_7teO?VaSBjJ7>o545TeFRTx=JSyoVQ9L?F@A+26Z(#?;p@WDrNAI z`MyD>u=~L26(m!Wu^846+@G)YEY}|&nHb4K(ISS0qLKAh7_?Z|A5K<7TaKngx3&ts z+{~=&Qg1S+H*R`?UJ^ePsH8 z)R+bv_>Qjg&H1t^`p;kHLGAPBca$aw>GeqWJS@_0<@9&F*^pGm`13ftpr~Rk$8v=f zNYA!c3{^8uZ7hdKy7a2V%?PgDxnkS4)+zTXTIv(+$kma3_gneV{`Rr9sS-ErB!Zp4 zTV_1e#tnHc=lu`QBiG7w`!%p2a>9AcLq|gJtx{_WhU5ILCOI9LkDkpI1V;z;ksQmR zsGrBZ(VqK9zH1Q5G8cT&VhB; z|5cT0gB-=7zFkS)UC5BYxuO+;%{Kfsb{k17C+=0Obs9QIPL#5>HkFL5)r(vX+?~%? zXEQ#ZLA~qrU76N8^y6|}Gh0NhPbtVxqtPbWoG3b-Z2tB6R3w2CDzQmOUlg#sQsfDT zH?kQJJJ|(AC9g#3>Xy-bTrj-707(5ZKSy5C9FuO1uZ|w)`Ay?*Y5p!uWy$_(%altb z+`_f0#jVMe_8I*@6@DzG5iZzC5#_TRjgA@t8t-VhviUdsI)mYWpBC@7B@JgQVT{Udx0bK-7)#;>-@Rx zmGO#X5o|@J$Lzj8KCyHcbkpLpf@iY~ChT~B6TCU3hTkpM>%hC-W9i%-N!BJ+R8(AS z|I6uWe|8X;f13@7(jyW$=u2eviJ`NopfC>%PI+x9EoFSp7#bZd(dbHfkwLq-zHpFL zR7AVF=0-gmat!AJ%#g4&jw>lgX_~7lY0*4SMMmo<2``x=N^$X>xQdt^#lUVHg;$_@dbo|KSsO zXG&-1GTpYyfR|%ZSlWXspuZLK0z?oCJ!_L;;NY@5?YR*-_P1@wd&uZXh=F=O_5WyDR>J!T)3x&U3g;B2c*!ka3V6w%(pvi$96r9y1OuZZ*#cWAdnR0tz%VwBy6YdA(d`IVif*JBxZz6{xU9X<|<2iPO=#C^wXLbG%!~7iYx-H7zf)VJj-C@V)KUdCcWceJK^v2Z zVBvS$Uwgw^sXx^xTrM5EQ_m}_$kS_`onjMg$yl{xP^?1J{RV1r%M)2#-EFkt^+mjq zt=I`$y_q!shEgTE=Z9j4RDKe-%k_l=YSTqk7Q=Tt)i0ZWRzTUgYRYNpQN86OeMD%y z!YF~U!7Di;E-EPOXOj~M+h6!sbljGBv19aL1C%4rn-Ki2vEC+BUvu4y? zk0ANRK&swj>&duQp$(`NrAffQ*>94x^dZU9aFQF~#> zK}g|SL&}{8!@iCIaCFkFH2Q+gb5M6m+13~H0#LjfPxtK$sD=YyCNOp^G+EF>6GQ( z^PrMKXYf6!IehGH+3pDx&gU!dh8s0})YHC}ZM+*F{Tls8 zX`$+`!@Yy-j80@MF1c2{iJW(Goea4O3zJr2q^IoK|ij6WDS(rDzh7-v9-wxRs|M(L{~x(YodFa2;L$G;Q{W3o7E zQT3%Qg!4N2icHr6CF=P>WPG?v)6|Wc0SUO9taO`^3(6`cVd~ng#NAqSVj~rO&3|nR zjraEml@b0I@~zD`3oj|!97%kSgrY?s57#8$nJ*J1We&ulDEc&hQz~=bAGax3@3KcR z39sd5r2~Py-yYGJbXswMLC*fsV3bX}dYekW%@tLT$Nq;%ra}R;fa^(6zHE#{{zpGD zZ9Toer3OZ(Js~lUCkNG@2l2x7>uuRm>gqVnF2``e52TnLw`>HD)cKNPdgC!u{SrSCig+l&A%=5#&O3*J}irJa1# z)TVGzUg2}%I3terVHIuCsBkr}=?Tmt7`%OQgNRDbK*wB$s+)f-ewZO%T@l6ILqF+w zN{eG@v7LtJ6q%dF{&<^{3(Y0&0Vu!GYM*Iz{<$%q6Run09I(}E(4f96sjSE5u(OK1 zxvsY}uC0*Tzd%}(Gwhih3UpZrB6wJ;R#!VAQ%)DL7??`_){L%CrTXDU6ozs-i z^NY;zYvY9^&pZ9$fytx)j+M@!(8LUkZ3Q%Bvs*taS4MaDl-{$dUEVx|PD?cf4-SvA8uHO(WMqrrLp3IY8XU9!=swnt7u86Zmo>MI zzrB~DCKi1ZTudmEp=ezb@V*sVU%(YBIfUPqrbb9?57bUf-R+wb6nrTPRRN-xme~8 zXy2UOMBbCK#*vsv4x(d#l&hQaD`*s=W^lYeqKe7V`)X{8ifUk|ie9br0^R0vi>PTK znt8aWs=;uM@`I9Y^e**!_LQ4ZrNr8U0n{zriQtGpb#RV6Lj|EHfZpXIASLkjMbSy%c)Bdj@ZFx$ zP#Z27UaBsBz5Nt-t86Ap{5`S`B>$%=jbl||_R8DbpOyAuTmL(xh+ubHK1&wztnos17#1k5%Np(}Q5h(DYFM4`zKc(#|Z-mdZ7=Dko3E9Ig zqH%oSM5!wHSkm!NS zDx#3Q%=jIU2S7_=2=}%9M^o+E?R2;cXE;abXw1w)o*f9GmbS4sw|Fp027?uG$mjit z(|t(nViW8J4(AG3rV}aa&u9xj94R4XVYJPruPag-I7zEN_Gy&(=;LVfc4KFgjrTVl zeCvQgCx%Y= zWnCQ~c)c;DF2dikl)!Yls&7SB#|RptYVa}hD)U<*PvE89)C{Ol{*TxDRE&bij9O(-_?d|sJ|nw?7&T`H?DpGZD*4BlG4koYl{Y=_ zZ}$QXwrl;G#CLaheJA{!Tie?KYb_o9tfKEoSC=N^tNeUUJAgm;lAq!Jw85`|6ds*S zLQam&aw0Wq1N}XELiAmt3f`(a%lH5WIc+;l^TK#kEEX6$9k6;Rw#(%y=C;Pivr622 z^tEdFV@0|{qXXJ1J9IGnh^{CWdQ*mxCU|)&q?-qE-`%BBmUs(#)erUMs*}*HO^5X3 zmt1nU=WbPk(8+$No&OA?rIFXYfcaMte{>>Z_FJx9FZc$@hidt`>BuNngKs=a^3q3hoiYohDU?JG$cKiF_0dOE-MMU`tNf=ViFI z`tq;U8^#(m87mqUQ_-ZY@CGZ3P2~S+lDy1LG{F^@`qr)2Mkl&(pXRtE&AGcU6 ztv{vg_w`Dm7!=l20)gG8?rN5#=tzj}E1;DszjxoHGChwtsqXzOFSMRe)CFM7#Px?q z_l0g~XwU{bU@|H&MBNb|NPF>ShM6Pxy?^S; zHPwwW*G1i1o8O8S)J=TZ-=3e4HlP-6Z?IN@-1*qp*gp$}^1OcpjPh&N&0Oq9ZW5Cc zO^khg+iil|e*XMSSZ2+8NVpea*Rx#XnCL4DK$+pM4)%;pLBf3xkKFL@j(k%2PQS;;6)E1&))W0VhuAJixS{D;#7$nl{PAo@7+b=Yd$&Vg zAx-x;c1O$p!2uii(|}kx183qblO$~FZC6hJjfUv3n$Q>rMMm@#M$g*#t)lGc+~dTp zEh5H?8x7T1Uax=z{hlJ+i51n~Yk&pJ;YXBo!z`}iNGS5sE6_g?XL=2IkTsBCg5Cf6qF?^hQTi;wab-j2XRipb#h#2(i)kRRHB z9Rz|?b>_QkoDXdCEh92zP( zJw2_W{X4TtLBjIZ7<3|#8fwIG4{!fr;&y@zoxeVT}thwn5Zu`Q?_fQqpYceaR&~n8+yXB|w#r9{1vVLqJia z#-qn)-S)WB>ramC6&Q4tdt2v!pjubwFki`ByDzxq1v-kc^YSB0kx zJFelHsU!^o_>IgdM2+5`<8ZWxzd&U@ov8yyxQx33?n}41YjmiSm~?(#o_`ke_I|w1 zzd}Mn>RxuSW;5&mtly#Oqk8=E=$tz~)+0;q3)3zz6k5~w3D0bT*9#~PkmXegZ7rbe z)4({Ybt$Vp=dYuSQwOuf*fLRNZ!0?=6M!hqAlT~-*#z3C>X)9~6kdA~7Nh3T_6f`Y zPLDf-CU5B?uOTu+Nqn7|r|0Ktn8RU(e%0RLK${+%g}S7Z82H!B)EN7rW$>*majeTO z)|pQS5T~~?KR1^sJW9bb?jLCBuD46o*_r=|7p9Ge05pI)lQuadoBpxRc9tH6kdV-G zBQBFlkHWOydsVj)>PT-;13&tIEI{FXc{fhg&NMvMUxflJdHFqYjvWqKHCxH*qv6sh^a@_0b*_4*G2QB-9>1$FYE%{WpKMZ;C;35^oHQ4Bf%7ob`T-*n}b!$ubYlpTzfQNL;W2lBZjSnM5d(f?k42zmqfj+89!s zdh6A4puLyDlt)GGzwnUd=6ScpfP1CN>e^wetxrV@h}@+YH-V=))$}i>!V24VPO4_O z(=ZK{9f92jEZdcnixZ{Pj)ui-&vl0UhR$%AP#uZxgPi8tG=@yi|CAsyllN-(+U>vwC`IIpDxZq#+n{n|p1017 zh6d#~vo7o{^8J;(-1t0~DEDHdaQ3a}gt5)$Gs#0;_Q~j9P9%R(ukQ-cy1BW<22vqx z8LZ3|I1<7MmvyEvTMRN!M)86I(cLBGp0zWve-x&Lr{R{< zc4@Kx681Tc1zaskwsa5P;9U;+;y@Rk{qZBMjOD)Lr?|ps-#cXiou2uj<~z0#|1!a* z!B3c)jwzx8Lkfftn%$M?>!cm!DYK;)1rbJ0Q3`>fs2MXYh6IuVcM)UzBr0(|>Ij^K{m&A$^td z9j8Az-Qu^zLOSpJ>rrVP)?C?ny0Z-2Z3ZFg!X_DS=n&&1&GxUb)WDXl3CBJ5*x~fY zeIuSr$n-hBb2ytx79K5RI^&6Vv#lfo-CNQeED)w#GsAx01qZJe+mX>Z_kbV`!@79BT!Ph#S z>CduoP=`v7UYS43o<`G@EbMxFL6;MC2y)x-;$iKH%*1gwgSMYyfRw;ECDV!662<{1 z>x5)0*2)SVv`t_8|0F3i)Z;jEAZI2bpqRuxm`oA(Csy+{Rx=?qjrSizMaew*80!}v zzIQn#&+5RzeK6C25+lRme%gcby8tve8@X(`OAD!#%8^Pl22c(;C1!vi*SO&ee}A6X zk*;O<_6E6laVapG!H&F8p+SDfW&ft{YN%cB#QktU9eT~Ae*A&1iaw&6fr%S!KHZTFfSB7)OJ+5gD3SU>o#r{&XHO>)z_ANUnU8?p0 zf!nVH;*-WWk+x);F-NS!d%>z!kvCi;f|Htt=Er(P+MkXw^$OyJ&ErWJl(lo70kcut zHfYT3L62Vki_8(e-Xr4hY#JcfLT8y8MAeU6zlzPn6lYgR6vv@qafSlbe2OlLCOZOp z(0ObJ!pTZ`%btdt9nuQ%)>-4hn&UGN#~u7vRvx;$8k+$)swokNEgRk6%EwouO8{p# zrk6XHAq}o}WS*YLo-0|+K!{7+sjTIsl^~@u%0mqZ&L>lk|K4LneQKa>3f zfcW@4o#4l8~(h!8`sW)$l=eK8z z->b~LxcO}cCno|X2`wu~XkC14)y1KM$UAgrPc3+yV1)wj)D`0Fa%z_o6^|qhR+2z_zv~lSa z-T0vCGk+m`-3o5eidRV~PX|+Z(rjL3vcrr6Cf9uU*h}Qb;asxUkj~sM_|#?DFhAt=dc^g{~4Pxs_18F3NgO2rP>G1}(Mb-~Y(fv6P@{fPH)MD-q& zP&70aV8=Qk$MIDL$OMr_Ulu3@S!?Z&<&IVxs5_PfG8vpWGn!qR1dm{EBk0WosA~1p0#< zpFiVxyJ?GKjo?vA8G#*`^;h8UcoU5N+bte%UUjrFd!Irli*NMTH+3_`tSYzq(6&<2 zV#JDTSNi#1n=eWWaSp3tM`B{}rZ{mh zg(WUmB07l6s#x&Qes8qtGO}-3(Y<)&L+GLJ=hgZC&@112h|egX{!HJK-eoq+WbWMr z7wl$N(_U>q2RrTqS8X<>|A?;x?+R&gOYTld3cZPU@beGVu9S_NEZmIeis@RHPzGNz zArlG5!>HY4Cmhp>={TU7?4)q+-aQ7`xcCzIZ#NT0waduwb zkWJCZ%f4}Ls=y23FZRb@J@XgT_O4u z>Sa2-r=AhB; zJaH0H+?dQ1Qe=cg4xfMG7z?yzvyX+BsZ{DO_!@^kh_NUQh|gvlL?g6;t%A2}CHqbT zilj@D7a{1x(KiC-R$9Eg-giryO!{C1(3@aSbQ(#BEW_D)vkNk@=o&(W04WIxyI+^k zpSdONW^;Zow)l!q2#6`_ZyNMC6dJzE_4c8Pq=FyHR0uRHb))>=roNa1=PhC3YBBqI z^=F8x)A90`sn=7-V8;BD4TJ5^L5@~?)Z*tnd#aDj+iU!TQEgEv%*5`MGoQy2^%)`I zTZJInl|%v~Iq6bgQ+974%M}?(pZ-rtZo^_D4AhD-L^xO>e@FF0wa~qb{w=NE!QD(Y z8xyC^Oh3OX$I#|8<@pGR9YX#=MlR=wL=i1bW$>t^MIVP|6gs!v12v)W;AQ#im8bo0 z4uA#iP0B)@oS7l@i+qJxjN#X-J;A}~_8-=a$w#Za>~s>;lz#Ooe55=TcHq{pXild2 zW4@wcTBDpO0_7_xE;r0l_8Z;RP(S3@EyTZ#e%xb5xGTw3c1rO!tjBTEewb9Ly1yM* zI>a8`ChWA%N@f*en&zN^bat?g;x-#DP5`%=m3H0Z0;P4+?l)}`#{@AVnfNyV*~YL@ zmm`Ks0*+h{g;8I|=+6|k!PivFgn@VLcN+Pff&0AqT{RXX$Ko?38rH3Vx{QJ4ps&wl z=y^yZ^t{R$78Ne7;)t2V`W%}$B@0FCDo2yp7m083RCgE_(VWYPA(;-#MetkkcYIbk zvz}uwRwWv1<3FB%{JhPsZY$2*rl3}sNEip=UCw?!T7Vn9sH5d4RuYEB`_;{zsnQKz z3smjKq?_^SNyI_0+6}7{0o+!tRt_6KqZBpKm6q)vEKSo<&382k`1!f9{@ z(_meg5yCKwlT(LMYr{ zgnpAf5Dj^`IU`Yu8re4lsLK@IA&mx6*LavhL>r9u9g(Z@C#dof`auwDXx>FcC%wTa zaZD@;Eau5K8V9)|_y?A@QK0`~Ph{eRdrT$bNkaSxcIq}6KEnPvlzmmp1+EfBvT`KM z!2Y$;Hi^Q(ii=kMHk0%Cb5n8N`2K7SpUct=q5gP<#N-q@HnA)l<`-Tv;ulRwr&=z# zmV{i~$c72&4>|R$Z_jsFrf)4E3`2>2y=s5g0J+=D05i}cAnc+I;v`39$a?j z+C&8BUQ!QTc;hl~S^D^JV{9oLUyM=aGQ`)y*8?0exV&5~?Lw|UUw#Ex4AKZeV)x{m~cUONUIInK6+N9RHF6EZnvrWF)QZ}?^BA803tjQpHKwUWbFO%o#H5{yco zjWI&Hat1Ol_37w7KTxY!_steic>{}IAsZ2G(WK!Uk`i$QtDSsZQwe^`%%HA36T>PM zh>;F??6*~OoUg6kjGwAB4c1Vllk7V1cE08eO;Nns@m$qLD#w-=M^Qn4CtQSUI(!Th z81GOZVJ#wPs-7Ol%OcB?`|?TphYYVt<@Tz-XB#DZeiR=umjgmsdfmY7kbMq)W!M6J zSUGDE>{hy&&Z6g^=3(u?0b4fzgf?8F=atP&e4(jcqwrfVwae$=qd+Kk7YXCPY0hqv zL8iP~_yFcdL7TK8%uuC=$0)NN<(onLUwNG19+b=u8J7<8vg$lxx|#EXK*RQ?N@*O@xYaYSFEOeTE~iEu0|D34~ipYC1iQ>Z3fd9}29dx>11>VHs8 zF`hm5sv-DTP%z~ZApt5l-uZY)c_d>6SL|pBKHsvxLC5ma5+yr(c%F$l4E?+e95~wZ zliZ053X)8z&iUUX*~mE0CwnVM9OI}8cvyd0I5CRFi zrBFt9`gVVzi=2R`_M~q%f?Q-?fYNAbH&O0uJU6PQD_(&bUPbS!>H75QKisIgkgo4rQ zD@yH+n&OjET)c0}s;Ue^jY)KWq@{y(hxM=2CDIpUI#uO6zohes8!KbHJ-nj3b{e#} z^!@snP;Gfjlp)|kbShW}diUCm(0Dkm>^KURHo&T?t>tX6SwjI%jg4mWlH;@Jn`2Yg z$N9@!7^`xp=&!FEK5P(I2AY(yxeTl0;2tV|^PQCMWcqQHi}7;5W+C2a9Qvk;K33(el~lr_@5Z_Qb-3RS*+am2;8o=9(X09_=eS zjRz_=!xCzdhS7(|^zuQGS2~b)hBwLOWM>2TWrg{7pJf#}>(Vzz$}gL9A8^hvyTIAo zK|itKEBI+!qv%=y17$XsPKBtwd+3kGT5nuUo08tmT~LW!bFEPQ zB6}Ks7NpJH*n!;bZF9L4&LK4bqL`dP`aw2-;ZP@$Q{+-^vV)hj-O}M47eD8~ZxEab z4OLVrwR{#6=W~=Yl{={rR$`L)Q0SO!%=cVeg2&uENJ%5z7bf5eZ{>KXA%&Zbpd=+i z6!Iz5{==mLzly=i?$on1_|_AWJ(7+}R8e$FmK-rQV5tx~GdsWr0P)7L4m9s&VuU@!5uOQqy55?RCY!_tPDA~gwf^*pJC zA&GhHlR2?OB`itXY-?IFOz=xtG?IcDO&YFnaf!L!I(<$my8eqs{j)5B9RnQ>KE7l^ z_Jq%wF$BIS9sQ~8ChlIe!Zd%l7FJ_*(K#inT94*$--BD%DmTsTi{*}7MOHu8;}$aV zHCQBTSViA);3mqxWmL?@P5L&6?BS z6cE@gs`36lp>4>)3CQscm6K5X;Ta(%-hl?#dMmmbLuj6ZXyvWLb$HbaT8$YbcvsJl z`XqdrfxSPU%#EGw%Lq@S0E~71?N=_hl+2x@G`64KPkn=I>N3{CBU-_PHx{zJ;Gmli z-nX(1B93bvoG3)B8~y#U$Eh)0zYel$!^f^}VY>`u%iTi$jYZUJa=7bs*s(i6TFi>Z zKHk{Y(~*DPLG1q-sq>wT%)| z9yXFo!ji|moIWI=oWd*J#ro%p$Y~`T_iMggNAb1&DVGKi*U(V-d3)_pBR}CV;f<3Y zjg9D*V_84m72iXnh?Z{IFXi>yD=xad=-BzByh%pXj&{ zTK7G+{r&s5M7E+tKdGpRkZyy`kKGZ`GUr9zRL#6t3@o;#>vVQA0iLoAf6;d#L{$~9 z{!zlP$f&;M`W*-^6MWzjU(XoE$0znVjGKoMRV+5%(J~E&?<>v3Q-Tc?yXRN-5ZZAqR13>F53RBImzygD~yv^h4{eK|hh&m&)Ly zA_D4$fh2uC_jHASN&3k5bd7FQTTjL2J}?Jad95nqX6s@v$5{USvHYV~ZQ(c|LLsOu zbm5=G#AE3QqjY;cq3uJO?jpjE%(b*4#00x=k?9tr#6sU@RK)&mAG=KlO^{#($`}26 zsX8b<2P_{UcE6@h2u-Na*!E)rh(;kX{r?|e9U~clZdqv^Jbq0AJ&Q2LWSPYa#Ur7S zHr!4G{C>ANh(oD@hyY!0`Cz;SPw+nepo_Z~f=V30g6`6_$ZoHp!9>V+!Og=ThvD%_ zL7~cT!`J(=FIktIi&?LsJK%obVDBc`aRC!KisXH zU%a|))V{y2-ERQqo&wA(R!&Z6tqT3Vib~f*;oBE+I>;6NmAq^Jd6)P~Vp{gu_Qc_Y zGiTK~`srU3yxi!~S!fP-u0e^m{BhMe0Way_Im?I7p9X#UKR~X4y*`-tJFUK&e{>qp z{$}g~0~VfzZkMFn9Iv@o{-v29q@0eS{s|FU>gH>ZzonsW>2yge$<$WC9up)3jex=Y z7|FEKxdZykGk3ARmI#tFHDrQsqk9cImVIGjLdBQOqq$|Y%I_Lm^@&5b^x{DfLVH$p z-|a19zWCv6D~5d0D7Xxfi$m35DCIYQXRlTHl@``(yPG%@~{yd^gcSv!@i4s6JE~_KYo`*zK zu^9+e%Wt27@SM%9!PI{Au;rxV!xv09RZD}BC$h+90b7*b-E@q_->upS} zPLaiN{)uP}2ZHa2`ipL;ZYIV-(5o_>+t2&0L; z4~rvkXbmV5t+sWVzs8v9CG{0BRcjSu^H{p-AE5NZlS3BifG9{IkY%OhS)baVP)!Wu zPt=B5w`%ER$a2TWNoH!pPZiwcGB9&~iu3C8T>lSU?--qD+jR@awryLD-Pm@6#&*)! zwrw=F?Ivv+v$1XaJA2>H^X)yxe&0V=M*d_Z8S7Y>YtFf(BB=jx4=9)S5o6Ci?u&6I zve6;I8C6!(T@I`H+3+L>B&9WLdfIFZA?@fp{5WiWs5Hetblh{1*jC1e{dUnM{Ca7R zbe}tCaHN}tTM{LZ*~10x(Qew-dGFIbWYy3^a>3?Cr(3pqR=F-Pk2|JvLrtD3X zhGv}LKSsv*ZJoNVqYXQ4!EeOt+Zx%~l@0cR&P`y=4^q-MD)ZD$nQW-`OqEpy1`ewf zhxMRoGT=(j*LzH*U- ziz{tyN2kRb_k3vB=R>LhNrDkN5IC!Y6kz$;F zI1V4`ftjMXh!q@H0dMtq#O)RiL7)aZ*5*3%3muvvgbfRfsI(rb0$^Jb^uz69up3;6 z%y$EM+ieqcRwAN&h9~IBAD0(n{gaiAfUFGiiVGDJ z8ZFkRI(bvEZ`N`l54-?LUv?1wCo!HMfW!7p2jgg$H)y?qAFV+cV_(DaNEf7`V(8zr z%rlcXYP9uPVxZhnH5*Up=PvT+J$_&}h=*nUB(lLbd!!XAGRuk%__B{rOvb-X!YV(^ zAM!JAFq%pOoiWWqi_JgE1RFY3BVnO&;COndLgLdg6>?&*sI~QpPKx{3MzRcL7DH}I z3Sx{z(M>VzOpBdLVM{OSN=op?&z?C~$=@6JPV+$uU{p(URdO17T5zs(tv{VoiUmba zRe5Q)4!1@%cIapsMC?3?=8m3dXc;8-eVR4$(4F!WRgqsiU%+%t>-S9&02_ZeR40+C zovDVZpe}_ikGI}_#(~7_L5R0;tfh+FZ-!ZcJ*|LVha9g*ALVGZNhl=pj zG)DVPuYNNNK`)|~Dlow}mJ(u9%FElAA3E)PB@ksqMRm4~c7N(;^TCah>v=@m@?Z=+ z+#rd`7H63v;g(|f%m~VK!Y>P3^AOHSvBIV%1oNKGz(laKV7-+-6o{C-sN0Q)0uE;6 z7T^St+e0853kI&=spNG}ZROOCC_uJh?9Ijs7Vk`Q+)Q>5MTbt)Hc841cH?sAYHRP< zaT~Wq`D%Bgzr_Hmg&&|I$1=0crhRQ+5UR$8soHquii+l-;)18(1s!9$T=7u1g zrm4Gg8QL44R)EUSWE(gyW=Oo%V+P;OX48DI9r(57nu*ke&#O{+zu+f59}jkfa=DG^ zv{Rzp*{>gq(2#hDZ0yaNf%e}v5ee8-K2Hs6hSb!y2Jw<3hb_LY)yY78b3K}Eb2_9d zR2+65$PvEkwxT<_&wSV|C|*yBMP`DG>35onpI04FXoY4;C)1v zcR;Na7{HrQ?rk3T>vmm|uwLYwOjUNnt!47`%`R8yt6R_&N9?wzuWv4XR+k?4L3N>*nSrC0E8><_~&5fjIR1cEs)c`SI;+WdOgQ`9X5^ zNXsO9^C>_R0-C+?zg&Q!L7ZdhAAzdKfi+qTeI=02q0&3iswv-f1e*RSvsWz+TOrMSNu2E9Y;o;%t zd*$$GnUcVuAc2`#_NMpsc!h?z(vynLR>?n(Yk8F`HBJWcRpQQ0bEic4oNwM_(STq| zL^iwS*0_S3+i6}@x^Fc;@|zc1_5j|__I7*MB4Y~Hc+4&8?W-)zw^C*%Ul#Zb&EN}U zhtEsg)om0bY8oCr|LmA>Tc7hBB`kS$Xj#>H4V0=%1~au9l85vU!lgL!xCza_D+cp& z>gb?&{H3qu`r}T$28?8Sn|qs*h(03@?NQzo^r-p@cd;@%>muW!!sn1e>4g^fJVXL^{mTh+H%co=xlkoGBZoNmusE`>_gz%6{GSuvt*R@xYs{~ zWV7v=M32#KbZUO3vf|-W%=Ak7BVGf+No_Qqs%w_HvKZ?GlkG5Jhn$1GD1=|lufi8O zpEflX_p7Ho&%Xi+2YDAT7FO8)s>^>Z)Knv2z@Lp^DGb3w?Ntf^ zAyptBUE;a*{(9q4;5U&kh7 zQW%pJ{!}(4m^?-aNs`{=-piMVpBp*2wEhq>2$v))$FmjRQVoo5`SocEms7@?+he&% zISoZm2x|~6gO1r5xZ{g5Tv$PJSWB=UpgN65P+8U|`Hr=18q~j*qXl+ppbV+R!y`h= z2CH?150f|D=;$}kfwB5&9opGciRP7>QS#?K=4f0uDV?utN_iK-)P4qx*0LJ<)o}|g zc#zy8)2Nfp*m^A|&x2C-cL`YIFg9Jx!qQ&t6pEiA5OS~0o=wEtvym*u)`jaw<7FV} ziPxd~U!WXr+|4RWI-V;lJZ;VGk-fb5xWjn*`hUk(JK;GW6QS9|RIUzUBBd&nU+@g6 zXAGU`+}nZWQRy%B?uHxwDwO~`=gy|c4cwWIF=b?A1ilQ2$Ez{<+K5S-tWGZIhs}o*g?t6_!UUkyT=&?JKCeiLg8^DwLZaI4n9g5R1sr)RMm%~W3;zPdmj??U zZ5*|Wp^uSbmW!$P0Gq1j&dW-peuAzq1u@8{YT0Vwxu!HgrpekQjD#7#<*0onq%Ey~ z^ZHC~cQ36zM~iz1|5uOn@ZGn!`Eu7~>-A1nJ@0JC{V@8#2*T%)ud%)ONe~2=1MqcL z9|(2|IR1s+TRrTOdUtmK@8*tl=*^u?5fdwolzx$;!YK<3Hl5G2iBiO$>QtH-8hGSQ z>41GYbQdnvTFbe_ad{Gy`X~$E4D?|B)9z87tLq@JfKaNc@k7CczBREOpkxh|S4(e& z(9~oUahr41ez86u`TM?+RsMP3Y$qo7nM$m{g5wp(9r-o9O~61Jo=njiXg|Vlo!dt2O0oCO~FO~Y4 z*tgN2RF>zg%=ivuxTPoF3H})QBQv8$jHToLF_l?kn&A5!lkk_+nA356L0#?(D7?Fu zCdM_ihy1ldoH6qQGy5LKTSJny04Ar5#zI`1VWA7qln8$Sn%}OTI_G-vFl^nr6ug^8 zscjD)<0v&r_3yi+d;<79wC$slOrjz!P#O#Y^Pu+%GE1FH1H&8Q7a%sLRhzrzff8TB z`3}y>D}^CnMkng75Cg02L2ycZAg8}0=|&sHKi_>H?bOez(p7+^`{-qQr>k~ZK_G-M zB-@#tLr)MGaPVHib(3pm@(KP#m~Ac^N+o8VCsE^o=n|kwekN8Xb5~L<>MV*>s4!Hh zrJ55hFWu)k7~vdLAfSFYGgN~GozQl%p^JCQEm~m=t}wBk==@N34#Uo0)V^71Fsyl1!=R`f>8-qOAMS%lYVrYli$=LS6LlW* z(zUU^7<5Oes9#e$gt-O?I&Rh*Fw8FJ8*nda1mboQJ^B5afNvFOZq7RT7?5Ku4EZLkT0Tpd-;)F*&gEBTzyI_@#wX!!yVNVV+8c7rdsOJaz+wLx~Eo>_j!e&QzwEa=W6Vsj71H7~>!7!Oht5RO+zc zh@}M7F-SF~|M(&eyp8RxNwvArl_P?7e5bM3n@YzH7vkZzSTidtvM2R?!9tqXtT@ve z@KPOGf~|9OG({d{Z$*yR`?{`EB6`rQo8WTGHFWVJVi>PfF9X3qy8nAQ%O!_7?|~tP zK%yt0>1Fe?m|qX%1JWx6ah)fFbH;&u%Z=H3J+$jZl}M{PL9WgCCrF^yb~-ZH=B6Q! zS^fH#2VRPT2z3wmSRg_ui8%rg8>(DD1x$IX^1-Ig3}*{xT?14y(@#1y$^zWEVoZ!O zc;)!PkZhIE;w;P4-Ub;?F-+aSfPo33Vo$5?$|{5>M=tRVtp*L9t*!nu#}6ws4xVP| zz9V;MEi&UTWKxt*%VV>k!E<^K*EYML)QXb#la`Jdqw=)|B??KZ;eo4QChN6Tc*;VS zdB8O#sCuk=nE|=AJShat&;m!PKL5qO`Z_14;qJK7qYaFjF6=h85FFqN`}!p=FQjQm zh}54RQU0l0ORKU=cfxZ^$}5iIZlTLn4vO<9wDPcr1}s1XqZ{_eXbXiHLDvym`2p_s zZerU{lXofq;*~l+rC6fAlrtlKoR2c|s|nQs86WL;4O10OP0hBp4iY9#g$6MsXLqP_ z{uT3McH{g>0rr8=ZG??99@a`{+1R`aIry0;?GP!FkMo z_dwut!q$3d#-h*2qMMD(+qb)|2-md%Uz%YY|BB0E{-p#k(AF=qazj*`F|a%xYXG?A zmuR7QEp`M^ecbSPUvNi{Bk!`Euaw}cdW%7cpe7KX|4ztC^8Xc;{Q^W~XKE_=|A@-k z08tr&pSl)#lR*R2U;W1OQ)5>$@M@AY7bQ^zzd?9eBvSDtEI#hpjZ^L~2VIWH^|kX{ z6q3w0+?W+#hEWc6VQ}OAg8FiR53l{^$(TSOf%MzidX4D&NStte2V3hGAuN@aO}0td z(8TH#rTfVIX%gXphXX4GK0jA& zxW9E2FfbsxYf@Qo-4xbbjR`an`4gkiq#qTk^wLnP6)}!`TzK3F6Wfe=HV6+Wi=Jn{ zv@)G}N~oznVGl!6I>0;BhzBp21*2Rp`MI+x>nZ6)F?^ZN1y=(|U&|qd92{7%TJtsZ zs|GlMe2tR%6ukl1#vx$(;1Z3e&$r!qMHGsYvK)hb^`?^FkZ__Jzz|h>pD-X{OTSbr z0xO+-W%PuUvCWay>sd132plFzPdZkxeXOa`uYMP0Z@UQ@Fx}@mXq?xcE&E;51;M_2 z@AH`n9%>51Yi3T34j}$V+8Zv`Bwa&!8L|EB4jvr8tE?wW^~n<>ivQi2Y)0}tg< z==sn9o?tK}33op#3iN4cmM@RMF<|Wz`ITi;Hok(q7WJr z#`lWW8&s&K>Uym5l+^vYCic50ZH^x#7?h_jkU;eImn5|n;d{Sda49X|KDhlH@;}Bp z$T~vMC20}LUxD(5l#6sQL_4S-`?A)d&FG%jH1oVr%MY*AEF> zt7W69mPCO@HoIt{%ciC-StCWn{1e<+NDHe-S#xpG?{U)#F$2?X({!sJrp((9fR>Sz z#H^EO4!LWrB_FV+XdC&jHN_pU9MzPkbS3#~O@WArcQbH_O#Dpc?RAUhqLfM5^-uft zHV}u>c|gC)cUi=OVwyOEeZ#4sVDZTd6(=O6ADZwdhgcH3H7u*WQ~vcK%9n#15ZT?* zR4Js&Dky@7HKw7nCmEBWA?5G(x!6D8<_i%)XP5cdQ9t4@tbiqOcPlXyQ?7NB&nMo= zUkCQG*}%lrxcYZT3h4M&6G#GmfDi{2OHczkGAZH6s*%}Qa7YGN?(aIzYbt$YE6FNf zc(e=Oq1E}!b(hL*3a;zIW<+4=b*)=GYk9kwp4#o~Pc-i^*@%E26PW3M3jmSTYpYvA zMyxY#e$l6@KbqX8ekwy=kg6JDuM?O;deHoy6q&hCp=rba{x&RJ;Qx~JwmH*Dd~L5M z_D7LVIWvvk`w~s2h4=waMZjxwVVp}jJ#!!fLau}R6Fi&|zG!>YWUoxv{{X#4_1@x&{$Y?R_=)I@ont(_|(?u_+na6qX}1miWT(#^wba zxP295M&XM!+v&rd&D$v<0p;VcM9OR3Cq0@Km*9CMD@)-5_&0$Y8hIR9D@9DOTG6pw z7i;MPmj~kynnOzF%DmC?U~bVCNO79$!DP&Yj~CV?Z$vMvV{K_cuQrGPfkWqt;({>_ z;Us+4i;0w!ZoZI(ItV!5?Dz#ZSGc|Xly6xC>owz*?JJjpP+Pm3?PuXIh|Xzs6qY>DwaWWAlA=l#!_G=os^Xc&L>cX?l!D_Xqc3MrAmd1qwv4_ zwiz_9-=y^k00B12ak<_MXUXeD^k}R6tnrgQ37m>*fwc4tt@+tucxoe-sF7(5pl~aY z+g9!R?IAF_f=fjvoFp;q7+g+45AaJJ{Eof2&}uSdjz#^?X@BD5bL>NIPO==fxN`kR zf^e;2NP8i_^;xo?whLCFn|;Qj7;Amg3B`hD|IFtVg~yWj)W_S==eJYYjs++rQv9*) zS6bFu_k5~9{(ubqx<308rYUC5{rV|1NMoWM1oT5?QoQt{NH+c zp%w%|M|p1vXOMk#NeAnQ-_8bs<(i4#QV7@Q`>VVJk6V9jN&<;ntI$_TYO*bWx%qek z!;I#z5thwT*vbbugotargX?9)|82Mlaormn>^444uqxmIYeVL?3Oujiw!aOOgTLE3$zTK&)o*OUH``a&o6~LANk~2DsJDNil3#A6q-9Xc%Dr%OR$@QhI2$-8+ zhfsE>P}pNhQuK8}f?CzZUw4!ZFGSkuePvgD7a*`xZ~N%G`hwue$JA;3yj|pIg(?n5oATvGtQ`Wt^Tq!9_hS-T9$$VbX?^EE zvu&MQ7c5WH*|s{(JVv+#3aj}{n6U$l&TlRMsEbLl{dw6LsB+K+Jh^Bi91cQu(A+N_ z+t-C2Q^ln?h7pme7ya#h6B9@g5glWi7_^Qk`C3sy#Jiz2dc0^|zRS{r_X7oof{Yo#9Qxn*_JYiC z+T8q*Cf4!-_U{3cLh3Dbwq^{A>tH- zO%M23xlz(l3r_}ar5=-G7chaZknr##DoffqTQYg!10EkT*nIq)Rp3m-Jt0jvzw)Rb zd6nSMSdNkg)4TB$3HIU#R}clZccf-(1f_&63PF?K=fc+zOJ7OAzS@dt&Umdb(;c zXeOkjEcGw%$pOfX+}uCQLlU8iCG*Z{W#T;Kqd4|GwkKJ_zgeTL>NJfkFRMaUCo$}I zOBWbQ8`1*T8E#{L^9Ll?dUU7Peg^4jach^>Xh}w99c0v%8^=cq0c4rH23SklMX7Q~ zdV@tKH9AP#W63vmI$9L)h@117&CSO8j>&5On;$z&DnTTvV`2f=#qt zp>h%v5e7<`2J-sN_VcKm=X;p`l`wrNgJw7=Jd>J|MJz`|k!Tl%EJsMdmjaR_rtgss zGi0N`GXXP%>h)*hne5K(<0aqAoBLo1RsZO5hHf}1<@4X@;0~u>nKa(wD_XltIAP9k z{F!Q7Mr!F}i&%Qo7g=aw)3NoM@q}I_yeypHFAwe;Uz1scElfykQd-&^_4QSZhKdR- zZoJt~4Q|7<<7J*ezw|cq0GZ6Y)iIjuyd=eNur?!9lr*AiS{j(N>M#w+UzU7Lh?dQp zSjAnCgNix@-k-L+rftH@wQSJp?BVU3JR4vYe0{NiWhrZ?6>3K@8EB*7JP!udQzItL zn5y-U1f$LQQE*#>@V>2PKXPVSW7Kb&NPrk**p(WH#;Aj!(ii~lyKsDFRo5A(g>4gD zr`W0o#312sZrEra+!TK#ZJeonf{_U!zh6>u-%UtOv#`1~oybI!rsVR~tVd@b;<;!fmuLT5x`)H{?09#FI5n@eCyhf-xlh_mcmrlu7lT#{e>Uk%16cm65#3m1)8A74|D;6XSfG6J)~-c%3Vj3* zZ6IHx*I3v}U&t4L>xY>i*gabBk~EH~R^s1O0QvBf7ppF4I+{OZNRvLPY@|nb(5HT= zzYv5fL&o1R%9{Pg$3(Bk&}rWP=#NBCdYbcvT#vGKtIfe#)Wk^(iRTZjVw@+3FMk_M zAKBc4J<)j}2!TTgH83dCOu#=7rZk`eILRRl5<{UN-6sL25vL;qmWt(W4BSVQdi^mT z+N>yim;cj$ySP(o<%I_hjgAh)8lSDGOkH3JE#2!3N-(%-)Tph~2$lfdm>Y23;7`)O z7H$;gyVb=BW3&7`WK!iyG=+B#%EaBWhjAeYAdU8;6%Ye_&;`Ru@|SnF23A7{h(5VFCBKifF3OF>&&Mw#hfp>c@Hwwy%4cXBduuog2zntap^LAoE zmt;D~g4`UT0;LZU-4gQPQ4!P)0Gzla27}eA;{I!Gq)SFd39dzNtE8tiwY?L}zG1+MH?m))1@r)*71v7Xphe1=wGuP;m_QG#nFI5a%7M)R#vaProZ98c zF2vcZmh?T)GH1xDY!Vo?lpw5s{l&h%30nMveGz^C5B7DkDNnavvld-g#h~}4T}+KF zvOP&~^y!CBWt%VB|-3>?a}#yr+))2#op-UCT}Z z0qAWA1R&6Ut>z_jkPz?{Bm(v@G)~*2)9D9c|8C^jK@ax3q5|hId2OW z{)01!e3N2Squ;kybL(j{AzFK3OJrxD-H(AtP@bQ0?NQ#cRcbFu8ua!Oh?(-Ot%nxD zsC3>1?}#<+Xi1pFbUMo!5(woY|3k-tK(v=3xBqW zJj|Yy;Pxz({N5FX4clg2EMSIkX(rtVdxWUjPidixr<@+FwDF|4xn4q{C+L#YiVx&B zE)#XI2|>DBoOxVH&iAO@LznJI7|^z}n*@tj2bjd7nXUOz#0UH0&DzPypJ?e6ZqLjo zL6u>4WY20{>+iav;J~i8F)kp|LwaNG!=adP-S0R0g^j#~Q)!=7RWLseQN*hSxmxTL z8VL}Voo;?mc0OU-6M?J}K5mJTcYl3qfU|yNS5^&I_K;AQ*84%>=cM66Y5s?Pk862_ zi2&{Kzc4KSi;;J}++g4?#b%_DZl_n@%Y3~OcPE+g#=)qdYxEaQ-j+j<1Id>@rY@eB z4gEAB5#Mc}?C1RkOAsm*X5fuekkHQorRD#PPwO4|3X}f}%_-y^1U4pckVJp#5U2TC zH`gbHA|hkzljmiD&Jp6)19U4$a(f@32=lp*Xq6I6bpz!(XN7iQ#z>w)+v#hqX6p}> z_Yns@Z$B!wTKz<8v(J@x6&t9DGJOu zHOF|fGA{xZn|#42!)S@Fk7t?-Fl~yOZk#&;sLT*r&-~2L4gcb_PTvenvVcd#mJd}1 zEJ4Bh*b9N^#7A9)QUl(7QyYE`1jCtw+@H*!v!F(U5+p@K*xJOu10{+?B+RhB3-T?~ zUhXxKF#O4h2LIla$1<`oWbE&@buTqeGtk`>IyR7vkR?U_AZ*Uh^KO*=#~C(4`Bjk+ z@P!#9SO(C}Hg`(cgNHAY1*HvN&3!7`tAiMMyJo;ZfBQJRwOSOfjfdJ7W8(=C1>Zo| zY>hY`p?h=B+;G>|yFy2x{LMqi`Gms3tz|rOV!_gFy<Jzef&`}K=ty#R7)nA z;e!oEk(#7z&%OT`*Jo;{NLyWBKVRQ>JNNN1pkSXIf6ZMUb8fuJG4Cy(=OZENrbW{% zwXP&Fu=_6;;Btu%^7TB@P%Rw)fn@*+QL?`@g@tI9ykl`F)PHA0D6nsdf)l-BDNn@x zK~&opGS=5mXRdVA6f}p~I!@s;@4(kGF~fMcPC;%EYupEfAyLu3epFJN`#uta_alzT z$>d1h`xdKJO%#@C*^+6p=TO$EdwjUTb;2nZ1xaBw{;FkaBmPJ1Lc2C-P;6xKb|>nd zFYmg#DNClkv=9tce1AW3Wf~=r|LG~%)OCK-Lab_CG`$duZigo<-3+;`hY{&s=L-oF zuYLa=OveHPt)EW+4DU;t8(a!)%yAWQ*lUA$8}>l%Jj)mOq7^RKYKo5m0JC0d)<;cL zj8Av{>m4?IA-J9K?N^MJA+{x-@Q`H=;0!DXaj;_htv57wFO2=dp-ZxI2Aaf>W8jL4 z^pNOPVA6YqXgT@}_1#D3NB!J!V+(#I0ZH>vat~(Zadw7tQ#mo3)=gf@5N*M(&Wb6OdqL=uL~j zrOBQW;|r?J>fI$>GT8MTPsLMe@$#!(+l0d`yuh6U+rw#682VltTnH-HcXoDE>Iu#5 z=8L;rYh`4RIAK?9Sh}bihpT36{?;8ML}gOLP>~-`Cq{yfIFuVcr$&HOV%^k&4XtBj zJB`bI@hN?B->BM$sfnc?1|-|p$DHC$N^GJ>Z80LYUk=_c z-o$=gS3-wxhXc@XpztqUN-$bl0x4!OM1MhqYmW@Nw-S!G)er`o0B;$9znxY&q6|KVSb z+rM2$Kkg*gJEYX>eJ9e6m&YdpI$#LC+$Gxd>`0dcC7(U6WT&a{k^TX0h@sG3Hx@u} zk6#f{7>{6R!CgPXQaUi=t-vspLGM#+@HtPnUQSrTz)W*y&)?>M$VVk6`Rx6OEo>9jY)|I^CVf7ZATLe;BPlfy?whC9^}wdGh#*QP_2JAaF5qufUwj zM{4W@oD@3FZaQEjs~hbgQ{u2QpgE#iRedys|0Wm@%1Y6|;i~@P@gW=>4Atn5m4_VS z|5Uc16xNr)N;?gMp!^w|819QG&0PPnnFQ>r`|gif8!BZm5VSQ|2t5^z=t?TY(E6ch z1I|-B%n?dk9*}vw9v8YJTM97<|;s%GJdC^43%t5nS_u^Rj%;bT9F zC5LzW>XE;kgbJc6HbU~cOH=vw3ZI2=7P_Xqb{u6;?EH;;rq~yflP)da zB9ywipDO?N!*TisJe)G0#lH`y3Ht@h+RtAw(D*B>;T2r=H)qCczqc`W^fcpNF-XAv z0;;D8YrhMAboEgoYt&@iF};CSq93q56KPIWu%1cmB|eQg7eZMh$_)VWFy!E}oaL}> z!9O(ts=RrDg2L$X4`SQp@3hh7cY`A+x}?-sQljLDF)!}s^% zDG5yzN`ZbovUIjWx&*{+C%$)RPzqaMoaiW#dV48cweO(2Dpj2fmF{O6vbjb(7 zeWlzKZ{=|UQ3YU+5tjQfpD|A6f8lb%b)MM1EPN{4by{W~Byk*)a(REC*u8j^Zg}JG zn0T?9p#PearlsEwtT$k^zW#`sCJ6B#R!Yf}hXcKtl|R+N0K?KXTD%7;@P8^uuw8w4 zr!(0t6ykLnvv7H?SBq?-yz|vi@czqBgm?pukZQi$$EW;+H=ZpMv*^hFd7r_$(JOV{*vjM8SmvUzZfdImq-Q#LA-ya1#b&{T@_m_uS!#9P?F7_otf{1W>+)>Yq@% zR0tYA&x`v`eCAee!hIed9^uk41A8BM{%;1vgXJ3yS?VU~Iw<)*w<)M?M`(oCvh-J{ zFCJ}5+u13NDF{V2y`y0w7EMrRGdt5gn*7@{g^q?Vj@f(;2{)^xZdxeX!ExlDE7B+B ztWoL|iUtO}3YSm2ijhxQtoy*48ZHcXCq*J5DdIw7K+7dZmiJBbKE`AgrH zBG0BgKI6HtYJN2;mC+6GKkH=|e;(GRE^+qm*Zcy6gL>=&IouSu*UTiiL9bkj?@*6z zf@mM&bJ93<`NJ!`S8n?Ge8G=Y{$t`P=%Ah(eX-$;S?;SpbQ=o#NY#AA(XbJUCdeYW z-p-6N_cxsuv7eJ7nM8qCx2pK>tJ@$xP1)*~06H(OAC&W%M)86#+K0UE!~G?b9x0Xz zydlB1V?x^^MxRhu@C1NETLb^=BU^Qm>w4zB7tJ61l^eFDcjHX3TD2tmwDUmqCC=qG z`-wxrMl0;qU^fSGiS^)98X`JHVF_{GaauAX=n5(1mllP*WX+1gZpJLU0RVa51t)|exyL3BsF?(d zFC8^fgfpNa8I)DT5o<&7G8B;NMi#}G(xmfs3t(Z0{fDL1!8+z^NAl@w$22vMTmldwpRG*xHMiAr5zTKZma5tzM9}dr?O?&EKrXLg>q#b` z603)4XeuSFy6_xPLBkO>i_F9FHNvExtr`|cI?LdeLsD3@t(FjacR$+<9f8H?5=7UL zKuJ!lTs~OBFWF2)!yO-TtEFK0i`WXlypAAyn(QqrfkRaU$A;qw;Zw;YR7$#Pv)XvH zmo=y7pSk1OU^gmv*s{xgk6U<1=<78K3MKuzB(G#Ss9fjqsR|or$P)TRi{`Qgwykd8 zQpsTJRD>ZHsr;o&x%$1Qbhpeh7A+NU5G z8a&iWz!-qyt$K%vDY zNP+G%e}v22ZPg3i@Sv*)qg;_OnCAkFjjM-z85f-C?dAvDJMY0tWUWQ^1)m}cR%eO>U z(xG$_f-X5}QWn_1X-sp{RE+*DxH7d-b66q%;%KR1+CYXykq@K;#x!9QY~V32|bth5SVN7xVfw)TV4cuklo7a*{#(88tlI{)}3z%yr!4tityL zIdU?k-j9N_<`6F!I@F4L%NSyvZfb=+(ClE@ux^2jBVFYC5Xq2u87lU2o2{f5gxLDC zE^g17YJcE>sAx=g%}J!4X32JE3ZDnNgHxD)4yi6ybd1_g$GeW+hGNts%qRF?X8S9b zyQO4mQV3w^kFVF~q*AhQ*IIrJTZH*Y{?mrN0SqKkA&++Thxyea$sKsGBJ-z9qXdGc zaAK*nFk#XCHrg>2P!AMp!ryE9u_3p(t>8qy>Cw!&qVTI)OCoApl*ejwoK({YYDUgD z@3noaKuIwJTV8NF=fXYlA$MuBPe<}%XXMu16~w1q#H8Q|7x~d9Ts#CRif=Pn;?27e zDx|1&dEm&daNr1?b^KI?6}k@x<_6LyJsqIc)Qn?(bH*ZM(6>^b&)xVn#+J3r6vtwA z2GwzG4d!SSJ(c~3(&Kbi87*Vq+zFY3Ix}LY)Y z^35Tn@UAT)i0>`|Mw3YCvFGBC`9@Q>c;i3q1wBCa_<92Fw%bR}4b?1!oLR@eBNbc@ zE`I5(Ao|uk>)e0FH{hAOM7r%nx&<;#0?eg9w;v2gA0eL&TAXvNY&-Oh^W6@)^96i2 z+OSidWGju0NH_BhF)*<_`OU5&piV?l*7U=MZneayB@Gu-eaadfetkQ24DwYHxkq8) z0THr*acLET*`cOSc$+1LiH(wc3Ck6g3R9qYel}i!@0T7^k{lMDZRewtg>yV!4&xCz z>2WYtQ-dHQCv(`hNxF+cydL$#g$OM}O+bk}j76Oi3$A0avyq`V80s?X#+B&CEa53( zNzpc9vVL1O_LDr}V0g@$`-Idi$A}>f1y3)~1BeKeZHEzZ4l(=te-$3pZoQ$tZ*-JJfO69jZ%Z zu|x4BI9;id09<6`0Qmv`(R%Wx@9cH`N8vjhclEM`rdN~k+l}$Lf(93Gstlh|h zp_ny4hi{mKlH2d1lnZNWXWrfob){MUh_fk z(~L$Ztmc9g(5VXE5L@eU{Y#+yr6mt}nNRuehcdq|cqocpHB{*V+a!q767oHz9ML|f z%fN1AAgjbNXL|vt(8gnkXy44S0;!?po!R26$XWaakuligo^(63Q?_ULW?SzI&&3D2Q#%FQV?b8bs07^ z-C6;eP50b>G{i5h#P&nIJgv)opNf?MDT!xk@MbFM77V<`)=Dq^<$D}uo7S;_u(X8N zS@bU>_N6-WlYWUoN^c@Au{e{FaFY)nuZ0(z{8)tUz;Oa7pzkIZR0;7dC#~}JQ3;x& zB!!W%X1vdB+3b9iXesw7GIrRkf`k`hYBATueEK|+fl)p(hfnU{!G$nFn+^>q0*Q0b>2w_d50SCg+hXupow35dyf7pP2 zt3$K_?M-RILJ5x^R8Cn;_z&Kh;|{Q$wK2>Z^{p{wn(ELaMy+*={Nf>$unIB=*%r$r!NUZ#@M% zbA!XmE`Rzs+N9c>gQUyqcKs|OIVDP5OyJ`TK=x3#N|Eu31&*X==8^=((}%N zVY<%H8XsmsQ0U;dO=b-Hm2o?b`Hnz)Tqq;(P_pCaX~V!zW#f|}SABUb1ds5a%v7VY z^kQxLcw~t`t2>GeI^bZ!(}We@i79nrKr}0g2%8X8YPwpI-U@j~UJFp5hj`&=F~D$h z^I)D4`Qe7(YxaBJQ!r~bwaXwl94-0QW!TdEq_b;&5$W%TQGy(>aZ4gyA7=i&G{FiJ zhiIC21q>aLjduXvH@Cl=*f3}d3PzO%=aSP1!kGlglV>O1`9dTfGan8A@xW_y(1<^V z`Ns<+@!SjJ`+)#N7DyN#9@R~quCl^X4lqs%`vZD*A%c^F8{nU;C>BgN zUH#iA%;W zB4stYLdSn!kUV7B&cK}({sSO@l{YC6u%fM%P7Kw5VlFxzVm*SQX-s{kB1+Dvsdfzm zP`DB8|8=sdKEc7Un*`I#u7@`ldJ;w{8_MhDDv{5QF6#kLU^PaoK(Jd^gl7*CXc67_ z9(8Rcxo)7ZKZrOAe4N`+ps5NJntW>6l)*cAnUIwU98~%74qyM7=||1jj!!OP?g(d3 z){V*;fFBsC)%F}V8p0~rYQ=58d5NP66Jmwtvgd`C`aq}MPuh4813lD!Qd?lnO<`Mh zk}_rWO*RB-e*8a)hryrS$2L&3ujgL)^UMF7c&MsFhOJl+C-hlTv}Fg$vP3nYrCmZYMM5n6mZDdEL}LPAt_q;|=H+MRI&Y1i)% zq@~e)Hf({+@~iCYXNTZ*{2)|?fl0q*)GHe34Lfl-h-Xn?;iNWTMe4$5K+#pwkMUz; zTyp*cSJYfeG;*Gd68=J=LCmFS9sV6`LT0AVY8LW5d-F=UqS)I@G9c%S+&0 z(Dn-Fg4Dr8%7FzA9!|IB1Ztm(<$4H}ca?<%L(b>;PpFZ)mX!n5B+?*npOzvk1=yAX za8hFH4@lK}1B9fLP2u6mDS{-JPT}2V4XIQF;%>2hEs}^0l~JN{n|^F5I2CP74vh!c zmn_@n84!Tlaj)1l9@xBannd$)XPw@tSdUysCkDP|x+uzZYNmDquWZXnO2Z0CxzgHK z_o4WJ%r+>DStxF3!cpbXo(=Mag^og~5pE=?^K9847Yg)`(ojs!PcyWd=1ikszr;=7 zJ(jK~3P!Aqj7$?<+d7&+LIrvYPFwAjY#Rn2YXrZF^d$`1OYFuNC)~{JoHt(`N~gJR zjoxob9c@gU-Q**|_{(5|=$2FugC-o%Ge`va=Z|Qg!ruORcUFj_tE^i-*{f#ySZ{`f z!4Yod3ms%LB*5pwi97%N{{5n0Wa{+^F*-v0CwuMY>&Y*r9-*LK7S~T_*1SQZLo8zM zQ=~n*1ol}JQMEhQ*kJdGA9Hm9@o#kL*WTbRutulsGZ;h7T*o}Izs@2v_CJ5sy}nIj zQZ$ts*$Hre*oOvNgiP14W~3Xx9(}asNDWf{q@UF$qpGVKGd1N{QqKa+^_B-n2DJ zA60_6ByPywwNgAD-`gHG(}q@dXS0y2MscteBbmkyHm zh^MJM-q`V&o=Gj*uA9S&$E4G`#(n|PSbxiFn*NwRvM&b(ji7-+D2s|er;nUK`B4*dL&o^p{2gQN+ z+BkA^zg$T$o`zk{-&m`esLMf=kBKl=8f z>bm0^HqBjr^(H`Z5D9P(vmWa@#vq1~cL1kSc*np-?VE_0)B5z)74*)Kf!JsQQ{(IW zy$Z%*)=OBNfZ{RtqzKa;0bMcYbg)muP7>;>DG3-T{(o#4SMQB!g1#`;i_oRSTtX$j!VicJ0Xxn1rEoRDjs454cXPh zL`>!X(FutpdohCjTmY+%Wv9Jbcz5*yy{DkqG9(ZQEq_3>pDbEpdq#;*HrH|th@#k4pg?J$>9vZI|nSs<`Wh5 zOP$WLiBpSESWwXN!bwjyPz7YGghYrth>i|9_mm+lnoi#ncfKb4e|)`VP@P+_EsDFl zJHcV$?jBqM1c%^G2<~pd2@qU@2X`m9ySqC9g8Tc}+55a(x9Z%VtfD9iX3riyq$lFK zckqaU{otOgBhgpc)F)bw3t67VD_)h3z#+2@p(8i|CSYb-F=fpCpw1^cQE0t^`4LUh zZ^m8BrY^(qIbjYMQ!<`%tw%w?oPk1oMiL4+E(k4WSbAUhyvC#A7cgL60e;c5 zj3zvSrl0xCGv9fd_ox%Ic$i-{bohSmcSE{-$-rGdWva{m>8wwX@wdV)pO~x|08!zC ze$3Zt`A(8S>W@aipZcA1UdaEb)b`TWCl7#yKPTO<{YI&h8O}&^eOS!AH>=hE&sXAh z-oyd0HYpcL8*MC?*L@L6yaLX;bpI`>fe)DHjd92jSuRnMVy^rGc_?<7=uv*mzO5Y% zAE(>m108NnHvz3UY!uA%T?NMX`)@oM=7GOd1I5jctHs$wOeCn_;Jj{57Ge02&~Sc= z?MrY@VFbkD6-(_yc|P8o&YlRvj%x!oT8;0>a#rwb@{-HuPBbQfjm7XiZZ?XhOXz`z zGbu7jGjlvKgTGVTb5L;61g}u+?hes+(?K5L*V3-zuZ?1&ozbjZ;`iwh5`vyCqiut*1r3WxIX2nH*cjn+K06iLJ;anrO7Iu@cR*$!K? zx_@7Nu&lKZwx+ZCiVYVQ5q!8|m*~}j&1sgfEEIx_7jdvmLuP)FS48iKToVZayx93> z`h7SP7QN3BZXwL2@KxN#wOn1(ATtEWj^Vi)Eg zA!~xv&Y#@fMGd)Ex|fLDVifS|KSd>s@n*=W?207o>Ik5}=L55Vq>%=s$&tI_T66gf z)6(c1ZhtOIZ!YsG*7gbkB1FvZ;7UBEeLfqMUG0sXOx>r8LsrzIaLq)q&MixZBvTJV zB}P-7`s2vt;;9%_AtqHgJPY4TS}w?;H?f&X`36&y%6HKU>*)dWbNfRV_gUMIglSv37aY`P;z}fh3Guux9#Q5{Y&xis z^(-ucjSAxR)GtbL6`#9i@|@bCiGeVC!MNDT#&D(mFCx*~Ur*1Tn1k`$4wIjEo*!y{ zGIu(;d7QJ4Q-U~=J+r*UE?65trD2{7FGBmP3>(WBZ-T?i`@rs<&z2-nwqD%(y=(l| zTx=n~sE^mA^7Ui#N_$5kPWV5pHptJr-x7p>5VHhCP(HrpZ~q7g`RDZmwm^?G@fQRs zksG4+#8(3Fgc@tPm<}kdQvP6zAG6Do+L6bI-DEB^L49Nn)6DN3TH^Vrzyg2&4vak~ zOVqOg`=+B>I;8I?sk2d)rAoMQP9E>oRcrLmwK`yn8A zWUn%+X$8XRd;Yzv-XCsfeB+9fVo@tyvNU)NLfvG~KKxiq_*6#-gBnBzquRMHlQMrU zt>8@JfTNnCRGYfH@e0$s>oELw7)f}3-bQOURbxo#@2wI9Y-Vge@%fFFC=TzYM|ApR zEa0?a!5{0;;{{#F1E!}`@>sg=v7G?SX`YAm+D-P*H#vdafsM<}DE1*-fQ^Z-kC=B$ zBj|=OBHlL5XiRAEK0ldWA`)f%r`Uyb#WIVT!v#7d1j;Ep-UX^a@Dp<6>G$}C(G0rk)!sf#vh2TleNFp!{g)o zE=AHwnj7Ae8{QHOmO%+t(zHoa`2sU1n(1ur)|)w{V?QaUpag?vO>6l65rUNFLGUU^ zwJMZ+^d8r7qt`uN_i1Mgb;nTNxnJ?%?p!_CJ^|{V=_n;8l{y@BwoP^o-kFO>H)RwG?nB5oB~5MTvlbxbJw40j zfWItVl*!&=-P6;^3-ayj9Snfr&Svl-ffu;u0OtLC-@YqM&s-9IJuTk8C7}(B<*$DO zYIdCP6H;E+H$q{l#Wf_N^*@>11r~a!Sjt`Lw<0KmkyAVdp9hZ#)d`3+d@a{PoNweV zsd!qBhg$w|IN>^TGnC;wQa9oaM zDSFUM)IlMf`S*aj*O`Gn!$P_vy!2q{NcP{%A;Z z`PYs_cWB7MJCg}ArUE=ns53J%47F-+1CF8xYhCowEUq^WBRVu&oFciAj;fdd?N8%1 z9bmHgfAX>Rxu1x^Ry@}*7T!lJMotC!pq2%lDcEpr^fD+XUeGAEwri&h()(dUyaQyX zuRk?$a>y9ez#?a$aG?`H`%MQMrEI{}`|Xb(#%3j8!4ONE0jJ^qDL$Dg4E;(x)SJdp zznL4)W7@L<=)K#Wl@3Vyk6eI@u;z>@IC{QEMTV#pKseHx%o^Vs$DAg6)7U-(dwI|* zx%Cre0l|E@2OSK+G^7SRw?P0Ka)B7^mp_{!#xZqtYB75H&;<%3@?i*2YnlB(o+!%% z0Px)EA7Jhk9br}pk4SB6(PLvzj)e-c8tdnc$^c>2t!e~0xMfY(P``j|-?={5H&@%g ziOwf+@P#MKsr@6T>ysj7?0}9awni2}@bc*rW5(>bS9IN+`YM;rin5<*>~!2y$QMSR zpUDv45oRMxT8#U{{hmVX>u~M*@?g>Z4zru=!haF&C^jUL5GSwCW@|kY$y#ci181o{ znZolWkePc9D)b5u=G467Ye_(4ml#08&!sU>-t`h*3sfu@kQt73f10?s=T?4l9RA+U zn}$)Gy>T2V^K8Rl2KY5K1gOV-rU3iEqvX(An^*Kt|p)}QX?jT3y?8<2->3=2qr>fw= zylhq(irCdu@;=?+r#FeJF4Z$4Ld#;?gZw*-cThIskQ?S zlP`a)RR+-<47KncSacx8=PXU^yh7Xj6h>lHvtu?Ec#yPei59cG!%oUb!{~~2mIccR zLhhvZHV#sgm3_7vm;coIxgscoX8E55iWTZ^B$&>I>5mLqx+}kzA+WoUJ8kQ%MfOia z02(twe_krBHv1b*BKk;Z-@TcP(-o_*Zpy2hm*^JTuZ~rQ@YX16|5swxnJ*r(P5P@u zp|2pEjwO5#grBT+#QoY2RilmEUC^#U&oA6P@C`>C@f6E3ZSqRxP@Uf*g9Q!BUR;PC z-rxP^ii_v4lt__O+s}ydw0ORrILoI5Eew};4kAwlcK+>?ra+%`7zp;DLUj05 zAxyqs%7T>voiZRk@4i0j-dlc2@t!%^n-c*%^1!569&kF+=dU)1zhRC0Tqqiuaa`id zORhInIgn0*vTQASuJxmVIsp>~jS%=ZW(;>i92K;bKtwu;Zc!@q2mnz+spzocdvD_% zgsdZ6@<$rgX&WI%Npy){D&K4u(%#!K+>U{e0ut2X9M&=6!lK0ijt~#^33@slvWT9^ z-|m1j49|t#%Gyf#VHYPTL3r6_V7+!oi973LQB1C51?oB4KK1ax#k+W#-DO1GuQ-^A zn{bv|5@b#+YAVZG@*aWUu;5>B6ykBFgQBUB>azo$!04O`7hNt>Q<2QIUbl`a4cFRMg1(J>@ ztosJ#{bP-tq)NP8q;F*K=7h~Td6hLV=@yf@f-3AaMCgoj_ zSCz^S;N!po{0B_Kt4mJ(M$wqvW0kQF6T-B!$H4!74$9R?Q`Sje>?1F?0E$qaC6fL!2L$~SK*QejE*P9p()z^5ylrt)}5}R{p{*q9{ zMId-qlr@_T+*w2=2hRFbi+?BlI3mV;z|0_5>~d@icnXEu9RRj5Hd8=)hRZ_|P#vEo z$O$a3U26AEAEuC?#sudpbI7K0WY=k_<$;?DT}oQ1Oc^dE&-fZPyKR`~+g&G7Q5U81 z^Q@GXEth(tCfVm6fSc-o#+?%wJ?#Pu@&6sa8P@zPG?SQ|dpFEfsV`t3x=mz__z$&x zg`Agj%8g~{*A-Q2DC8Nx?YFF7)#x~#qYAs#WzE6?39X}NKyX+bx_d$g_0C1a;e9e6 zKN4`k1ypCO&m0qSzn}+wIrxf5m?TrLvT`E;F#&+AihBmYvgg4>Q9&BWuC&H5ydTxa z(lzD;n7K;}r+(HILwfpb5izrUKb}xZTpff@C|XWj9|XrPxZydC1rYhr3cCb(qkQgIeJ5bi2Ws3JRR95Rjvwe$ z3~jkz-YP1CfDLGBW%<*owLfYD+j5B2CIJ0;;Ms+rjl1nMA+iP_kyeRtwXGp2t_+$9 zxY|hiH9LA<+6%K_pc4TKsrT$^q6n1ve+k`YI*V#lonrH$=43_-oTGqs#1$qKcT_q* z2Rn9B&Hw1vj5Pe|hNW%&Q_~w`Tu554ojm4FR$^{&rC+�%q@lT35FP-Wl<@)&n}Y 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/operators.png b/docs/0.12.1/images/operators.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccb7a49ec0a893f87a5a092028ef86270889d06 GIT binary patch literal 107821 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 z z<#M)k*^tQ#)O>xE=U3E0R6DtID{CS%cc~k>7TUF9qpIV5H}%_fSDotQ3u^X7TJLML zFS$Q}3xS#chadGR4&+gTk;%`s|m8*SV43Ua$x8V zSD{fesEa@e)5a!;407N!V)C)K!fLq8etm@H&(p{Ehy$w>Z{I#ifgx2Oz(tZgiel$T z4pM#e+}?r*nJP}mZCO>y9-^fd;P~=d@w2fQuyMfOhRR@`9deT>%(-9;hxd$sH}_i)P}@%6D2vB zDX**>R zm5Grg32rw>qc3~qol5d%^fXK3O${`@rtxyW{`GP4#~pV#A4#XFDX91K2m>Hw1J>yGor1JIi+x5VU`Vs;&76^v% z+ndXV1_lw%m^&kwI%Is*t@OR8n=o$R+id~JUL8}4ii$51`!UA&+GA}T2o45ndN*er zPj}BQ`(5;jbAjiFzVo68rzZDAB;-@5Tc%HWZBR}$B1uW`DjH3gH-_6e!Ch_r&-C3KlU6`RdZA}BH#cWJmsj1cdmju(tX}7I zPsaTx7wRULh!3zcF|D?ydnhR?4%+cU0RnsyC&poVL71Fu5XLw}*4rCu6HI;L+74dy zd7NuM`N|^xX)~5J86_nT&=GHM;vn6;&PwYo*zNh*Ww0c1Vt<{Z5UYdLd$G-MH3Re@ zF_YcqxT^3#V+%8dB?|zz*m~FH8S+^+(mtuMQ%@ABh=|5~Wim#U7}jQ7wbSR6y9EcB z18;51S-uH3*ufTXSL58RaRUQ21(wYBEvvx-6sAG-lWf;Rhi3dA9CI#oa#Fq-bEdLq zdilxCjoZsEB^Zr0CxgdFuiHW$9{am2p}^B3eQ@i^+K-WudH#OLaFF&VM^Fp$)t4b% zD#4-yLIZG(i>y*v*H(TCY?+YBj|)K@pvJ*~LA69uqg~`+uCEVB@whVun}!i1A$bWS zgdl>jZpV2OW)jA@DD&*8W3ivtjoe@?D)mQPjAC!5z&`a)YRcYK}`;U7J2J1 z{?XNeeZXg7K&KJ$#h-`PT>` zC+kZWd~Mn^9lOzb8+bP?&4}^oE;KhQ1aVk&@n#Ul%J_V*k^OrRb5~kySr$C*-}g!X z`u-Ocl-mp>+YTr!(cg;a+7OG*zBg9KgI&Mu%eF$S4tN=*W45T3}GcXu|w-V^Qkgzb!y#50=?Usv{$}KE?VFD0dunir#FwzO7|VCU zc_Jsei{#Yf7lZ(KuRmv{{t!oK_iU3`_jWE-@Q6NDRI*?B-4E$Z(W(trKfEdn(&Ym3%k8*Tx%1bX#o0y?VpLv-6l4cVtqMxuLS`ty^yJ!h#_`!H@&Q2Rt8O z2H<-Pb`>-~`KhEY9gG_sY_2Qng1{c*sKANdevCapq`U#;5#zSaS9EtTk;KWY*O@Bjd!c&RCVcR% zzcSsRKn!yi83RN51!?e>y|a`#6PyjB?vA^N53YRWDU}C$yEd8bi6aUqF5v*Hg3XM&~>cud$w)5~y^98@-<(Dedv-13Y<&^jTb}2z(C8Xm=49M7vwjD6%eLhKE zLBR%2x~Hytzw$vF151Gja8Ga{jlD4XX9kv*qR zrZhT4Bx*ToQ-JO3f>iTgo6W4cip0c3{E@~x1CF~SFfi?s-p7pp>tMVfJhq#K-` z;NMjjg01vPPQAr_hv)l_9ElNh&b)9D=DDE%U2Sc%B#)O>W=b9%*G*kL{=1?=>`G=9 zjCAgijzTFqpifCQkbMP@y}Yyh7Pbt9yLV}S^4}+Tye+~Tcx$eTfk&}$dj#!t8WnpgN3TR&`S=pxoO!JOi#JhLy2$I-< zeYlgldPKM(G!EE7@xE18o%B3x z7jc+~@_Ev#_t!()(j(DTrt@3oLv5Vb<79}4N=DLOC2{lc`1MXVBOneRce9!~eG2Of zCJZVX*5ay@iOJh5f!izP3|oZgneXRgUS)OWYox)rA&)Me6J@W!Y_V-!1Q(t~jA5P* ztTP~^ChSEdMHx?H>0QR&jv|$JtSJs>)<}*d$5_})PNxQCC;+==93%xRRz`; zo=G?ghiHbMqcA#@J=|I>SLDqQ3HSw==*<{tKY+OUuWGXvX6Y#&B>2wmk9 z5z)TG$i|j7eWgIW8XI!uMQe`0fB-s9quV$b1VS}%wuObAXB*L1qj-FTmOEwe&DofS zuoo|E0bR(GpdSH`k0K;e@lW>f@;cOj74&FnUjzro%SK=97{&e2RdR7DuMV`#5n|b;=;~9<@f6jcNWV*D^m8c{Cd}vYe^4#pQVvp zB?a5iIg%aG^kwb?nX@*GTmGq9C2L4pvgVJbJHof{iGt+Dr4;(J%04ZGkfmRfviy7J zt{fxU${ZXx_2%IfEZf~j8^?ti#fe>ld9|@kOKb=&I0;S|?vbeV6>%~l8Bo?i^@#fQ zT*R(EKOMy>SwF>~;}HmQKY1KUr!K+q#&dIXBkzoY&we-04v?yeA>X^37bTk-J$ce1 zMDmFeVS)>$fu4rt?!D@sZ3ot4$k~kvJ0rb>D9Mbq!v;W z?etnGQGPx|V`=}QcRKq~7$-%`NgVX2tb>5q3dt(9;&;hLa@V;X)1l;)IdJ4i*+_)x zad91P4I*u-NL?NYbv3;Msd$5=`*BVPH5l2Wf~u;lv={P~R%%5VfQrNw)VKgq4@H+o~*D2u`OFRQ{ z5`h*x;qHJNWe&}i<#$917c)BGGih;A(l?%JZskZNKVTS&Aa5|ZRuMDx6I zDgws_DS;7xEBW6m?o`r)8;#pANBG8?_+L>J2`tvbxH6>2sBHE;I;{zFt8xUOj@j{J zgs%1;Gm(&6!O6R_KSxzulf2LCbsR7H{No$GU&w<1-M^JmY6YKnke2&as6M^Y;Ws2| z2Yn3n2YCXO(sAbebL+#>mrGqvX2v=38>7FomC8aL_bFtW1cJhbuM%LZH z%DFF&coV~eq{*1Mr+eH!R^ zr--Ka<{QIZ>+&;s%w1x4ex}Ve6jqx4-xng$WSF$U93;P_E>hW?^ z?b`dFHNk`?W6W1uab4ob%F>rn0Q%)*9PSZ;+_;uw*8llXi=RYQzP@>Ns5u!cnkV0ig6Q(y<26GeV#a{d+^tNKv%wzD&LG z>gs*MtM2sH*a0w7lT9-7IHS*=1s?pR%hvt?M*Kg%#x(y^JYzu+-aX;Vg_=M&5WY(O z0xwn+g>U^BGDsVD{g2gO7)x7NLr~O(KLb)44<|<9TQ(1sPd+!a*W#zx$rfKOfHa&i>(Hqt9NP<6|y5PX>*uCXi}kH3c|vq5Bg11=rsq1;^k*O1wqSnCt+rYLV$mJE#&3P&7t!m)$nZeBy~$hxL#-PK!qzXN!BewDhrB2(ANX$8h|)39%LD0D{Z z7u@Z@zKGYO9779d=iy(SSwLCT-D6Do`hXI{)gM=Xhz%XjIc87BHH0JOY7n`aNrA!b zvyXq`D(~I1*!X!*F6voGrO-v~+4%qsiaWq0!)j-!^ylYovL*v6b&t|&Idt4R< zt@D)Q$syXGY!Bm&(P=3sFKtYo;dokWusV>J7@61)!0fZ(e!Mi%UasACR;K^~BR)}~ zZAtVbO80+Y_ZZETphE==86*PB(+%b192n1`ri!}}FoAl|m@RCQL}cZ2_*boHL-*Yo zj`Ae(WEt#gq2k?Qhft=r+vlAmygE^-)4_r-dj^+W2yu;w^3-gD8+|FHu527(AtA8; z`=y(~8(j~pl=4e=ln7?{l#x#bg=1z@I(~(o7n*rnp%G6uo9Oo`ymVXx(7B<^kR@NdTmZ6&rzQo0Uo0!mU4w;1^_)w49J?hvKap*lcTpw0v0Q`}|Fs8{~ zQ$7Tt<0|lZ`%JDdp@j; z(?8U8U&fiD?ycG@4U3a)v$*xu$JfbCH$AptQY8Kz?;IjmV+#w4rQHLOCUrY#7BYrWzrFtb0WD?pxQ|LqvapUh1t-uJ zYG!yE&R;Jpns~hLyW$4TE_v*D*ZO3m7(cBptZ$;`MuLfFna5^Y$)Ap1=n5T*+~G@2 z7}bPSwo|{S$k7s()YN`zB`!+J$zbp{7aquV8ZI0LqGYb0X3Tlm&>S6w!4z3A8*-1_y4+HKeX zp>ez~Yj_2)7WR#`O%JKy9;d-W8I9bwR=G3_!~Nw?vhGfI7eR)s9I7w>1JdR|dZ7+$ ziEcNu)zKt5)yYS~x`Dc6|2~dc(y#2IfBv#5u6c-4f;WC*aziYpl5vHyG4j@HaB zv#V!c__a`JkkxHfe#l!#HT5ULxZpMW!F&V)4dCgoTFB8J<=%huLpk^?_8oX7cwWYm zF0G)iOEAiDf1~u#Tlc!Wp}eiIDNz`!b+Dkit&`(;{f(Tfq4`dDp2nQ90jzQyJag*Q zTk~p|h5>ymf^1Y=9{#ykP%FcX&bAe{M?(%p=G=F2)!~ z^&~|~xD5x5Z-4*Ij89Hq<(b*PvoX6ta84|A7~@O0SL!UG__R>cM~tH}z#2DLB$%h) z2ZcPR2Fy_gVD(uk5DYzemc5l}a;m0#rKWC9H4WRq^X#3byV#)wnMg(x=3H{F*?KQ_ zqWs155O8XT2kX(6Ap`{B$vCmkPgWNjtl@fNQClB1S}*3+(rdBJY4maO^@VO ze)Ep(XL|}Y(&XcAaB*|5xs?*$VP(YinB76Ymc+PY@`O)E{_?w^JS9Js*K+u3?CaQE z!ZnE9avLLJlLMywEIaet;xx9kz56sm`@0TNb5v-IA!MRRDfnzR$N_w1vf%dOIl}M} zpdx=-9@%&A-oMw^)3Z|_!4M=^gw#|(QPAO@{=4(MyC98=AzAFTbadG73m`ZX*`gNX zZ~{)747SQ%lX7YFujB<4&<8|cIJT;G{et;}pQ}g48{-bxP{Sm(^H4?s)xmPmQy*1X zC^w8Hg3n?^I(%VX>o-3FxpN~Eh(A$EMWq0Ut6Xu=es|?qV^I0PM!p%WM#{8V* zI2RPw;@$vi{r&xskeyR=--4~i@PyfgKeQ=t)kfJkCJX6PhQc}gcH&vk)s3wg9=N@u zk=D47!aQ)RskTZz^pH&Joep$4gtGJVD!)^eMxOi5wM_=ux9(xPxY zhKDxdPgvQ8J}f)TV~&&0$UAkBx-0D0$LWh%-rXq+YQ6VPk|HQ+4MW%T*ujx{ewdc1BuFNMk5yJ} zpc-5M$+OU9jn zF+gsB`;+oh6VJoL3lOjj3>14rs%8;vkD4c!2uTj)yD-{v1 zbmtCG)+?HKR6|Z48yp-Y7vC3Z`7E4<+f21eM>i=66=|-_IHxU~F>wJ=JIc#9!Ps`T zXjb?zJyFS&&DGqfl!o*_cMi#Y%Vu(T_#p@%!DR!z#3#N^xDNw}nR0MFNt!>M+nH9j z<#L5U4#^2E{lIyFOE!V*5REAl@ISDGhdOs`Y|PSgy>sLp-bONGYQwY;_Q_7^#K z^7A@kFQP0%S%SjyVbh7v{Z?+vMZK6ck&%OvAcDG7;)fMhXt zVyo0<{oI8k5G}HCSEhYqJ!P3}_8x#d(X|~yc2>`D)xd1k zes~Nj@z+BxP#~Bl`W&;hn1JmLycM!2=U^CLUt1f6Ky^gIH2fHkUq36Qpv1+)({}L4 zcp=zGv_lQY!^WvL=bQw=Xp|Zyi=HHfGae;n)f}EBbaM=-+MoSPgQ5C;`gCk=hZur) zv0rz7)OnaT31cj1K=3zr^DOB2Y=&6#x;PNWyTGI&e_Xzg-E;M(?L3{563G$zVrU3* z7pClLyQ~%Tf_ew%Y9qLkBd_NXehm>X8E%t=OET#P|5g(WX1HSdu?)lpwvO~RQ)7Gh z)5mOYjAAsS0jCADpu39}UNteih`kWYK_6%ca0&$MNFQ!Eu#oeF*XmE@l(|wg@#xx1 z#+-`?s!MD|6@v#QZPF8q4GR*vKMod^xvs|wdS~UNq{c@Cd3|G5Q-5Mf3E`246A22x^Xsvrr?qhzz{6bVA&-zZX{cbOmPa8w8B>d%-jYnep_dkc{n*y zuPub$wcyLU=-yKmim)0&aNo$KY>)(HNUY(Gl=ih!?buaY0oGMy{@WSEl`Il+z0$G?rC7gU z!uqO4Agd+qrcYpC4DxlHn7Dg$OjQt8A#vDCt13NtJnd?YcaI>K{m9aFi{?ZB0ZCBi z6-2@<2jwyHp2)@3a!iy!2!j8D4F=&N!^5b3`VY<_LMqlYMwjhF%Lk`Yt;vSCW^;W3kP9RQfw`jpIn=Lh9E|I`?8w5EgW(D)(qojy=WOP z20a4GN8CkAs|Sl-j88a*oobVhWSahNPiUgQUx}?F{(ZY~O8>CjzHXD4x(?y~4Bogu#P~p8hogLSDQet7Y_U<*e(s>Vg_Tm)#)t zmpG;evGTDlz&I^{0X%>H{JL8yrem-V`1$&5!0nB9G_QRoW7yoeq(|xnk>K})GJ7^yk}rwaH*_j_!tw4 zYR97P)16R}V07#V9Y4lc#bhcb ziYY#uUwA`cFUhbumZlZYSEFCGXwMwRmJgQ5Hx~R9SOjyBy5?Cx?qwr5$8Q~({%PNB zl0(dJhMb;$YueJ&6$cs)I<|`!VOnsk@@rL9APtuZb{8PL)7)sjx8Ym;2YFK%L`ulb z{W&;?(gL)RRo^EtqR;4s3R|Lmg?x94n{&xb@L&g z&83U)+39$#P=(}mn#+DD$NHcQI@g|-9hDDkoPeeOmwGFQ;Rr_TSt%;qS5OUBxRBq`pn{m^ZI#c9mu-_JRJ}8Pc2F~})-W?4DqY*I*@`*l*c4E15iM|U$L0T7@y0$m z%=XUjxZs3GMo{X?Nus`;nbo;*tr9)_YY`Sk6zv?IeW(9hDPjXQJXPb%HzXbU%KZom zAkMT#BcLf(p*4@?2w3p_r?^Si2LC_flct4?6dQ#x|Dsd`1W{Cl^ZLz$voENEh7LJB zsSJ2?mGHt39utsA&EKXbK+(&zRy1-FOq{O8%Plnh4}{Xsi=Jw%n(FwKiiB0{dW0YR z7ZkU0NQ!UXi~oH4@LwoXDtO9QbN`E-E?&-rTIkx27pHd-d9k7E;(J5lQ8w$jwYh2O zreOamN%cQ8*Aar&kUUaXMD^vmLj3{ZIzy!txrXg%5r0_%<|^d>?+cgBgz3ZJ(vXn= z;gf!Tj*iiaLgCd}k1y&^w3}!MZ^4V6pU6wAA^sP+6t~e+zjBj|rxe^_`cf3^*f}q;4D+8?l-Kjr$>kTcb|X8M78E-WEo9!K8Q(+kuDWgAz#*felBAu1&i%nCOSP z+r^fazILs(7zo`r>X@36q?I1VPRlmM;G{WP)-uQUE!gedTHj1?w5;EYpZOPht3O^6 z53ci)jZ4>Y{Qj)RrWu<>ukf0Mx6cmIy--Q-wrgB{A6?5ZGjsaQ!-doCzVSqjFDM`T zb{kvs?;Ug7(WV;QRkYJk%oc0s^3eW#qBcHGTzY(o&R!!>9r*gc5PtmKnEwAe(2Z~N z((?XS@$!E+aQN5%$@lz!e!2Sq#~*RTG$a_SFE0q3IIPBahd@a59Rpt|D%rwWH@kc@ z_(yatSkP$)8p1z)Iv415*z5NBoLDRaJSCUH`w21umQbA?&Ef zb++9s_liDPPJ)C-!@BY@M%m<>w72HNbjrOoU8i#>4)DwyeYXDlW<>LVx105rcK2Jo zVn+oPdm$qJLy}26C_c1w2TFU(Hip>|kk^ALR80=cmpTIqkF!>#N zPO1aI2DW!-bH4^Mpn;WKT;HTT)5ifp1i?1r1n(tAMsK+tjQ{=VnhNF5VRFK&da!PX zc^RQHlwU3~YtO_vRasR9%v5;KtN+|7D>ggLu(MJdGj`LEdIV#9US0iSD1H?qd}U02 zBsw_5zyNWgg98H~TTwn>jub$ycrG~Nynt>rWPm7eF2cD}PH%6#-v*R>2r7IOZ>&oR zO%B6l-Q6)Y`u_^K!2Ky8EEn>QkAMYX2`_S{;-JQG#0o9^)SY7vRwB_**-*{`gT0 zn>YkC0;n5R%pdwoK4CTg1EK}FYH_g_(ADkzlldVn&0{3o5ExS?)((^=@8jc%7fd5Y zYzpX|`gUB|4|87hI6)A-;*Q+DeF@mB?D9Mzvyq$oYej`11m%R8ZYC&Q2wpQ4Gw3!} zjgGU);VV^KZV zzi)JGe#5Cbkc^z>N|Ag|)`-FFT0xYY`*rTeA)m86_p$|4W+1$9;5_sw}t$*gZPK1`OV2WXKQs z2L{gCAxrou1hJ@!fHczc*_<`^2=CEs-YqJioU8<;Q5d8zo$-DPAKDE$fZJS|8f8_E ziWAR()(CJ26bw-n(Xt7@{CF$9DoDwo9cQQ@Y@)xZK|KLN0b8*` z*lgskN!N;$!h#jl|7o7{3)U5V{yzbxuxD zEwXHB$lyuk=kq(UUO9BWJVHt?coo9H`M^KDQ8cUILk8YAjFMq><*s56&1X^t!mp&F zIc&v?Qd7%gRo}Xel$@LkJ%_C0QEF;FY*^TfaLvt8lj47;t$`9l#}`~RND%K69N~nY z-lX3_*LOuvjScb5b#+|pE4VP7uLW5MgwsMV|Az`I_G0&zp}H8hsDuZoJY7+Fts7ph!2t@+5AW zGJK2B=fZ;SJ>Hwp*2*CEhtrpl9sc(1)s1#?N3v;e4WG^c(UT|VEjx2%x-39&`b6#t z;y^+fy2LBf!x5%w?Io^`7y`ja%}0V9&t_u<4wuKEbl0ywF8rAAY`qamZZ*m4d?>e0 zUMr0-E9mWh)GwO?<(xQq@KoZp4pm$ zBYO<87wn(U=%yhmA6Z^U3?A#u&We|1&Jv__bnfMccr*xn>GnMFPOL*pM-s4I2C~)< z2^1({+xjdxu=7(f$-ZaDByZkapK&ZBcyb=6q%_pm52s~hWF&O827C8~3GU?or1oq2 z4=@DFu6%hGf|`|ZV6D1M&u359-#?aTIB?KntIV+`D&C=pI_D@81oGIg!8>6WYT2gZ zxk;8>5iaCZs;r*lw;t7LCQNi~pi9?!!=#E`Pl_8ona@$52CX8FQ?Y@nOUZO)7)Ea~ zwvR|4E1OZ#tE4q@P>m`lyHR-Ja;aAyCR@K~GVTxR6uT={Xpv3)^vjpvI0fRb?Fa%MZm)wC$un-~H+d_S|)<)7p~ zUSD#olOQG%l|b(6GL*kv2a;p5P&v-c2GFhB}HnDUm)zZAT zbQ9DW)R0i$0VFk#l;{!zr1nK)FC)AGW{?L?S_GNuqkQ+Vw)9>+htAJehf&@)4%3Bo zzmAF7?l4V9-wT?RMYE8TD*kf#(NKsbfs|kdBqHnQ`Lk!AzF2yC^h~XlKOW%GVH~6p zR~h8rtP-S9obnz;Lh7l?LG8c-&BclFKpoJ%9%Mt%6G{TdPfEgOOK_hObhf#5t9F!T zW6w#u6;5qcQvwg_w!`vL(&^@s9f4=5V_qAawS433@ii6$>kKD&e#B=Bvc#oi*llKT zvCn!orLVGPR$j7;)b-Tck_$egC>Bm4H(Fn#`s!G#&3DxqHrItl)AXT~;Jbx;z8ln^ zr`%Fe(9>26-ZE@RKcYMo5p5?X-}Gn9^44no;+D#ykK{3?q<9R#EMi2-F}lOT@HI+M zej}a|Yk?1`g^JJeuac^40aFuJ^v2m*TPqviLzcH|L48h5!yEOM;g*Xk3q+5QyGz3y zim>HkLlT$o5SOc!vig~>Jv-<0k548Gb^-J6!ROkvTvPMOn3%L^LVD9Xrki?LWKii)@d8^fGOy z&5nv_uhdqAeE)22?rVOlIX@wNZ8~mNq`2VTU_!Jvs*^omLmYU+1e7C)#zOc6C$JMS zv#{JbuHX3PDi~{^IMcILdTJ?4PJ*D@PH^ZwZ5fAQFbtp5VC0H1D~SLaE~nr3BI_7E zin?cTW_`o_pRRV;YkX06sP4Xy~U^?f>!~*fyM%?MqIYc|1E>JF3SY zK1v!)dhF@9TU2__rK~JkwR)9J=&bsj&1Wa$N|xt3dOB9+({q+6Ow(UVv*(G+KjOG} z{ngd4q&pvpUi&8aoR4pTZ&sw;#pM>!!+$c%XPHN`8u(4qg@*K|bG8kqb3!9s3xDx; zZBzA3YD~5-Xa-!5v%Tiu{dQ+?)&W3Y^~%2wc`wS?fuq*oPRERawcRhX}l<5 z;<0!n8}~wH+iGH=iuM^-d%gCD@3|X8_Gi_N_@NF|6P_sF;kbu&#KFM<5oHV}+3;`^ zLQ6BN(P;oq!@Smey=_vyOl1hwwYS$)o|Ip<=*kDQCEBC3)-6fSKtb^*z|!q{ZkpYA z$Yv0E7>imangBpzFz|ll?XC6m#01fgFT>UiwXewZeS(ISB__+<7i(Yp(pi6=6A52R zE)Mw~>}2?dr;T#EdwTsAPsws%*+Pt~wsB6L|IPaKCDt+@PKofPk@4{>H|r^xcSQHd ze1Cn_ZN$)> zGUMUnMDElFy)m!=^wcP)16)T8#*_*QoH4OQ2=IQ{GVK7xCiLjeg7o?m)L}J9zQ#pt z{&8lkEqNljt$ar$tR7x8&H_(gpb3Zo3)%!;&Y^q1C%x z#4Ta^^zu+#%cMEmU1wW0;|1fmddX#I=F;-3=v`UPo_)07#qJeKZMB0YAU-*{#v(6} z>hb`NhLsxatxSS^e|=dlf|Ciec~;6_X1+gMTEjv>qzL95T}pc3_^MXJ&?TSw{pNOy zQfA+DKf73RD~fw*gJJ4qIspfQD%E-9=J$J-s6x&cAYZ+us|z`inBuyZ)t=Ha9wK_I zjN_hYaL4Iiq_KjU=k}W%VLEd~L9LtZDH*8*7thhYp zUp2A+AD5l{mrrFVM08FTHhQ~#?`Nv!6@F<>{xX%^pyYiK#r}D7)=kOgI{&8!i9WSn z&vu7AOLEh8)b=J%`E#qgcF;j=+-mR6J9v-DX zYKR}cZDSb>>*>O%?mH`{)WpOwAnH6_Ru4Hu3boQLjf_?nVz%8TelTsH9R`CJL|2p| zLv))?`*}kO53OCyttV|0MoJXfGyyHs*+qp_pPP0Y7e3)HU6J(N%6WIJ9fQflpM6`)a=fRbj*rKiTNQf z93yYZNn3cGwe)06%k&rqPISJ?8MM5xdB<5NZsSnMAF{{qvu=}P;NJMfM(cdK?zo5J z2iv9>lyAf}wLCm>mPo^r{60nwvI}4Cs|4y$JCeM0P6EdIvI%hwhu3_(4qNR|FinV$ z$9x6zu6E!lASFPeK^QR%!C;8p`xnnP1fA#KmG?_ZNvUNU$wLxhqti0Egg!t4h=>T! zdDHKOHbKu1$wc$pug(wSFu2V>{_U;}xx7I~1Rxo(4{r~~-RB6`|5%4mA$P6+2ik_o*|%-9l|y6o@onPzMX z0Lr{i71pl~fzF(SghV@l6_^AVoOFN}7-K5!+VflIy5}V>8Y>+e>v_-VlP{ex>y6TG z*Z}g9A&eDPCw}eDQ;3d+Mk>t^)i2n#G?V6mw#EFEI;m5ceC@Zjv|gLt^sR1a2s>U7 z_Pn}#+)nxdnwell?o;gNL=bRoYZL4R`l#mv8BeeWhf1tlRM+H^$ z@IXX`4>|Ei*Xw3TntDLr#a^~yV{H84-EZUFM95*^ zWxu($gd(dNOZ^`gm&t?0<$`E&%eL3cFb1f`w%f+5`A67SLPig!0N3Ch9$QebYGRfR zt5dYY=^sAy`##)?dvdsu9aF)mrJ<@zN>A_2Hf}*l807FO^6sF@c31LA{ zqtvvvme$rDdhg%^dN7`EmP&yB;LV$R@OprmCEQkFoC-7xQWM|>4)OWN4EPwJc zY#ir_Xya6bw~7cXLYWIRsH;%*Iu&jhTTsR+B_Y9l+WALKX-1w%*XmH^k~eV8RM)x0$R0*h ztYvCswD-V)qRF%(h{H@d!vAi97$X9O?u2x8!oaddfL8J@4u0=sU$hA9)r#_p@wZkX z@TiX#$iqQ_S-5I@Qxp%)1D59InuT^BSS0Py+^(YcR9n#%GK!Kl1T%=cl>|EwvvwQw zejw7mDRZ0svRe7A!=$Fgf8rVVTtpW8Renh)raC!2=+*z^WqZ7Efvo8vCG(elB3sk8 zEgsF?-ajKH&Oci!D=KlDEL2Q(QJ(4^6l&#{+*;LU<6HUKKEmPmd0@$YS%`C~JygnY zW3uV}U@+ssz{!~rp$obnJ@tz^{}c(aJMwmtY!H1{u)kSZ3LXz+>`f*1L#74B^29Q` zh}=fF71G0UXK-$#=DvdQE@LW4qb`mva4Ezezs;|E5}*-KYq z;RAs5@z!5yA`#bBNy6sBzA+KG1pO@L>|OWxev*k`)(6qd`aM~|MlAtoWgd`0J9 z70edI2*NQCVoK)XLZE-$b2$HG7|(Fpn>PEjwvml!I}oeL=eFznw1deU*B03&5c7s6 z`SE_PnraaPpOP?9)MM2=Vh6WMWKPh@Z&+<=bA|*0L2cUwe-$)mRmqF5L%O77WPpOts5C+Yh1s7EZ>W>VZgWN7K>4uQb|gkw z{S#wJHpTYbUL42wo5Ojc+w(`e>a(BPCG&mh&sE7&X|?}BmHqXAtZ>d-y}AMSGCGQ| z$wl7kyY<|5Kkpu-&?lk`xG_0j=utS#XBlHoZTFSJbs;^k?D_H6!BnB|+Gy0xWQJMw z9rE0XBy8VRveXR&Zw4Aa+x#Q+Vq32ZF_9bF@V*qppn;q2Lu1>VqC}I}EU7%$k8#&) z#?2T~&6zDKVT{34zhcBP;V6cw>AB|N(!Sv^ZMF*+o{yApWK{!RBnYS-DNuyNvz8Fx z!x0v$w*|`Jq@i5>1RQMnjcz-7wnJ6|Cc9?y@sPZ7FQ@^itz$3?T-y1P9GkT|;AyeP z!hqU7KV-3DQNu*!wvh7RR8Fh@61}oy2xPtU^ zUjfv?%*-`q=YwVT-+8SX|KjkQHDc>eXH+Qln(lUKEr0(ysGuqN7!`ZnnxDg|%j0zc znulELr$eHMQ&0UO?cyna9JxomWFvVp@q z!SV`|oRQ&S__!V?C#Ms1`dCoVF5;e=y#ZTl(4Rx^&D0f!97GGwqS7dtuV%(cLE(3f zhll6#!BU2bx?1LL|LClX+ z>`P=858wNAWih{^s96t6d_nY9sBG{vbd;0{X%FltCMWeRQkowcJhFC zgT4@=XD-v9EE@SA+v*5<5m?DEAdjX7#mGG1`E!IQBf@*KE;Er5x*qNg2TZN5s>-^i!WxUrO7%^jOvoV`L1VE)Q$8}rVAHd;oT9e zd>%do@o>>41Vswd6KDNVo`Xk@sJL80$*lJyQQjtWD0}zo>`#`5^**Cbl#qC$;iU&G ze&3eSvsX~}fZ+uBHl+ETjD}{y^JbcGuwpLN4>DbhZLVQzM&B8d(~@Ju_wK5z?;T5A zmkU-Ty7wk{GQ7)cX~A2XhFZ{M$5Qid<7}Ggb#YGtb;oyaMsCYd(z4A_o@5;XauX=L zW`z0g=AEHsYYnNV-}N)s4MU5h`G;LRuHRXeXjhj=9dZcQ*wy3K(6~?5T20v zKpie`(q~$xd}n~ShhF95FQD`QHcLKy7_X$%J^@k#yvMGpQu*D_zW2$6C=GE|uZHBf z42OlF`TSNCeE!m#Gr=!jY}Q~Hy80R%chbe$N!yrm;&MptiS`cv=@abZUr98bw&-j= zV`=Zn#ou_Ia+_nwfe=CffNpYZZ13U2@g788$xg{1+KM#Nf`gCgzv^jhY%~>dBZX0J zn0Feziq+b0a3t(7sQ^z2*LW!YxJWfP(>C&rx!*28mEqqwt2p@6`a6uvs6itI z90`UBn6epuuTE2fWx_=hU}FdE(aidtJH2O=yvZh%I<-^g5dq-}qyn27K`4s)4ZSW} zpk7^sLM1JLhdnKbVBz&!>#EyaCAY>+1n;cXJL5w3Cc#O6sC<4~yI=~PhIqY8M7qMb5Co9O$>S%Ge9^doivPFm6w;dZ1_r# zNK_jJT!1a~_3@W-uQ=6g;Cpg6$7``4ZVuEZU_TAmOuBSu$rJ0zW4{UsF`wHJUFBx&PA5 zjyYgMARJ#r{1~=bn%H}B)&rt{$1dwCbdGBxO4FkpGy$+#C3Nk%BxQR$U zCka3mN-i{QHwVa1>?I>gds2vCMC>AUaM6KckMV^R>x&TWMw|i97(~+SdNyFE_44&= zHl733iTs!w6A*C4yuS39h@hYw%5L}^75>yCK*-X#?!;<;7D;F;of zg!KS;a}2X!mq)}vP>^+}dEVT<;@7xj_A<_EQXV}RcCk4cd{I>@Jvo^fDne6JR~*Z@ zVK}AJ@7GY96SxL42L>~8R__M~L!yCMA|ivN536=Lt_Sh9D0$M!v*O_P!H|~+)$jM3YYKD;y*st_Ls5Xl-@0|{cEj;O#Aw&TqhPq>4#s-*FUH*% z8W~~3EExyKJVTgfy2>~?`HHyxHrZ8ClH2D3tFB;A{*(~&t~%6Z6*^@_(H(%oe%NJtAzy1P46 zq)WOc-IElUbe#Kf{oi+-J`&Op&WR_vd5qa*&la!r8C91LnEa9r zP|Wb2S?}G=dkUS-oC%8+YRS4N>dJMmss`OSr5kVWb_f3qiZY*Ow)Yuzf*C?dt zVGRG5NM=jWwSa=`QWzSt0 zda0~ws4ea%X+`*j)uqZZwXu)*-Npy9I=gAHg`)j}Id;J2%-o++zjA5)M#gQ40Tw%4 z;}t;Nfpel0edaP=j%N382;BmBoq!osENrrNeNG{Lhsh{|YJ@q42K&DkFJ8cG6GMX_ z8&t0`Y+Klu;K}pH>SWsrpcIIewXm`Zfb7H8R$o6qG`q2X)zYmu^eikZ;==p#Z~%h| z97wec3=pUe_Qo0CpeSEhLoIt*IXPhj1?A8)&t^YTE6Ql|>i0n%tHKH3_ENsWoSemJX(lic zQrMIQ2`x9b>cy~D%^*)G8}|2I)oEE-Wn0L&%p-^_$_Md9d<3DeZJfSHNT@|i^YGotEiWp#V6&C(Xw6en@_3zJ*wx^LP_mZSJN^|hi*<|KWc5e zMgM^gAAipWd)cZZBABFqG%0f>P2J^i)DT~~NKnv3$S;1dFrn}k)y^-!KZ!IfqlwfN zRXN=$Jzh+QtuP!phrZJ^f0=n*ZM17|$Vp5y0mdN5L(g)T4~y%jn?AQ!(;QGt2W?J? zOoytMVsxCIx#9R5!Zb`0?o#fZ>smT>JFrM2c?izY2Y_WFHE?9& z8M+W+35^YK65Gd^!JHTCaxAcl_CejqWJ%3dryZd ztxTma;^8#c_DxEdYA6#JeBcNKLy5@tIiSo*Uxab5e2S03FT)AO@ssm@GL(s1*1Y3= zc}tjWy=h_Uj7wZ+*Rluu29<9SQ_{QKn;-KT9i>?`DFQ_P9&QUm7Ru8fD}0CJPxHm` z0W+Kz-+IN6o_qpt-L$3iUf8%Oe&b={WE!VIBf-H=loy#Pfu>HG%s1UCtJl}x8p=%V zt{MwCG{m+Y&fZ>{=u{HY@W^oZeG;?bWuSiP>!@^bik~F;TIX%H*;rc=o!EiZlJ?e$ zX>oSX>$_i+U#fMB=u=A*%I&!v2hawnB!$_7@|Q#={nbw}=4lCKrl(I$Oss=G*=I&8|D`Bg9Xh#k5)#k*`M`Au zanG_GHRXz0E1#z>pTPOd@lg8HN{0a;@KnkT3KZC}D*>Yt`I)M@V+Dr38=tcBMpl43 z6n+}<<^wnc&N&pm)Cb7KZDi{xMihqKHB?F$Smfl6Z_q~e z{8q2sYZI#+;bOPTAwsM3ta`0v4m#u%|I9j(d97?gT1>@>ntW?IoH;^iArzY%Hy47Hv+{_x5336mDtfK7usn`)JCGQpy% z*{q5=e}!}XWDgCRK#Mo>`?oc|xWXAcT#(NLMn+&}#P|dRsJfQf$>IUbF(8@RgJ{5u zih8I2m~fDn^Mr+Sm@}Cz&r^6MyMA7Wicw;gH{#V7?{h! zI0b+P37AXRw!lIe=Ak>iBS>(=c*yoPo=pOrL( ztUrb-Rt()W>tMlCy(`JyoxmmI~S&7jiX{tM@OP*o|%5SJsho z>Rjh9tSztEU8~;DE301BwK!-V_f?g;V@u*dRV-G$-|#lvM+rLyEBpJ9@u`UlT4fIj z2?;f|oAH$1FkXCi|0V&9YP!{S0tB zjIf5AS}x}T2OsCL&+H7?N_l_R_-dTxZFUwIjg^h>S`C9Fds^gr*}$;x&Bj0`aA@W{yYl+fN!-R(P|0|BdugJ$LHyDc0J zoQ#*@K=(MqC*_(O{rU@EFwukmfp75RLm;cMI5t)8ReML7q0-Nrh98)7JBf|<4TgPp zfBzag(B~iD)C=hp9`qZv==?;vu}~%og^%aMtb#`MQ5`A@B8svEl^#Kg3SsB$o`sNC zy&gij%U?F^LmAQplL*Ys`=gjfI{KXYY2VX+B(J;MCU02N{rxmQB^6<*2$_-u*=I7~ zNUL6h=jP^<2`4wV^{{PJyNZIs#%kpn2!&nieMlj+@X~TTaWApjqB77XeZle&Mv{bt z+u<~*4TX!Ok{`Yw3dPE0_H{&YuR%2nBNpiD+B-VJvUg+EP0Y=q#RNVxqV*Q;zL#n5 z;6UalW+{2UDc+yDV3TtiUNwRhzTNAzJ z19$STf7X&z5^XBbj;cp@7|gqM#NH~P|#H1B1^P#2Lgb@2wB1>o5ClG ze_gkUcZ-yMrxNSoDjdqU=v)m0S;jmMR$6GZ0qQ`wU@!vGd)~a_XjVK7oDTq&JmxH) zWrmJ|KVZRcv+#&__`6uDTsEcaQzFC-bbh){rVeR~!FQT1SVsoiE*?|!9Y^0FHaavA z4R4&Z9^rf($*TG>NMS&JWODh!g?{^!e6u%2K*Z8sm(1}};-nrx*R4WT0=FV}NLIQD z3zRCn`Q?S|^Ekir+HtFwx|=$hSW#@*beRPcxVp;Lli)#2$b@d0;$ym6WAz} z;pGl2+4F(VA_uwOsO1`Pi%10*p?{XzC@L;?u(ywpp*ty>-B2JheEjh29Jp))GS3>0 z+(S^`L8}jE98hYHW%+<@X<6z9YGF9QbjLlpgIJ&~aO^hW*f=;{!zzZ(&&!FcsAfbl zs}m==I4@6&FZpjhl_6lwHIq>4uhWlxZYxFIoGy?>(zIy9(DS5RK-Tb3Uw%X$7!$oF zMX=fFQe?k|1axG1S#)~6`5}Bj@n7Y-zye4hZuSsd?rm=iKDzmVpT4j4CrD!oo2sj%S#-+>Y zga7D%_AqHnJeU2Lh)I*lbl7Z5|PdpkY)0+*V_d9`u7@VD`Bf!L( z{*o!gb}Zzy19J`F#SjS}m?6WA2)w=ospa4^?(S71D>YAbZ#IWTMVS?Az}RUf zVc))?78O2Kh4_A~q9wZ*C2TZ9zs88R2Ur@hD+l9?p;OJgFMnNdae+A(NJc%EG{+UD z_@PQ329y*GHNXJn(;VKwY2P0kmXjx6q+1j#x(NyhJzZN)7DJ7#>RFpKt(3o(xmfo2&TD@DqNt86y{B34j1 z2yFq{F0FD{{P6*l*WkGi4@Cv)4VVxD_eY4c_`qxrRYe-0d(n_l5{i#|`_~2o zm|0~9U?J4@}W54Vi%Tq)bPub&KRrN~ucx5!C`(%5r^_Qtk;u!mmk2yIN+r+(wLC$SQL5fyB3 zr-g{+1Xio!fJ^Y0QlCos?)112_X>Rhg;BMO{gm1X<49|14u5gWxT?g?V#IGcqmt8j zS` zBQLEMV}4@dbQP-#TKmfNX6ne~MM8dfoAR4-p~u#@C%H#;0v?uzhd>ACl$7Geu+#G_ zwTPVM)>XXkoZZW7QO=v~+|oVOadB}lm>`Rll?-n<1fCC=5y2?|^kG1!9>B1prWywp zx5^eZ#tm+} z`dGWKwUT@Mz>rpTcU2wg0|j6vpGnT)U05hm^eKI&#kO?J6%~7}*&19Xz+6i5D^||bqM7+ULu|A!>D}1*$Vl>Z9a<4n(~Mkh36cfI52pn9$P-w zH5xTLw3@;8Nthb+YsQRi%^YK^3)USx?ccf+mewt8YHVGnjnlUqfu>8+s{8EG^qGkj z>IR-&zsfP$fVRMJxg5{5qQ$nnGOg4``7zs)_(GljD{X87I;C~f982x;VGOi!J*HOu zrVg*Q^(ZYXOXuruM=eo^*|?1=c&0s&xwz2l)W1V8yV-ng`E{m*Y+?rwhf#!iP9J=) z%pGh>0h)#755B`Nj9#QR6m@@{rOC6 zILTz8tzFE-k4HeD`@_R$ywmG=6O=r1F#>yFqFy^u31l4#;E5roDX-KerC?qS-slh> zorBS5ys`lR*&jFoJ!NFRc-6z^uLh%{?h8BIbFka5GppSPf|eIG$`m++-72c9_#sjF zudu>bANI6VKo8F6UTQ>#XK`31um*E=Iaa-Y( zbSl?sS%@u=2Amd5JM1T(#~ktUmD9TH&4ypTbm?9|!H7|z3m^dCg`fuhld9`X2Q8}) zYI6pEl0LmkrB$1h5?rwc^R%)FPO;-4w=2=tBXrXl4sw#W<_V&wwF>aJ(dBAD!%R0# z_EfzjzgjSpx-4Q~kfgPK+NllbQI}+-rGptO2R`7r*K<53Pd4^DL<8Nn`0?=Z7nFW? z6!dr7(IZ2n3EkwZWj?Z*SNk2$uaQ@hCp%}0nJosl+c$T8#Q_1u&TSOv)sF=QZ8#n` z_|AryL)+Lgm-O<1>6O=$cYMe0uEm%Ou#);eY*!h-9l4w>D!p_X&)QErg^h#?5)X0! zjV^@?ImE;tGg1q(fS{Yi#CAQ;xS`cWgP;eHWxxTEa7*@1fy5A+p)fXGR*MZ7XTwkf zqPxMoMOsQR<$*lp^!#60C@FxO6%=grsp=jr%6VlFd_}2h0$ZH`n>+E0lr{B`3-aDBWQ)X59R4G1gFBia8D2k_R6D)tDcRWW&!%sH1PuIF? zrluatsf*3X?lU>qBnX))|23mN>fvvna+|8w7|%PBwcW8&dy!_%3F;RJpXeVLSi

    R*0E@N{{i|ACmYMb(okoHQF77`VP%*qH(xc6TAe6QC;=+Re+N zW$DisfUQX35Oe8O5G;Xpo-QmUN;jyIPXcnv%G4~?9{yh`GOy*{O_IaZ2+un=vi{og z29FbZ#It1Y%VXn-chG_1B4kov(mo&SC1efJQ#q`&(*1xw&d)krrKV>CYm$3b?GX<| zE?O`^$Vd(tt%4R2K_QU=qC(0HxC0+hMarGs5vHd_nw>Jj%}yb+G1fie#WYe%v>~Nj;J>7Qx}Gjm^trUe>#c8K9g~_{gJK;8hp-=Q0&H>4}o0B z76EEGW8>5U%#lofS6Y_|#B5pB?9GAE+B27|MQAV)i$28g=DP!M5@03+);ds+f$%>h z1e`{pHn12fNCv7en7%>WuJ5N$>$%;%y-5WAyg*0Ral4Cx1m5R#@_VOGQ9S??eH|1q zuYipP&Bu06?9Ji2lY$d*`o;o}1IM9i(8bGdI|AG0_1lAq$R{*J$WJboSX^l#9Z*HP z(j5I48u% zzW}%f<}6GsETh270WoW%@nYnE%si~Az5x>y*peV60{u0=&D7K2W|Cgw>z^TYW@&P* zW3#+SV+C-^FJjYdo_~BB8XBN{g&!3Z_NWZ7kOa;f$gK$5*ieA>j48WTHl=`T)u?4I z#QZcj|1k~@KN5}x8sv~4bYbu(jSLM@pJ9T}52ig(EJ2ow1K;Qk{tBplz&1ibO2~cJ z8a$|Cqs{!n6aj{U-Qx*T0hWIkxw@c`jb z&{{hLG}3%VJTc%m3JrngCoZPTB82cEFy{eY4Mz;A;i9lC9J(j(*;0@sQBjrIb{cXf zGM_qv*l+&oRJ5R*ijL09N6|WvZcfY3Hp`}2k_GV=X~w^zg-`Z6y$+{ud2JWQqEJV| z02L13&~bhNG6AU=FtbLfcZ8k{acJ@X&2oXCy#}yzefTPTKylI3+NwxbQ2_>IaFK&h zX%q5xKsNV)nK>&tSyTs1Ktb&Z>@(C7BDn$OW{?_CD8j<#94l!94%?cWVR|dS(H1Lw z0;`6VjZHWI<$LC*Vqy@60$Q?;MSCLy1B9h2#f5VGKNB(Dgv|YMh7=uu6kyRMwH;IX zn%l!!!latR%*=e)72pYu-nSc-wY4oc$Uzf1>lKzEEKaZK4*M0BqYI2|A-<$Jk;D)r zR?VX}&;DcaelsFkHnrU-IJUYQ&Mk091Yie)T1|`mfHzyp;yEpczOgI4Gfk3g# z0d}6BJ^cOrLThI-oit`{+#ziw9kQ(kpH1WczR3PQ^yoH-2U?;B z8tG+2-scuMIP~Q#t-J$ zzOBxc3QrKo=f^EV)Vf20a|5KBWpDno8*WDIH`p99UzY}#)p2`2vEaVxZdzcqfI-Y+ zw~Gv2&pYby4x{@w>2MchmW!=m$KJq-${C3J zZ)<&}|8f`dZUGGU@1J`9-){Si|K%9_=)b*+(*7Fo|NsA+eTh-@W~&=`yXnnz5I=Qq z!j@N%Flwa1vd2!*Atuv*4_bG3)z@EjKdlNsytrB>TAff{=?pW-O_I*6Oi4>}` zj{l01cx1Q`|2EeTLc*K{qR(qZ4lK=H2E`&cKD_rPtl^>#`1mJhy?hrcMzE*SJ!`+t zIi6`(3AF$y!)IR-{B?EupSn&Kc=311;hD*v-hGNJzwfi~AaebN%(=eFz%QV#!9sNv z`8kzZJ_X8+f>OzFeN ze=WoC{`WbEhxh;Pai2I(qDA8_bc_BJ9_KlD?%v0@e5jVrX|Mnjxv-MH9QM ziQu=-hErl4G%R*xe(WFXChhq=gl-wb!_rDb zaGmBW>iqloyj$)wKwc1h{4ewT{$DsG#d5dLfH0g7?XP?9@55UFciPl06D5xeSi%J` zrU2Ux=+pMyg@pY7emzc@gZ!DBTct|o)O^^M=?Ojzg~8tG@7KabGy5_sf;%2L&-lpQ z`TMD|oV15=kOU)0eYIBL?`PI&T?D8(h4vHEGcpv0sCNYBp`Y19(um;Av9WP*^y=MD zW6Dabq2{yotgEZ*6S|2QZNuRv=3K4Q2f0&AG^*~ye?Rrz!S|o{{~z8x-Y2ou{9Zv* zHEY6zm6UF=dCYm3%MwqbiEcl-eNj@3NFnQtB&m9nO><}n)zZhZZq2}yRosqTG=};+bLt!X}?zRHa6f^iIH)I@DZ;Y z=zQ(H$R9<%c=E4v=k50U|0xUtjUxV2AWN{zEc|`6cu8b*_W%A{Hv#c~BC1|}xcF~L z;>}U_?r&v<_rJg0|MRnxsU4xC1@;|u{YxXIx${Rr1litpjHLo5WUhw?S6P?jWKv$P zoDAjwdsH^*tB}Nkw%4xp)c*Q;l$o7fv3Unjnz?5dxwYDK82a!-nz*;v-?CzhicX(R z8oj^iAGrFHzVjlV_K8xBX>u~-l#VZ>Y5V3qOP%y7F{44gIPvM;?O`U%y2TXsx0M^I z&qae-3Ih9R-lvc&_gt_w5$)dKZ35lAh@-LUZudoJAK4PivJrHu4Sue+kRP`UPIi)D z?X&T&ZNNQZ1=%;L_HV4i^&;4HBG^3OaywXb1LUwsPGr0W$^CrwYOg2u*d9hu0EARj z@KuAKqW}PqFnl{w=4Q1Fmp~(+58xB@SnYKE5U^8LQ&Uq=c&VK{ap20=2n{^QP4jDN z+;poEf{lg-xl^WJM!U0(icRMZmneUm7N8({1MK`z2W1;ap6$$A%%!cX%r zUdyMUlsk*DxlDa(#qH0O=xhmo!VWHd^XusW|5NPZ2mUu7Bor6-@v3~ME^%$(OWQAg zyj_q1md$oZa+7g~nofEQWF{~rLQYHi6(YZLi5W&HlG0;`+FNwSFI%-=?c6G)Wt>XO zuu)oRO8pHY)m~4?AAc*OCu(bCt?DWIXi=HwnMFvS;a8Ue?jdaaXs|`bD&Mt~S7&*p z88R+q#Kk>Qmd>wsT#2Or7IWAP2+)>$Mp5w}Kmj#*?npPz*#ND-dUL*0a|;rSc_1q1 zY3f&R2a#ku7&rhxGicPp$NvoV`iEKg$sVsWuD@1F^^)OyGXs6hWa}u^8|66&j#<3c zZ1lub^7m!>wuzoN5a}yuWSvzMnts364LiRyxv2JuI8`|K#R44aalAK=z30+EfE{~9 z!VLmIkj=d+N`Dbx?BsA(6=ZHO>U0PoqPok(Bt0tSw+%W3FTi|xguU>G2I5780el@l z7~5ecT=gI|#(hUdR#Z*wg!1Ag85vkeM*FQJm3|CC2*T9|tCi??5HV9~i4O9b{E5F) z14&n*{s`+9A&957A`!ZImkqS5MZj z4%hRl1a_HD}9KrrpaZlNCKXc2pkmQ5fW1qI*>SmRzD>3GZ4g;_6KcksYe-ecX1Scohr>Ha` z^Z@fO7F2cai_P(qqj8Y9VtyA50h$a0##p9Fc*XuTUMHSt1(Fb=%t$W#h3B#5@wXjB zMi$QE5Y5K0LT+d>z&c(BrCw%=ME|~LJzP#&S{~No#_~N)$BwLb{K(5De)I6Ka{MS~ zYN)?IOo=Wj>@4X!Vx#Y_2{ZsM&j5kA+xNb4)qUN4xK}Tt$9SR=E&E|@r5+a@$=nzb zQHV8yGYL_(gK>syvd#ICGyHp7GazeY)2S*03leZ^S_WGtYu3|iwz{2pT&p&-Ab!T) z76QZj{I}N*a3e%ZhYmvBwE+0-H7vl5;SxP;fjgbC!nGiEbkw+G88l6;Evb0@2(s8! z{E9ONw>m&rnnmRF=88_GJGqrY-vK!Mdx2DPWwoB9V?F;5f$r++H6Vf_@^vK@m9Wsz zdRcSP4cb}BH~eiA!G)8Z&Ub3JPT_rDq4&EXs?sS&6^XD?W4(^cT?P7w6dG5t+`Xas ztx@2}56OKSU;=dr!qsE$wvj8_)Yv;Hcicen4~QTrb6nA&;D-&`K2Jo1pQgt-Czx^kRGfmHLvd-*>0sXNx|-1nqNo$0ZI~?F!vG*=X+SHJXSZUx?WErJeluxiLx)z5w951S`y4C`$Z1LNZbRmTe z?Tj7eG8xA^qyrp170dYa-~lGMS<3%-#a8GE z?>gwz%`s(N4P%aW@35aYr1tDqF}%w6{P0#(75(<$P>*+gSx)YP9E)gDxt}v%Mk5mc zq`EO=a&uBD^8gq;xg>U}k4J)nV9=kaSl4hE$Z;fOmCT~EncZ3y_OHIz+dqjRdxA#4 zB~`!IN0XjndP{VSgNRDwo4N1CVD}xU}aDJyBD5$BKP@!QD?SdYz z7Sf&i>g5NdJXRs%%IvHym_#>jF8e|E??_Dc5|#YPRPG8l?$Z1i<1)}EBl$Jm9rDLou_U1Fi-rKd+M zYRK*JZ~YJx(tD2OcqiL?qqOang#`dV9^jWGFtpJ?VZ~6_C*s#`a3H9nK3SV(WoK9T z0quzPU)h-QW$TC)9_Je$)`N=d1gCqFY!i1}9I8bsr+m}m+TVArY&~fw_GcU%fA#ef z+f9egxhi(4ybC?^b?YEFyW#P$-gn0k6Wx`Bvo$c1Vw8$|lnm>;!eSDL`F#Qr2P+vUu?K`KQ4<7;1+ehKv z4FyyYlsB2)B$56Jz3t!F>1DhbQKD;*W1~tQTHTTWqbQh~{dkyq(9zklf|$v}3&$Rf zj32AaCZEmt1TF`0wqG``0!)ehni(@&$@6mws~#r|^<=6vJ>3jkgqKsdBp zY_OedfYWVnS$!B01}4CW>!bSEZq|=+j_zhb*(AW3s%u43KsU6%_+u^OGgwX-W zGxR)k-YIDO%s>tyR#I7;>!ZlURq&Gw^cjH()lj0GU zMkyiJD^HKx>Az_(hkdpYV4*PGJ+bIhLPa~g1755>3?|_3v9FY@Uwe4t`t@_MwwLUT zB%UdVUbm>b*sW9vgYKQ*aF3D~$H3^OqGFi36{cFV!hN<`ipx{aJMcLtFH5Lr6mf8J z4q37nY``RS52W77n?dbALPJ8p2aO5p6hZ4TN6T{CT6HZgAk|*Y3_;H; zpz?*nMc|q~A$GVoYssyXt(HG!bv$RKz#oM#_olva6eCdjw*Fk`!Y|UpFX4{Ji-|j* zv_#H_RaqUc9d}j5_NNJN!Bv%cd3H}wisr5#LvMM$X9?HuPpx~enJhaO#Rzb*y>ejs zV|Q9L_rXMsrO=VI^rz8()*-vq?EBDc_S$w--X_edE5ZJWw&z2Z2OryjYPhV(Y203K zVbv@Z|H+}vL;CGR)-xA%ltZe?>DpoUY+lpC1%Xs>52~46-~rqMi`YVyC)~=&J!jA{ zcx|Wc8+(ao;4zxhEbJf=S{b^^EE%OmpFDW*BASk5Doyv&CM3N`h?` zC2yD#R07d_KwlhEXuoul9IkW8<&5gCI(1ZP-cv(IsdyYdulz@5C*u~8@z0?18q0ej zVru93BlucnGQDvH=JtDbonenfz{%+Bi5$JaKa{gKe=@2>QPiAB?oOrH%Y+^=R1IYBVpwaK*@^5|oJKSd~svj$3m z)SGM+yFpVRbQ$1#uux2E2Na0O@Xjyyv|kK=mD^Ch+Yx8-D0MxY248@EYwoUecKY@q zncBxZocA&nr}BxmQVlfD!cMEv#C9k3L5dN-hiW`3S@<%QrN{8zMkcssj2xOr;BibU&@B0nMS-Cb=1Hh^N zi4fl}&$9jnrHl3rXSSc;oDC=})8|$W1wr)=gC%sdpS!1;lPxol0=nsx2&itse8Sv1 zAq}erGv40}_V9mqRitn~!VO#%+zOluwxzr)sT$!Jl6I8AT$C7@7g`yli$SH+dMXJ0 zeHrEHj^kv5V!iot#p7UmuB;py+zB27LXvsnW?(U3FJB(1Zu`%r3#jr@dJ`~2g=D;KTHo0ofw!L zfm@*ve?|`%+$X?F8ce?C*i$p6dj1cnF0nL>XK_D)AeGE>aOg@&;UZUJvJ*(mCp8V3 zBAC6nT?W?{$&=RII#tp>;+-STAGezios#|LBd5=PB^CXV3Dkk3J`GUdb50fG zo_B!#1~4yx&6vc+;KvBtMc(|t;gUR!i)O_jU5r=&wYGu+(V?pk96e)N1}N^nRTJ{C zWFRJ*n3~$k5iEM3+e13HisT#g%yFOX;Iy2@;IWh%p;Wa>s2iu$Tni83ou?lnRZve13~9A(t@!Jortw z{s9osU~AKwdfR0BwJd?xoKo?h*ejotFcvkEw6;*JS2iIeA-GVTXTFM`?l5~N`6P{6 zEy%bktp++DJYv4mpzO-@$#-_KRp$skb8TZB$5J<6q)Fn;R%j~AAD!%tgNkW?9>|=s zY|CS3t8=?@8al6&XsTs*CeUaS<88j zR%1U^c&HRkd8UO9e8kj3?rJtQwzG(XXpHmJXW%0N+4pCM&pz-kInehNqns3Nn2LZ+ z#$Rj?`(H}?QmHsfpL7z~om^a8j3rVv*)fTMQIV1TIoby;Ou0{sm0T43SRI8{p`28# zSIl~&O2Jg@&5pX$s(p~*4>@r&;5@4On1RJ{x(~W{Vb}T@jf6wzqm&?kGk5#8?kUC;C)y}37LO{&Smune6 z?mP0WmV)Vj?BNVO!p(s`#k}j3AF=s0vw%y-VA1AuCEJ7U`AeF$PgqqUUp1$9(T)nN zt0aRDix8)`=#lF{aD1_|2p%G)24=!SOH_Tqt>J7R$-X}g%DKP7Ab(Iyc3o8RwHdRL zy85?e9{RR#@!U7mt;{m=eIssG@<{9<49V13&*1{v)xG;rKZ5|J!biyNG_8NcN*29t=BUJx=xf`SXc!Wgo%lG1bNe2v_Zj$OaWs z$wAH)5H5TqAe%aDGZDtG^a|fj9a94)&wdsd`G?sxwm{rqtjD(ciJ5UxKA+vN>X}9S z%h$n*Oe--Qc;kZ-atDlwTl)xz0-26RzI2XcE>5ecbtq6iP^K_a;z~x#;>&Byr zUMMf-n_f>TQ;eYcy{kxbm-gxTzE3s~eC?Bzy_3!e$fU->GhijT0-+i%h363uWSZ>X zn~TS6FL@T_jebe|6EiGv>Fr)fCqZ>>lY&Xc=m3W~(T}07Z<*auQn}s7kO`Yf>9L{y zKC@kDZ-&^d9|sRT^czr8t+^t=;=EplP+DI80Vp?@G#ghGGv>KLN3!Oz=C+Ds&WfUT&r0@yq@LsN zXRd-4O6$OsTDv5q**aF5(a6fZ=kmr%Abalp#A;x6-wcsdS zpHub^_eR51p83$jWWL$dxx)xqLDjLW>nJI4q>RInFe)2 zO=R9?S!PlSzM>F&lIU035v9uXR}AkqHf%Lt4T9t`C#R&^ehXUgS}5f+&K>V%m8Bv@TfvOHBGeIW>JKm3!<7V6*AdADPd@#l-`gdn8&$ z6XGAiM&Ky-{?1>5)E@hf}w!Usd095Tum_Eq=d9v!l|+hqi{m;rRlhZ|CSm$kAa zzzcW@tLnh^ttUtjP36cEDD5CG>z#X9nPV)7{=r@%(}XDoN)$}BTj{L#*d8$VAuOD5 z)|rQ!x%`%>*>&x~i&x`W~~Ey+QDOisOfXJj{W6 zp?9gQ5aN95!K+hlTW@K)RIIDe9P=k(|KIDRNK2%#Kjl+t_N)o*RxQr>w z_1qv)1hT54CgQopVpxx0Kpo5qc6N3UuhSB4y8kH&gT7b*hrJAR1$4tCBO{CZB>&zq z_v7_F+Mya$>s0XS3)tK0kz4U}+cDzhAKW8fKm0MeR4iX~FfdI`jl&VOd;~FP z4_UCudLdj6ayBL$U=W!Dh?jP?f$}{~-k%Ti_%qZC>d_lF7Xg2P{@KQItQ`I*#vvE& z%fGA;8DcE>x38G7tYv%;N)7DzYQ}MzUUy(rfX^brm1OAy+V-1VXC(# z(~L?6knm!J!WGNn+;-PN{*n^^jHjjnaV3hYAlb0cQHY1wJu^^Cy`ZyS=3{g74pEHr zS%<^|xJp@KhV|g9jl8wA@flFZCva#?l}dQ|omC zl?Q)*F>mc9SEo!vCz-n+dImuwrRrElTkVN{^ANP88M zlmFVz?LAD+mQ2$01DZI=lmCWE^OV-CLFFF4;S-@vc*i_0^pnt)nnxQ*u>=c+uEOuh zB!dIEbA+>McVG6?1QWeui1B1CIw9Y`sRgO5>4LHf;)N)ISbWq2jUvWxTM{WDRYgpzzKM^~vD7#tIW*H`H_a&ScUN zkaIK%(n5TEF^masE823|C4I2!DwJ-pU+6Wm+qc&tvw?mD)F>!zUcI$IW3KviH`k`5%#AvY7yCLb|70kBdLpf; zAA27O7Kgc?rd$53o5RA>^zGc4AF(${Q!r=&N)Q5o_1sFin|yJPrR#$7Iy*H28{O`R zV|zAjk!g!4x~*!DN=AF)W#_@QIe?P)A>83tCVQ`R-xfcz!mXI6CF*p+=>hxqpOw6! zwA^y9lVe!;d-k^+FaU6$Q(t)^SOp)(F)nj3xXfF^PS1VU4-iZtbOM~U{TV|(*xrEZ zwr7Pf5he}ryNjfk{D^mTCLi1SuB~6~_fSzJ1x)n-BOWg`)C!4(xtM~L8d-u9I6?e@ zc^EJ5srEK>`lbsn>wC}iF-yRO5ffAh=2ylRU7)+D+Q(+9kYO~3_a7qf)EVa2w2xx} z&Q<&qaBn{Nnd;0+lh}t6p`6j0_^*=*qP__ljup}+L@kI&QFD`X^=1KBqM;Oqtz5q1 zO4#$BHA7roIV2-XA#WIEH z4d_Zu7F}Dktoaj?5x7Y}XVXXBn;cmPopNPW6CFuW_}#dkN^QRclf$VSwZCgK?gO+w zEJiBAi%fN+&dR@YkfnI=@+oHT!h0*f4!gwI1RIz?&<^>?oq+Y5=zHo)qvzqFn8@tm zEUZhQ%w_de4?e3Z1!@TYel(PD_wu-G@UtgQTa>$h?~~4Vvawbwj9{le19(9g8l6p; zwl9Y8@OyZ)6^wDuEwr9L2X8vIG^+tBVm`jGeKi>F35^U^6P?N(>JI~-%#W^C0Mfs} z9H&*x0bGG3Pr`(ykGMEi4gAPda&=Z#(?0ak`v|lKb z9yGfmZqD1wi(o0)q#_q0j|^+P$I14#WH^@!%7P7j7i0JwT0Aq9b#>96${)%umw_er zt7|zwqGszrBFss`%*1s0#Lm88(Wi>aMeIY%sp@|I5(CLjC1GW*+0;(<5Bu($SyP}i z#%$bOQZ}9_Q?w;75ZYfzd>j*z!X6V@s8KaJg{m? z)sd~d+OQCPQ~4s4)Y)&=%T0PygER}&Wn7tilX z=nh4-H;+g8mS4qD33B-e!v@3_sEPNK2Q;V)Dox+TnFGE6gF)r_bFVF%TfTfb)|Sj* zOM8lX1ySh|B*qRKAe04fHzGHS9h0)$Z>73aVD`L>Vw4vg;aN!|WZ;Gn4L-ouXFqKG zIu|P|C@-ciNCpAvPPGTxezNFWnQmFgiPzjO=C{g0P&ljS>+1_H?;$2dxmQ5ZVaok8 z?b54vdRLQu?rp;6DOzc=JNU5O*Yuob^Y)pl3quaqKdY(i#2`;wuhYX$Y8eL5Z<*W8 z>KRlWxmP6v1wBnuQc+)^?ghO(Gn#^mt=gA|fKx6I&}xB%I?7XA$?(R&b{misyXi4o!$t*{A@dI1qdwg|;oEJsLHxL?%GS|%DrosO zW`gCmFCK>Mm<0c(5+Nt;EVvM5Ov@_nfE#de=YWy)s%{d*bYP|1Y>13 zHnxBR%~HXPh6?fKLaioAeTf1U8gz6SCgtf6@|KJ6+)S-*N*!6ygZGYYLjtVh8tH65O={EV`$pZL9 z!Vk%DKP@+RC+PtgH%@;9kNg{?r1f-3=QGs9>!}1}>bIdq-Ojsr;NS$ylYHb}M&>1B z03gZD*G5V^V^RVUC-hPDJ@$ zFvckEz3r88)35`l{(GWxI_G%w4izmkCZoi{KRTw&K)oUu^^(VRD=l&z8TYhFhA319 z8G@aP>98Z2^rgjOWgnR1TXIh`5c<`e46D@DE^pm|c%qzLMFZ4ShoNlOrMIzbE;rYjB2k3td4A%L4D|78HQc zFNTBU3}(b^RYgViV4{p|A5pZO-Zt-TMdBc~i_JJVA_i_VPHdWC4$dt%f*fQl?=7GZsxl`{a zcpuOyHy^lf7CG=EuWw=~?f+=++QXsF*SI(pPAnnYO0=hzhh;nEj9jMh$mrtIQp|%m zh}?1z!n2i5ZcE0hy!TF43&)?_&^Y6?v z^LxI(_x;}9&*gR1cM3hT{zXMuw#pBxNoJc2sk1Xn!E;)??50A=pwhebZ%&Ws(!2+! zI*+gH_(|-y{X|tlmo3x8qw3R&$(!H9W7Q z=QPN5uPJ2}KfE-N-Os;URCsvRvo$H=Jc&SJtBZMTp&3?i{{NNbQ(LoEcfIPUn_Wv+w1$7<=kA?x>NE4sU4__NEdLx zLNYQR>a(cS)md5*phHGu&Rf_5u8SAfs+>}_>`{=tDSs&o)a+}+6XmEm3i|r~I#25c zJe9O!C;j$HhX%Nz*Dm?{(;FKL&7wMUYB=59P+yl3iC;@ey;k9EQl{wZR$Z^Id$-B* z=!GXUqrA$7g25L8)Pc8^SMW)(#7F6WWtLh_DQ@snujWGF%}+cgbHu1YR z39GvCIG!?b-9XtA#vo`d2o@%dRmfA35b~(LO$w34xaxZ{VjQY9ZYjUGBu}tVV~~Xs zs{NdPyte59B4v~Bs#1$*pvfExQGCl(hZ)#`OixZ8b2-5O8HY`rH_&CaA#7Q)=@Z= z#-QNfegfEjkw24LES;hLRlb*(N5*Q;GQR>n|9c|?gRix2m6ZKsm|#wSyN087wKuDZ zvg8&K)8SUB&dJPF*2~Vx!UYYk2_DC2TNK|^smVRSL&)dR@5ev4Wl1D3H8h;Zl8agcsrxc3QP^9k%Dw@)V}D|qq`z?Md({lEcb0r4nI--T6A=S_M!Kub*4Yr7ihgt zuOt2~q5<~8N-1>2a3sPs6$(Am%WN*#EVXv9lJdGYImW5(u;0M{p6j`X7Qp4NJ;d0&B;10Uhpb`vBzE;hc56^o$(hvy_I^tri z=1b_z#anGP>M3mlhf}D)>FvGn;k13$yZ9CbiqUWMXw~^K7He8|FW1QND|6bp9lJgr zUz6C;K%2Zts!hrwHXWaRj+hLPYICPw3=P3rUb-jlw_#jSm*_2HdAx#!+$Lt2?fx<}PU?pwvy&U=C^H9tQOQ*-LOlr-~omvfDOC#Veck)nS-PEfn5HmIt|GCk^n;gItV9IQh+tI9}Cgyb;3seP1D)e$=E8s|mN#V`94kRpQ z#Gy^QAp-4pkXWKWPb;>I>2+p*;@W=sk>4ia+?H$1thj%l5iwy0#MIh4aV5YoWt8*m zS>5>*_-f$sXsv)0Q~yQfxQ?0WsllNk3`PH}$D`rZZ@jD~qf+tWkR=Eva+hzw#;ia@ z<4;_PjNjs@>-shZ-0{)`^Ei}ZKuHM8WClsxgX+;I0YiW-hQN=#O3BX418FjV(i1uA z>fHOlU6BR(>bALtk-@3Z(pWg&(XG+-oLd_zi(YGO#=8B9&`N6%MT1lR&P~2squ~Hs zs;*ufW8HvTWJzFx;9%x-=OKok;ka#Dm~eDdY-!X*eguYEV&mkUnP@ggQ{cAEU@|#5 zxx4#peo0Hx7U^CU?hgH9Xr&;1#YKd{>HLt3pb0{`e=(`0ookLLf&0 z!9yO;Q!R^-B|HOm%p+I0y`xYv`Vhf6bLI?;4`O0sgbjCz^h81zhl8~RthO2}bsKPp zM%{Gx*a-htK#_HP25Xh!e)efMD6bLv2h^U~-}`)#3L^X8^w`}v2*B%zVWjEpl!gkCZ|ov1`SdUPQ0`vUcn z+=Z1UmCY@v*z_5qy>zbasn1B~)>D}2#P(pE*46||9e)h`Jv7Cp%Ta~ZvtRBYZ;VbR k>*CfA{x8euUROLU^FYgLa)S8XhSu@aNk`i%8=qVM0ZvlMZ~y=R literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/secure_communication.png b/docs/0.12.1/images/secure_communication.png new file mode 100644 index 0000000000000000000000000000000000000000..2772e36abe5a54c7a738536eb3489ea6d7641597 GIT binary patch literal 55371 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

    Strimzi Documentation (0.12.1)

    + +{% include_relative 0.12.1.html %}

    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 literal 0 HcmV?d00001 diff --git a/docs/0.12.1/images/topic-operator.png b/docs/0.12.1/images/topic-operator.png new file mode 100644 index 0000000000000000000000000000000000000000..1f66ce27b8842438d1f8840575ad3f0b6031e7e5 GIT binary patch literal 59729 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≈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 literal 0 HcmV?d00001 diff --git a/docs/0.12.1/index.md b/docs/0.12.1/index.md new file mode 100644 index 000000000..ed80824b8 --- /dev/null +++ b/docs/0.12.1/index.md @@ -0,0 +1,8 @@ +--- +title: Strimzi Documentation (0.12.1) +layout: default +--- + +

    frG82#)a%zZ?Uxn-eC}Id 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

    tKwvBlhE0bPv3p z`zOE~kG5_JIx$MD$}VIwg@J#Ri8!oDZsg6ixjm%aiY{jAwMx~uEfMlzLPRGkgX1fj zqa^)_$yc%xVovOh+r?*p1LIG_pl@H!eQ$C^LUiaFH-HoGQ06ff`1n_$NNsd+&@I+v z?=GeW%^)U#DluR-DoLS|S17h<;FHR#=#DZcxPe2Z%1r^Qt>hS3jsH0ee?3d9=n~b# zF&sj$^IaJCJsBEQ_k?-wc;jkSr~b8jxzl&vylg*A|M8BYU2k-$IgL&k_5_!TY(D$Z z3*-$b^obBkqocyi7=&Wt#YY+c{d8{3LHjE~NCO7^yK{1)>#L-b!zlav z9aaQiZbWNqgGM@%_|?Xk*SW&$isycx&xg-Brg)&~BoQ7^hZogBNW9=Z6WA0mu!Osg zg**B8GFSRa4O5%1Ch&;0jJb7ORHZ;N3%B)QLE)9NhFDJ!-wt`=?!mv4jCA0n7P zl`Rf5c_AP9P}=490;>JeHTA+D%Xd6q6HP)S%`O{O6Cj{zkW`DysAJSq!FTfF2fj#_ zrQMh}M^SPMxktVuQrIGogVlsZ&vbOOV5u-ZM7;)m;#6}(8}j#bIYlc z+!cb0UWQ4t;#}L0p^Yl2X;7miNycmX@IBJsid3QbZg2UYiQbjh&B@3&pK7Fw%1hPN zjEZDhOCy!^1@qeFLGFOVE0R!KUG0!>RvNgqqyznay=q#Lr_U7ij>kh-aXVHWlnr%- zVvY__K`lngP=5jsp8S3`-kbE9xNbyrCqF*ARlK`*C{D)mfXrSwXl%k6X`G=Vru9X$ z4FbgU&~#?ST$gJv!{j3~)b!2Pf?_AN9jW&+C*Heo% zYsocJX{H=JmC+Tl3MSny(VlxWjWna4gtXTybDr33;`&UQT0RBwJoUgi$00NQoU!-uSqQ{ z={0HHZwAl);9fmO!)g!pckqU8e_^IzQz>lh6{~pOtEs##CzxI$UJN3j9YTv-d;t5Tt?NzYQ;^a^dopyXzI}-XG(I|5bv7M;c~a)W$mx)AM84qiYMRz zU1Iy@H>cAS2=PFl3Bv^JbV@%j*g@R@;`ezqeruj1N?I~EFWNy%lqbumj?Q6tk6iN zEd(D?_cz8OQxpn^Hbl3b=xyy}lULhn&-mghx(19*E@0vyU2BDWX`t8;{sHWv`}pFZ z%J0J1CpL%tyG3))L<2K!2vo{65J&&Y_GHSbW5hwQKk)={7&BKUVJhB ztEy*55i(y6#JiwaWy+Q%+xI-I!sBG9FvQo+W%lMgpjdLR{LA9hgjdS7kz~SZQ>;VZz4DDtbBB(cW7b+FmZPoI`FL;up_*G1cy26g^40K`;JSp|_vkLG$ zQM5(=1nS(#G=@V+c!sGC=p>dvpe>;&PO_~WY)(YGzRVEo zbU2X*JiOJb=&t)#x9)5hqx|Pkz6;lB`1vbSWh$&+zzv_}{RtKA_W!W6ubSo$3>%MCJOCbyO zGS~Vji*NY7R^_`B?`hicT?5UrB^XCon5t*@SQj**Qd3{Un)EGo*|?H+i$q_ex{}o*m7NaOL-+m-NJo(mWif&6Y(k( zD9Z#bjshr!XKK8=His!mC0g@(1?-bFxt5m1;0M6{YqLII`bAYOa=PgDc0R!C z;ezf#=xxDhJEtq3gPM@4t0hD=d20y^8{8Um@w2lU8S&n0-g5j<1gws{;N z`8#t>59}zoBJ^x-P`d8t{ff@OxZIv!5pKqut5C@y6@veI_ny=CigZEd5;l}hCLV84 ze4kAPbYYq;f#IQ6?e;J7IWxva8A1_!q?DsZT|A0THnBa_y_4fnEl}-aH=VUZBZ`X| z@F@A^R0Ti!x@H9Gm>hXcKgu8KqKCd)Q_c-0jmj00y?rx68sfDb(imk@O$tn22KCx5 zaOg7M&T@w5R9ZPm=&%AY`W2Q_33nhU_1pc&le@<+0EFrPlZq0(xLS|NZEPfAYraC9 zn3_7t7CJvu=^YvA$=18U-QC^&`0NJ{5MIZN%Xi$yve>5IGW>t9%;%!t+8@=hQFLkv z(jEib9roVT;Hz2@OM7mm9WP8rA|Ly(uAc@kl#~snu@p+_`8uK3cAg}QZJM!h2)X-|KH^tO`Z$A3>Zy->gObH{1mH8Q6(j#$Q zJa{LyDr@qo@_-gkr)q7k7f4pwP4smaRegcrv$zuy(xL*UD4f*vR2t6EQ!x+zp$*$- zObAm1+bjY0Qyh}8dc9TByq8viM$-j>P@g2ZgFhT$ZIsrM&)Fxe3YVh~9o{jnQzU-< zf>xk8fMrz_?6_PV_{~ccqDj?0I`a*s*BGL8l4HbbH>uU^vq*nIZDqM5Rs5%z!(SP> zBQUMkV}=-;m@)S(vZ8^d24s%oOkzbKF^{Nsvpd$F?Yh1V?`BvJoqrJjEeZU zd>3?N!SlUr4=cULcni_o)x#{#Oamy}*NpT!WG1<&Z^fCw3S#f#s7gc9LanJj0>k(@ zzyC@UC_Ed#FQ`w^`o+JZ^<)sOzv*G~?_YBRkw%DU0-ZwpE1z?;YU}y%vTW;)SW1bb z$?rl#kC$6R8LQ_XU;4CpPN=Hq)z=f{LTc9+vT`^s2HYGuis)y1W@tNJnvUA>c6*`c zz3_=7wY8S{<0`Nn0=%Z>#@)9I|x~FrVAow{4JgexI@`TJftMS5xn$V^5SmRtF* z?T&X)Ix;S1By(@_&G#)#`tQWbt>>VYyIvLRyx4K1M`cpca4^)Y#P1HOpwEc-RF-nDGa^s*5&CjIKObm+KUo$7q6Ct0r#~pHiO0tgYKS1IpY#O12Aw*Z0!$A>%<*Qx(tBvoe}-_jV~!og>mJ(61BA~ zj{`ApF=0iAxjG|yJ&%27P9B~PV~(|k<@*=WWJ2Ll#60b*b}pF%IhD5Frx{O36R+oQ zcJW-bQ0Aq~H$Jq;t!EA0)V5hBA8HSwk||C^VOb@M0!!Twj#ox`g!4aa&rV zR}jnuB;VaO`4nVNJtsV@kG$Ua>`0%tZ@gQaHEOK@3l8Wo&{JYq zDBGbtlJv&Drj^%~4zl?|J)&6rH%Rf3l()Dgo zW)Uh0sN*R?ly|dsyskcIK3(~6rU_e+{UT)cA??0gisJkvT39BdFqwinW`oQhFbC8E z?rU+Tzh9@~mx|}CQQ2C|dOb1@^0Biu!|oayt6uuf?!h-#5Xv&`pihn%n+`MjqAJ(2N#Do81!qsX^FA zE)pjNM*^bBv53W!qGP)PmG6D?S&gCMnCMJptCiD?Z&&}$UPfCMK?`5__!5Fi2rt== z#5GAtWbPFcUHhrryOyld4htS0-mYE;sW*|q?TGMUY5C+~AhvkY^X=)0hvBWckf2$# zix+9drR~%bM-9~VrBGDpKya|gJ&!H<5C#JEc4;GKJ?P2(cuP*X`{(*ptYC`DY|`sj zbQ8RD%Y(3gRa1@n^FoM&G%^ajZIos6Iaw!_Vdlf-Ve7}2KeFlJl4yJ8t+F>G;F5N# zIPS*p;ZsG#5Tlf*^3Kq>f7DZ7^##*qmZ0Q#Jnyl(jF{xXDjJL}=}P1>q7W5btOF#) zw%QaDWSNz!YlJLF_j1Q+oa4NN;O1o2rAlqgfkdZ|P+4Wqdz`zxq}u0+egN1p5j~?} zc>~eJk(58hgGHC zGi7}RnDV26R}{=7@bb-=>oxaS+L)Zwc0#JGj04!J$#{gXxZlJ;G;2O+$jKvQ%y2hh zTvotp&b@~~$?5g$o-)9dkvV)K!%iW+P$1?-!$NhD<@gP~wT5hcDH2e$jJn-CM7r~a zr8qc0MXJeWhNmUSpo8mo&s)FE3&b2I(%Ia^!!t_oU&BO+v08_X7;V3{D>Dq%A#qQ% z>)U^;dX`Jk%Io|>Q4*+muAHg#MR58!?&iV+yFZuus^AgfXK$bG3$=QDd_39I=imJ6 zop|@Omjf>MDx&k>1;|p26V^T`*)s3N9p?#E)8I?^!F>7bnHNGwqOSA z$E>^t!+R&#$2zJSsNJ^B#wvrHtq(1mMivfe2=Uv`+P%!_BVXYICqsHXqoo16ULMAd z@H^y!$b@L8a46*VH(8Nf@Jl^Bh41&WXMci0n>r@?%S$w;F*M=;|B$TBte1AF`${Hy zlqlr40<{;me%7Y~B)>U^bTLljtIEA@5MU-#uw7;v@H;N5#h0LyuJe3Ny1XFIl0I)0 zJ|ZFL;Xj_YP;2N%Y}I%#Tdq-iESmSrP#$K{yDOl*HsY#Cto;1lC#J@IpE1AG@ukBj z=m4@uy7zHd-|n|ULO=31srPL{QWBv@8DOeD#s5N}VeQbkfue_pPCtob@V>YuDKcf{ zC%)Y8-sG``Q$!0bF(Y3Z_jnTR2*xkL4`S|wTjeP|jMO}5u zzP3D`>J&DOr_c|D?7XhPBgBnujlXHGpZq^A$Gkk4|Q&<{I$GS(>G11;x=+r_$9f@ZMJ-l^%YV zDSx4fS)EWASzn9hehJQB*(|qp&j_&H>axsXVp@kpZFh=gRkwfZYBYG(j=>Bx)lYwE z!TdeF--W{gMz@GZSpuV*ehv2B;#q;~2AG-OvSgM%#RLcio@DX&<`TR+#`3m7Q@R=^ z-L{_M%%c-8m^?)_u0rDA^W2VUtJwE4pC22U2`IC36jB^KuEfjqCIM*?2ohh-QWvhR z4q|ny$AhYfY2p@RdTyTkiCS$wbhYBrhJ|*2Bg{sr2IA06v7MDWar9z_B>nq7r;i8Z z0cZjSKWS)GiUxvDR4X8kLVNSVfulJgZwmuDb^@25lS8RKLl54Z@^EVqY_4fH>}(gy z8Z=wJdC`uc9pZO$JZ_NL)!Maa_p{Is8Rln457ls@(G_ z{JSP?8}^RMJ7G!K2kxuyT=xuk?g#jUY?W({qF`ac@-b(t8M#>gx(hao0CLmOyI?UFELP5Enkrr2rVyz|y zFd{pg01`Wm0x_sN2oI0|i1zQAA9?-^P04(J`QU~JYsR~JLIxHl@pa;suC9_7z>PC^ zeT9wbxVN@0%U7; zSeE)*4IiQ1Ey?^0haE87XGOe7hXVv!SBMdI-QIc+Cv;FP;*=54BzyF9AZZh0p@uw# z`NQ|xD}44V9|Z>esZvvx(f32ckhpZ$q0$cfHJ8$(#CYppCb-XK#M8=4`P=O;Ao+B` zr{XVRhIk^Ax$ESccT!RK6C<;iL88!uFXdM%E?8Dl~hsRBJ zdshSnK{ah4ZHi&aemJM{XDy7XNVS|r3;i_w)~#f`ybL*ux?z>SybAT_q;QOU;d(6P zXY4Gy9t!awTFg0YBWxqq^cPth21JPM$;&;^l8-^S<<_3)vf2Tl4`!R1L~uvtns=7) z7Jn^z+s%ipSejnEqb!kV16}77IhC#F?LY0fzL#u%5}{hN4-m8FV?GFxxAiyDwwxb0 zK!oMgY)=?85bvCVGkL>Dg+XkrMVi^b?ea6k*cu5wD!Ilxs>KYRpkVlEf3Mzn5-;>% zit>CAj66;5@G@r0^r$)d!kNsS3UWb^q-fv62{F#*8#xRtT@g4W6h0r(LA_}-q=-tq zb~wFPjV6Xm6dE>7#9!kbFg{gsG9kRsOkN5qZz5Fq{#bpd4#;{VG{q(cI=3C8W9RFZzBRsaLw8q&))V%;Y%)H)M8piWhhVS zktm{Ma^lvx3j2i)KwoZaQ}T2%UeElC3y^A%S_ik}D3im)uzI);oI_|I*2_P!eL3Vp zgh7g4AvGVZuU96gEOFr;mU74i0v>IpyeWYr`}sKOaWz}TO5W=o?%mRq%Rw4H64OB9 z$&M~hMsB5WdwG3mXZQV~45FcA9EylfAz@Nfn%Dl9xwht<%0`Y?iquB?tfbB_0s}s^ zmJ$3?{^R>&Dat(celh_nO&T4LL=-de9L;6k1{!w1&l25gu|qMG89*~nL*Z`l?VCne8>OVyxlOc$v#G8cXb2oGf;b;2k>xBWyNHDf(*qhX&(xFUQ|Fd zr@kaPe<1Ch#DUvbyk>C1HEplh7jhfP{ykPNE#$`Fp!RJ&M}1;D*yRolFk6D#&HX;k zXk2~I3itqF6pyO1+j|I402pfCLY6>fn`NNU@r<4x;w<6 zVmA;Ia6%KWmR^dE&6j@(>22JzS;~5);YC;hLCW3Y2kL7F+hA8u+pI`l$OI$uRISy~ zi7mvX(-&)J*}ho2q6xjg`-CL$6Po|n=>+-I%`m4eykc*q*9ig$!kV5_BC*S7!Go9r z`@>g>oRcT(CBbLTF4%L?dNCUk8uU%#Et)weo7T`Ot5~l1;NfOjjDYfPJEbt9Tn{8A z+PAVO@jF`)*Adx#!0!s7<6I6gUz-Uy4I3XMjv$n1Qu0=hW2cOk{V;MKVJwrQB*Qsz zjIVCd)de_&Hkz&TewEYVhyB-jm!UR$cpD2B6w3o3Hm9D^82=c>k#oJDawTkrY&tiZ zu)1){_^7ClY>FmoMD_%`0s0WORVl1xNZ(H*3;!(K>{Cvf#afFyXQIj~QH#ES^A7cu z2B+ZLuCb!C^#XAbBVH??K;9v5y@)dDBYJ3FJlf9IM}+z4i=@e6xN5WwKBPSPr43A=oCu((eC0DI57~UFbQcC;CMXCDY>lvJ ziM~4Bh8oG-y-NWz=Rvzn_WRQ!8~g0ILNjKnqtg%Y>8tBlsPK@}1fLZPo4sw?_;<7Y3B#uNN*1HP1qXes`1d5pJ0wSxJWm>2v5(HbTWjir*p03|l7);4pUEi2 zz~I+drnY-~{N>)Ln%!3(_S~NA8X+%Pns-GBE*wz^b!erAkiiQ~tXehrjtRbU;2<7? z^NmPnJG5_{MbK&ngDl$i0XwMO%Z=XWs54%VMQ-|p6CWXQwx-ds30@!5yI3x`wQ^Uu zS5<3<+t&B7Kj=$czw)3Hu9<^*aMeeZjg8YOpK1kS{xLU#*zU3K1T*bgmx24NB(m#} zG#!i-5vcWjObMHQKcnexV&#%}HLGOBFYKuXdX)$_I}uk|2DdcE);5a`z<+Y|B;T7C zSre5~45=(9;2Ss$lDFO1=C}&m7Z_jI{H2(VKE0$+es~v{J<`ZAq|-S*dZ#{oeDS7# zK}>Lz*~(h7ygAszG`%HWf@yV&pV!4Z5<;BQ?{@4caJKeYbZ@yk9B=Hh9ofz0`K_>kvFbY*jlYg{Vd!utShD37w40!Y74#-$_``(vmVV zY@k{DXdZ9bl@C6w2keGm$6LGfK4WS&%8E$ z+FW;NthAT*9Z6jj>S{!KFX1venhsy_Vp{!q;9mNLfI6cXRBeEKG|~4d=D?Bz-t) z>XGm@>H7f1QLDIT`6-5$d$#lPedQP$z4YvbE#gjPK_4m0EVlgq@k zxuf3Jtp)e}ojoA|p0QRr&JFUb)rEUxk_MhdsN{<3lr48=_Xa)$@_LNJ11MR*6H=U0 z#w2XJ)XmvKQN$Tj)JA&T951(hjIF7)64DUvIY%7kD8v8SCc!tc`Q1QN4XxYaG$%ul zxB~YUOUR=Zz@!F|AnB9U_#CyG?sIW}F!cmv!0+b)>x*^w!Lj~Cc-mNEG$g$e8|(eK z5ybB(jxP{5QiWHyJ}wE5IBp>+3RQwbb+sF+$yuCZXyYq3L@(xe7C11w`3BqvG^X1= z=?)w$DYD>8c>H;rCLi6co^5MQTEFWpsr&Y)=iQuhYH-y)Ga1Z4xCdqLGcSLW^i`u+ z*J)gmvk%t>Ug{KuDpFRD?7h+jQ|%S&66IdG8N3l4vS^&|MNntcwG)QuM*QthNM@Gr zsWa7wPcQM3m6IHMI*#=D1GZ}PHo{zsg$eAwkP1NuDSCz+T5caim0Nok%6y+Cd&O4! zsjy0_(dNLUgSkbt(?+34KAELwg)jL9i0%*2`=YEk5b8DY%lx*_+AvnWzpI&LAJz{G zPVt_y&-z+UAT@HwOl2dm>wW6uUSgOmpW-p1Qr>)7_-EhGqc|Sg5DjOzZXFxsPl|5$ zA9v~|H49H0Buw@kr9mFz4l&zre|?%?`2+`tE+~L7)FQRnw`R1;>&T4v!fMsRG`(`w zbJ<;y)PH+V2}zdLL2Uu?v{C@uerEJ2 zud65A?YC;<%7bZ;07TKvFK%FtwT2MhhTb$ZoK_fzlZnj#3Pi0ElaxZxKR;dP=F0e- zvh;~B;Edsu7L3Fulzuo2p@o5THm{hmnMw}_yd9pgB}-1h!dQ7^p3TI)yMCyzUxI&JK0*pG{A_? zt|fD{gwhu?qR3*EHv5Zix=ZR{=w-u0+aWd?)-b0$wv$nRJkr7v_*3qZi zjU|p`A8A1c*?6tCN}&v`%N(ez7gH$pATP1YLDC>BJ~7XA{+6o#NE6kTL7smDdoF_E5DE;Od{hu5)u=J*crM&vZf(6~Ye4x|3OYs5-cOY}+=oW;!Lm zvRsm#@G=)jUv>{`c^EuZZ?D{ie#kmlcz|A@$DlZjmdRmZl(|QJWc?m^Y}!>^pk$>z>x}?iBCt-0{pw%#%wFv0~}Y(RNC!>TTUy zkpPzoVK&%i*5UlhuJElE=)B_%6kJHU<<#YE_SC&TJ1~T%*9I$j#$)c7?A5 ziCSCuap@1oY?%0K>j7^)T?Wx>^l6lmX{R`fmUu1rRpF(ujHk6_`!`@%q@;h#M2bpk z`^Jt%rpk}@cSZ2Mf0=bQ@K7#EmvTI@V8`okzCG1gL2#!&a&jn3x}0#6sHim;9>=H+ zGOx*H!)Llr#M%G9=oX(|J`DSxHb(a7^vI*y2Bqdr`We@9{9L<}$BHZf=bIW|9^wY{ zLnS*Tv>cQ`Qevb5_A;Mb!@FX<5~g65L!ug9G(D7Hsqq0bz>eSw?}Lr6QO_+2j$v%r zdB^#Yy6yoLh8#V}uOR(2Ds1yv#k-q)e(iSgE2C=l^hdJu{E|fZH++9B_>N9ZB!P6S zqI!RGMPDr!Ir5hJ;bI(~PTil?>OV9FAq0^}eUnJ_nMeYqjjVK}Ld?HVlFQaarE_km z0FVqyK16xE=_We5TYZi>Gd;MgtEKjK%ufSpQ~I1g1}+Z2MK)P`XVw~JKZTQ8$SV4? z8O5+Shk+P+>ZY%6P9=+fhRgaz!`j;$E5=?`gJRQeK+sFAATZR%%@hz0+}?YsWB_Rh zpTk}^(DOtLiG-^{P%3O<%`e>^d6{ME@@Mf^WM=0$s!-|V{sSvg6{nakKN??+P;1kN z>)8Cnu16N*ee8@{brLr8rb)Mz z<3iI=^CP{y+|&u)&*U2YK#*;!maMXM{1x41tl;xtD|t_bcGK^QRaCr!Z1OdpvfR6z z4CE%^mjR;Zb&?g&(Sc1)kcLktSW5cxz|eb?I)1o^7@ItJ}?1cY*2nzQb0VqfwZnpuBBu<0GN!jau^{_ z@Ihavg^bb#NelSoD0nnJl2FIoU^!~8HalS(DtgR)08d&==k`VRYPRj(@6&71ZMFL2 z!UAjyWl(*>iTr891bkg(jzwxT7=~tU(1KW&lHor}#q<;>R#DXLljBpQ3p{(smCJQM z*Z(UQV}8O08U}4xrVkV12KCR4_y5c*Y_0fXbj3VOjUU#==}L%5sPQr3Jg=qIC+S`g z#>56%@yoHgK1e9QB=2?L1PRJq+PTrK*`E$1S!iinehrBXv|Khj$`lAM8X3{vPJ3Rq zwGXS=k8Ml-S|$VrjVWPZ)2>bj3Bh(LIVH>r86kOxe%RM$O`hR2oWk4*Nw*}>ais7_ zkAKq9Uylkkl%#}_6k&X@3$lqR4tR|@xfofvrB$Xu48GDE9E8N(zO-p=t>+sMHGjl_ z01zUcCI`38p#bE2(nwZw+k#NFQ)Q@NFvw<%B`{-mW#$-qqktrJt85L6MQ&SmD)(hN zgx!o$T%zarl77GZ7=oXYyHll4jgKP!P8nmMvI?Ss;vSx3beOC+Z_`~?jBDI)z>=K# z{C%0H(Mybo3OJ!;`~r5Z*oGU!CDWN^BkGV&H|=4*n)XIF)&<0xj^@+#XrY4g4SNDb zO%0goEX7sfbH2}HJc&VFzc7dqhkB7An53|E$NY({--dj4@U)g5Um;Sy>)IrF8}61_ zDHsh?d?8RvFXP|cOoI~_0gb?QZDruEOu*#P zclWFLvhNW3#)KNQ4bqMr{u2TNBpg8#@9J1RoV{KWUbFC0t6M@-7yIriN?NC$u6f@? z&ZF=V8;sM@|kbbdYeUw$TIb(s5T6UO@?qG>$$*67?{Cs(=igu18VDx`_)&odfFE#C^(OEO&p8$VT#ZD4 zSvh7RX3o#(wsOk9O#j=wJiu1@-sZbYuxOl}$zO540tbC!J%6|&=H#x&R`~7b$IA!y zPN7P5v@8jek@{G=-Z58ot8dHj{IVqLe51QiN4n?ySF?fq)5jF3%A zorz)D1Pd`;;XOXOz0NB8SkM3xEjJ}@+As;?ZQ3Q>RJp`+x)-inlEbeE&;(ZlXldc^ zrsuinIC`EtTX~?$51e?c3N@3nlHW^lTG0b)a0Z`SPU&dt?+o zYn+m1EbG20R4uVJ*FS9^%Ta%tXqBVf^f?004{iHl1OSfl^l2}lqT5_q&{=mcommFr zi|~?l0{7LHq!X&vC!!kQ=adrMKI?h-a3t?OJFn+${li!NJX$yV39@wG(Gphg$o5`J zm*%!da8MJ0Ih^g_`59!qV}wTWgQWp?_oTveH?#vq%KIhay8rn*B!C@=N@>q41;O}> zBR@_$HV)A}O2!Vjdl(`7m=)H-oE~igA{^z&bP59XGotO2uD&<|&H6{?kAP_T!E{$EdmSHQ{b)k19vYERSi-1ije~g&;SQy>EEFj8Yhsn-^`>dfH8@{K=COn6lN#5pDwZFIG_i?@Xt$3Vc`w` zffRp@?Pj>&3%iYqxo|}+_-Nj{+UyvlXq#y2E45cdWLSn4bB*j0iSt zFQc|!8B!s*t`TYfvhv2t`&bvw(;724!7~Y{GRQfhm8}=zFn=XQg4MPHuKzASGN!Vv4@>iCn~fDek9DRQGwo=V<|d`)~&*&tdumr zWsT~ySh8u)i%OL>dCWJ_fL22?^&Z*OAup{^WRA!7_cMk+OxlWX5|6!hUo$s=DBr~k zZi0H=9ha+wmz;Mb8M9FCI@z6;X?7A-zJ#Oz-Qz9Vd@$1hIt8$j6s)W9z@*!|Yf1CWg zG1?Mrcp{JVA*!etPmGwwS=-*^6q@%NAC}xJ*lCrxGf&Y(XHBlqoXXNl38$BTRR&lh zfNjd97Wx8^wy>44|AA?nlOg?2WdmcggH5VmN5&1We>mFh>rfBdl(Z&3-U$_OTel}q zS5vNF=5O2p&nv9dA_G_w!iGj}yWD%(AH_A0xe4+saZtpd(;+_$5D>aa@~gQ!vQ{hU zU&=_6rP`}}732r&h&bt~RoSX3QKG}vnBtlm{-Wnn8X|7bC@qaz{FqGM3bQaD1l4SWsn8Etoak0kYWl~;GWyLzS3XT4+}Zr-$ZizZ*$F=B~}ui~o)UantyxMYFCtOn3l zvOr*8=bCG9;1M9Hb{kX@=2g|&`VrEVvDonOSD|eNs9x>&sO|CX`>`eZDUKK{^``B~CxgXS5aTMsR)< z2?pX_X%Y{q=J%(%A6umuc#zl>S_Z~9%M2{TQRIK7J9Cwj^um&S1jzk$S`S3Xf-Bt! zqM^i2{au6P0@Ey6OZVkj3>LxR;GGHQPA z@gk)1r@Ur;-wh@soj)~Ic>Ye|$V26{2brow^shRr=7I2`++9vb7L+P2)HQb< zw=czKYx6@lG2!2O`wKc#qw&dhetzj@EiBnC)bU;%&Aiw-XI1=_|I%5(*YhgU-`AqS zdMvOS$>89h(3Cb6Q2df}b+3~S8tb8?w2ePG{=)y{_}5z`CVPQr^cPX_ukzL7h@47Z zJ+Ki!4K0)@*C|I|D=zpqo{)Gx?Ap(K<1@?>B&E)JphK{|Mvf*akzmO5Z)rvZw#c{! zoh=i9>bFnzHupgB%{@5#^*0Jz=*!1{HM1~zO7j=Z4{PglP%vs^0%_!z_?I;PW>f7x zIGtu?UuR}^I2w0Nw=3X)8h*RB@#0@x0MjrxRGgO^-GPgGFQ!y;I?g=k#eb!*a3}_S zKf;&XoFkS-9i>2frkzu+FZOFc=sX=2G+Ge%<1J6EeVwnPUETnT#^QuYOY^ZvET+h z?QnwSS=!?+M?OD@zXIm~6bQPpsYVMnry5S?`_=KB zivYQnfolHqW>wpzO2F`g1%&C-|=#Q=dMlA$0OjQgRwW|NjsJ%_X_@oqU z;TqFbSEjDyUW%`DVRr5B>#isg+?LQ|`1p8-(uPM@1Q@b?*5gV~geEZg|3hMc*o}cF zBZ(r_5uYn62rH9@-$VH?V?aCNg$L70_<<${E^Lp7F&ORbVIR%$ zShDwSuyK7;M1B~qQ$7a={)TcOL=zSc`!Ugz$M$_wWJ3BC^9jxwbf3HE=#_f5fpq>c z?PVvZ5r6knbp{(bY_BN|ZInY0QHZ>^9Qs}Zpkdyj$?%0>8^F`iXuyb>AfqJ1cL1uM zA$SjN;%|Dr{EwOfjZ8XN`+zLwq_}J5bWEwXOmFETo)mD+(nQ?J*6-*m_VX{Xj^LGD ztP@p}IV{FG04Wsocr%FrckuT^DigZ@CI9eA3It!fW3m|9FA{7ri_s`ZcIwxz=b-M| zTyo^0>K)94lFiaNaIZ_I#dNvR+Um7B#oJ!2 z2(dh!{#}YAon1oDY8}c8s`gFhmDoKf`^h~JRAPi<6tvl>u^Jy5jP+?iUA7u$(<%6B zP^R7VRHps6Lpo(pwf)~4!xoYz50!QMr>*>XbUWfRDZAheo)w7q~^pjmSKq%urL>XU!!#{~*la zq}yun;7jBj6SY^H!tH*=M!j6BR4#*-Rv2qDQ2u-@iz@zLm$K713|0EhB@lM;{V0NG zg?=V7FcN2tG*9W^ig3Wf%CZHDdIV&JCEcX|sm8^IDE}WiAia72>IWjT$^k)CoZ~>n zV-@b5n2g7~oC|cG*<0W1FrW4!Ia|Z&+gofjCokUky$H}#X*RsT6||8UD{-w<2ae3& z4<&aM{<51h=qTkGhrA)mg)*aO7O5OfXdkLz9O^P3=?PGDL%QLh`>_*7KQne$DUf&A z8z2Hw{_-nSQJXa6Epb@maJ^kD-_I`tu%e{x4Q1dLSjl9mBFr=}TMD;f@3B}ro-~6Y z>`k5E|Kh{^iylK2NL>W{H|%-IGk~y2$|W890mHEX^X9oIPt;iDlRkfH1oc<{0DjP1 z2ET_H;4|K@P&uGgrX#zKW=(io&Y8ZE?ay6|Myb9gqe7zC!PRFcg|iX|oSao5S`5+$Csc zH9FFp$CjbNd1YLvFla=CWcpl4J?akxxgFX{P0qNV+nUMiY1aM0_ zi+&;$aS_dwsYy~>U-DVgcVkKP)xzLKviOQK{&{ETm4$&4I*@3oNn7v8@-o7m+HqhzOKKDr)&v<^{=)||7RiRl#OY%tC^4>{PiaO-p6Bh@dqrtkFddlCwLBp zBNB$S*hE(lv#55L9jd(sZYq4Vg3XU$!$b@+Y6CAW@l8f@7!Z=b9dg8t{r83eLSk@n z>LWS+uvj$Th^^G}C~Xh7GR*gJfvYD}WdE$)j9U!So1Hh#`3o`K$YvBK(oDu%=*&G-@*Y| zhy}VEJduA3DjS#^vg#c-+*}^+*&Hdcv#@>kGhpE5$*fPXcwtxSSIi0xUO#-z}L2cI#})+CwilS&l|=qsVjEp!UP{J$SkC4p`%z^{&EY{lu4&+B>LUegjGHLWM} zZJi_Vt(}HhQg`B4yWzq%cLnHn4wLUNl?~~y*&`k2zqhOX5#`Kmz9n(sYK8$;6V#t@ z`-6IMM@bzaFwJqs3~6A)6>LIFo`^sE|A~@lNJEGJIH<#e-6JB1n9UrjtkH@1V=9#|ue%%m)-={?8`!zki$dnhSV!K>mN=Wq|$#grVqJ$TcS1%~N-% zlI_Bs6lV<4Jaj#jHPG8{x$_P@Us2^EIUxwmc$9Q(iPGTg-295xs4QJD2GeD>-uc1s zf5}PERI@cr(u1$dygz?*i@fP>$+=lPPi4()&pUOxYRlmMSv#lPKj!%iOcK=FvB^L* zKscIUq8=^_$eHc`S-)2%F?Al zrcWpi`6Nay_g+X2@JxCiF&^z(@X;?A^kz53DH798K%5?V(5IF3S16JOLXp28a>Rki zgig6A!-Jq>&3qk*{zPKC4b8%Q{p7FwUvcFAYmK7B zPM_!Ajkbtymb6HOZ3{lQmm&Mi9CYsVL&Pzy;@v?mhE`?hYy=dc-*72zh5yqq?e)-K zOEe@TZ#%j+WjolFZ-lY2czUU^xg0pHKL?+}92?6H{+dQz4Xt1sR?|>ITng-I5T(C* ziqb2@oq!qzy*-`~Ji2z2f1>I+jWhg1^(9LQkK@6N62bN0GPQZl=iSNW_2M8|c|s6a zELFE<%$%lw(W3`N!%4696Tm)p=}V{wXu;nP>69ISMniFS#3X*%fR>;h)72M%jkkFF zZm|9e(eq}<-OV#DFc6pn%DT$;>>%huA;w_>x*~9+KfMiDr>JM2QU7Woruixs=n6Hg z|G=SWNPG4Xw%~Ev(crOl)$PlaT)mldkThn90gs+!Hj?2%BcomVR0t4kSd?MMiih_QJYfDZq~`V<<`=z4PV|M&Wgf8W1#dG({oW7#_2?QTk^@hT11xf&^5 zS4lE2jSUn=4tlW1q98F5hki^GN%^NCZZX-@3f#b88u<*hKYrQlmcW8bRCv+-)1!O+ zR|Y-%hV3J&N(X(#eZK3evpX(+5D+KYfh%O7n%D7ZbO6$dESLO@9<0hUZW>iMFzicu z766`yA?)9}WOqIn-(Uv6eu#QeAIJGyH4f4S)ewin4vicqUH_$_A-{p<88oyz6C-8# z7Z_Pr%*8`(55Z}HSC_+4e6Ji22lps-$^lMDj^7wups)H0q(AmgyA7D6GE`j)^xSe@Gt+IiAL4`3g>SiNqrI z^RFMT6Kg194=5?bK8J1=^EF`FHGOjYLt}Mg$ZVt6vi^zzC+QkZvvfJ6Eb2w^r}M%|n)Q$4uZG}X z!K<|5#}}~}6#xAY*Ufviufxo4ea@QAHZ0tO-@#P_SH=61Y>ul}=HZH$W`pw(Td9mDGDDDY3 z41GTjmoyPGw!$|@!L1}K_Of-(~x#8#j zI7wan@M4QltV973!eRaX5p4gugn)N~c3_1?iBErYk#*PoLAF0^{SE zp!#PH54*@REwH?-fU5IN(&S==K)dR-D!z8_{HYFD$xbEkoc&Om-|G;M9B3ld;Lx@W z2}q0luD$wRa{%4*ji$5D64~zh&Ut|+L+e0>7wL3qv7r{*0r&E7xhIJE(vEI}?BKc% zTKaS4$`9%;ME{sq;QnG>RcnABtSdZSo>r1K;Xhf>xm5DuG~_-Nx^p%O3C`v;AeBfq zXsSRe(R@jwVt`ZvDm`(CwAhZvv9yS0-r!UJU8< zo+FzoX~IYob?7dbbPP<|swtI3mN*Qz1bv_XI-bI@dT2lWt#|k59Hmm)v}u|D3#?zC zU)BzagQ>5{{p+$S_n8Az2P`vm&XJ?FqNA1KW*&!YN)d}&ce=rcVo8&>PPNWzaCZxL z;6wlGvPJ6y?g2TmsVj3Dt@)eC436TZM%j>Dw9%LlM5bh6{9c~F2npST3G*H z*Qqu%c;_V7t=N8ID=0Ru_A- zypCHeL_9WlVjA7>WCLgW2(HRns(D?d;0f~`AmF?T&l8sZaR`4AeZu@4h=F{ ztWE5Gve9*QyncN7&_bQ~CXNc8-)YYvYqUEk4AY_W2_c%6gEvFGu29EST{O%)s7Im%LAbw z$!>>D4h&kQ1o8BWHoGf#_jlK)slwL$Z!>wZ8O3mt;72rY#+0NHC4s6(JIH*`LxQ0UpZEE3@OF&r&nB_6Y-s8$&72op&c*{z3c3Y_r@P z_Ns7XtuWiCJ9=M0kX!aMM+{c6FCrWsIg&7LToKC^uTcao6RPkMn5pnEn4~}0Ea0VG zzVQW4>F3JrED!v$`Jdg5?x*d0TeFQ8uZBMfgcL^LM^P|&tOnuqeiC@zY(7JP=Zj9p zfh2=L-WE?Q7bhs?p!!`89UO@w(}O`uy@$2-{<}=f0fR;nh1z{NN}i0*vjQ}q|A)P| z46Cy3wuTi%P${LmlB+e@EPpY|6+jjrp13)|ImEg=s`1{(Ffr)yo{93KC>#d2Qm3?b%7Lo`WYmRb!l znssI3JW)z)D@>^<1MfSSu5n_(PEHRS%h!J(7fIOBnIJVkJyF5@=GP|{KKE{6N-_8D z?vXS>n@DW3LDTE2%NoDSUuTya2{z-U#z7NbA5DN%w-+tYJp2kQQ$$g?9ay@WGqBzN z>r1!N6?mGDn7t#3m|xzKc<&A`|JGINwy8+~W!A027IoW-mhe82^?bh2BG=!bpw*pn zSUHjR@v-6~arMu)41Ct*jy9+Iib#9%pM%8d8P!+GEQ#;4b(5mg%i6(?p#j?#g9apN zuV#>pz_-8BgSz`K)OZf&lq8r1- zVK!sWDoDhyQ7-SMia9n$io%Az_sL?3tK%nfc)RZ*Ue#$*>D9USsE68ZjKQ-0_;nOw zCgw#$R;5mNLM+6LsOaeENV$zZBMk0V{Bqxn)a1}z*o9p?b!C90msWZIm$YAd~cvm&4E(N z9h*TuI=a+q=23!x!|0^Y=$v#=IPdt_ieG~76(;R3;0++#b$o6PD)rp= zV1Bcq?{nbvWa!hcvzbFVRSZzOT zCtA!NrHOe^_oj=Ou8c2tCh#ff#!`t9hv8A-qFcn#%k_UY_KhYNA+Ph;6?{rd?KDx~ zp;o9{-D}2G=Y?QAKiUqWfuJ7RXqGtHGVja3><9xzZBRk3c2JqFSE(v#L8^WT=_~zFJ7?OF-$*V3KIa=ym zo(dUBOKnY8QoR1I>{csmni7gbL92UG_-?NEaz6{CH!GFT1?Tuu5P%J8x@erY>1r6RGc3}-y$6gzmJ(s>2X_qeEj@E8Wa;}A|d^;}@NwSDXPoAA0tvg*ymYQC;cV|ja zz+UUgbTGB z(GFL+9NVxYQG4j0e5xOVgt@7yF$yz;P)hj?riUK54t#I+K0jHvEPtZlPQ;u@LzsN0 zGlA9og-fvI@8vG)G5LVO733@~z@dF;kCRM@9Z8>v2TZ!{=Q&2cXK+U(~eMsn4j+M%99|-~|)NAN_=KDufqVCc;T;vPG zKZYK@oNs!)81m@d_wc+e0%l@WjB{4sX!LlyuF1LNp&p$2~>_5xkSA3-hbEm4_Wo4#W^Wmvc{W92-R_(Mo8YAssU+-X8 zZuTddcCjNSt;ScEzDZgrye%T0);yAsk@UG`b#aqiQ+Ve`MwvmgKaQ7^0@J^8c9ZyY zPj_bES2LLS&igP^GSjG@apHvip)w`t?OZM~$q#9_-4Ybo5Yy^`S7< zSLMt{_XwC;Vm5^w6>Q3z=sLO*A1ftJW8Jc!uK6YcOG?IgRrVPCjv=GB0%Rl9?2Jp9 zRW^oe+%6LTs1|eypy`3x>0>-j!(WdI@Y_k$C)yMV%3Rl9vFnxg)3JJA2c4?tDw7SL z*C#5e>p(MS91$HjhZJKJgywb=2W+7@R4c!uw_@wRXL1F%DWWL=JzXv@Z|eZ05D&vN zDwE0~uQSJXOi=&)BcG^#8n-oDnauE8t=q7<-4=V1%dCk{$RA?$b@YBSTnD6rrvYNC zuj!IZ4f%<}!I@QC(qLhK5|m64MrZRjQU*oW7a}azNXaip-mx1tQo6u0H<4mp0Ej-+ zD%NWThfXrEuRMch`A~vN-U6QLUTY`Kv;}WY-qzwbB>>C0-=A#6nkqmM1tlHxF+y|P zDY!RSq))PKbAa_mn(*cIeJt{N`(We&dA>BuZ>!)&!+@61F!!|!B0|~rs=VmK%Nzyh zLYl)>mxjE$P73cg9_O|^td!0dpO^#kNAgX6&zGijGP6!K`idoT>V$%3BSgo=ab~Zx zpyadj@(WU4Pv(=I8H!ISjr>;_a!Jl}&y~LBiTFA`Vz~;87b+M@J;W4(bR^{oNOQ+C zUj>FWcrt)DcTsmGa=-&IuFY9<@(NwoJ=E(GFO&eu{2@} z;Usr(hTaxn;=G9sjjWhQbl;J=wyPTTZ*I*R#c6I$c&#KbhW%{vNdE!(;HMw#@A91I z`i+PabOL$#N?v@pHS^1(b$#eNxAoFH1%D>B%xO}7B&^V6A?|kyALg&qwb*Y;Nyf9& zUiRoRg<09t>(-G?>kY1`X&k3hW<<(;SZ&G~CKZvk$>rN)4> zsi~_a#i}N?u*ddk0Jgc?Jzg>*>&LSNe zAS`YV2B~XwY#B6M9CZw{43)a9;WTQyVM zYU3+u%rP#FASL9IC_SZfFHs7?tIbfZfM>c9=v*nw!ecW;7e{;2 z*5)AoW7)hGLKpKvcrS~r1zeOHIRCZg|FslJ_<#q&EhPh);jZi3YO5Fku}t>n>1tf} z>0cyphOoY2%~9FpqJmF}AMLf0iZ~13#i0xaCwhh$v#F%=uMJd$iHurwYneLk&Pu>{ ztL?qQS z3QL8kM2@}95}3)^X;&P-)gzy)v(=Tg=|Ay|3i$c$OpV9Ie~S)q8%PLT%y>J&S(E4C9y-f>z`U?^3l4yvTZV`Js+qaY77qAv2M)4Hv;WZTn<1bsl_hL-4M^ z->AeVHk#3-Jl$rj+70hxeni0yHS_iUd@WdMXW#|JGX^wIDc2TMA@@m~wQ->%BA$D< zR=P8zK!^KoffV!n(?3>XALk}TI8hsvFNx)8m(lZ@_nNsQOLQ9Ux~%xbR9N=W+fDMX z^?yP4yT0`BxxPHDab>xKCxznn6vwH6f;JwTNiDtU>z~)9m(cARufyCgA8aB(t*6u4 z(X%Lq*^JpMX9?n9;!yl~hd~ssOerA6U^qT8~ zaEFLacKq6X)K*G`yuTpi%1008*UIMe=K0?@k~G#G0+1vy2z2cy$qPXd#3ixEzV%Hx zrNxZ+0mSDCWOaE*TWQlntH0(K{EaUv&1GWGeEQM@X({i1WI@Tz*AVz$*$d=MX-aw8 zDmnAfN&jX_i^nTYiDM;(c=0j9PK#|Tunayzm*U=oh(}Bv%UyIeE*GkI5({}jV4z() zHA>;W&etON`wqZI^P|Hzlr z8K~Liw6uR-69nmKtgO!*)&2d}ZZg9FRGK!tGy9t3_|D&d@;3N`I30eLta)Z>|L#Ax zIBg>Xt-20n>8*&)#aj{YG5+~;_)#~zG-`fx;D7v-|4sJr|NZjy-?AVrcs}emS7RqI zf+L==R-ns`(EUCAgN)5}ld%nVj#vJ9y(Y5T5uIju|NKj7EbYHy#1=69!qVCQ*q7jc zw$a~Qiyry@=RY3<7VRCtAJFm+6aJ6irR(NuU3bR!Jptt@t?u@pGWf5Q7=VoOmo?u{ z@@}a8=k*-rrL%b_g8uoJ_-Mp`)gIlOB>Lf9E8FAeA8r9|8~T$mabej`q<~jzx#(B@ zkG{~cD3>?me@L1mqIE5c+md#3muz4Wg%GdS5Fv9PNEFf~40)fk*mt38sJiQ{XJ(|} zib&w1^l*wO^MTeJQ;$G)M^cH0lEw;~i8>cehA%5B`NuxjhEGUIv+5OpR&^GQn!x0r ztnXLL>mF)$BfAeDhI3wtpGp4Atb&toFZEf+tz4ftB2+ls_gAeY@Ef64sH4!hH5LXy zUC)zeR8EcvWvqVF^scN5r(W4w>OS*c>xD4VC=Gl49D=U*2=%7%szVBD^nCR7X=s9A!1@8F7`2_57bu~%gMLSb3-~wpH*V_CLLC*T(ZBfb=9hqH7^UQD^g3y z>(&$w%ICG2?@r_50*6EkY)#h^P(UWu4yd%NG}d2vo-HTw_>4QI3p=%#*Z#B`%C;U+ zQ(yYiBA@ru^g>lRP4I@j$`!xXtVbStmiTyy9~oJsOS%xxvA?~kM;JuzWdqtKNy1Jh zHw~2m z#OYv35uOIPng>~aZ!u~QmpVoY#!BtC-?Hn~V0rA$#w=9hHNxXcx>NWTMzjp&0)y}I zIP8d5BlH5$FkT`m$hA@1Cbr|H&4{jFo6yBB23LES0;;*URvz32;Cp1kXj6|}jD@{N z*#WKO-Xnm@VeRw)ypB0mL%u)45O5&-OYw4hM?-39yB$AXf7hGsau~1_u(|03wST^Q z2&iM4FO-{X|KiVs#A{s;2MKK2mDWU~#X3=dqDVdX7lFRK2MF{JfI#On)G0NhyLoM` z_vwz;h&|DLxu(V4AKx?EUaLtEnO_x(4t-aH-jLK*G|!`G{Io+Jta1s{l0Z&$vSv_a zjh30dcO4pz8OtsEVn2N7LheJZThEUvhOf7BdemRL?!o;|M|BuEU!adzA6uu(E#F9} zfd>B5Z0b7x_zzoq=8Y~lY)Z19g`9ri&~<%+K0gG;`o^xVD=w@32d$n7t-$30dwVL%n=7sTeUXX$(~!SFfw15Xw;XI0G<4H^8V z#NaSn|86?3jG_ObICF=dl7#W5HE)~IAQy#Sv;S>$hCMmX&Ll3V8mn)#4xi=1{1+L| zo!Zrxzg$^Byb?_L%~>!iW}X{%)8Xr>MdCJ2R@p>>mmeFAc2Cr}Z?krSWd%S3>uuG$ z2nr#4TF}LkN}34cQX(;x64~2j@FdNG)d1<%njI1)ZV`;l8N6+`Z3>l$ykW8(<67=A z-ER-Yy~h?_nVHOQ^$MF*_?C#X89W$R7HucWpO;kwP#)GPfU^Y9=-jc{%m|Y6^wJi}9YUGx^4IR>^aujP2}C3^9*w*(=nUI)HS^fIarR zI>O~KFcFod*Di@h>n=?25%wI)JIj%`BA)PRBKP<&~*ebY=0F) zXqHehUa%--Zsf=7uB!c^v)cAZA{oGv_sIWJr4n1ng5bUbwT6_dOIG0;LHZ&~D-?UZ z407!k_TdnyGZwy{>w`~*|EcO&vQ05-$P)vPhuG84J|!;KN+#k)$4 zy4H)%sbR7))p^rE=+)?d@WC6X6ZrHdHDr{*QWu4Hdo#su8adNxWErWLd%BW38HS~P zojcF7Tr>=7JO)G9iV)>Au5fVZDzClvMA36?kHcV=NV z%?u%y{xv^A1>CPGW$lG)qQ{jja%yet0?cW+?K|@jx-0_E(WMk zPiiIOOUH#4ucU0=#G+T<$|ounjQKqZb+dU_ualz@Qh|N$txoMb4iG zeXJP2*tSmqLcd%_!=h*ItPO0Og@`~59`|li(35r_eUXo$pi}(#81#~%DPgV~(*xa4 zZ?r82GjC8?2Y@UI&;$|e@+8gFe*Fw*(IevJl>uA|a&3ytdF?!2y1*%CKD!6!fu>=D zq8qb4<&kWwr5OK2pk61t95maJQfb}2_E+QVCq=KB)Bw4FVdPGw^tkytOC;!Ww;1`r z=nAyuA%OcYHM;VNzxT1e(rSp@vM-Zwf{r5=)V>Va6PVB0;lfGLR8>rtW>p{Gs;cAvx4n-EZ}`*PB9GYj+w7kEx!NL$R8u>i3ah zY}6#RPsSzi$~yGy)0gi~0FsGkS0z~hE$fHZbK9f-eoJ6x@E)H!F^lN54dPv6UA$$j zf4I`;#=`mlXSUIFaNSSfJvNXqqb*c)lahlJ)P>H$EBlr7rEdR(Q73({mY>_dr9u8k8W2hu~-=W`p(0Jgsz9{Fi zv>Zb*M&%nE1yzh^%4U+Q)`jrtJRtq#Fp^)H(+!G=Lt9Qa=Wq6)UwRDlsO^o(A~sHg z`uSIY850A{7+OV>>*nYP* zLX;Wr8K63JaCs!vTyU<>B0DpHfQlipyIXlatm^;^@tE@^VNi&Ure!s?SOEOh;_ro4 z&%Nfb504e;l{3iS6B0tri`8@PGODJB&(yi+=v3q~*1>@S?6lIY!v~vJPZBTo>rO74 zKP~VJdQU3gOz6HlYbqGR&7iqE+fZt;{T5YvfN5TGoGGbr?t1|5p=u3-hSRbhCc^Z^ zJW_fj5>IZvJgq% zi{zeIAgA(Vd)VkVU0*|C1B~&X1t9Aqbxfm0x|Zch`VEiXcUKp$Jq4}&TJy-x+wDC8 zJZfH2nY(z+fLRhhR~`2|PrW!<4^v4KOc{$SnGn+S-7nMdx%Q2wK7R9cpOQ@y!MQ?9 z6Xk%aVcm|RsZg7nT^syXpd@9nGws#?>y3?Bck=D_NQt140@%LY9wdo@oW+y*4Ecp`vaZ$>Xsm7@7N3Il&p}`ofUe{TOEw2j7Jd z68abrv#Tj@#8&A5M=9uXzoXYc%@s2Mx6*d9tlRn^S<*Ak zS_ykjBmevUp*5|e&Z#e7rd$sw-1v`t&de#Mf4OzV{fJJ1uMHdga{a-en{vpRtw8P7 zw)J8I*o3aePr~3=t2^(eZuzqqr5Z6A62t$*f0qu8{-V$$dDI{DZs=U8)v{tmWnX#{ zv%g5!1MaEwxrtzH23~2zZzO&HbLa;yk8EDi*WG9)r}pt*q8BZcG&=k=@*L^DswGj| zj1{{@+kuFD5MGi;-~iV{lt^9kMzw-~Z5vXP3IRGkndRg_jsmxNCqG=hsr!Cjt^Baa zVddS3P9M4M>w_&!hsI+@fN+VPYFI?HFjFJ$-m=FvmI7`EGF~(3fowIz>0EV+G8AMT zewQ-`Vqe7XPe-7;T9|pYo2uVC?e&LY9218;8g_cUP0Dw1vKeJJ5@u3k|8 zcAC}Y1v&G^J&!At2)tNncJ+nE3FrgWbL8FjS0yBXC+Ftg`RT{Y`nJRQxYpO-Ra&gai=DGDL0Z3`%0Zjev1Y)c4%g ztn<^vo{;T0_e~vJPr)-(l1+ep&+;RmsD$f2M&ApgDH@2;#GrX94Ef?SbQyS2AC_u!+J}{#fs91$%jBbS zmby(h#Yq$8Vxu>4JBxuP$~Rr^4>UzmVzl_I54v7oJ7}v~q6JU)Yu?H@Fr9>_)CJ$( zqG)V$FRTqW!2s+^F>xJ2Y-h2^r}4XI&7#w+iyd4%n8)Ej>bzjUV#omC-sX7nnlBD0 zSGYe=kKa;n*fr{7ak2#N+=6Htmu;{6Ey1W~TOBL#Kb`bI~L5F}& ziLwKcCt31_Aj?OO1;o#0tqZr+qFEvE!x1p5a?_`TJRk-t>MmqY5=g;8Z?nc;t*~)z zwa#D)f~H9RR*lisGt^!y9;1>DKYuoXfIbai~o25 z)ExM&rU?~dDfdnI!{_9tBRY|%r=2j%U_uVvpS*P^7Co6{@*2d{wZB1;iY&>SN~Lna zvC;cVdN}~6ZjD^->Y{FGKqnEXR-oDZ zIUs2NbgnnMTyo`i`;$2i^_Qaxj0_L*FIo(dXZ39A6H#1^%vU~3@Ynlm^U%Jp+&>I1 z-#?ERtwhwk-CvEsnS)fPNsW%Jbd9dmxY=8SHEs6 zZypzMq06K#2nfjTTNVFO$q9i8^XK)GH#z8lQ4Q=O-P#lIMr_iv9tcdCQe^tD3pq@; z-3YxgtHBNtV(KYA>?ckuFEm!5G()v=go;NyLllQAy{&`azA*9shFZ~B?#P;-9j?ki zGbQ>@x=sw>?k({9$qDvzv%Zl;<1$GmS*G0N~-bf3kx@x1j$swhy*WA}^PA+b?5Zja0sqGv1>ED=%JEp{&8N&Wb!RmHgyYhlj7Z`r)U zroyXY<%a1wSnY%QU0$RrgM$rd?lZhJ_M*bWFKUl96MMxBLpD zwi7qH7T?o@-0OW$)>UOo1AeJlqOvru(Iinf)~_mQxJ0b=VT(^9bIhX>S3G%gRaD~{ zaejI1K76Wi(oPcNgc>jN41<+$ZK-O=-)?Jqimp5gvx7PCT?VCeTJ$EH$HH7yy}B*m zZ$P(%7Q3|E=@Y9>i;YJ*e|hSdzKtYg>E`^p+?7PZlnQqIYFF0Hj>i)yaWq9_W?;D#snH>Smt4t=H)Qu zpVjmq(b?r-B}~^JnX^`;%wmlIQga4tN*6}eXmKK=)<{6D&t_O5F+H(vTK0BHQ$x_H zeo;iQ-y#X@Y?kiPi3%;et*L67)=*rR$4-D208l9QW&8d5R+bMhCfdn1BiLtOWc~bC z0@n?tI>h&I3PM3w6o93)AD9=@r97S<;_q6OHGGvduaY4@Bm#N+Fd1`_K%e6o>1Qf| z_k_g;4Uv}@Cn@(>F!1{%t|30fM zt@DatMP7yMWF4j-H4q zvigK-GDkW94&sLxv#O-=g!Ss`0{CR=NC-v5zK5R<)2w!9ng*&avRM;bjp?)OpwB;q{I4;DN|mydrLsM-DAKjxIUAI!Ux^=llUxEZzN(N zhnc1b1d~b@gJG@nGOteInoKR;=eL#l=T}~4?H6c3mDz&^>$ z3T*q-CCVyP28 zWSl*h{^c6i(Mkk8oaNn04y(~+a3q+U_A)eG`mN3=Uz}WhT0gG;Dx0_NVNA$5pjI&Y z(YNA?iRu1rqHq2AN$k>7l^;4VRpuLZ@3F`OrZs;GURTHDZcV7f3G+EXkSjfJ=Yf&r z-B51jJzJd#FHZQkxM z7D71dn@423&M$_4#Fu&QKT@y|5nV_=INua;Q5H4dClWE-DfQi{wTuJK8EzkSLig2P z{lAE=sanSc6VgWQF?g0w^bN-f$S7H1>VenSVxD`SEfJBcPqr4L^nTioP&RlUw?_~# zVdtmUtEP%Sd_c_JHuyxTCypkeK%-+-z-D2kCoOdIJ`r2;%zoBL-jBxR5RP9i9l#<* z{$uECXvCdMu?}^@4!KsKp7bQIiMx9Z(RiU^kOzUEo=1)gjLi?cQr?tu>*NR8SL*;w zK9)SdZF4k;UOKmSRFA>h=gg&A*8J-8%A5q4wJH2z)ExL35d~kpNZ<@2)I9XHet2XIZYcDtW}tO!XaL zhr|F#n)2p5BN8hYf{TbDC(f2JQN_FoXOq{$)ee(|5fiq@Lr^KPa)m=-Nej<(QSR{HE5VCXii>w$sQck;z(}LyPmPiQhT;s4~ST2F%8> z>>2+yyV&O3n2ZYCIk0I2r?EOFeI{;fGM0jeB7KG{ei9^U{E)IZov}9{=WpXro!=7k z>DdZ9g3GRm8Rsn9RE3Gw`LOpEf$H~K94^`0LIbfnrZ7Y$+v1q=+f7wIja*^@T@xO# z$j=Ns2Vr0$`rlz7CKAOy3!Fllp!pLU{0qPTmHs7T6w(Dz*|$aA*K8lH>~*G#@O8w{ z*r*~+p5gV#)UUShd<3&HG4I%ifm+1wPi+Kst;8y$wCPppN#de8$6E^n8$Z>h#cSU) zT_y~d!jg59Oxz3~grfv`oY?I&e!D>I^&wEJi5Wf3V<9#ZEng8c<;z+X7pV$oJQA0{ zS%QY0(qtQ3cla#==0+CqBIMu;S^@+LGxN__^(ir^xJ$x?O2S~_RVSlze)2*bD(QQk zfF=L7!`r+C8|TbJ#^ipM*`Un(^N0w#Td>d;kb{ zXcs3t4-TEdC*wp5+>@=MF} zG(iDDTV%U93kpfrC>6=Yg|+{(4d|Dff<-Dc%Koci_Quf8dLd6Ce0(@)2TD7wVt z9WJZkfH}aRRLE%!K|(EgpC`&37%O?)He4B8E#|xqelYD{IKa|uEkdFQ<$;p2hq(4@ zgGyZmQ;N8JR?V1PSreqz?=!7RtA1xMYr&V>*91Cu<v zrZ_YC82UkpP8Fvf z3L5UNU0XbJ`*@z3RBw6WDfPl8#%J|;9mPmoQ@hN?qS?0AhIi$W$tvY)pDjx=-yO*@ zR4j~4j4h*fGfie$UOg6ass$MJ#%~+Ptxi8&po@8Suqrpi*rSrJdiY_SPb8w#1kZaa z6HL+By}WBDheGmPB5IrvDto_YR55naSJj0$Qmc8hd1p^Yl1uiwLUCdd>@G{cjVXm{ zT~>K@Ou#Ax)5(M_%m=)DNWS|6bhw>b%yvv?u9@C{=heX2ph1N4rM zyD>-4+!ytLASSP&Sz*Bu#F1f-e)j~p+k?uy4imX)R`8_Go6>I^RI4^{i*v^~BN$_v zlqCz};S4b}Ld{sWDs$TTjN7`Ysus?i4LtX%g=T%wE3HSKwcf?);j~f>1^os2ZI1(K zI*gEv%=4^OV)*VO_x*O-*Nv#Nmn8;NOFe0Q{_oF^tdvuQ$#knw9*-G3>Hs^5w>~Ig zm2p+}6`zti`e`QqXQvzJ{y* z_YnDJTau+JJ)7~W9)tcb*SxvUjUu9H$K`!0z!;{?W^Zmd_|K~G)4P`dus$K`3<_jC z-wL9Ztw&MVDSVbKKdtxxV^F)ADO0)eCT7iRjFTGE4eyCkV^HL-mTazaO7wHzo(+Ly zK1G#?J&h02E3l1tCldq;3gpI@w zNCv}E@&eTvQDF8Lu;?|~Lw(8--Cw1U%6u`^K6hjND}SRDZxyy_vKlqV+iM5laQM;s zP{FkqeS6s4_97Hv3Chg=fC5b*yzskXd`CDM@p@Z;!CDdyw{@oCgNl%da*#9(! zOsu2L#Z#}e0y39D6%1Vk)Dq?#$Cc_nrIc_E&Eep;C`P)Vy7Bw_nF8LqrY`I>G7ojC z3U#7s;ulpcX1>(0`%nQZ8T|X3{8X6tMwFzWlmYRnfM%2SDp1OCG^erD3r1Jpy@Y+) z*X7lG3G>rm`V&8f@>}U9Q%>h*Q7)8Dmz(JZ_MIW24=_GzcnmW@oBZuiO3CPEnb2Ry zhq9MA2n!tdUYP@_R2m#|erezq=@#0ZZen0g`d^+9`xA(D;v>Wl&!GC!cW+GptK1>vtZN&hjJ)YzU>b&j?R9(o+QLjko` z6LRo+5xaEYh#rL2N?9=>%d2D%aVf7Csc;Uw}{_VDTM4`-c0)vH2G&(yvs81u&!*E)UF883_k5&+KB?=F2EQSAN{R_DD49FR`=w(zM{_``+qQTY5l>MooNqOD4gm1$BX`%~< z-8k|fwPR`jyxwg~;NXjw_@_VbHk}dOUrt4g|LauzfA3Vx`{x7zK3ZA$%@ScXQgi(G zdfqH98Ww;VXyMoba{si`w(;Kh9(ixOiyLI~ioMjJ`ln};_UdMfpq33BIRAOQ^qcK= z^0!TM^CACtyZz_s{eRRL`~RoyhMp69=iZ~_&}kS%ikqBJk!@U4Y|^Ts;&|45gkta3 zT~BoLs8c#!Y-|P`LEWFG*kd)Mq*dQFu>z2xAOr*ccyjkBY*`l^R!bet?J{5`Dg;f>Mc#4(^Ed7OT!dPs zb=Kl|83MTv&$4}JD@VecUOEiS?YhXf=Ou~A-H(dK~VxEc=lvTUkm9|-Kt8x+VapbhsLwf z-KvgH9HEm&&m3``fO%}X!Fz015RPXvtb0G8272=p;Z6Y9?5(6Zn2h9KFMv_?8joFr zd4YpDVu>rHsV5M$OU?egN|*GV+;v~+N*e3_L;Ze@t~;5BKrTu$26RYi0&u{sUKR_X zV(t+fP$2!AkAN{~MJ%sN0Lms<%y2k8;-d?1JFd8{_l;?<%GN5HN^G{<82v08 zf@mi(Yytpz!@p%A_-=a3({!T%1mJ`C)-mz*27xrsT$fvs;T@e)Lu&ufg>9Yj4zaLn~#s4 z9l|=mn#CYHvgC+2-%XT@-1w*+VEWNBb*H4pt-s@12eReZwk9j55>F0964)StYLaJn zK+^~Zq`it!ECJ-It~ea4O+gpTuU7Zhd%b4Y|Ah^?zQjA(opY$;cw`kxk>z*JvgZZH zgJt2d8J8PU`|b8tQHDMPx4^*&MUdIgNz*-C;+m$#3y5!{232h#_;J5<}R*gJ= zK%ba&Cp*b6S;2`mzN$eVJ;{XYIy6M=!VCj|d4cSE1LqjlZ{i#{G0WOA>DBOSwbbKg z(8qP>W`bd&yFQMpzMvil{M$Yvz*^a<05^TJuT448U>J(O9iIB>4sqA!!mv?ID@vny=edBAw4h+j2a`Af^Ec3NezD8k1{}A8{`e~GhwXF?52KM;QeHGc zKd=paR*YXk0;<;*Ju*HLPoKrD0{`y7uj8ch=I7@D%iP`vf0)#(?R|Ai7sp%Wq~IB6ha{7) zm<*dic66PhpVFzew~N1BYzVszPH2F={QBIu0%;LisTiL-9;)b%>tvk>fUW%v(B4zd z0V90#)8Hplj&Y3K(RUUryU5;!hAd84(gc_azSQhd`iVtfK1e4ReQP|oF67AOo%8`N+wM@bNn_yk zi>8?ewuqKWn@0(?71|TomsQV=O@Zao30U3vMl&V6akG35;{IfVtUzl!*Vsy|?lLS- zHv{0FwDQfcjxxi}nb$#_926#K+VPi;bYpT<&Jdk3%e9+pqynRefH<$~R9I=@2L%j= zRXqk85|;RfPME1Hf$jUm%j13-yu}QU7k}mkAXRh_w3JgHzfwRg92UQGoE11XgbUIQOurXRpD zE_9p7!lIlJO&pju>=HRN@;-Z6Zc1+Yf>W}PKB}C6RSD`!DoM87qoVOWQb+ikh2Cak z!{_6d0G14Sbt%&h_6mx$ahDcK1C0)%y*NH5rEXNf(!H z+5yMgpMsI^uZn=YJO5DPcoXvQ0|D)#beMg%Y(&q%XYq|N)I$YPpFcunW`Y=3F`k3= z8QXz+JZsI~ec%KjhN|bbXUdBzbr#qA9mHhQ-bVwdj@+|M&ATFXwsBm2jjfjW1woj2 zqUTg3m_NU17Nw>|Q{9~H0o$kA`YBfxfTl2c5Q+mMrFfhaz{&dHj_y*gkfnM`WvP2F zZwE}j#&N)mrlLbwtLk~$VlponD+Kd^&V_ns=wK{ytp=XKAqs7{q4}0sI-DE9;}Mp0 zImMr{-nNhC)O8h_4c$fAu5L~6b#vxURLEd7pmfs&i@K{zoDdebML6Xzl}gA#$GH~_ zwt?}(#nZsUU@(l5T#L5)3ml8nB+TM9>@-{Nr9!ONy9(U6o}IN~e3IqSZt3(MZn@9n z1}X2Yvnp}IjYOloxK{hq`*aUcdyDs|#hT9OR^3N=NNt(;z8p9dW*tlHNx$V|GEJ+| zT=*3{_qZ39(wuadUINRs6m)Vd{_R}I0M4kg@ReB*Tg@I7Gy8K8F0$c2$35GnY^GIm zeh)ua5C&GaW%Yizl%pDI$bX{w-2a1Q1toRK=rci z!dm?SJ3H`Jo}^!WCT_3?hC#u$rUeQ^CEmoMh^bI-Hg7EY*6W`FCnP6|hPH8+0SezM z`do0qq`a=rVb7vJal)B(lpdtQfq?CPLZROu6~UwLj(*)dd_FG&$H%Rrwj8FVWv5oI zhpK_7j{#=fxCfmE-p*O{rvE|etdW$>HupNkY4;1sP%KWiktfZ>M1iQT5aU*w`23Xc zXh*=0Aa)MqDxrzP8jJEnq_JU#R07~3Xisi(CH)C1Hu!XGP^fKxYQnI~t8lr*cdr?< z=d?9-&KpruxzY_4KPXL6aIv>Pvv0Zh{cOsWPMOi~YJ0I=>7kEVdeG3SB8+(xQ7s6> zSzH=2J}wcsNV>0?kJ={1yLNV@LF4)F8shoMwu3k)oM&@Fu)aiCBB{uQ4NGx~xL5w4 zY(-`9GaD~h1vHvMV>&}ax-cc?J2*TlPp>xLisJeNpvceQ9G5B!$?^)J3+t%1_(Sbp z2>Tq%RBNp~zzZ|>h4%<`zxEI@@73t&4ia-nZvT{Pw8<2&Rmqxv|8Wy_aXK?azbd~F zB7Q`+cLio|Q!5*|s(zPm(Et=oDRqUc5SjVzgy4EvZno}!GUTkckeZ(UAqSkOVbqr? zVX>3UuEQ(7FMB)4G!Jhfe|^e*lHTb77prOd*43rAad~uEhBR7hk(-m9j1(H*H$HC> zUt&${&rgHiTi~<~#e(z7>``>}(-ZU%Q`lDrW|h=o#*_2S5?zKi+!jk#Q$hZYZxe!S z6jfrnX6DiA5aa^p4L_1aH#) zDOl5rHvDEO!+$%EY5bL$L)3t$iq8ZJChXD_F-cT!j-eq|c0GAp7e>Oa9lnoX z3XB!9s9%h;9Sz)EPBP@BFP^O2TwEInw~`h~S(~hkPoZ^ghG%eh9|_n^Vjn*0o%kYr zkAm0i!$V1(ML{<2k8a|RNpgX84Kw5aQ1{kRQFm>>INdP_(%m3Agmg(t3nJYEA`MDN zgTTPhjesbPfHZ=1H;6%ZN=PalXLCRA`#iVzIcJ^skKaGPwPvxHneTjK?`vQCiqG}A zGBfL4zkG68VobCPQ#x}!R0$$SHEO+S!Eg3C5lVa)hQFQh79SNF~%nT z=Q9++m%o%R&o;8jrF`?OkWFvvcAj`mRjuXLtO(1JsPR6RR_#Je`X3FW?94aMzzOXF zR^d0zAjw^wM&I&Wf;bmATDGJEYOdlhf05sEpfs^%fg4xrgcC6hkI634{08d{m3@a$ zjcg=>%P~Rxwa>2~5g7PejX)A5e*%!hOIGv22u>QbAyP%{LYlh1T&u}cVC*>u=TCev z5kisJm001~0l{R8FL@E`4qnsJWWFoCnr-n+N)ELO2)n~Uge;Sh0_c7R{=ZbjlOa|R%I>^bgVp~_ex|#g5y$i?2bPpip4J&tfHe)$nf^WrhrAisJG% z|GLA@zBn5iKqcYD4yeaGnLe-iTJ21_0_f!{Y~}roF6XbWu!)Cl@HY@gRv3rCE1em7 zz@C;PkVsL@F1QpwrB?u@6#~f}lWPAoK8u7YwYKwgNseEqA+D_CZA`!3>y=q{apR3> zU3SmqU%nA~_N~p~bkP|v&Bgy}ke5o`rNE*S!zKhXD}5HN^Y?8I(mG~od!e;llptE^ zrcwhZE-SVk56~poB#@c;wp$}zTwm-($7RG=Tb>UIjHaEDZ^)L0xIeFJlnueSEz294 z4sA3GxcdDBSY^Z10d_FXMv&VgT6ce=62*R)yBKRvW!bjKw!Jo++F|#BIFq;TsFQG^ z7m#>3h*&K~lA-&}eR|Q8qp{u>fO`WZG`moq?0gJ zx2;ho6vlbWdI3qUym8g&N9qCUXz1nZtB`G4XNNIw$F?)B2^&B+P^qn(5@<5jipcst zEcTtw2yFI|tPh-SD=tnIjV^xV5+1B)T+YZ;w{!bS*M23X$Xue%oc$co0VD3Uiy@+Z zvi+@i&CPiAR4p4>p%84TLM@S>D`7DQYm@vuk7^8xzx4JjbkUQxB2!m~<5R_C0p$P2 z*WOhL9>s9(FR}8-zm__chVDm`p*jz3^|`wK-ugc9X2Z<+3(!eLx4{rDKmIkQ6^YWv zC8Rby>PvU8T8(Y@;od#0t4xSlv+dZ}sG|&kwtT0N^^zcfyxYyH*B>T~>dv#Xx3>2@ zYP9;Ehs+Jj#A{!=b5@G%%FE)}{ZXO28`eu!m_g|6+3m%P1OJ zm<-}qJlRHl1Cggwn64otmqw{v#i#<$me#Wa1j={*4b{KaXT>;15pE z?$3s84}DT-)d(lZ!v8fiU{t$R$SO6^AdH@B(s;~gA3ERclOFxD>68ad{e8=xK8LZ$ z)GBFh<=%Rk;zuyB1!Mvm122UDj0<{A12}^5 zs_yz?aeOV@pObw_hb8KV&UPcVeMeOTOEHQ(60q4&^op_-)jso!iIqA>y5&CEn+HU7 z%@30w_IMlTKNQOCv8hW9#ck#9xMzyTtj#x`r_!ayd$~_QDcGjwEB<23vI}p>_*8WFoh^2bfV%>k|*Vgy1YCA@? z=U>zy4OTwOU9LUtBXi@vwl;VxPO*lyTd(^`*z^Wdd4(vDPmL{iFa3R;TK)Z^upAfL z+SfhBayh;{9WO-(;T2~n2OgDh7uGu0n7&u|FHj(-9;qj0R;I$dZQ)b&-ZNEu5kmxPz_q3le z6;~O*^IzRt-|fdrp2P;YI@!L~0mYq9zZJc!eC&3ImaNe+UcCNk?2Bz-K3NTn(=a@W zr#nyQo6c<%H&mQ z+FU?XIYvrBvd9<=yM@?t7)`C6dJsJd;oH;wj#gI){AUK76Q$pE=egavq^ z4r^2nTw2tWUvn0ZZiifW?k;uBSJ%J17TXQaNHhR!IJG(Y2m%;RU%mIM3|fGdLVyZ< z$92=og0HSB?E(tsBv^Rle0}g6ilUFuX5gK@=R4An%5|86+O#}4_y&TYQPs(^%p;*7 z&|tN`IU+|pGS)B^NM#IGlHM`17;XcD6{ugd$wdyqoQ;#QppN~%B1!U2lrErum`=hn zWJDjQ-)jhWA!tuy>8=8OCY!cb&mOM=`K;gIUg3*SvgCt4avYKI4<`0#*j?eN^^AlBUUdP!W;lAaU87{aZGyCSrd!mm`h` z#+dDRa6ET0c{m|NE$)fwc@y%zhMUzPest+|g1v#$I`EIviRxWiGMSWwt4*!Ob55NQ z;|HnK#NEs*=v2ZEg4-}N2mZ?^T|godo^Qst?CU5eunIz!2VdNb&}1$&;NREG zimH&>pCE1M0hKP?^`fyk>M=rKFA>VobTVCeIdoPvLrPI^35gJPgo&Pk%2ciQx+=eR zrh2V)3oE!TE8A*rg3)o!cP6nX8$HYW$9sph5?R%Sr5Hc7=0bVgR_M^}sqbxSE@LPS zI(PhL>$S36d1f4?VN}yYVW0{TQHKp-4-8canm zqC_rIK?g_)A~wI;lA9$a4`=^8>{Sv5ei+jSj}4|3)(t=xCci)7hRSnQkP;iUP1d6= zan{Ga{MI>Es;bUWJZ+DY_qHnc$od)Q+VC!dpS8z7&F=N3i~1o5HRgEyd}-4> zq~4}otKek3jA7i9Nv^c?I@?vWCr>1Rg%<35XhS-_Lu5vH&Z!=e0|~H!sHpBYN`Rum zPk7D8b9Zs5=S97{sDp1mC7Eb>z;XoJ5V>;3Y7d$XF|%hB&_Pb?w#GkF&4eugxU^@% zJe6A`LwIh;plpSA)91%rV>nT=HXPQCnsq<8`Zg9Xyn=DHIFvJ6sHxd0*?aHsr|%_; zAKe>=_y`74o=n>oe4zCNu*ExUm93joigub$I4KvV2|1cyX%ILW^Mly_L}K0Gk~i z?#3X44UzWr>vjZ?Rp6<)Sn|6rd$|+b&x#v=wO&2?jJ&-aI2yiyRH;gy$f!imk$TgL zLs8sqwWwdiCZZ-yJ+Ph1vNuA6%qX)|-_d+OlGBSPl48;_gH!LaExx-1U_)a(m#pD- zA4Rp7mP?i6Sf2?T3>lM+uJ>~mi%!f_kALZWx&&(iUM$*oIG?K#(I#>cjHqUuz?les&@ z6*XQL=i3IXK2xC1Lfz15*{Jr}i)#1RjDjgE%lCm|X)NhC=nRXdDSink8mxjb^v1<` z*fSj~?Y{P~qV|CRhezI6eiq+pe}s_0fWmiD6+#;1=R?)pU8yLqIdoXlOJB}@?`q{Y zSGfSR?RpE9gQUQM+^isx8Wq+CM2PJC7NiMz8Y|%}VIE16Oc={U=iiBT2}z88JqDd~ zpIg^G{Yjlu6y+E7#JW!ZgE9K&l(JvvB-jkK#*Al9i+tY<1m!Ej!luC-H$0I*{?D&-Z4_jI*8 z7`1uug+%2l__{A9aq@UByWZpAW!eSz0UFIuJq*6nEYLM#ukH?=Ka3~O$}sjh zWn6t%ok;PKoii5;LGXAagaXwN=S)m+}PP=L=#yswyY**Vd;bAwRq*m$@nwz&}Sfbr~tSP zI%|%aPX=CRbqYIU*i$Q;>qeoydsd^I*x{)p`7!;n z=?X{D*N1?OXEwsah6%U9^K`Gc6KynF4Rqztu->B?zGRi9| zbzU%KW%|9^uQNns4RTe`6>NcrZq@V?1S2bqGvCVTdSB7eSfMOr@5#FEUY_BO)j4Lc z$0A66ySdX=CmQ$@V?_K2uxN{3sVi~i7jul?Qwb8hUvwbJaarpy%Nz1V9eB8C+$inr zoGavdErV3bDPLM^k+W)AhvvgNXEeI%V}}kuj=mO}D`jDith#Ldb#|C0=QR8Ku`Vl} z0g6a3GYFNDi<=w2GAJ^M7yuR{`R zvu~7K$!D%l?iF^kHWn>fxz|vZVV_CnT97 znCz0rb|e#O8}kvQd{k+;M9jVDBQe(6qo6S^GBUat+N7DvW&v|@_u-YwnhDIs{*_iM zG%*ZGgusi)cao>XY)Ojdz4>9y*@?kLDg%d)#4+Sbp&F3vQ+E`oNBZVd6JM23+ zyv|u=W^5R9w$Fjer@p-c)JjR9>dh`MLiC<|XeUJyi>e;CY!JyONH#+P+Q2nPB`Rr# zYmYT~-!rIr+TwJ~#5uJXr9dwnWdE(m@hb*LO)w_g8YxxqJZJ}n!3Sz3t2Qd=3)QXJgL$2j`i=Uu8IvE(|U0ytl=mI%rkp6IVL3xqM zrf~S3qk9tC>5?0aQYSqdo%1VGpuKU-J;WS{V4+H6dxI>3TEktrvw@A@S4c^=9mBQ z?(^!eUj-UYFIp3{b9){F-bf)%YN|0vpusdIMXMAX_wM65-}V&4sZT(=E=NE1(EdiyY3f93@)Y1-+5F)60Myj2V!{d?exKRSB&NNMi{E(jX zbqEG`P6Hf?w@Eq)1GJ`-e_ci~{gq-oK7K&q1Xb%Xy znP$VBwGHBBb6M2iF>0rO(i@fKJ5S#v&f(&G0At;WKKVJbu-e-(O-a!~k5RK>j219> zm>Lh`>^vf()(7=$AnRAhx+tS4rt1$S3=|+sRuCpT*_p~+(;5z$EO}f)`78=FZD0+> zx%(xM6s_AL)2QZYnGaVFQF6mmbzRaa-8_a zD>VimILu3gE_BK3l5&Z&(#ElQW`|R}0Fi5U%|JDManIdx!D2xB`=qv+!4w)0r~RQq z0ipNF{C-Rte87c!Ip3o-?i5hevgh0pRV#;DVa z@GSA*^YkKHpWjv6F%hrHF$Bukpu>aAWf(1`0Gb6LRqmH$+vJUR2UBAt@bl<@X84LW zZK`3%Y(V<- zpg)nV9FI;)t~+L29;Td*czV~mollxiLx1Q=sXjxGJCUQDoskHtIa-HG;P6ZMgZN}n zJCxqMp3|`S+S8 zhhg+zx#X`W1qG$|X?sox$0Z=C~d_`N*H;<_oNV|f>P6(hv}%Foz$6!^kJqJVLq(f^4z!6Zo`aHt(4x??EJ_rEjb_q-wvwNW zU&;lKls(QYl8l!JAge0HoLSXhzu#jY#Ea>(fgf~{GX)O!v4``AFp(NyD8^9J=AJN~ zN1q5D3uwvRT_6TzlmGzH@+EuaisDTXSKT^eRT7AX>SW{c*TC$)^v#D}N@B;!bTGy} zRe(`x^mm)>uyG=Qk~%)swj`#As}%k?tJ>9EuSCkoiR;`d{K?1KJaX@`wX>qALI^;= zi&~FRXKVFiMbC5ZT;Ytw*v9M@0_%~vDsKmUC&b*;5e*UYBGGmXB)@?N;bT@ zaTUG(jwO2B-xcM@ZITp~ytSA!WEAgDDv5LuCr@qBf$NM{)c#B_F8#5no$$$g?1!2~ zwR_0gZo8kGM~^&^wjCidfK6GV+{vIP>halYE@>$RF=#CT4yy$;%;VEx1z7yB!cIOt zb~poP^*UXTUnOralA^AY+#>12upAK9PO1R0M6yoeWpp0@sJY>I7Cgb&^1 z;5b2LXB(e;u)7C=xG(b~M-D6>EK;aza^+N67boel5~_67mdZY$}*9RU1;~BGm z46}Wg1$Z^b`Y0~(a9rV?`<~Rw38aGO(lEvvim(aSBnilIdKSt6 zVR8^f4xaTrpp&EVXeE>d5@eAuFz=93^(}{}nTK^^qA+mDFcK%XLu5Qel1$Qt>_738 zYIP9(?EF1d-C9h9e|n$P!;64g7Lshh^DJuE53Z^;{S7YI<_BSz`(UD!K`Q4$J^b_{ zjAV4%?kiQ-2`ujUuNDs5@@71D$!Q1GRjPA>F&fe)(4FOpHtqWB+E7!6Aq5faN*4v) zaQ=@BZyWqBV#doq3X|~@^wAy<-*;3`=l>iKb+3oBz@2EsK!gHtm*t>TK^R~aHdye; zqM>Ha&z8;x+D#cDI)vxuC7*GAMQL-W=?{MXIbzVI;8=;%){~Wg{ODym#*$w z)|6>)d?PbUigw}2iG@>lG};fpelfiUUuTRGQ`OF^C6wy9n=Ngv+2z}L={Vn%t_Wk$ zQFR#ZE^2Zvi*`(8jTYKwdi5EE(yBI1dJwl-jWo!MjgvTjmd-lynQv2GFT4usEXXz`Ud-nwYHUW~CRN z2YxooR23{9kTMm&CHKG^Fk_q{AAi`hURO!mDOnNZ#KBo@EI^NI@U=i4Fe+4Xwt-+< zs?EdB0?z4Rhc~CZ19ePa$#-KPQ9u$Ih@C+TK`fE|X8cNYYAJTRhSoTbyv%W~ zjj7@|UX^;MAqG#b?=9^5a1myQ)jf6`Cb&D-fR#bw5Vv_ckPNA$LGgr;zjAO(vsz!{ zC0;QWd`NJ9Iy4TgH?QzLdx&54Fl9(!8ceq7w2toa%Lbf;W<5WZ1RlSd);#kNlZ8*R zP7X87*RePFR#cPcrh+?eO~e-Anr|c?pGZR-Y|eNpPmFyJI-X>`0=ng!1L>(R(;}e( z%fW7_I~t1l(FxjQ8QdIyBhkWaW~F)Zt*qbOLCQ6+c5DL(J?DesDL9x# z2m8?m_zpVYOaI&^iDs3Kh{~0W_d*7$Fqj@9tpH<$8Mg9L9OYHp;h~sf49trvtu6ij zybu)T2buA)KBW!hMS^{!=Mk32?tAmfAtU3yGq%okf{!)e6B(OhLOnWMYmL*$5_{$% z+;VgvkVLJpuA%#-BL7=P^*O<#{D&O(p71=$z-%c5QM!z-qZE6nZ5pD-tIlD{5FoD4 zZbo0hOG+|6Z0=N=Ar4F{%-;a+`$^ph%(^W=x{o$h$T*-IcJ(9ew70`Y`X;#;jDg2YYoPbKC^6G5SIkIyMQ|@HRK6wvV!PQ zk(Mllw0|a-KID-PEv~N!1O5A=$0adNy34fV17>o4sAJUB3Vm&)RTYK>xX+W;Wxer4 zHt4%9KypL3nXpjh;&>e0QtOhbu_KD2Ite)^M!N%(f+*^Iy-tmtJX~eg#K8c82r#ce z3;QnoOu&+n^FfLjd01Z;Is>h6dnc8&&!_?xwYHO87hKzI>zf@nEZD6ASi1=d2-1>} zQC}WQ0vWi7<1`5kSrYW{$cIC@5W(L;UDsq-ZuN8i{bSs_3Ri&RI)UGc z)ufPVWgLKvbY*NzukUo&C9$-Lk>>YUbeePHU7#W}^$CXVi1p>wfGGG+I${o0{VuPl~$%`?zj^Pqd8Dd zjU52rpgCGPorP^D|J|=AjPr?;3o>nZ^P65u9Ul}cNXcc<$iTSx zj4142zu239d}80m&TM4Shs(jor>xLg(dZS2gw4!@a-gkyd{Zv#`oa@Y=NM=of)ese z)61v04)_n%W=8MiyzjzdRrVanwh?>x;SdW-O|yb9W5--%zkC~=xAFWrq_ z^68!|?{0ZrX=c9@|88dnlr*UOSOYuiaqDeUOd)&XsspQR+MvX`-FVr&cyUjsxlSdc zN+plgJ|gaW_&22Et98IP{t@lb;TgDn;5>WOOLy|)nrFOXT?%{fK;bRUF*YI1`Pq$6 zuU(R8%MG4(BzLyI?JpW~pJe@$w{BPt9s6CpBYb4>b{_LhQ^Cy-tzU;#;05vNC$>wc zaOfyz9NQ0XF#3|L^u~^f0+uANS`HwKWo!Km`W@4B;k9ZoNV38z9b(s5a6KKYOxBAw z6XRLqT*+hxP93F`yS<##*fW%vT~ERw!c~WHY|V>gXoIe&SiJ6>VoSNx>>&3P&y zDta&VmB&O3djQXBls3rM%d^AwypvG;`^PDeY%4>8C2aseT1JZ|K+Wa%Q_%}XJ>`*$ zdzM~2bf>PN2ruHk3w@#(w53xzsyVG_s2jvpK#2I#Y;qgE<7Ypm*Cbv!5xj@Y%*!93 zNuRbimRqsB{Zy03R0f3^vWKOmOS%`vEY-F? zgTVh4`iexrzF4`~jzUTGP2A)1tz`r#MBiFxdn9IcR1To|pDGT1|9*^0Tx=NKO(9Rv zXAUZRIX0)NW9!JMQUQiYTb6=a1@e}`kbD^jE&!o1s$PGx^nTP8fG1iWTMe`S#9)As z4nQz1bV$;1%=;|)F_`cuh+UkmNkZIlP5^IpMkHn2?sv!`s3{u$)_Ox~IGnGU-C~%7 z@q413aD$14KMEVG7eF=0oviWCXDTcn9Q;yyzai80$}O$jRCJ+-{k+NU>&q8yLFN20 zaES-+skY=8?}aV<#fJ-YkG}e>EOYN_C-5bgR--;OU+tkA;^SIiUpip z3H+K%`tY)br%vR@+Y?GUTp%+vVV5hB3FDE|)yq>R0t8iARUPYhqi#TBf()tAKE7Zs z6fZhiW%4QGS6)OhGEFz2^60|}wlmN272yM%J=UW=Ec-BqX>{!=Q1MV(mge3!8SY6Y zyl>7v*kH1U8D`O#V>7#G7&GcJ1(Xu2ak10spJnn zywX9Pa;Y4Pi84JkK#&fzc%R0$Z<@=O}*3_sx?Be$4UV8?8mOTW$PvqoAX zuTpDhXn6J+^VM&-V)zk;rLFv2ZXRxzoIcsg1&%@Lz6l&|I!nB*k@Q}k)Uq_OVz+0S zSS zIduH#4j)ov74~)nm+4ARXw$ZXA8*Hcw>b5lDH_$XAJ!6YRpQ!k#*>iWfR*^|=tp1P zX&;{DWnSQn}bL6VnNOO?INMEZfu_@MU7bz0J}hB$~+M5|+LUlX7Fv!){p+A}KY2f?Ul zoWFmJ&3vQt8B*9mUX)U<(Qfr;%A$irEHz_Mk&Y^TXFWwmMY()2N{cx@p&wqT9REoA z2un)oE$#TSi23~}N})%9Zzt!f?OH+JooJ%X3}@lh(%0%bXOsZ4;E!>|Lw&EJ(8wXP zpbE_(PEw?*0ko2SAPccdWF1!XWjg$>*bOLvG27}pgaa$S9JYDyQ?&)iEXe+QIguob z?oG-!0NOtVipQ_mmIuEaBKSC^LjsY zm!8Y62ZAD+r%6R;dk3DzAqtdemV~skseyqvySA5755n+18Q{3a9tg~mX^Xi~E_p81 zGURlZ)z$&E)wt*o=+g7UR(^wOw9?us8v7i#lai5s1r8VA4H~w}!wI*-8!74Q>6fY= zsB6?eo+7XAJ6-zJ;^$M6hL>;8xNQaE14%)kTrW%FnVQ0}XmnWvIj}x`3&>X}=XWAXvn$27y*z=?Wg#F%;|Rww^t%YB`y{Enqa$hLiLu;X#UEluwlnQ_27)>}a=;5sv+DAsuQ~t#G!p>|&^*Pox@n(2sGha0 zfqbIttO<_Q#vfA})0bp#{gR0vh|8^)!YZSk?$;CUV|~2T*VvVbw9bg)%Bn%l27EH% z$Jr5QS>Bj;;Izmi-9HYNr zYJf-EtExh8jG_-8%@j4!k#e3p&q{$<)*!J(F=4szhy{yftDt~09W%&i8w`moi$jPO z0E1B+pu>BH-3yvwDo|e0R2LpTyMv_~=pJ9)k&gAY#uCsdGlSM`uhlO=XAi<;(dqQ* zfjVGngV&|f?X!L;e9RV@ zz<(Qy^kI#qmBi7BnYh+mrBMm|YtCc?LHl(rk|o-7KaoQoezrIkRZ^8yp0Z3)ci}J4 zRsI0VJsFfG;zi@to!iL@I#mG=dMfJl&QM+30EJxMBk1-t|9(*`gY#i_Y~=py^#ApF zTLds**X2Xn3;s1)|MfR81W4TaB63CV3W&C0D$Ixc=S1L_cZ88a#KQacR{q;nnZs4n zcOcei&_U~S9P`IvT-Z%sOC@X5l9Gvtl9H0m36f;j4}V-oW|szo7eoOTVGhXF|0Rq6^%u?%l%s%K{1&hGU?sqiA8*d_WpGAG3A0MV zx983oP93)~%)h^uqhvr4F!O`3=gUh=3?H2r;+0~rlR@Bh^N52JQEjmp^7o^a+c>ZQ z2bNI++sQY{YfyYc@9*z_hnkvk+p+*!NS>1>6byvvVCDO*tpEEJM~+2uPjB*@dgQ>J zPIz_ff4%{Sm}emYx^jU6GEYy>$N>?RKQ2cfPwcf_Cc(+sDGTN-6OSaBrA-!=`o}SC zBVb8Y3uw*%Ik?LlxAFMRw#vWO-M{Yzf(wpDpcjoiR|O($Cpby^$MCsGp(q2x0#~eyo*VeVc z6*7JBw}FsB!A@-hb&RXcCy}^#a`u=CFl8Hl?H*0F6RXi2k3a{p+bjgEmI9 zRf-?ch2e(gKu5^_xK(9pG!#_S?!iGFz$VB|OS@|!2G-Vc8s-kmAEyaK3RVV}<^~zf zYMfUf;3uNV&Z!z0GQbo6x6zH0!NUUEYAVRkv~AG@hlH$wwEa7OvOA6>T2CyUa(R*|$YxMAwDpo)2v#{QdTk zu=Uvj-?Q_4_~05DzQ+4AO8kQYti3%bfvcDe|ABZcle5wvvJgWLAt$Hz=QV>P5E=Nf zgrsC-@p&o|-9j<=s#KJNs((m%AQ~gX;>N~3+4gou6hLwwyJ+s}>G{Nhg76>XaH@{< zSku=pI}&lv7gKl=Q`jRr2TIi*>S>UP7zhsTnwwKkVEtX=uIVNIk6+faE^eI2p@g7x zcXy{e%{9j+z#-Ap<_Q;3HG9{he#~ECiINeU{FY7z@W%+2isGFCYtW||2ZwUJLUiD6(s)k1(@&1RH{yzufcCQy<0ft$YtB$UX?c0CI)&Fe- z{`g!b6R3@$k$SMX|8E=1|70|j={0UmQrlTDwG{0CSoi;U{QvV?Na0_*niH56yrhpz z|C6Ww^BA}e%I(GP|Nl}X{=XFiaXDR5YHF@K)XeR{H<9(`y54_GHWGH10Lq6?X`T_A z!BXTYvhe7(Kh?i7*hKdH(-MkX+F(2_cdR$T^!2Z;5p3wxW3xRht-W|{3CjrP6nSxEewY5-#;A{qoN zLS=BH%6h?1>Dup5ld!*eW4gRGV4nDNWd;2Y5nhx>3l0uOJ4Rj}aO~GFFu-TlPhitr zl5e)u`Nz_6U_i2i*Ldkdb5EKg`cY!$6+K!yP_dhhg-zy-)#BJ1eqv#Si5Y3U@==s zrpQ`fmG&Rg0`Ws(XhB7b2Jv{mml|&93NQ^Q!~x@vf$O@}8Qoultg8R8j{a{J_P-G? zg+*M*c#MtzHnRWvhkzOAVAQ3fu|IADNC$9$bK1@S6o$6;+mH8=CRYxC)(T@E?&RCfPkQ25w@$+`g|0Dl+PK;RgHlrkBxFp)y~c>eqj_115bIrSC%<2V29 z&rXv3ae5a%uqjeYART*wjrI6#pU)rXl350ujKMOE&vE7-6EOrX(R22Jih5N5(J9r(4Kp^U*MMOkQPeP*EKq#~c41;Qu)##f)R$!ngxDgS$zfU*# z9}i3xOJD=IiU0Cu+bqzyx@F=cLZTLO+aZwjo0(GsudK=@;SVG3hLIKWW|-*BmAT_E)s)y| z8`bxtq0wF;5aCW;1gi?9mt|#Ti9Xo5wq#^vc)ffX3DOL}<&gh`QCE}EkwFj^{kw|?D^hdsae!13!`ch=0YVpu~v{OuY_5z|WJH4V1%jYk{T0`JjHpygw9oM^U_EtaGpnB=KN%@eB;XfH{Iq!K;ZYI z{fjAgUuM8nwl%alQvKs+NTSs&b@rW0z$ZMpe?mQ)6kV#g{Pby{Gn{a(EeN&h#h~ZmVtWYR_D@hzuaf-!ah^=j zC8xa4*G)fxxNtjcKVjr`)K{~OrCOl$0x$r-#1eNwy^K-zqIvPG)<^9#>Y_m{ui`X@+lc;@r}{O zAec#@fq>{MD`QELodG{>Juy&S3h1I!HE6`cDYAv^TkjGQ5`qSAX_+Ga65|;*Je)I) zw&h~&`X~b9mH(0$86YwGfdfW=NempIz_c+4DCwuFZBqf&Kwmc7P11;om}-B*-XLfh zTYys8=(+b=-@;({3YcNuB5u-^-pT zaX$IL1^S7n06%SM=ZrxkGVmQ^)k?aK^1^P7y;qk_y)jNsiB&Hf)$4A>vy5B3dc{N>GRb5P=RBR z7q`i$8el{5fXOaz0`Rbj&!+;OyT;xCF;e5apdleK3p>o?Ai`M@>Hn98+yUAJdLgiO z8!5cQi){N#)?Bb+oleR!ZFMkJ^YZFy4FCav4a4kxxE>E`|M~$(L0&*B^43vXkbhg) z=6r5rWWRamY@?5+sn3ExmMm8u{T^f_J4Eb{)Qw6Aaxw5Ji}=aj6b)5%MdeTSOHB7%8m~0< zeYnpWTWdeemQuTsmP!y^WRh}H`B>LR)okCv9)*9zO}DDib^-Lf(k|90uaqlGFfJe{AHLZQm<@?lZSfimr* zrFYRvU-P;nWy(DWBS=9($0>Sx4*;ykt09i>qQrxR)`#AdILhb+8aKEDd7=4U8IrxX z&}t@7yw;y+^y$T30b>=5YDypAvs*i>-gsSxm;Orn{0Eb$=XGY?8E9Q^q1fq*p9RXL z9qnVNMS*sfVxOk0Ps}l8$1B9s(wR4p=Ki$lHUl`c>zOY5>{aUaX z2GA`DV(QNf8a>KN4I2ytV&0ytbHBE8!L6e0OtmQe$$fIH6h+Mtic6NT5O8C{s-Brg z5$T%5`8)pC&Uc-OYe}D9Nvf&W)vSDk~LHfKjg(RHjR?HMzGuFiGrYz1Xl3}*N3 z-;bUDoUVJ4+Yd=@{~?!$Kca*d+rU>cWSbAfoM)>d$es0l4m2~?hk!;*Er#xbcbk-& z3$)LLz-P5E?riAWa6XU*?3MHlZW{@0ZAhXowrX}x{lklEG}`6R^Pg`*-3~g?0dzMd z34qqW6sWQR($FM;u^YVdImz=q<6X;I-c#1ns>l>QN=<3Iby4g}+t4t^!|D9#PkCPM zFSdXNPFnsqKRtDBqBo2id{u74o3KIu4=@FW6rVyb*9M=BI)GPbe=Zd@pee=89ed-) z3>p>UB!aqbZ3=1!&>|_c$)w_~%%bPfI{s9xdumKb12G5G=7&fXhi<99EWp5ja0e_? z3(Qspc#i-j88Da`=&Yo`a%TO1Gx6HewPKfUfF;bOF?9hKI!BNbk0JEQae71U&OX~JC=;b6~R8N!7(KH%X7y|p@JEN|^vOB(Ov46s6k zu|#qSQLaM)!tlL}L;EHA;hg7;+?hbjX;o&83pJFs z8ujb{(rqYf4LV=A%|1jYD*X!DjOU<~X=Husi{8GOf|?6H`=yK@XVB`@T&hp>r~zGi zG+VmW*R-y*>DZ9941zkd1b8l?*c0Z?-;0fu{OH${ZRhm+ey;`q0#Ao40uD1<=zf3f$LQB}X&+OUL#(nupINTZ9E?o>hPt_9MP z(g=vs9fC-TAT1KoAV`OZ(j^koB`M%LmwWGX_W#6(cbv1w^L%*5U<`2qYyIx~p7)&B zyk^O^t3jFrau3QDp*>du8lT4$s+N?gZ$3*LxFLforAFmm88)8WeYMEj*wA3vUt{-$A?Ukh&%zrknGzXL~^cH zNGZ)$ =H>EXn{B1nXZdMc)-S(ma+iC{3VG+(haCDwI~Ne_ogOZ=W8%G3*=tP)?; zdhdrrK&9`>#VfR2tItyf-P2|+FEi^e=iZ~Yk^J^VT9YKY|AkO*{72ROtqxc95v&2e zZB!49)1Tkz7J~}%tW1P-f{B{fhTc6>V9h@L(NMc*!NsAPF{P>yLq|1l=zVVZyXBJ{ zJ&Yyb5p61sQYGtUNZsxiJo?;;hP{HSxqca^i&KYO@!C( zmE(;cPIVa_?hX^xL%*)xa#Mn)!`V!4A>S-d;#?_B!0z?h;kP!0t|U$!839^Jp>+&d zdja!>hhETP7`gHpS>ZG4$gN{R`;d-|!%)ezjiGC4s7;YrVNa2jqc`DtO!9@0mq8b3 zaMrN!>8^o5Yt*CJIgJT-pyg{tuZvW=5ln0_@$B~ePP(+DZvOKtXMlr2{lNwVYg7u} z^*+4EC<bV*QH9Vwy7CY;VBW=7~ z2v066 zE_Vm;Wfzsm85N|NoDsbZ`~wmg#DWRpgh7$%SQI+E@UZ1-q2jmRr0u8t1VwMP-izVg z<fwb{XJsvv||?cM@(E5@?HrLn|-`6rR6kxQ%Xt7C725ArqI6i@+b%>s4ft2#ixb9_-jK>mV9}>={r)&i(^1A?-jeawKWt;A9&_EOCGApXR=2 z6>7zC?&wU#{~+tu=Igte*#s@=wJypq4*eQnUD(r=<@A0gP*K!?!g4yotWn;Plp8L} zSZ#j~CR8oFe=(X^b_|&q0ttHgYR_*d`-^&O@;OjJp+=I}qw|Kur#hHn_Lk zg#HWf4)@pt_%(F}$goUON#cBCBp5K`TkElr1|KeeRjcckxNC=6Ewp-dtN*ZvqM8__ zQDHi10!~qI{N@u4hHk6=@oYOWL8D(con{ z^x-2w@8k!##Sdq#`kRth1q$s<`wBF2nH%Z!qOPmamT{G9OL}g{o``uLuH=y!3Kq{6 zw2G9!WWAgE%I6?1tS6aEuQ;ayh=2zzBIuhirL9FBghC5{?8$ia^$>85@EOlF1FEa6t1+ru|tMXu=lc+{Oh%!Z)a6 zm&TR0e0SzqR>pJlyPqR^OwJD`w-D9`w5j5qigXgb1;i3J_*X}YnD^I4NAE>H9D#8= zqSP>hSU;HrX$20Y<>LYFFxNPzl->i1}`-11_~g z;7A^A%K~zR8X{NilS6t_lBCp>HOv?^4D147$PRR8HKWC=aT+Z?myFqTIo>5p6?P6< z7)UT!8hFV$>ojXNA9!WV)O~wSI#tXjd__d3%rMDuy6y#nd`^#zB|JWdEj4Uc9O#Z@ zv$kj5&~r19K2m=VV^mH@6Sxxro0*){1D~<-Z)sXw%Ac>@D=?LI*aL1OPicrr!+fMk zR+L?*I(=QTd^S;pz`^!J;G}goC2Vb@btYcw12X`Q4>b1=fYEFb!Fh6>LzV$sMGAD7 z&g(m=uUXh;eYV7n3}lqR3-iR^ZZQk(DZgXfWFG><9PdF#cy4BeNX=HV^^2G_v?4BY zs&_w}w-9F(6x&wW-Ye3^4^(pKh)i|aTe{6%q*vmt71bjY4MkMFgrfejS#zdFyvu#K z^%g-eY>{66hn~7pf{OF$+thL3=E&nJ%`;OBdQ(AyG9)(Rn%awnAdjD4vv!Vx3WwvY@6W25S zb8-+zA$ZVTCoORu4<+z&2_W!8m`joQ_cfOyb3X`zPHM+S|3>9@B$7^gLw%%JkF!Xp zBpLd&E49iv_2$S&SoSWJnBmn){yx3`6pxMr0~?=6?nJ7^ZMR)HRmAS;>wAu))s0uU zj;h^OCRlnvbrs^_;3R_fvFWiER#8bg*1Yv-vzW!&*Vn3-Yb%vH6{GDERx)Fb_sPN= zD9D(7ZMLnp`38xA5@5Cx{c1#5W8}}lr-8PKj||_M=M@{!#DAs|OD@xWeJ2HmC3e>~ z|JIJ9LPS8}!F`xI_`o~b>|v|t#^>6iugjFzmwR3su-?rmpc+$0f9IUQdaueBIbMe> z;?l1ajx?h((iji>-uadNDO=%Bs?Te#cQQ`zGspSEuA*u-4!8^Z)OYitTT_K8kbj%? z4y=OEc04Yv%C>7p+(+*mA>q3{t^lyJ2teoe_CE1rEYnPp9 zgEHWx54fk|KXsO?Fe3>aWoeM1J#)eU^6E4Tbd5m`Ged{*SeQJly3F&k((Meon|{2i z7j3|wl9e_0P##Ifp&bhi^9z`<^n%Mw>PrPLs!T`~AT8M*<0C9i)bP`&1iW7*C%5jI zJ(5a9t`XnY7>7!l#gMYHYAUMKZ&Rz&^)bm4H(z#6TY=OQIS&9|;3Kz8B-qB0gQ09jQcI-k-uG34}{KTYp7J zMH+MgXEv&LtFjeNz5HGwnvxy5K&ZXG^CE`;RoAEbLU2~;+lP?b^E{T^aNQe~HMN`l z#oy>OXWa5)NUIQom`-WxNaSuxb!ZO*lR>>>)J&aUJwX~;i*O`cKBy_>X9riAuOwxc z4O^=XH)R{LR;0Jy{8F#uB=Ts}_j&dA(~89&TlPE5SF091OZ9%0SZUHAJVRla$Gt5y z*>~Piw!7b+(W?Mo@Y6cdAC|yBO z4p-Xx?f`SxjzF^$RP@Y2@aKUa^|{nf)Y+MsyBYl^CDWprXu6o!J#|)6D4dp!#SBvZ zoPYN^zm5iGYPxPYwX!@)t_pxX}d+)nQv5<>2nN)Jp%iv@psKoV;ZV zC$nI{ZEd;@YMfTY-_Fnzv}>{dBNsr#_Q@5<_fO_B<^X<@e2lCk(5}L&KL?3$nrX;u zr6o>!7G|fBnxCKVwl<@6Re|l;Ch_p*L`?Oamk2GsBpC7DOHVSB0qDXQ6@4+rBc*{5 z$J`Ul`3OREyTjCXRvfL>4ihNXdw+}lejbSqMO;wGC7Vx;wFUMqkI(hZ{dEfsCwzL^4n~Yoz4jKWM%2Vj- zZ2K@<^V$W6!80bRwZexUvz8D^SW;)2pDK{4+cqv zOJiWK)r}JIw0cmAS(aPzOZfh1hAub@TF{^8XOZ7>nSHk?{oG9JX&F?UJ38P-Q=@hgbz|ZEpD3tLGZ?) zEE-}co!2<*hAKi5ISsUD(cWpqaHIR z_P{v!@DKjS#}p{`RI^x9qv@oux>Q^dk3L(kH4?+l^t9Brs!%_OSP*KDh72GjgpwnS+~a6XyX?M-vUreWJ#^K6#=vUkWFk$ z*>=GuLotdvTLA|zJDFQQqHHSwX_isgWJ^qZm9TC-)wKiI6HzH^$TFz?Bm-+Ys?~@0|d&@fK0BRCAbU*6DEu1=TxXvkF_qESC7Yp@ZEeqPQr0J;pgaSxG<}Ze`>i&oN1^0M$YA ze#AQq#J`ZQ0Sd9QU2GE#Z33dcrDvf( zLf4=w_ahmHrn+iWP5`*cUyD0zKEED{&*-WXbe_LfdoU<~-A5}CkJ5?hF(`3>9;lE= z{&d7xDx@6bxV3F7;SefA6Zt*UwK^Yg>m0K3O3BgNxi{9A7Now$wfkp}IS zU`H-@zfgn$;;;24!Gq6Bl2!M^v~!tqg)&c6gu^)IAc~GpWrH2lE0p)Y+6?8?{sC2on-++2Ry9iAheZ49L-((eKOOq|dP4~P zx_V9NbTKufu+#W%-u&Vsi^8#L%zmXkXS)qc*-&m(y9Zz#2e$> zG%KDKv}c0@^d2@#7_Xi`MGLK#(iM2v!Z3X1y}!yH+OAjYl7#XW4<;IJLz7|B#O8Li z?}ht9C0~EE1(GB*pPv+QJ#YTB;8}4%yC?Drk5gx4-SOe38~(G1V}Tzg$GavfQE39# zprQN;XCv+8^0Ol4w1VlRYy%>|X+vy0oZ2{Df}p6Tn@VnkJJ&x zWpgbaI7}`=m=S-EHXXy6vf{x@33nAJ<)GmRM(`Xh4BxH%g14R$M#@?!9=JwS8^dsE zOHU##n=kYS^@z*JM7T9V4>JjC93RzByE>F5aIUb^(f&SPV$#Jmddds=Dd ztp*rga4*kRi|n13=livZld0Oh3XgvMesrSLEIc8M7mTvlb`P--NmqY;_k6B~G^%&k zsK;j#E#8YWqo%?m=aPC|;kWx?RL3~r%)Kg(p(~gh>qTEWMYo7P5Voc|w_vgB?Ly&ubJIds+_a|O0tDVFY!_E={MsGqKoh)xcm)IH zqEBui!jK7J1u_atT?Hb^bGxGp4+l%9>ug_a^M!tjKJ}I> z)GRUI4VV*wWEDhG^XXa{--$iu%dFkYr9}q$851}^uKQlcdEWV!ibaHicd4m4S3=j9 z2kv|uD&cIKG1LnKf=wc_GmvS*;7s)R=3_~46NrR_9>LJB3~F5BJf4o@4zrDhZGWfJ zsnfKsO{8P`x2@#Ch#wi>UcP`<0ULYJU_o|Ypu)pIVs_%4Gl72w0(nU}4v{40eWZR> zZ)k%PI9$i&E;r$mzDwVXBKE$q1@G8&e~9<-?CTrs zeSR}n;xbm*F>zA0;)u{WxJt0asJbde^<_Sk;bKB77M-4+W^t%(_u)Dr;zkk(!^E9mI{Zng`C)T9$ zR?TuBJx&JwmD#%+8|)o@G*3EF))F#nQIK9DhHet_!sZ^J?|j5ItKC$X!yY-jODCDU zJSbaOC098b{g`?Tvz(sj6WvQc=NmyAaT2mvUMq((bP{;Drv!uNO37TQ6FNAafoH@s zUO!~xuhFHoj-TEbi0SGy>mQM^xjksv{RNxI$ft8?FLn?T?HJH}P#NAC{8!z0A;%9h zBZlQq`gABU8l`g=ouJDCj`B;^D!0`!Wl*74bA5LIp1(f{85~y7PzHGFe@gMgjY5GJ z2f1;2RAlkrzRF+1%hk{co0FZxH7(mz7PVwRd`cIBD!T8p+H}*L`oS0>AcUtL$n(qZ zXoy9jey+rD2^E?|zm_5Mmrn_M3~%>elzcIvq69cSsdsY=`cf62Is7eKyj)=8D)0&=x;6?8J$D%2SV(Otkzx?kW`M)otB@ne`489U+ ze_304C~C|2DeW));(hb{}ZYIgCZ3( z2%QosQq*xkA;_Lh?jCmVau4$PJEqgGY_aHWOVSScJr(bW{Oj#Rvu2uuc8Oi<7^+qp zB9a`-!o#}d+90W}Z`Yr2m6B@?$=5##*xtn;S z!*o-uHV=|A!O>(%6?$a+eD=FPicN>6t-Uab#}eYR^GrMlt9430^3AJPt}qbNiN$~K zjP8ZhnrjRU4B@#g!+*Wz=Ohm+3-H!XM+Q?ouBAO+;FBUy1u zN{VKQzPyUR`aP(tO@yFP@6&ynMIgZ-6(qKF2fAePCOHpI)uISS??K4Ijo5OXJrdQm z|Eor8XF{`vrsIK(V|%=iZ;T531Ba0E&<9_d>fnr1vzU@2l-B1wS0O4n|87P*)6JQ` zYBCZY)KzO4>rng??S(B-cG<|ZLnZuNOSMKoC*CkI&uw)q0?Gn(Udm|F>$elH-#t&_ zvmQv3GY4y(1Pyzh5=W8o7|JO`(y|5y27WGe5Uuq&gkY%qqem%vGkh$7kt^)SUB=7( zgU|ijp6?fCE zH0|d`MWI^Xm5Ngs_Y@DjAG=9YL$Tpo6%-i+CCS;hE*NAZi<0j_QTjL(q>H@|FyYWH zEP&>4;yTbck5R;RDb{hiz8g{>AUDWAY2C>xWtXg{x28y^7m_U(;q`R#zlfm}IyojS zH%FU(vl{^7Tm=DC3O3}aht<@?tj|=5PBnTP4(G_bdL2&BS3H_+QeXC~aiYJA)0;iQo_%hir+KqR`S96IA>E+Q#`MU|H_xzU@oHyO}HDZkdu=P z?x+bWRtLPz&y1J#Zpm3$40?^WRaR1hl6}3F5M49eUWW34-Q7jiMnMQAqbj4I!`S77 zp|P)DwIGt4yL@uo_({#?@98yvzf4em^$-h!L{=ufXV`=bkQ#@0G(!t{!;Y_VDmKOI z*1V^DMz~5M&1ty;sOYU3C)NH*E&Nl*h4~i+ct(C}B@OZHu2uq<@N-KcV26MNBAdzA zCD1%aZ+%jr2zdlCZ23N6UNL5(oQiMEPkTnV4HnyCBoaLwCSRnBKSY-l~ld!vSc=O#^LyKrgF%o#f#D$$9szjns4rRL$V=q=!5*d z_ey4{8B1EaSb-Dvnd7^Mv&&z!J(piTdIfoo@i1YtN(j=g*;UDTNA`k(`Wp0bz0lt} z{bd19Q46?WL%03bV>*p3tVbc5nmyp9L`mzC@SI{+7FVm9s>hRm0!RMX6s4mZS#WDsT^&KSdeD6?Qb83pC_djAxEU*Vk8fY{$XIIxaNTKN-H4#eMstMpN z(g{#)8_q~bIs^{l-|*B!74&HGBz#(aDaV=j>@-4-@y`h93rSI3>+fZo%cqK1yoTBB zB3Fb$`^&8|Aq~Rt{X^-1XLcRYSD8ESrpInfR@*I=1IyY4QoQgfJ9DvL=$-OLnQd>H z)93>cwY}XGXs%BcL3mY+Yc`J+Jk4To3E&)xwP@UWNiB8c;5osDcJ2 zm9~=W)Ac&qrMm2gTaq{-pNW#R-rUo(QX?dO`^_5Kpd@}qs`NtY?QKcBPvwCNeW|kK zy!tsX^8H|)eX`mq1yZLUY+v?I;ZMzn#AA`fhuqa2(T9I?{r({(KEPS!R2VmU_q?+n zwETU37SG{sYco}l4bdRwL+B8gSXOhLcjj+?)IU%!3F43K{Lul!326m@KTVMi#zqbC zLyis@Ww)Cvq}d5SHZ(HI1K$2KR0`RsH=9w)ej-W&0$KiZ-d$b{Y=YQ>jfvj2XEBz^ zhic=Eb~UJ$ZOPmw99?Qwp*@23hP-S65E1n7^MKG_o)#FlxefHsZ!D~L_VywkCO4d) z*i8spi-5^v&&cRrX#G6~b5S@79ijqU@3?&SA$+BdE*E~0=8`#@G|@#3xx!1KkMZT! zjYW<9MzO}Euc)syDs3qx%&01DHKzY;n5DzJMilQl(3d_gT6*00YsSxVt7_DDRt@2E z5HK>(Cxc{hnC_0?-Cu0IpyV+4+4`}ZZCY%_7QgftHzV#&zJNUWM{SgP5Pg}@5A{SvWJsDgZX%l$)aw(R!D zp)^q3Ul4)PBl;$(QAu&>XYQ2>n}b=uGyfL)jk)Ars5 ztWDPoZLa&~H%ue#?Thi!#81X@-}Bs}h8nb3Ng1=R{ZNy@>XZ*9C&cShZ%J{(!q_;u zOGfMF=1eK0#QK@17H4aU@6k?XYhpLuty8W}UDwC50kBAz|eP1*674asd{v3zdG! z#PK28-P@BjGmAU@oMtK|9f>hFKYvL`NXI*rtP??{W*#6!rP)E=zcOcn7Tk&h9c7M< zEqL$QFeV2K7V=s0+K%zz`Z&uPTo~D)c|l1|@dB44;aUU2Cg(KX@BH+*OKC8c!p&Q9 zj0VzPTZM+3;sQ(4I&TY2vpLxfR(FUw&kJ*K7PVx&VGTe~)q8Awn2;QuPqkL)rVs6V zDN4Aqvf|PQiAHnLqN3j>op@x-zdkEb*OQS6I=vT|0QXZnHne zrOTJgyoPs$W8S}i@G%Razdm6y4qTi-A*~T?V=08 zi46^6NL_YO(HEP%{w48z7KceSH56m%jNIHwd-m+&Y4rTQ_}d6cA}S6G`l!+Lgn<{5 z6fj<|4I)8hHWz%btmt)=P8;S^T=#$ej1TB!VP*ZSNRK}&F;$Io=~Dce#Wr8->ePg$ zllfP>3-)In_BkY4}DKY z{n#G<)qTzul=vvC>oLFAmk;SdM@QfOrbyqTh4K0~{~1SCvEm@zgW0C5=Z68Ay(aVJ zAsMAcTOZypcbI)54K6Fxyhq9bMX~a;O@zIdH7Lw^x-Ngp^g9Tsm~@v$7T+5OW3WiO zuxc~punk!_->P&>+MouYZA;NUF*D)QL-V>19j| zRAF~=2oJT^pnL0Z0Fq{7Vq#iYHCfL?_hF^K>4FJ-+D>nu$pRs(EnRkYw&#A8vTn7# zh==_wW1B@>T%4!ZJZ9euQ9>|3A0v1h8FZLmNCpI+ie`RXKb9h#@;ekiI(Xsa4EaH- zj1D0^W3Gml@08YOYfSv3Eu6<{`R!(4Zu~Ygr5kHcD}(xhecJ`GG{x;L>R)UjMo#uG zbPDIYn@!dqQ5C88Gvqxj%-#zSj1raAHcM(;C@rm2Ii#5NfA=d~i^81#<~5eD{@Qb* zdjZxS{E|eSk2JCn2V9!?aq{w2?PJas+aoWw480XQM*vps_%!^=eB}J&lbJK#(e?WW zhoNWD5m8ah1!}^FJlCgQDYNzT^eo00*krK0j-wd8Ahxjo;zWX$bZ`CqsvdM^J&2AM z=c^!G`9Wo(Hak8+@T(;n4Y}T?d8_^Y<9_Th#Ye@DFZeWN%hF!N;UMiSva{k~((IsX z(fxSy06pD-<^DTgR~wr!weXrq+pz8g$qqZ#EBB3#2R?D@ zHEV&I80Z7kKU?s^AYV{V`(E)a3w?f)UQzMviipA8jhiRqLt~XT%z}<%Pqw!oMtWPl zI)&7EgX=mMk(27I?VZ2(cH}M^Q~xFbA-Lf)Li_5~tGO`gyIJykOGn_85>rsbVE_85 z0L4*@g=W7Fw-Ol7trcPvT<($h|2`w6$|#huhZ9e?n0o(qtj?ViRW$p|;s!0J%MH5` zdl6m@f}kEb=T-9z%%reI3Tfp0k-U1Uu<=_pTn^G+-Zc8q?0(K)^ zT2e-a={J$9S7^l^67gA|qX!R#4h=@i^cIkN?u6{f$V|gKxek6wVTU*SrKFyEL`R~@ z+VpH454K=d5w>7IHVfh0Sf5xMsy=S?$i4Ll_dBwy$V%DvV0K*RoIXHI@B9$3ulZ3z z+ahAHSZ*6=kDaqev%PsiWnz??2b(@yrXP;NOx39(&ORSe3{@ai8@5j`7ZkkL-LM~U zdiVC>w;cUR6YWm(hXx)VJ|}v8D&o=zyAK=Hq>thDccH z-;O3S3$Y_sH1M1}s(ts4Q$eJ7{^1X2$&>vx?B5pxj>j|oeu64+UF5I;0O7gUFXTMe zf(G-8scUP!c9Rp@o)ThAUP^FqN{>&Eq>>zL|0ervF@)v%b{&<`KZg4sM?72SB)aQ&y^vE z3Db_q%*8_6;xrckio~=e=($6Wp}(|Q$IndX%_*;Jj!Q(EtRv#8>Z!W^#G0(pCU6Mf z$)u6yULPy+jst}=oUvhs?6a+aBeb>AlIEXy0Z_}*O`qBz_KoZst8p;_?N^RV79Ek& za&qrar~JRka5be0;zJCcRPmHL6%O!~gANOr>LZCihY9b##VCpahj|zWhbexoK+SNA z2gw5$EZ&;5-tMXn&vtpmD|;Ui?fA;2!P4~rmRH*19Z5U7&8q?R+I0I-ZF@*rb*jP5 zFE3w|sHYBnBqPSaYOSB%f4I9FXnAAq%b^ML+E!yhVFA%y9JD`IX!t)}p~mcr)nl|G z;SYt>?>4^mS-F;kcdWB8{K9!XR zr$uq6ihfD&{F2UFKBfB=Q7z9)^9;>C=PK$JP{Otyqi(^Uoz&sFU#Q8NY=Y8eyct;) zcH#l=0<4?gl}+7=6(6pzukYPD9~X4bY5H!xtO$Q}sOE>-ucnwkdjxmDr)%Ib2$mme zj|f55M(b5mBQ7Ngps&=5T@31ZUzs=a3a;p>Q$1;14574*6_(1L%QrtGpI5)DuHtf% z=U(HJ6=THgdk$}+2Fg)v5VaBSRwHeOl(@D$ANRE1E8an(PCf%ZH~G)Wqb{=NM+8fO z8dviJe}-t226%xj-|;nO(wm}u;~^Z5VO6jF4*0n^_kOsXda7|xktmNea&`5MB7acN zPj#c0H*ul!x1v!lk>=~7(<%Hr>Qs-C`Jcyv475HLv@j0pp2T+UrO0NxiAH>e)xz=$ z*L>+b{B-y_4Q&cFn+~jak$OTDT^f0yZFua7nZ!P-UWQZo;8n_Qbrd|SL!H2DW7KA| z{>RM*nc9t5!ba&KDtcpL&5mb;D(~Rhz6m-xyk4LdK$vJHrJj24;_;8W@Cy=b-9cFh zmerNXlq`hbz7EnYs7EvI?GPp-Y!s(MV2_x7wZfNB>$ta0LZ5$61cv7@9l5K*JOuX*wfoiDqD`y0)6EHD%XA;9ra9RA}!VBC5dU_%rH|{2jWl~Avz23_VhE8 zK~PVnx>o&j%p{xq67o1)j$s)s2Xhk5*HNYV^01+t$f_{aJq!o8uS^`$Nc{p^KeeEq z;?c-XI?SYL5S5?S!Njf*N1oVob9JOoGy21wGt`Z9d*(EJar8@?AVf0+c6O|nOA72&XQ*~ ze)&d}7bPL85%zy}egn1hFRS(Cz{pdJ&%5-Fs&&Eek7BRyb zzFXFF@2GrmE%^~j-=vU_gT#asPJD#BE$UDes-~VwUT902kcEIN%YnMG>_xW?)94@M z7LjZGk+C%k5>2Z{E3pHHKUcOFb!C6fzZH;1iq)C>-GM7xM&%@q!|}bJxOb1SpwFe` zy@RqkRn5qccrYb(U8N7yd$SR^fiLTs8n!G#P2OUPJR{61EbN#``EB`af*-vZzXE`glpoB>H$>)SKKnM9ub$m&^x7{VK3Sc%}mv@>}p{E*y^gg<0oka3Hf7c~oGOG^Hg@K>vVsr~vB_ z=6!Mi%Gcyfi|S<-Ld(*gUmA7sR8+GO!QHr{ji*lyy|{J;lh~B+)-QFRO#5=C{agwo6g2Lk&!_N6Ig4LN^9I_9CgHlZ9lxFkh9{mm=4S@%lCANB}@_n6YUGNtyZeQy5_0u41u6Y_?BOT=jGA} z%M^qs{2s!R`suWVBRN^Wz zUiXFfqEy>cLdwD^hJ_#B2=suN4nuOnAO0t|1`f&B6NND(*!lrN0GkAcX^mcl)f=S+ME5IA2w>cICC5(xobz@&*fPB zC*S~LDDaUo>Uy%5cJ^I^dX9E;v+W=Fe~OhkJxxd5e9&0`lbes8ByxO`+rLMuK^cI? z{$ezjU$nlJGzkxjpZ*p)mLj&{^Fx|T7K1|nKbDA_bTex`suRQcNam&>9ha1bGE0V6 z3q?(p$H!4szE92XD15~upNk1y#ic?<8QE$L#GtNor2*W6b=Io+K)51Y*+x*vZ>3X9 zMyRld@sVVL8+O+tp>76#_`MA~Pw$U*IQvDa`MMcfh3^k`^!<7L&sJE15+vFGxd9Ng z>7)p8OBz|&HTEC~Wh#=ArI7wY)8STk@nq*SIb+?ooiw#Hb=`8BgxutYX9$@+b_^}o zXTl11T_R32n0v1<6!alpdfI{v-F4JWhC@tVX}93i=bs-+vO{5_KeCyut~ZHu-S-AR zjzaJgil)0VhWbDnd1YMk!@Q^XoKos~ZPYs>a7F%mJXxZxPE~YI@C41|XWdr}e>w$Ugpg6G z?!jz+@Y@3^G(lRn*t^Rx&0=nWp?lKQ@s{D^FY7LvpYJ>$tpxbRy@~#J7-y>pFwQ}~ zDhh6P^-1B?mrK~ToP|bWD4aTy1~^qOm%P~l!0{-JDj#z}-@Uve2Ss(N<{8}tD!5<; zAFTnMAN~9oU;O8W3{1iesg?G)12QCfx%9(Bd}*Wtg^r=nH-W?@OJHh%i8FqzMh&J|&RP26auhvYdm)lL`!eGJ z&1PhHIEOF45WZ*(MfR)645PKW4{*e5O@Q_PC5Mg2aoKT%R-T2WOZkqBm$Gt6LTn9m z#=%ow(_vg|@z>O^4ap0BR&Q9+m!2Maly_MpJ%b}dDcwpsq%o=F^8`cwN(U%gS0AJcG_*PMbOk(wEO^s_=WzpXIs*o%5+CX2yd+&FYraEYP5 zrNUvh>eG{DP|Z8*17B)n?w*y=9Ycc>awDyNQtkpbm1QEbndfF2 zSmsl><)r((*6ymu6S-`iZEtyU4*cHXtROsd@WWfx$p3>O&Hg(KX^WObb!~3XT1H)4 zBV;AOs?G3T*x^&GY$Pe^K_=pR{Z~Du!4mwao8|WR0s<__v`tUa>|ZS=+Bw&K=mg2( zx(raM6XnV5gds^BmzXy^7dbQGX4(wCCq=u8=g+yP(t_ zkY(aZzO|D+|L6ODYn`kGect`l287&M6)y~G=Rl9|^q$zSi#jOSc#+X03ON5OX@;qkj)kU@u2V&%f{59#B?bIWoqt;{rY|yT;%-pqzKjOV!bUwn}ZYsvCL}?Er|O*H_b{d|KeQkX6JmyDmvD)2}feZT=$qvM-)nj1w+-+;S94{TwnG8er%AN?9Z$@6O2yWN^>JKN7r%Dsvb^KX#BFWe z`*`H#pk2aYt)E^W3iJzUufV_Lh=X+5l^+P2;sDtvvpS*mkiDlFGf7MP{C-$q$?LbW z7oQiu=0LgMKbz=Kc*jPxI;)~mlW6Ej6>!$Mm<<~<5Ki|(n=`?o%)Fj#B^RNP%<)lC z^v@L=YZ>nNypSNvTQ$IjeO#;R@<{ z!70Q#_@K#qqP-JC6_fYIaCOdA@o_k+HcM{JZbY$B;@y(LF2m@hqQ)A*S{x zgG>3$64Q0(+W4#wEa21-;1K=`_yyF0N_|!YG?P;pE%t7`*U=us=difsRc#v_dX5p- zSj8C!MD5m1!Y%8j`Hgh2FZE=B$$ z7vO)9h-g#kejxX2bS6ZEn=ExwuyvSioQxwFZ1tAKw&N(;vh|?ULF-vT;f%+9Jlxu@ z_$&mEeK`j%aFX#65r9LT&4O<$f69rwU9mC(ICT2evXyC7_TLrkW0MhUX6C{0M&92V zuiQyVI}Z0cmm~Pf4-=`7WLi@XKFTry)S3%g6#2tyde?yMa>6dA0e5%p=jVEXe!`y~ zExS8l*bF(j4FFW+)g43t&wo}qVtWms_q`E+XZT^}h<-G9HOZ?J*9C#rAJU7^fG~oL zmM8$4zJVZD30i4nI?d0!-qAA>?;TI=xe^aBqveu3br4h_c(ady1x z^C~wU*%4G+<|vVnmAuP5Lqq#yR><07I#A|Hk}iGQs`SNG;4Y-B&_HGV3v}w!Bu6vi z2m9+0U1Rl^y|52jJE!|M)u|Z3T=)<_^s#R5dl6OKe2A{4iS{9lGc*ff_hmj8gwprO z^frJLa9vCsY=%O4C8>L!W>q}BVtXp7L&|X(_CE1uwr&F-g=jQctD)5y-|K5=CSs&P zvNt~-9S?H7D10ekH3}|5uhG9mcbe<2xEqO9(w^hRkCZ92?l5of9gLuHV5A2J51ocx zk8@ooiXSPKvT=;2M0bg2fitEwgJFG1dW_`PZ^QAm(n~5`XfjF-TPSw9lQ_?ekJ7NMD0c6iCi~eW z#0r|RM=aqK1#DMllb5hhd`wXsnO&Rgc4gobj;q=@ zbb_Ka@Y^5;?$4*7xStXT|J)*@T;OeWYHR6%Ki%YxC;eH!Pry%e1M_Xf@(14oeu$^L z1@?^D8olepZd>^N?DF0+!|y)!o0tpNRD*hiZ+-~phsToPx|2qt*%3x8_)0oLK``{S z1w~Mg+m+0O?5{yRl$Zxf*1TfV)7V>mcjWE$Q*T>$WmQNYdgdZSaWlD<6w{-e?WqkP z14oQ&dN1nAzXtT10_b0u`9=J>1lv4?OR76$&olxrBqRitnuSE>8QuMG*b)6;V$H0b zJ2mE~(WHi!v=#%G0Kgg5r1|`-|4bGJYyg~*yt~>9;`=Aq^)(BDOF278uaV8FW)K&W zXg`_3O_e^fXGMtD(0iHGU#;WK6B6z_24mpOg(2a+{u`n#Pe`*PqjTKsOyR)yN2e;> zhn@K+8(yH0>OC5MLYRf(dg3A=Tf~{?kK5{0ggj%(7}Ch0bVZ8isQS$naWt(=N;NbF2DG74>UU|njKgp&~GS*e7AX9Su zK^OpXKR0cQD?vS9)Q9|Uf_P+(*hb3jVF+ke-o*okD%Vvu_Xlp$MQ_op$$dwq-jbH= z=jN7+DY?7!b;aRq@17PHp?Esb>b)qfZWE!U44zJs;gleR0}brB?trL986Q^vm=tHeq8fY^so?5qgt2ev1n=sl{A;(_JTnw7=ZP+DI4lXzc-tyGYM{hDj6` z15yS~q8+f}ebiM)4^&YU=UDtjZtC%zG=D$X#=Abo3fh-B_>@|TmCb~SVP;bG0z>{M z528qiz+(v5us9iq}}C33$) zDFy)*LlN2*zI2L~GdlPm5pR6zsf(i>{8yE5@>k;}$XPHM^vLBozOXVHujnfDVo1LtIf(?C6jMm#Pg->>)EKL597} zL7=jT@5x-C>%M@Q3^AMjKni$g!b>9PI{;_}P}n#qhV?TmSpgTyIuVhg{!(nUCnEHW zs<_N3W`9ibeewPTc1LmX^W;NlP<<1&U02pG;qKtyUq<@bO486PhSH?tv12Ma)1-Y{rZ z^AKiW5O(Tn(~Bk6bgc}A*Hd72M_l9h)X?B+-Jnoj-h9@c0KtAjRln&u2;}VCHiDp2 zPlwvnuYy4S&UzRD5Li4`yqKVD-NvyI17O6w4eK}(2p31mfT?VnS$?f-EUdy;@hlR> zH4K_+{mI=`;+NjldS~EDeB%*E?i(#NdT$}}0o3|~K0nl0FiJBIlvAPx^hEWA6<1fxI(LH3Y^@R2@&OHk?AGYk=%S1Gz zkHuw!{|c=C4l&*&oNJ~3T4!Q2mHlrVGkA-?OJ1vjLg`;*0akvwfMe_iUjV6Id5kp& z5EHRzv>}-9YaZ!{a9&D?H9zW*jC@U+E|KZ=^IJi;C-Td|^wZ9WneskUR;78UsjFMo zoB%HYiin!0BI2*{JN18xi2sIv+5r61KU*^kTf$6TVY*ldAf9b4iVv{ieoi>fu@o}% zvE`ge5Jy-@nvc&f<9?*gzRcI_P5>RbG~;6lloJAOuyFe6L-C600!KRjlAjw-j%2%qNd-leHF z0I%A+n;Ir^$F$hh>14D_28ia~wp2k2fKZJf%yJ4#n1S@~LU;&NMyZl+QnVYOv#)W`{qW#iSDiYkLMH5xOxTJu zKB%nh=@k9bj~vm9_+bvh`|RD8j$M1ld<5Y|LHZ)Ljs;u)hVa~_pF?zL>H)p z+MJdT9K;8WXyYrr1gbF~(PazbF^kaxG%_rMugC+sd09UH@a171EL+hJ_eY!@1Y*C7 z+FA|JNbDEYdTkt|K?EASsjjmRkJ~Ojl7Ss1s%pO!Ceud%)9Q8gNrVRELrlmGh13fm zur8u#=y_)1eY=);W5u7P>0L@zWO1}()E&c?IhNPRGan*UP>pkKt;O&$izzrrxzh#n zCeN%Gw^cXk6Yfcwwj{p3=S!GZvWj^9RnGg;v3zx_=ZaHMXwepJ)LRN8PUOY@4)y%!bp*5u&_8S8v}SfKGdLJd0y$jBRhD*u;c z-zWei`+sMG+ou7-Tcair`xkKD@x)|>l1jvg3@<-RihpGf_t6P8@JNQGnz5IIoSXWmC*L+XuTMyz<=t za8MSIWx?0{>+POA^RhozyH-BLr@LHCr|_Oxj82<)-K;08vwOHJl3>&v@H~E_VXZGs zc$D>%X}fOQ6(g~M^#C}IbN1sCj?*TKZYKA{j7FS*imUthTPtWbac88!zb_6|wn3Ev zhpYA^z*EKh5T%q5{Ohm<%XOyZA3n_Dy$d{~ir5b%7Ak-fho`+F)w;d1%#$p55*T@? z|08f{1}xebtmv!7;E##R67n)Xo9!HTlhFxR(#NS;!~s982h!F*f)nNtC>qXjSJXR4 z(MGhhA6rykl@{K>+mGP%UYzu?vFTyuXhj}rn0L%fgnwqcNocq9qiZ^4ae48_rwgs9 zV?$#D$ktvPaSaZ%{oR#2FD|!Y@%uqnk@R2jON4w4S*R6UkFUfb3zJH!yf-~z; zEdFp^V1~;`XOX;N7)?BPgO7yjn8bqe>ck~D=)@YH`;-}chUbW*gd47s$dQ92Gv4^1 z$ZFiZu?2NzPOD}jkU0Pz&f$rNyXYMs`lqpbmRm@Pl{Pg`3-Riv5_M~w^y2G0dgbpig;TsSL%tz%bSs$YW=%U`mG zpU8mRO_CGcOuFEk3`6J7pTX*RHSe=3V+YZM8t5k5(Q7eK#w|%a^*2w#TOZ6hVn9>< zBRJiAsv^DIUw{)&@+pEj8|W{YBfq_7l9vPldyNby5+L0`e>Y05+N-$mIIU=T+Ah^E z;)Hjiu-%oJUKT>~4?89N#7>R!=;v|Qhnt6!2w<4qG%|581-KY;V)!33lrT@O9KI8t zVK;wLVF>)Y3InG&xek;f5b7#tFUNP8Vz!!y4gp;w&04+K6N*DBeRNUPo z%!BGd4uyGe?-6g>&^gecPv_Tu1S2+(TSc?8Bem}7XWm_+;$@0i_{Z~;134-`?>33m zzlU%n5W)xE!*@*$1UP7z(}>hdM&Yr=4zySO-7Vz3aBnYsfYq!Mqa6IWMg3i_83%+V zEgu2LF_4)7%E$yzM%ILg3>k2vnS{KK016+Pv<6FQC1OH8aTcI>y7g_1qZF)n>1wL^ z5U;*5*OIqmSq?D*qeAi?TUFxxa_wRMh18-gZ}*INV}Q8q%jrBlKe(FlS`!lge3wn| zpwzclvEjo4U$lIwr(q!UWs2r4EO=7iBwhw+R9x!mkPi&}F^dG|J^xCtmEN`Q`k3B3$PO(u<7g@gu1JWC7qY4qrVLqCiXv z5jQ(zM|kW1?ZpqW7wsi2@JvkGq~pd>YTq%DKG*-w{2~0IKZN=JCH8^@!feRH$k!9H z$$eK%t+V_$p}xSa7@6Y=vprJ8Q?o%NWsr<*3iP)Cg{gl+VZ2PN%)wVvg0}*&u8jps zg=!#i0BS2+ptb^`6#_!5`oPq0Qjpy0dq5Lh>%C=%r^_Fg#73%=oYBRm+MDERM-pld zMC9`$<#Kbi82IKqD{u<}fXCQpZ9wS)Ss4(B7VB9iDd((0W5`sf2M9W*Y+I&Xm#M)fsew>%H!tat=?SSy`$AufMB5rYk&dXH>~z*ktJa_cLBs zgIY2Et?nxziLvo!eFJcWDAV;;&IJi% zTr6oZF>EcwOWOPI2TUByn4FA)m<5S(n{vAsCSDLo4 zPE3hDueusX>!gvt<^T?^;BJ+C^Aj7-WqxzvVfn(WdJ1g4n~dg)tdrj*;ADi*6H{JE z9v;EhS2~h;J))~ZB3gKZv48V~VQG<$)|^#53*(qO3eeyPkH(d0cJqb=bDtkmn> zFBkoH-W<$>z>f<`B_HnP^%9DDid}C@JtQANQbMb5`E=8QBYz?chN=?jkR_D;8r)Vd z)-!CZ~r!+a54cv2fyY@UR)p* zP*Z&L`v;U-N0SbP&aT@J7nJPo5}xudOkSL&-bY+rnZcUtx;8`RkUszs#GE=7h2cnebR#v(nh$7p{Dku@4& zsc?(b@1U^s_E#v(hIWr#SnQhSh-m*vsBaxwY(tE&QP-W{9T%x4egY;VY&2**?@8w2 zaA81);fSb}{ft8?js7g?XZ9nhS7^PtqEVxDOlc8L@qS-Q`l^o#@wVNdgd(-;pIO+u0f0*;+UmN3c!ElrL{H7EN&N>+keow^F_sEi%L8y9rQtel2R0@x_TWoMt819d^ zD`C*cdBfnbDSR{xdq5IoW?bN+7_&c6ScJJaBGLR64NWL}oB3b_a1)T6T+&>|)SpJ< z;_7W?2wJ?ZB+tx;m6enNz+w@Ty=gmc4}+Pt?d?!eUy5$K`V|BX4Z=)OUxX+Eb{Sn= zR%YwPHZVK)+qI9}a;1WNBugj^os^FT49}u2dA{jXFJ|q35)*_Puf^)_3#&hONfU)M z*^VUuT>8x;48Sv@rfyM`G<|Na9w2UzxhthL*jNuYahUYKLhG8k$lAfFSnCG?E-#As zJw~DvPw4p*RYCmZCgv{P$atYMURHw%4vf52ia0n0ug%pE0BeL#d_VxiyiM}uQ1H`l zGzEG<3~El8MoK1)T0BGrd$xksH%%L&Sc%Z?ZH^{9&U zB{qO5lZ(6ENx>Dr>`T}OO^-DF!;|>%Kbp{!TTqgNj%a;IIv6S}EPQ-J_$cM0E396o ziEKe=fkw)QmzJjGu{T_A+Rh>iek+yQ5H!g45ZHcLX6Y%Hn+Ng2%uu|Zs$}Z!*{Us#C0MQ z@{$Lk5ISkGM-;=)o4b5H-(H+*>PnfxzzHrzv@7aiHCa+rW9&~UQo_;#^?bG!2%tM@ z+Dd7rpRq{D14zAOH@df7%qpu=8f%^KXWYW}A+YxHp`wk+;e40?nU=LH)ZF z-`&vawE$lS z#ntFn_EhSkjdEv8$YM@MpXk4tm6jRbu8HNM6Tw1L<{4^Z14dI{Qf%gcYog~{A)N-wwXWv2e?)CF` z#QH(W(Y+rd(9gc=J~;BT5YTF8s6&D0;5>@cjb!{Ih9&p{x|a}1r^S73pxMpcJ+hPj z)Tr{XT9X&|a?AIauH6y_u7!N_%4MHi|H6p-jV1neZ~<4(6zPmpStQXn&~k*nzc7D6 z0?@gDLvWfx(J4cfX=MwFe;aRoTCi`z|K9RIA|u8_^5+k+$6Ck^_Ix3-zW;%nr;zw% z)OJCfm?W4?23sP$@b}fwA!ZgkhD-Bx*T9~^x~}miIo9L;VrHuZaWI*!4GqGkAD-iv z8LL*RKHyn-hk)({C*pP4U76PfpvoHxr>O95w+#c}6@%VCTZ0<^456#^!j1p*M2IQ6 zDfiUUC&b0kMRq}BS@NNgM{emSvY97g>FEgu#Iw#W?l|l(t^I&c;nBRzl)JSqfYwjk z;@H&6$QH z91>c}#KQUWxx=$5pIdE&5-MibRh&6Ho9qy!&&dOL#Qfv-rEYIC)P_#tkF1||8J^UBNhyd4P8D*Xj4%{l+-fD&_r_=+QY#Y3`P?IcjS#xnP1ki*tLfDuuvX(*U827!4<# z&o1&}@6}`=6gXHs1B*zTUn;iA{xxb3=;QSGh1GbPCWkl!0aG(;_Xt!Cd%pbl6R!aJ z8|J?7(ej}?k^g2X<#akyE%1-saNXJ*Gl?>7FO}zpwki2+7_>SHg5?ng)$QsW+pp@7 zTWW;=mN8wBpIUOHdJFW!yzVfRPrCXi-dG8h`OI!Nf|SBKYOzq5Y{m65-GO4sN7r%5 zmkoPS5JpW6Qe5&}MX_k(d&pPp*)9E-f2MIQ{O^%NoT@akLho*!SCvf3|B_anZQt!t z>jJs__M4fu@@1vDL5}wUbGE&}MJhf!n_cYo>d%Di^8D%TQJbu;tu9;q(*kM@stmph zQZg|=-O!%QtgMrG;B03uFPI$w@6Jxy5#e$eMDlV?ieZ?;f*pm!$IW(WhfMvo&*x1;o zJ{w?H$+g+`+eW=2akHkU<}09wz}&oSSjN0n)8*@KND=6j#I0WAx9Vj_+}bB zT0?jcRt{pOjTFP*y@0S_ItZ(V({h>PrC4iJf!CiQ+v{_;(x=t&#iN2lyYx~f+{lnGm>KMB|e~xaX$k$>1L?t*(jc4ib zX}?M$67MkBd7IGc>z#T&)%09DTZO(pI_=ibSa=%20qPtaJ?Y}Iir1N7GeNGECT{b| zU!Bu9|GPhkca7Wcfoab%&i=*kg8Q)o3(RPen<1dkkWbX_*&LwUsCobRepxV#d>{U> ze#JNF{p0Nm8Id!z2e4sLTWJn#0IPBv;>{>UntOJml@H-16@g&zU@I?BVF%Z-@$taBcb_U|$Q|Br{4<0EEz zACRW`DnmFV=bzJv)nH}A+B-V)7>zdtb9_$tU{4D<(it&4StRKrd z%*<1qjR)-4Xexw1KPmgk{Et0|G?;0tU-rY5kC4}F_CT(#t~M<$)2YAxb@mC7(+#TH z-Q7Kjlhk3ppLT!t==%vch(X0nd_`|exiKgN>BI)z_xvaYKkkQjcGA>Zj_LZ{fDPt; zo(jWBNlDtHH&Y<>Yc`wQDgyTk6by`5qWgWzo1j!siyPjYLL50sPWDsB@vzhGhkmC6CG^rk`q-K4Nc%jQbl+}zw9<6B~= zzsa0$ul_3MuV7fRX)?v^SftivOlrGlN~u=8X>Lx%wT`6RLCS#|g^Zntkuus-7o5*! zsN8SOHxHJTEl>~`85`=_uqntLq;|`4l+qJC8na9T3gS54QomF3*#FG?mC9D<$3^bf zuZXiz8AEU3685+g-ucwj)EM#+?j6>ERYV4G61>93(5IrGxBe3?;@#?t!7qyh*-*c-*8tvh| zY7%Def;Oy-D`(b^CS%9ZtOu`Sb z*T)2+_-9oI7WjVcV{)7UZ57ESl!6TuZo;}~*IN+Ivbl^n-rG~-SVu-cK?iKLqW`s$!d@X2%DsR?~{sfpy#2!2Itb6!W>B1K6=LifA zE3*?#brBkH47bPPzUDUk(gV;mf|B`HUqDE-=FDdx8K@XZUn#CWSebqF|Mn)wmmb^x zWgs-TrfekmiQ$#KynV~Qk89g0<$g^qID}k8Pk;Q8r*m*A{QY*(;M7AYriCoBd!2jN z@vTq$s?#ftXS(F*a-%GLWfya^ADfHym4-H{)}A<5ukV=I58SZd0&Q=GYq~)E*^dor zj6j1_g@96Re)Yh8xfiU(t+GG(sQ@!~{zuGss)Sdw;n=x|8vz0wp>b(tb(>V?qBxq7 z48+8mFQzkygv?n%DCauJ`1VxUgRO(XS~dRgrEk^IA#B>sShlx=PtA@=O-dM8p(TFq zHsdjSmfS2oZ0tZ*0Wm z)9?U`xSJp-6?O4@F(N(P_{$v>yuK;@$*ryV8Cpz2LJiwG7QUWqDpy!+*P%|w)?_nC8# z5id)utL++v$5foko53i`hepjt#baLG&4L3aDr)#SFeg~{yJe%Jqca{z7=%EHo(x?% z-u~}?jdjkvU@!M`N=i!4+c%e0NVj_JB^2&Q%LgT?Q%YLHC$nu;nA-no(nz*3)<@Cf zHa3KjUyqV{TUx`kBb!w08-@o2PxAzO2z=m@wOdW!(jx^#Mzqm#*5S%WI7r5aGk zIwBffxoiL2Ytd42GHKrdppn5 z6OFm%&LIO*t>gm1JHEJplu~YQZ|4?no<^xaIzJHM<2Rta5a_4O`*mNG-#`*<{GaB0 zYC+gch3Ws;JMwy_Q9gO6Xk1$6@u^O;k0a*@69-zc@Hic3-r(q(#knZkME@*7nyKS< z*-CWRyVt}|#0*6+>N}wsT1k%DhqG(_3?MSLtBWWT%;M-zrfB)Ue+|L=3VG(6un;x~ z=-nZe*OuXsViFpUd?6!FZmxr%A}s9%C5$sS&R?z(-HWMCj*<_`fT=++DD42$qemEe zSviRX!O8D3e|`CetT+EN&m^f7Euv@>hMvBNGesS$qkJUn#7nnr_&h&@f9;TTF+M?$ z{fHSWLp?Hoy+m8bc)AFsi*NQ2HYWzDqjoDz6IzlU!APkA%o}7JdBza}I5z@%58s$dLQXAu=M@p1Gc|H$SE#?Q4M@u8=u>=-QaNJqC!i?r!$ zz~8DXGYRQy09CE`1-a?rTu3+XpmK7GO&lICdDrG%*j{g2C{X-7X{n&692%w@zPAe7 z%9e4<02_mIQrM=xx>kNyhx3Bp&i_S%4xvlY0Y}f-(DVUE*5bSHUA)+1Qb{M*17cI% z{_3AYRSI$+q=mWQ^s)1p7VEIW2=}cWb!>NXseodO>hVDE;vj`vm4P_s*nR=_K;Iwm zD`x$(XM~E1_iZw5=nQrawA1%r+>5F;7~VY%k!_FW#6_Q@5ijrF8#(}YVEC1{w=xJn zttnnDxfV2+i!6|wbw_LzmzBXiyI}lJ3(Nc!+IuV_qVTyI^Fd18%8f4>_6cHCH|tRx zPTNCf4HE$VrKXmsDDE$b)${j7bZu^=)vmJ+0bB2k@BgBoB0kF}o3{5K(D!OvT%lwO ze3$xD826jNJZtByf|y2Pa4~~oxICMh84J~y(Qethxq_Eq&>$ogFC=LmU-H*w%H>b) zN#d{{ZK|@e-qLvo90z&TUMAq@yH-|laxcXy!=Ss-Ak_#8GRNeD;i%k_z9z4YZ-=5D zH(yOXoi11WDtFFLeDBxR>DC76iNoJbZA*dih3>ZT+FQOdfF0aWt3v$H%)W^1Uhke*YOq6~PSriC?AJGdlEZP!f?312nVYM*AJ<&l`UcKzQrL3Il8tu76+EBJ@?gJZ!52v~olfzZVGAEaLt#Wq!eL zm%p$Iyrw&CzPE;gt{T-1a*P6iHLEDTjb7T118~5KhsnWL%lG-mR@A&Jv2c^eTci*| zW2|4_c+xS+KaH26WoBN&4-N4Cz{G{d3=VkJ+r=fnkCo{xG3ys~hEc;$p*(F2gTl-u z1}q2-Drrrxc*DC%+}DD3+Teo%O?6m*D8R9 z@GJ3|&yZZD!ftg295gXl1*|7{H>S(zwS@%`z691d4)I53wUJAkJzJpWZ)l<|-fKCw zT7V4`^F!RaxiK_!@@VT@n|MGlrIY52a-0-QOI*wqA^j#|Az=llL`2H(4EMpeoml4fY8QMLpTU;#5N z2gm!7j4TDPz4&AUQ!G%z0^A9bPpa!wZg#v341B|jY&g86Ukdx_`ZezQEe;prGne+) zK28X+#djBgB+FmaB0T%wxnk82fI9&3Ef(=+_$Z+T4U54(rsSk^@t&BDNs9;zzAU@t zhl3~kgT--W>^`0X9W z2!KrT zVbs^lx6}gZj@S1y@$TD62hWi)zf_frHC;%95nb$hQ_<7WNd)}Y0Z`45tje&z)b;~# z0Gnp`LCLI-3jj@~FZ6kIxoSId!7EsS8>A!De>}98T6RmU9^VgI7Z0tnc5uu;8+NdX zoLDe+^6ApLu|X8P{?M*oJj5|hN`Cv}^?1a~%msXliwJoH+U9xvxPEF{WoJt^xaKoQ z$2nwEMuUo%S{h0Nh5;6PmbD}T1TS=6tuKC`SQ~4m&(FySsBQZQ%+8EzeVp;Y@e|LS8L9R}Zrm$--|5%b>#?sU@wQHzY-UBzeqk1skq*&s$yR@9j`zG?0 zf0@MVXQi&c3^F4k7hDEgs@57XZrS;iBm8CY37B1y7_&ZLqCy1vMq@2QLZD=8uXm<8 zB+W+7>S(o%+c2LVPd+_9Ig8PDqElrcbU7X#%;V3T4j%q`&RJWXXxRO@jKcol^_}uk z*S355gI5?6!Bs2^DrCvBu<7wAHV|rAGF@uLP8bc@SQdDbetK&86E=*4__zCoA?deo z+L$ji@Vx^kh0C(POMY+>YMuKkA+PuKb5Ki0)sh&_rB1)3+2!p>)`)2yw|ivo>W}Be zp4T%Z{-!Bu$6KPqb+4&)+A!$f-ACb_?q>HU+`XFHdfd)%P|jI)Uun^-a)yWRLRzfzUHIs8wRCm=C7VWR zZqK1PbfxVY2T4_C_hBiDgNlIxVN~o&cz%BV&r0j#nh=1_IYh<{KEi))wM+c$xTNHxmFTplP`jIg<+W!gF~rL52uO+obc4b zF7wKZ=0tqgD1%~{stJrI*Eo8Q3j{qA>d^mlwwGU z3d7OdV++tf7j;76)XhCt;T`{B(NS#HSLZ@&t!Hy7Zbn9d*dhNw#4ARSaD9~^*t#j;8=_d^twnQ1xap1JviG|hh5ipY~9%&oY z7vyqx<_(e4_9(btueZILrYWt(UrMmlbolkogU-|8;cTguGfn7t?b0hr;MliiP>)r0 z`{tQNv65B_^W3HfazcT$Tr`%%i?wy#AJ`d+yYU)k)u_*DFGk)c8xMF0KuL#~in;Tq z7C)T{44(^H47y=fD$NaZk$@A#v);eOO+@~pQ;hPw&s%5jbAr1b@?@G4@kz3FZ%11W zQfHiOt){!C%}mQQPqXNqdbQHr@vXHd=(#K`!9G?xo`z|J>P`6Voe2z>R7F4LAAEfnNs%JUNvb=Q9DV$N< z%qIkA3{wQdSD%mhqeGDV1ZS|a*I6bMgshmNNu9u8&#~}y>B*kR&p$;_$q!}-*q1tkeYq48Y~6qjN*&`-hAkOiyk7e5IET6Qm#^mTdazt z{}b+^W;?%pE`0t&pK`4e`4YRF_)>#xPACH{dgJ3w@grL>8gVvS@oY<2HOzi~yoKIO zMJV)VD`x*Xr!p_YAJ&YF3~wfqM0xRQmuCuNpNpsPOTJwrt}C^n-Jfxv1>Z4z zh&yYN9Y}WwJES!yb^LcNzzWw=8)3MebY1l1`~6G0)UrWDP>ty^n?>~v9$&t%>;L{T zZ((D$2H}BIN1@f@C^fG=(3E(2Ni}RjYuM7|a}7cel%Y4`WS`psZz{Fwqx-YSFe4}1 zR6X|zwNXj4Y+Mxr=Ce#qYy~ag`M2KVN9m#1433hB@fK%sH0;Apg!r*QJL1A_o}KZl zVAt2F&ELPL=C=>gAusD1MD26;1@VLPOEEK{R8~pIOuM1*V$1N4w19n1MX==1YpoXI zIWsobAcC7@K6K^tjAE>1A)SbxjZLg$!5Q7rExwH?5%h-cl2ct&Ayf$Z7K&qz3wR&C z#$2iN&d7+RJH?eAfn;sBwQ!-y_BI}hs?4-}3ErEiEG=W>^Pj~0)p{h&q=+P0Rr#Lp zG!A~tMu9X&J=*gLEn+j%Mw&#lJ)%Od4y5lxYAoAI$ef0+(1KEBv!!Ldh15=HP>($g z{1B`>o(B@JN^Cbd6maFRu6u8n{OlKlq0R9oMo(eSzue@~L<^)n-*%In5V>wWhlx;9|FbGglO z$qG`U#cdLiQ?3&5pg$HEFwi9WOK!haYaT4eAW;$`HP+)Xw!VKI28rZ=gOE_ymj??A zV%)6wgnsFiv_>+h$hC^!idUAqzcu(Z#xnIoj=j6zGaiYOG&(;DpGm${S}J0?!f$rj zr7x?4okUpcleeZ1~Q;(UNnh`~XGz!8^*Mk!_eG4Uzeaiab zffsz0D~RCnlq^W-rL@21T0yW(2;5EF398z#rM=8_2p%)-ql@rvFx4yzN5@+YfrwuJ z4L}GRN3-M-xV(Le!SuF@<&)~g(YDJNr}G>G2&N`z{Cl4k7A%`wA&nHsM*$XhL~t@`?e zNWB)1GRsvNws|zU)IJsAZZ=%CDg5d;*RJGBpTV@q<8IR15oH8#{kFT4oYhIJI6CjM zX153?&5qb3qLh=-%4?@kiT-LerQY6x;YE}$K@w|!9li<4-fhFHQY;3Q1ku5pzb6_b zzq5-$Up8T+alRl)vYkWH>)jHy_RfZbyk2w@^T0uV!{;FW!Kjs2ukBBqQ6BeBXlfx( zbQ%dlgi3I-3~mJ(ySUorlb)}%cY#C8f@K++%daKE=7<#)?;#kxG z`9eDDU4^Zq$SY}6saNMx%vZf*a0P=3@f@)PFEAQ`UzHRB6=u=jzxuS(9Tfsyq*ad% zfc7{27O7EdaF50L?xz)EO@6C5EA(@d{BI26-Pq(}DCUppg2@i%w*LrX@XWMO)3d~_ z2A5E{Px?NlNwtOxFGSc0>(R6zL-V3TZf0HQk_u1i*2csq^ zixnMD9bbXkyz9Vdv}ENVmpfEqGAK?0TL=z*#Wx~3eb;bRSNHw4XUS^9jrgRJ^e&rsX@_kd0Y5 z5UX5dCC)cFgX7SHm1p3pB*RamtvAUyzR2|Z(h~_VlK5~@vc<4{zJ-3S62q*6pZQQ% z61XXsO8V@ZW?&iZ>*CVGx35{Q;%Pq0@DF|AE3|KdOYGQRjIAn1--Xr5FMP$6@_EiN7RMB1N1%C5P{ zI5Wsk6#BUcX@!37E+Qorht;iGzU#$)*mc!A$+zPD7RMdQg6Z4AhGtT8S<95F+XbuZ zbyE+VwY4Vq%4~C5egVuJ&@c>jBDRdH%@3B3$@43n1yVd{`No4P*yjLed7M&BXqPAG_9JjH`hh>m7^MpNb$$$b6H^#w@A~7dRi$%m;+=UvA zU-*0(3O?HJVS0Grshw7rV#23#RzXVgbIx2ziv998uLuYC=7!pKO62?|^=uAtCcEjm zeundkr6rWaYFF`-ra1oJN$NLb*T;oj6r)lxQM@}fQ8LpW1HQ4~^Ib)Rl(JS4Fnb^P zi4~ja`c&7zx_Mm+SlBi9_JtqM(r^S{AO8vVlQJQF`0Iv0j-pdmp5N!xlE;0D?0#g6 zPw@Wp+SdZX!c9ICpE4rMp$|p}`sf&6hz+YY(kxS)_T_zr!P(B{VFKlsi}7n#GZ54w z32%K@1x}2?i-$vKbE^xHu$T351L|%`90f~>8KTH-;1Abgjp_oM6~ug_2pM`KPp&Af z9l6@z?Jmno&rRq-Rb}%#Q>C#^iC7t-**h6$0=H<^w-tNGIYW;xjuF5Bt3LS8g%J!6 zr<58FW^{GYA@adw$DU~LK6A!xh~TaGtqAPBb$}=2V7>aJ0__o-nK^Gn{0Yar;qpno z3g_-)+N@8nD44&SGQug{Jn8``!MsiC!K0}uiB7CHJCpicji!G zp!9CNdPEIPps}v*A8q4--~O~zELc0Up>P!OMBh9~|%^=pjA`uoP^!yryolGV@1!X@N`Bc;seJwDi zbUpCdtriB3i!vTpN-0YxuB;1wQVy;thHCe{yhQQaQYqhvOA=KXKMh2dZ`x_CKasx) zRsS+N%4hk?gTB*%kIcmXArw`ITlkF@)Dyd|wa71zn_GdWUAS0K`V*JJdS0o0;YLSx zxd&X`D>wp+THWd zFUfo^6AgfX24ZEorSynUXY%k<5?C7AUWB#&c^6LW{UFS;tA>qOQ^FXs9R-WYZqPX$ zS9{kRv8n#J?7`Yh$~d0jVk>nuG?DunmqgW_g4r1UtUAc|%t~a5x5BF0*SJxvc%KsU z=0g-8#Y|q=2wYV_2aEene)Dp)!==riwz+i@&}pXG+}Xb`WmPqgo6&X009D?|)n)CF zALZ-@?@VTwq*=v@_mO%S3Itne_hxGu&(ZT>!TO_AKYAxKKKJ$6k{@Ti+vY+iUJsl-}QHd%Zl9Q}9B}-O!CC-|{l0 zO$yAup4aQQAwWJEVLdLa0F;LqROX+O(@Uu5Hue*@s!qba@9K+%8wk-~?A(T&gKSM( zg{0&5Dp+)x>1K=Z<+i!dLY6&H140Bi=$5gWOGM3zU#TcD8T%jwuKUJ&R};~sVL8>% zC@1TOWEO-dUBAH=;(>eTHvICQTG_Vn8^=yh!01}uz9hPK^cM=?8Qm^5S*YX@!sO`b zfUz6-S3|8?IgZ{MTV^OydNCRaFN@`Cq`IBC`qYt(A8i{ZUBVnWb7^^L(4+?1qoxC1 z7Kc<#s{=E~>B2RBM8BwVaAfqu2lkbI3T1IlN%iG0j41dbF@NuOucHSyep#@{_oTZt zWA#{FiY4;@AI84%J+3zDH^#(iY}>Zg#x@$Gv2ELGlT6ZBO&X^$8#K0U+h;%5d)^P{ z+xY|Lx@KnId)@1&wfsahKAWMpeZ#I74Iq8~&ggcUpr4Kq`!^&um*a2w< z_~p)o&XThQ!CG@IUfBw5eC{CTTz!V51(e)+!dsxjOIDo?>A=k`uyc@IPQ8 zQpUzz{Qp17#E|J7H&SH&2d{o;xzE!%WeFhMX)N89f5&xqX(R$WlLxmzjU<>@2|#|D zKT^k2asTclD)LtTYXrGt>K;X?;{@16a-)573E*!${pGr+G?GRZt$S3p8>bH;Y|X0o z#>(_o5CELrw)pVFQ4oJU?_dxI@Ksp^rRJjKrS8D~?rR^=K=R8nJ+IJFqcrct3a?ct<7Ij&eqTuf-kUIiyw0z`ifc3A?;X zV<3_ee`o_nh`Q+kPy9o!`PR#Z&~+mcwptGr5Bo$G17x7}cKxo{6(m)QDA1?R9=ffj zxpw{U@bxO-l<7-JgyCr7;l|Ukt($cO49D0Ivf3daU2!RH)|%5!KsqKM*1nFWuTC}o1az0NjjKd?36n}NE4 z>TyUm2b*{;JC?>ayE|WWXv+U;=8rDSpH`9L{A4hT#ZC4gN3MrV6SXVRuYgnJR z);L`WKYkO$;F?DJ+dQyyUGq%?*FZZ|17?`*s|6+p>OT0;uT|L4TF4U6YBYeoewraN){cA9MS-9#6C90wjyd(8~i-jK{s{MJ9Cswk+ zkNnO7fU+v5KPZt=;Y6#Vvat2eCA>N%DK6sOEagei)nJs5_f}N+nVi$lrjvaXc3_~z zA81(DmPvny87`#sJJ%l%Z5Szv$2AO6=@-hLFTp`(AIG$J z)ODl4r)~79_cp7!A^Cn-^b6)5>$J=a2KP!>@Cb|%|A+ZK<6`W-fryENt{78QeEtx$ z+JvjXjh5++Mqj9_X#WJ;3cukLV%{H%lBxKTAEbVuiKttNr6+}rd9F*yk8d)tQVAD- zu9R*suhm0VrWnZT`ruV)bf;T=6jngFFRzpXg3b?*oOBx<*mJU|z0*RkPYHV>m zzHu8r^i%{c=zXECPZnjDb-{Fe#u3Ng1?XNaqH^&+&y9THtVr_zg)U=g=x9mi_P`DQgohAYs)lxjpo*oHK*2R? zXwiBhBVz>Sq$dgoqZ#kQWNHW)g3RAbXqi7(_AkX}`UaVrZ;9_!OWn4x!6;pe%bPJa zqzgQTl_fXP67C%>>H+-drK3mIM;vhvFWQv#7G$NjU*k4Yc zo^hazbSf-mA#e_(kP^M7dbRo|eO7Kp_vpYpruQ<76uBu&Nk30qWt?ZI!uVt2MNFUsWXVbe%2>%NZUFtV8PNcor)KH7wb4>r5-4MoZ`p zYYxtn2z2p$k32}x-!EbfQHE>lNh9u&C)!HW{{@Z6RsD7Ug2RMEHOfY*8lyrga(stF zG|sm9#fDJ^2I*+SUD5v0v=(lN6Zst23abZDnJjLd#EJm=Bvx|WqR)Hw-;~H~t+D~$ z!|W4ZE+LIFCVGjm<^`C|zOy?yM(c>BfuLAlue(95B(AKk_BD7lNcfKqFwRrDq;H@l zxSsH3HG^`yFU;$n#}V{`t(pBIrsf`xqr*guRr2MpUCGhHaYRdYF99ItL{2DXm@b*a zCKMAoF|8fqK;Wt}>MPEUEDQefNVFW@S<299ovEt<*p!E*-a3w|yvp7ldAQjlCJpK% zg(eKr3u}{L96>k);9YaeNlc0LwW<{3`IJ%|*30loWMeI;#Byan^AtfkU){?9&a6=C zaVYft(cB7J$>=DMcq3gUJ8Qz^NrOK_QEhWcnITDAq~V~Q@|8!2c(-+1LgrVZ4FGdj zF+3&SfO8E)>nrgInQgzxE36;B;MNNT^g9+(34ULQAAe~Gr0P_Hl~Jir8MPfPJ`>k8 zUum2|#6r_~gK@0>ujsg&q%1WB!{fzJ&UZ%>Z}bHo93}6?!JqPRB^tC8cN^FhopF5f z#TJ&&^79#BCLxnGTzZFo>Lt(f-m$LIW?4t3))R0NrLC_e)j#hac z_2I(aUD}?{J=Xyqv65UX6pPHim@v<Y*jAKG537~C`EhLdO<`}E*L^0Lziq5O zLMv_0WOpfK4wf)(n(@PYNsju0YaVFH2iBW^q%ZNgL3dq$5+Ae4TN)S%8^eY3xiO0o z5Rptx9GW(7pSf0+f7@UQ-kT^Ja#5I>%;s-E1TTL+V#`f>>JjvZlpJas-D?Dxm{G}1 z7ib4yk#u(-(ri{XT~B-NiE8oJe0xbmf^3ubQQ=OyO75K(Nxj@RVAR|1Ec#PiT#ABN z8vZq!!Nc=gXAVG|>njyJapo!g)N2*%D$KU3q8o)q`a9)k7SOOL6hJ64pYf$yNLkt- z6+(w+@u)$GQlri3A#r@sLoe6{%Q%9OnI;m{tt5|^P ze!>>v%Qfrwgy)j{Vg`_cOLK1A8f`I)DRHPO z-2%A$(Mha+;}(b~;~>CJg@7AB9(c4REc$(=rrzd!{lF>CSF1zVW#62- zS{1Ju(wu=`z21$W}bnGVo2UKhwv3sT) z-9Ogw;_;C32O9MtCU+|wy8+W~jvM_2p6nPrM4lKgJC(R0 zmK%V0Rzi;6g&bNCF2BX=kHfL@8o$fCU-FfwtFU&SmWA1!1tkI!K7I6RIk^N#uftzZH496F!+qC`PmQEFbupK@*k% zU67I}BEs_Lc}oaS>Rr1)2<97`ixyVJ&9SOiC-RnAC_3In?5%%m*}smwkx70dLQ}>y z+OO5$TN+EHuTMc=E(aDZ5ZSEb(W7AH*7CxSS5MGcGKZuW%fzTy;=sR*|L%QBx{1PE zE2DPS=s4NlR}hHaC9dgRT#+f{XvcxIl0RcdgkmLyVbO)P(V@EjxH0OQ5CdxjMMd`{ zRZ#IgNiqmj$$bp&xo#5HNbK&aBn@D>#^R@Yqp*=dT%n0V1iYi-#kwZf^Z%ZZCADF- z^x;c;cOiN`Oq&q}ow-nny_9QJcJExN8VbLPwRCvgizKpUnr-{$gZ+lItZNJ;rsV@A z&BR$)x}KI5e}GZ}$%Z>bsF}pBpnl=}LGl-Ge#y70sd^-J$!H$$*_yl}Dbp~73&$Es zpJe;g|DsGE{zB+JW`qGE;0x$7*a~kihj3n&UGAL&Gs%r|(X@aMy$NEavN7#}qF759 zhEW!~f#3!jbDZYM&j!~7vV#P{!^1yq8V8}`!SNE7jHL`oDI0O5s5UkXIBF4BjT2@P zfT~6EiNTice>&qkpfmn+if6Y5$#4?VS7=tqZuO7oXKCrqZF$cDIVA&y1vi+I;Vo7PDJ8CN=Rx<{ zPya5ymBm4bNHscOy3-i3?jZ=OP9}xiLDu^NqX|Ff& zKmcQy0vx8fDXPN{x}h;CdZUjTg6!g^arPymI3rpZ-LktW}Eejp<3Mj))A7EKE#qD;ptZ`%24$g$+hHlO-^5rHgL#i?rs$Na#kQ6>vT~|l$S(8PV3Qw&rLa5Pw5Q=UGOoDF;(p%5wY&t( z{t%2Gd29d5eyb7X5<1$mMdRc}bSW)VkvCiXC`$lv&5`YG8=wwK4GoLjc)|bm0zg)k zugj&6R4pkLgVe}8eE9l77-Qp>hYW;At$ukXDrIqW1<6<$6=M7>7ys%6_L!B2rN?HS z!l<5iMz;L8(vCL?_ree9zhWhg2w4~9q`MldG-IQ}Q#g`7j(1C51lg zPdABA&BDIkE~kMp)wtI#PNY^h#ly(r!FaR^QXFZcn~XzOnQ5Kl_IA12Qaaj4d`U0VqhhY~Oj=&x9)H6+8FNcVr%U7wP>6{O zH}wdsf=5KW1Q3cFEx!qYL;s=B7#f_^fty8G^ulCuy|*g;QTW{cn#@qB0eMVg#Me6! z(VzRgW*Y-Ehd#vuWU;IhEDsSH|05Zl(XEX*qi?hI#ssm4W6ZG z(5o|%=`3*kK{XUZ55gNin><`OL^Z76lo9)F>Fi5Ng0{|{4N0hI&TV`68B3hb#P zTN+6p#lXY_v1G<3iag`JJe-lL)G08eZ-=6Zim9rSH`%YC28sp>{n`HtxPc*a1D4Di zr?Yqd@ZIJ_fYSY6TVq$%Tju%XxljNL?|p@x@HRwRV}nxk6c- zpPeEBc~7eR99<2M*_jB6UJX!4`6Z(Rt187+$GaaawIwb317SwwLAYCJ z&7KS?0ls3fAzxCtM-zAwb?uZkodNlNPe(vJcuJK5FK6Xw6*&?zyy(Key`LFt4mb}v z)@@Jh0GQZ^bV>0B7eTWH0F;d9Ug*q-q_-|C6AluT?4#){^A+Fg5?BiJevl^!t=-_LHd$$7meT9;SLY$a|KG}dG+_irI>3VIW` z@#_M%C~?_#Xptm*li5N(uSoi2@3NqhvE27=z8nzei#2)p*mD|-#a#^wDdcl)dCHFg6S2P~cWfCerEt4H<;@Pq*}8|lRq@z4F^_z2l054l z^?m@r%I!fVK72%OkLt~0 zaZzmd2b1^|?8!1EJ<+HA!GiJWh*4kHNe72WDdrL$HX=A&9;G^e4SlpA!kwX zr8L>%7&hHjeY}&kCWOhM_Mm2olJ03$!!p7X(qzcKy#}e8tj55k{nYx;IVq>N5QHHT z^_?9w9?UtF=8cgl@>IWZKm)1&R@jlu#+y^pRmFOal!qc86rod2%R-R+5Yr7Sj}dU- z-*R~zduYuaT&qI%)U_`2cRrqOt$xb+f=BYUwn!Q1ZDoCDZ;snBG-PNv=ilh#z8qbM zY($kn{yY_~J*fGe#iY^UQ)_%+x`9!xh=jHVuHU62$!i}cJV`iq5-Dxni2k)y^b?Eh z*<4mwDTRyun{x$x1T+KX1uiFMu|{#+Psv56-X>`|$i$vQISkX#@T6FLs)*RK-la@m z?lPx7EcAaMJU~1cok_5X1RAIvS*yA2=neRP*YWL*JAi+)EUjAihVA(H#CiJ>(eM7L z^zn9P0xoRC8ZPna=5jYxdHZUJG}358F8w#DmkD>tL{`Fv(A{k4f znlpIN)3bd8!5f(-9(`s!*6xAFWRzam-n9k$FXHa~vuz+qxwEy?a`Ju^l7TXS_J$m3 zXvFEo4fc<@!B5=g>8JW0EVi@g1(O5x7JJhwyud%BXaNi?EVzxEz^2zoR>DIYn1uJu zBa>6U%Av@W@A=aW&1XOvI>guvc?QZ7tdeIl4Zg{k{S`vYjpTj}R1}}7hK8Gj1x!`e z)ub1QKTDqpuZsc$x9O)kHgOjnE7b-MCiOF&Q{NEzNzsGgSLO)uF-qlNad?-mSFDnV zfLS9vxX-nJBAWJb+JxPUE9NT3x zCuWwqPnKxlau4}Wiz6dNQ$tbiFQTXRrmEO zaRMXb`?^j|t$)SVkWr%>R7w={FUQIBu$(!`o|Ww;NqNthoiR%Z=_4~WV1pe7O=K1_ zb#RW82LB!22*rFYyVlbDcbAsXcfr4+mjnY#>9%KhnazjtpWE--3M(1CpQM9fbk0ts zYLnUTzKfH7QK_Z)G9XUh%+Q=rf)t-kl+dsSaNx&bk^U5OS-*r3b5dl?iAN*L^#v@h z<6;4yR@{zLNojY`wDvL`IfUN^K! zHVw5e1sa{52M_oW;Bv4!WSD}Vd`KvIz);8J0e0bLBrDwQZw{4&=;lO;<(hAx5^ssC zerd`Yxv(tmu3#!IWc-hS)WJ|nEQ;qIS@Qe4p(pJ;&&S41mb(93chO-dr!5#78F(!H zqNJ$ZZIXK5TTB~1YmT~ixLjoXJsAbi{H6NU<==asT`is3fJxZ&BX@yScEy<1qT?Zn4AI*!)oQQ$Rju<5!#$^Q}aX#en1h+K6!8B$L4 zT&k>{mZu$N7uAh0RywRv6lrhPjvNvII1-XBRPAcu$}z|z&hrtzdNJ`5+InwnBVagr zHafqajffXrLuc@Py&6I%B~8pU@_8Z<4{z71&= zh_a7JWz)bu@Q(o!l#!D&Xw--mUpGhp1-O^>c=tsSVyoB=^CIM6YLD*=JCk#6A)!C= z(P{caT{Zbq9J)(VeJW-xlrhH$#Vz`Y;;?pKI8mSbo zi!RbpV)K0_dc5dcyewPMaA@R{jb=k??`>376c=MoCR9mg%1ttiEqbRa3$o{MN7;w~ zN~&*D!%7=)cKo|i~ zylDW^vN}5`WAe$GOD^eV4wub_fbKg6U>%~9rTI@doSas!piK~qa(3*9jEFr@aW@y$ ztR^_8Q1Sh`%gI`}zss(1x`yhi{t45_2iwSOP<0dRcc7K!j;i8FF4(yc7rA62bN<(q zi?@l)Mx04=qP0Pg@cH<}=HKv;@%2b@6doZ|a1y*aAWvs9sHTBs51}U{0p@3pHlcf( z%gL5YIcy{Zhb3Hy14OMKaISFX{Ry`TwQ^!t11=Q;^Xtsj==hYBR|zwEZJ;B&o(J6Ne_@`~?>D zF9W5k@6=ix2R}aQg(QTE3<2BMv+({F(XF9T99X5YSv>mJ2*>urVy@cR?cvrw61bp)L4ZbPDv5 z#%a89cQWQA^}=g(n)Lb&$n}SWm1!8fsaCd&Eo5b(SbR_Z3{2I~rL;*E(sEh2D0xAV zKs3c?>=)vHws~{d<#C+dkAn`#VCw8dEHlSgSzQ?v4zzug3#K2$J7rz!LI6r*Og0@0 z>HX zn?tkpn;2!7&iT}JZO#A8_Js%~J=sfyPdOacY;Vy;FS6)pkX+dhuEMLuu_mPxx^`{N z<@~eoG`G;^hi)YYC+pF|`2O!A?JZvMWFr<0y z#CI8oj>se^bmuz0eVP!tVHz0~HgnZ_a5e=tP(dUzYng57@V}q5AKTf~3E3dGrB+MT zJw0KsYgp_zUQ{>_3_ctJt2{|zaX<7viD6qc=h^%`8bQ!#BGZ+b$zHm)-?R?&{@bcy z@p6}nAwM@ZUQ95xZ zzZk>^MHQm8;s6}B+mr}*Ek5o|E`8irBm-y3|IiupeebXn`Pz5(Ntt}`bNBkq=QIQp z+1U{#EB6wg-^CyIO(#kRD6|?ho16$&Ta@eyQPFjnRMJsSG%HaTXg0OQ9jE6=92p1k z8KzTw`~gCR1Mg|Zq`OuZiva#mVA@sLv>k`y7Fp6woEG48`0=ygNICzb1qzN)O+ED_ zbJPNTe{@I^Y3|1_9dRU03hKK%76Z6T&1*Jaz%{u=5%z>&-8MvuYIoH~UM)%PYD(yh z^XJB#48)-D_^{tbxURp7$Z&E^oDZ!K^=YSdPvmh2H@&ZBUoKDaLWCsjQVci|g#-U? z6rl&hk02T%cp^pB&syPto13Jzb%`J7H!LBYgZW{CvOdPJu)foW({v%al>dR(;IaKo zgw@GG_iE0SuD@PxTA?TNWvl_gtJaI4(R+?=xrM~CBjJ6`Y6Ll~w(XOR;~$Wj_vd`0 z&y+<;w=Z3jvk5t)<<`7{Uk{M`CfzjZFXhYwuSHs*Ah+}1p!>zifzImFKv&g;vF7+- zmeUi_Sb!-9mxUfy9%E5~azJ)>N>gn^A4#@LYkDnZ@!i{UG`~XB{yLk2F}c8H82ZzCdAj^-QW+H&ERAYpkr^2~LhFmXilNa8aFyQELGMQ8 z6QUHt4emLsI5lAv+oU&Tk1Up`$uQ6&QLHC3^edqZ?FsXj(N7{TmI&x5sT*e))<}G| zRbF`nalh`fhO3-~R(WpVp)*h(X?()%FOXh{`7LVf(Ox%ed;m~Na%J~}{SPAI04i7O zuCH{W#-#c+p;+nWPW85@8sdGDfGPtx7?Gkqs z7Gj>AL3i!kHD$Z)%&k0GH$t2!>k!@NZ7Ov-H!*(|L7pGOFd60NRN8MSnu{n#7ZnxF zQI#p3DXOk^Rg8#hz)t1M5{*eDO~_3$Tz_IIO=I(NAt%)yS^jnAN65wEWug5gnD*d? zohJwB9b!Q$yo6Y~@obVnKx~nnls^>R5iS6Ps;AJs99qqnx)9vtF(e)1kdi$SsyArj z83S8;;YFNoaQB_U7$@|BBVYIW6ol^F_li@j6rz?(SBDq@HwY7?&d;aOa1 zmpwIFyIO9@%Q%ohv5Z{S-|7QC9XmY%B1**QZ>6eCK(IXg#%s?&w~m{7P7n`xRZZrb zW(;)=k65Gsg8z!keJ526&ib_RvjD8%%j};!D<9L6xgq2FmBxklTg2y$Y!NjQ;@HKZ zJehx1q!PaTuxA}c^{*up5`Z;@0)U_+ZsNaNIFy5!mUN6T~dW$Ro=^g_&^IcTQo%Bb;ObOZ9S-MX2{;X z?to|lBKpQ`6Zb@s92>B5>gX}Ixcq{McZb7a_)VE2l>NOV{0vG5zET38O15_uuR(v= zY0pVyYRhviI(?lKCp=A2Qzo$*A4wt-O-DWr`Ef$+}sw35`H zdO9VKMc(zHd}nFXiHM1_1$4YnIXa1{XwdB3{6p|a7zZR!peY=D_`=_(J**_vml5Uk z^&dghfG{5{;7tMQddIU|>kiU+5ZLQfqZ&&rDHr&ii2blaWIPNTtX@PDzBzqP#5H&S z9b@2+4}u-}QY26auB#4N{-rHohw=FX*+Rn@aoL(@l}`}b020(JwIS+l{f zyElPSgCFmo2Cq+!Lx_SQzA|1wdB6Yg-$HcbbGo)^d3Chw0BoF)jnu!O z-YU-<6?<{X_nOf2-@k@q?V;E|9_et}-trppU2rUKY~&9rS9YM*N5LW+wHkieSZmIA6d%__ zh(_+wR1e1^r0e6;?PzpiO=lliiPIW6=wu#IL5SIa&$O^#{fr)ZTZEqG;C= z7iaZ^x(-~XxLghdKu^aITXl7%gl;e;7kpWXc(b7aHR$TM)trfO!@H)!WMR>Yg_oef zPwORXS&RFd366zkG2qCPrGGJDLochkcyabaz(xCqQ`AsH?5m~+zPL_ogcI1}192$f zP|Rk=#t-Et8y&YS^7Xuu^Y-jr7ichuZF0m%7{u}cH3jtCKUh2zWkaCO6`LIQp(_Wc@C)U&Px9d4iwdFe!~{Xvy{?Prb| zbhe~FzM7h?Xc~hDkn%%_b=Gm{iGe>ud&CJJ+R!L5N5lU@2{p>axYOo1la0IeapwV( z>NI${06!LVjcgOB-dDW5u-$r?Lip{WF|h4Jlw9p^b>WStn$N|bIuBYU*>+g9@{qd@ zLT@r4AhmrUwX?f`+kJu_BxmLsIfC`hq0s7y9OeRv8sJ6{5pg2LXk0GSo4+1bzye!t zY%d+#bR#~dO_y|gZEU0Ww?gt|YJS@ADN?-O@S)FcRcg294Xe75``-;*AK7{IMo6uO zI3`v|PO2>V?LF)=)9}YV5|=ir;m9hZLiA_P1ex=43Jr?|@Y*!$h8%009#-Uy{Ru5;b6zh^gA-rW+ZieNeox%upTuB|hKBikx9M@9T>`CyMSU5b z)M@}4!~L1W-IXNo-nIZ@vC4=n;2g>cVSUhGhcfm5Pg6WC3g;@RQp>i_6#4uc&tpiK z&8~sY;Deb-@due|S2$3d!pMAF=oIN!^w&NUV1yRvJ4EW1O75*QU;f}HO_`KSb2L;2 zh#HNm@DUAh5a=?gq4!w;S_1Pm+4WD7h@kAh_=wgc4J_B24_~%Y`(v7Dp=D3qYco{R;4R?fMQD zbV|j#60-EnqKGvNx^8c>g{|GO5vKyScROw&*|fQ+6zaOIG3CtXx5Cu2aIBP1a)9|F zXXya1Mh^Kd%myoI%=;ss&Blk}+I?vP_Xbp`V3Ay z0v}G>sRs;88w!1(HwF-O&tH-1Q6V6S4%_GmsX|*9Uu#XBM`lhG0Mf8R3bM*gIALkXSi0`hjyi1^VE^00t2=X} z)N3!c@RXw6k%VdSYyzRg+q)^?=!#cFxi`8Oo*e1ES_5C$aFpXPE@Z|wP0pN<*hl!sP8>GN_+COAp3b{42? zjTHFS&;>EUbTgP28^0JJbJ5_)Iz7~G$xvrof$7W2qlRsfk~6O5Mc$j4NSomUE^j2x zPj*b;81i$Ci^th2*Y9wq=nH}_S7ckF=aPQr=TQsO z+TVDttY_L-4YrZmC@YT+Oz0^mWPg{7(+ zqitHIjR)b7tZgOhxgM8lA_8U%QD>K;>r7VxZItSGaNF7AN#krcdU z)KAu(j`<#=^%J*I50(*i->NVPd!Mx%aA{DyJtEv-2aUqclg@2rrV4Q3S9fjPcq1!5 zyiA{UTC+FqjJtDN6PSmZdA6^zzfspEu5tkO5wDAKvZ}Qev6%${m-m>}REoE!$1W>L zCxOwR#3o)H?T@+JOdR;qw5Ed`^YoF^tDM{)fU(~J2i+>SFQ{bp8l<)Px{r*2uS!}L z$HF5d40}gSU`{d|`Pa)IEP;a^nN?~WQF}zB5x-pa zE$Yiq*gNtZ$2Pi&8=cekwOAkyix|nJ$0865om@r#;?f8DK1gJg1<$f1x9_TnLTHM| zx-i~z5)^x6?%F(Dd(Q#E&_IVN74RO_cJX!ASSWPl&DVszO)Pe0zI)kONL2wa1e5}qzb>Jx&A?b%0qW)MOIXV!$amRMLTuU|0rcchT3P5*cC=A=%_}a2Iir= ze4IlD&f#hbC2ayb7Ur9!J5vhjUj(#oRX{T9PZ`3I~;FP_Hv z8r<4muzI~7QaZ+6CE(;hP`Zq4or`jZTd-)RA(0qMduPoU~mK~y3j4_Hs@`WU66ohvbq zIv!`y%6aS;$d5H*`q>e>4pcSH*5K@y`77H8KRK0G7#<#WL#mqqsbai#3P??DTWiqq zdUzkMSTY;j`;DV`5AH>uiovAgivbDlyYqTfK7RP86SXom66UvY4R&O63{|7u&-h9zMea@4tP5K;e7d9~ITu1V8rKKyS`>6I$5 zJ4HF{`?O_+j%G2wpGCMr3Nrz1-yd^)ku}xC-@HMSL{qZUU7{Ojv7fIn+aMaw6ezD5 z71;#w!s>^#ta=@QsYzIBsCk_Oxk?^2q9u|Jt#?Q{^UqOnsjz0nI-hZ{)CsQEf{nEa z6aZY}@v~*f86c)eoPW)OlwU-CH5v2nI0KU9n$HPy%f8D^yG)!A)Lx1iF-!7N}cep@Nj-wg)l(Kbm!uvB00ygL+u;z+Ci=d za6y!2)r(_%L4mXb zG0s3%NewCIs!yDmf#8&?yJlWlv#Escmvsp8$^_5$xBJPNAPiAPDx!WEL^fulkgGaO zz#RU#^$TZ+Gmfpv=wqK4fq~LPQIX8%s3S>jGS1%Wwy)4(r|hc`&zG?D8En1`hwkS- zfyzx@2Gwb#NtZO?K24EVxu)HYl~6uZHF?uceRZR-S=;#7StmIiU76}Xfr$b z^%XTw`<(2cs!yiUUe=uiq~EF|!HvYV>nHN!>vys~hMA~xs!J;qhBsti*x^S@JtQ0n z{0Tex3wn}A;kedJI+dw+)aZN$xL~hG72QZG%jTa?{u+WgwrLBo9#&TVU=(a`C3}um zg?3gE4MUMgzIm*e!{)t|5yj6lfC2VM@j;WZ@9IPtm_`xMQCBK#6{MT!-m6G;mlH*M z4xK*L7o~&vlxP$?A%#!<`aZO|;fC-Osg@krgtec+<0Eleq&%fz?``Z4Qtxx$!zzs7 zegE)>u$K{FxW5Q1{@cn?1Y;@h_oS(#r>FARm#IP>AAHeIKm7dYj~C;^Jjf|#@|{&L zN00t;%ChweN(TrARtULzD_i*pszvpV?Y7Gn-MV0d{-sG&;C$WwQKaexj$_bjbf1yE z&*mV6jMXmidx2}epNCw(Pp=g*XG|}LaZK$-1<#{u|RRwMH z)i|fHI8>>vCk_pZxsbjcGMleV0Ksaoo(t`toeYG7kolAuBmtFpi#q^Qv&pWyR`M$1 zVk&E+t0K$MkFL!V3^R$-!-JRXz~HBiQOR>QOvv2gNTQQgc^sXx1C)U(*g!#IMU7*r&*~ar^!>@nqf8>ms=d<$WVfvLu8-T zO{(~+pO6SvFZDQR|K&j~2{d)oHqf5Z=t;sPn_(X%A#R771=-Av}y_?9}F-II&o5qF{0~=kl(@D>LCp z+BNL-K@(st@HIurYLt-}SM@g^$()K<5jpiZ{nA9!sJq%0;12QQLr2Qmbj5R{w4Pxn zW*`*g$#ghXMdo2FJ;%MwT4d9YSR^B{ZSXM1;@+}#{^W+boG6fv58)|h@q@wQ#OkjT z!%AGo5lu6Ti%0dR#PI^2tWOlMkGoN*kt~AE;@jW+gpPbzHTFMOvpebjQCaF{zy8T6 zv+~-VYRbE6fsdk+tybP!rOR38d118pjRzfjVPV4y#rNU7Pdm3Wq_&pS=y{IS>8e-y z&&#>*27Z|Wg~|3ADIB<<9-owCw%3~2i`lQ`Wx;x!RcByOd7-@SqaJZ(0?jp1-(% zULSe5CB2)&W~cx0HVXA+I^NpWqXX)vAC;w)Ze;)XS^=?lK$<8n;lW4}0lk<bWbWeis(^gbm=i7t+MwGUWDk#EWzkgfyqv%x6AB_{$&@m z9v8vOc^?&xtGbkzc`{Uh3+l*m4n39EWlS{5H~f+JLu-GZ_J77bgP};fI^P)}ol$5u z`u#KGy&m+1PZgqpp&?KK>%!_0(REOMemb#*wnO{7hNHrQx>3czm;z_5M8ktPBdgsD~0U#AF2|1|whexFapaUOa|fUx^`u|cT+l6%=!#9%>X4V>y1L$?Fj9w4X5 znNxJ3Yc6j2H}PUNJ;O&=(T1!2+d_)%WMAPg4l# z?qZS3eGaoT@t$^fXUBp?7xu>jrm#^AlaJ|$=wF_O1r4G6-6J)N7!-mZmoUm$rwU(9 znfW%o(nov@g%5w}ofA3##Z19y+jr2Zs5D_=6gOE`JFMqWc^=QSZuB74NL>lBRFVPu z;O?r%UNv1*8$XUX*ag-1@lvu8HON@4U|_NGgF|R_Cr-*D)#F$elK;HsEYaf9f!qXs zS=^!?4RegNeE@Vl>TZvvM}X<#l-2I+VCpS?A(UXaxP=kSMtS3eR`zjEwca zsvv}9FqOundtY>ll&NynnJFp6!sY9U8) zokR$8@WWE%PA^-&Yn-{GEcmXR1?BvkQpK$fD%@(+#yN`#?zK<@uU!b0J3M|^SZ~&9 z1u3KtBjDpx*=j2yO6f}kMKmB@%}`ZD`?2GihND9jCn;$~!~UML4y~IHD`X_N9Apyf z4k@1enJ;I1*b*uhA`@gzj$_W`?zB4Gah zrc8;c?b)E{IB^MhNR(hx-Qj7q}tLr_E_5sS0J zkzlp_Jmg{-r4?rrW`F!8R?#i}lKo|*5UFLLQF6tDT!g5iP}|XZAo7LFP4cWg2`HwA zwic`!JZ;N%8slg(+SY4Eddi_AozFg>*1Zo5iG-XkX^40%M$BIyX+;N-M7=T6)3LeW zfGN;Dsmj8ztp+l+?P&psA5RmEMe~N;y2Tuzf<)}C@H^W-ubRXzj5+0iEw+^w%A80M z0@6&Kaebvy+9K4f&rOGYYAatx6!VTa^469)9)jR7dF^*uNN%M{>i=)0=Alc2a>FEP0 zjIWa;R{ndE1<`3LBsj_$WYlTO>F>iWFW&=05+Z4?wi^1&TS5cOw+x2vgO4#fQE@K60-_bk|&g;ZUC``fO0^Jmo> z>uaK`MA0uZ=-B2lhHnaRXgQcsYfoC*8xag-(rz-8GfaGdAjCMhy5q`pXMZ$=?SbAXnBNwUmDZ|7s+3zEkchL6Oc5&Z5$v%Df8axT?sIX(D)Xu77j%Gz+BZQHhOYqIT{FjJFld%|R6 zXM3_;lWVe#$vo>j=XdV9=%V&s>v^B|Ps`9^C{?-36`!LyU7_CX_?4*5RJeKtIdV3Q z0c6Di!q4uKk~sZsX%+YoCNZU2a>A#asJ=t8%V(2<@)m-7T9p2p<={SRGAlDAEy2zf zUepc}({Y@qzavETP}Zg3yaoBvYKWGNA$FkH!mk7`{ z!8No=r7J2Xe#9IF5%$DE4*!kAjV=8`dHa5w!-F}OAQBQQ`U%q#{$fli&SaKqK?~Rc zX`K!pdjiWry>aM-tFm5znJBJ@b{_}}d)Tspn6tGVDwA!R%``NTy9xF7Hpd?=d?zKj zmQ-`(6cGkpVE(0CMrX`8(tZx?voxEhN37W=Fm*G341Np!E36oPGw1ueS&!P4it>}tUp@M`3d;17LtyF0fH1c)s;YhMIKfhEKXwY}^ zw?c#T_0;k5^i6Z8+TY0{DcwjNmpuy_<`&J3K@P6X%eI-Mu{EO|JxxG%fLqPY&j1Y7 zDtn5p^E48BEGRsH;i}WGcI~P;6244WniZbY1Ckc?yPreII^f?PS~JBR15u2sWv-IP z@P77^T2MScE%PFeRy!%t_b_VmuxG}Q)@Z6}Rd#ERe~TZ&6DuZ#{kk`lo-19YgxT!Y2fxLj=lK@46GAz#Hn8{^URn0*X=%Bw7r(T?qBWP>1Ss!+$ro)#q(_uUbScD3&1lyAqKJnP{Zy7$ zCMI{eUfZv2BD+(Sn0mG?Xisvxl2Tgrb=GQ zNDUI8jnrJbiJ)!9O*tQns)oTzH+bVENWEwkP3JcF#3ivNaik>aaJSbs4Py;*!797q zpKTOQL~;?MC@ zZ2QKf<%b^j-BS2p&!hRCWM9NItn!zBaC_aeExD0Sx`Y{0l}JmH?H0WG5;Od>lf5XH z^?*^$`?u zX;x{o8%ceg#Ywt*Ew|tG&X76!JqS_$oKmX)Hys+@%Xo_eR|c^`aUoEN442OV18G=- z3h}EtjEoOS`sx$+Vk$nhy!8|lyX9tLuW!4-bWxvNJH~X5o7~<+1nK_0((=~#9sTzy z2_B-0TK)aMpn`@?gkCUD36?^eP;xqMc(?A#*{Zp~p*`|{wE_9j0RuTQ^QGu9tYYV! zGm>~{Qq|0_S;Uyl4g0wM&>DL1KR#YjUyuuz9N)iy%2A)mtp5(odID1jFZg^%?+!Xu z`pM;Hh8E(Of+R?fDWs11<{B+l_hytfm`UVk^3B!7Vt(Dr!?S`;{-mYjP)p1OUA1G- zrfKMg{B{;yh~M`D2;j22JB!V!A3i#rlJZ;V#=8+GeTpe}+ zrSGtZuKJuSju7ej(l?wPppI~fL*l;W|?H+9)5-rF^)Pv<4|Tj|{C zshRBj^okt&9vXoVj=yChi)LFa{T=um0^OVbYhWSCY}pc%{WDkE8jIOew8(TW;7Tsd zw23R2j7{8}R*}ft{eKq135*amF>v^ZXmUuCTR=;mBC1RHkmfEb3z2DGQnqKcFuVCG zI=_a{W3$yeG+>=skAp5YevP=%mDhV@K_;drexDlFe0U>wYIDVG~QgiphYdRJTWT;5{DM z#~=84Med zor$JYm< zR0QQ;s%I0olLVTEmEtiM!^J_m;Wgc;x6a9`?e{L}iXD}|665^0)PzzI3M!W*(XoTqLIm>}nP9hA(fq$onDG+KR(%Z=vJyIt zCk-S&V{oKs(S_LZQY_EZeqNdZQColiN(Bflg%PsQfLK0K%kwE|i?6s7hOKvo%Onz5 zqrqt#(9X6{2qONt%%z(u672j$fVdRpKIJRj+tw@F{t;guc}D(lCA+&c#CWZ?MyIvx zR!jjY3$Q%|U>OX(*qpqC^suYUC?1EyUt}OrM+8=82i{wrj>E9Z-V_!xAzY*Itu3dUx zww=6B>HEGe&{}8b77rQD@6)f1Xx$$qhW;mBgGwoq#55y)pShQ*gp{VF?cIkfuQk>>kxAdWy*Bm*a*Vc{V@{Y3!AiLLy&OC*(8G<>_65U}+Ip?b;0$pp}k4qso9Tn{`O zB5FB&@T^%gsAo>c(eT4GN4@B`LVul7~M{GmMWD0ys?pWlbdN2=rBBTa)&^HM4kLaNgkTO>&`1s;;%T) zYZD9iIFr10t%VtHl|FYaayYdk@I((CiGo3?v=PsS4Jl(!_+Y~GX9ac0cW5WL-IF|T zs<&YbgDHnjTrCcnADaiw4RkXH5nA5PwbVI{PcOEtlbORbxOT!(;rl*D&P;$rIm;%D zAd9jq)FcLuLiqHQ7+=BtQ-sSS7Vax16<;bMQJcB!02vSxOM-DAAF>l23GkL&O6qUm(;m4cw}ro$>x(3m^lR)pbF$Lbc0@p1&VB zW0tRAF@igCx8kjidep5;TymXMkA~k{$TAnyPaW~^=KVkcYl%zapau31mTOlq zofJ=cdg25&Th+VO3o-3)ouMnz7@gB6Q4((_6W$R4A>Wyz+Nz0)cEpPS>HVA6 zV`}5|na>;A`GAbS8>inD>w!V}{f$_K1@Oey3Smcz`fA76Pgewa18D}`ghd5F?FfFC zYKAP=z$jL*E=P?*D2H5h%zA?YW7D)-riDY^{H}!LD=49?=dLIatAp4{2?Li$y%3VZgXG^TIL(8l zKGt#A4A_5jx`mz1;**vX5A7zi=?f$)&<2topfJj9)5$-&E3rI=qWVb5rIPYr0bgdI zT|d>+%ooYkhbi0No=e1E_;+XE@Xr#C%gwNGsz$3$T7?G3S$z%B3QI$Sr)&!7x*(v- zCQO(9)`gh`R%AqJQS9f?g}3}++r20J1Hpy|r{985u^GY9Hp8B9oW{8m?|ZM1WHEZ#n$XYw1Jj$Z zQJ)J|mJnGemc;NEiu-n1RU3GTKH2Z&=6fNwzkSh5vU;4J+iPH~n;ZzxM;E^j8%hbk zLDh7S<;^T#)0#^~8o?Au#*>)-c z;E|n5kIUs5BE#!h(T8hNXs_(%RC$5@)dHOei5_S$pk-OZ3SQv18CYeR{7o+ev=;li zuVI2khII#DjpnFP`1ojJl>Vx)%RU(na+b1{d)T8-fNDSNE2_9|Kwpa!*PXs?z7+ z*y=omZ|#xr`$1whRPb#|p-(@^_A&l>9U`bz4pWZd%osP4&*E7PGX;B8g6s@zP;@bN*R z-vUS(^vju&*>yMEvlBV|*G?I_ZAm7aK8N~V^ON+-IGOY+dt$-9hDD8%#27tS(L=nsZm=4bQ+fsaTn#4sJA+%kc$hvQ#ADgKpC^H5wJ z4YzZo8$5Y_?}66hu3=0~65(gp52Q__pId_Q^_Ggr{;|B-Q*%%5vi*8EQBJX$T1ev{ zSS{;qmb|VtA@@AsD~M8!PF?5ihlpaxv2*9<(t3pfJ|1cJ4j|}*u>Z=rFPAik#}}pM zCUvG|yt;^&4pA1WS|5Wz?Me5sBfsd>w3n5{MH_O(u|8iEsJ5Em&HoC@#-pOzC29SY zGL!vN6TzwUw3`miff@=JRo{}iMefKB*L}E)K3>^oJ9*N35_mvWjWxyJS#s!Pq`**j zx``4YJ@;E5^9)YQz4c6b;DHf}X%Y6+m!&oRhzvZ$VdF6W`tN@){~zCUu7_m0RFpis zwh&w;`E1*=k^?jnnYx`)Gq6fXy_EM6C~%JoYfD_vuL|*$ZU~|PBCUNQ z=HSKIS22}C*5L)8;evg2>WT*YxjzTTF#s(>uedk+=Wp=RArC?-zTG!*xWY(VDWNAM zE?gDBYKc=pD8086a<~$0US|nIDlEY&E4*KbDtHhch`7*`b_=Ug~?-?vT)fl!yz&2KUi`Q|8b2L|Q6&2O$X^pvJ=p zdECR{V$&3G{c7TjVl)JhUJQuJciC zh2T`J{(#fzrDyJ_U^7^C!GW+dF6SE>t}s-7kpt_qV{q4s)k zb=f@|H}Vw?`_}=0$Kd-h1dJABkGEjpmhLi=#pC-QV>W8c6V!5@JpLky3662rbYuRP(*UM9_6sLDWg|g#PQ|vi z{kd&7`DHO@tLkw-1hf*4psN7!x%=blD0TStF`hFaG<+PJV7af%xbnGBor051(=B)zXv+?G@4YMa&w?n%0 z_qA8DVb#3hh18()lBoJ!7*p>834#)%{`_oi@0t-nBTE5UC&Zv_JJjF{p(Ib=U{l~^ zX0EFm+KjB8;Z%In(VX|?EQKI}L>!K$SCt_XHBb~BmcC9hwjDC)87@0v%TFHx#YbZc9j{syzg+Ez zH+cwZSQhTMV3drM2e`WI?n&y~QEqV8XY>~9lKcDRvBn#6?-hl#5=|0aQUX^D$1U9m z3x8UZR8nNWFW;_qheb4GE-1ZU0+0BHUL%CtASuako?gUneWe2F_3CZUg z=DM?cVUqREbk=&UyBq;bZd#P0!)t$UmFwM-NWE4fUXN?_D zyd;&8p{PIO+Yd}dq{76zGS;(WiEXil%UrFZIV}Q?Mena6ncvPe&-9O@EKAbkES8l3 z36E!1PNX0ZAx2&}exKYdGMlM?vud{SWg@0eCSl2@h`<~iaVz_Wu~AHl{ksx<^R8z= z9!y!oMx*#nt>xacmWb!y5r?w!m9PgG` zx1iLs9F^%GXFX>(PNfzW_A3ru%1_STEnH^iYGTz4Le$gbn}>guT4Z7af}Pw8KPNJz zE(7c`F!m^+pWZ;zR?VEU|EQjYf0pLYPImfm^ZhiFQ6&Awv7gc8&*+zkH#~ql;?|}u z6#|ZWV-v&ej6_-F6-)g`G@;U z9Ip906aQTrkL532v*zYP<@MmIAA~uOs7(vZhn(yIfCgn-yx5 zqQc(3Y>W)EzV4!m#Dr*WOB33qd1KV9Bm$R?471^S%#2y#47P@MEQaV!Ur;hSY;O?s zr)7K6jq{c<3ms%h$r7sK$Q2chS+6GiV=*)qgHVgZ$GiQfKk3%9wq!M@JYiK9%Rs#n z=H}*nXXf&tF1UZ2x^zMBg^j=qX2L*kl_mLqXza#2&HnO@Fo3sQ9F$q^B|#&EK0Dvs z>bOzD^mMGThQD^tA*J5OVn4rk*+)YGSnaW(Q+pl!vO@KpPro%s9i0}0C_W)}ocr6& zKmCPc!@!R&)z!%N8l=ZgcBW_G0WgDal(nXKKsVde&~SRU1-GkN)^MZx?^}lSM@$%4L-g~xTxlyc(hxCzzjJz$%3SRU7_L&f{x41Z_$+j(96 zKE%SJ)J9C=W6hNKbz)G1%qM@Pmnibz7YGpa!GWg7jWvZ`j@#n=A!Eg==Evc(s_p;m z@mx5Ccikx1N`23zKsGF5ee0ir%@zG6KhWz`F|tAjj{+cMF2S?CY*;PjEsh0K?`waV zvEUo0{w`SI`a#e3{#WYU1M=apmdQh1v+Fv#&nG%bfX!fJC(FxYAM#@ zDo56@{$YtXM%P5-iO;ueMrNqn2(Hr}Sy}X*O`q91;uh~R29P>9$^QL!+lkCz0oK#L zg^GZV`TcUPZG&L$9|hYjHO3EoP4Sq~-7=}``q%6vmX%B&{-i4w081pj%%vV`vjyK= zE$JJAc+9Rq{!bR_&21z_vm~aE%j7TN$LHw~6|Dcm*EP@q3F+ILtA?I=4bdwrzVp-g z#nLY$A8mh_DSg2*pMl2wBfGu8sYgc*9Io8T z%HuX^JR5T{-oVt{?+Keu=>@XZFslK`bK@Um!LV+TbOu$vaJ#-fXA!@wHH9KKSAY3FKncxPHSn%NV78 z`>0c4+R`#VfbhO*8vg2Xy{9EYSKVx}3|%BSZmoUSG9t3^#iDLI%V*~MF$NT~b|Bwo?*UW7d4JuLRYY~EkEax|qT1p+7(3|U7 zU+A178!T?K2|ZzjiVH~*T8eQiMOuYK0_J@8T)~+RlnZpv91xQTpGo}p`M9Tt!m)C0 z??MGyO!o3%J~b|?StZ&PR!oks_)-09>1-kwOw5iKZTc&r9uIb^ev)1C^ww%%v^0?s z0S+~?;;3k8fkA-U0hB4wURzmh`-2V@l}UA5J&D+0hSQWI>)7~Ij+#6nN>vm^$`D3k z!LTZizQ|&xR{3v(5pj8gmv^@ZkiBmHWfPKzP%|UpjfOVd^*7|hgF8`|-SAu`jUBxZ zTHBgUCol`iKbO2;1oxJ1y$U#5!(B9mnaGUe=n03n-KrJ0-;MP@q;5DbN?wzcM=kmN+DKTd4aq z^0a*$@1SW^3zBpXZ%M1yhtE$MQDq+cEHh$pLz5@gbZ(EQ5{G+K=hG+KlVNlg~b^e(B& zUZ6yU<i8iIe7;Yphn$=EIq5d>K|H)^|cu&`%8l?T&8>pZIs>)fH zDd5g($LDUphs#1kYFvUqNk9(DRv~X$3l3uD7UmD{O8tUPQFO0Ol@O#SfYSfqeaw<0 zc3E$JY!B;?iiZS5!LtN@{^ioV*oqsDIYR5OhI}($00}o?axW`%S}BrIv}mFj7)?3a zDfcJJJ+bHl!Xx_ep65ZJ2^1wS?!Sm>XgO!AWjDNR&9l==lgNGwfG{y;dxp@wTtztu z9U}wN-I2ZOH`M-X<6(XS&2O{XMqZy{&c@OrM4UH=|1+6@mv~-Ct4yz5frJyy|oD_w5!2bJrMu!nn-XOM75RqNA9wU z%51`4!mb(Kb9D3Wo z=&1SMFMTKXGNJi6`(n#tBzAu@fcJPNN`4d<0JH}X`T8A21R%{-8DsGw%@ zMv=1ifj%Kvgy_ydVrZ1WqJMOhs<fmw%Z6)@g3UH z#5G!B{dsvkggGXvi@T_9j#OB+h)L0ezPQhcn{9VGuI%wB$7I92NsmO@mY}zqd#0#| zy~vELScUv|poxEz>WIucBC!9l4=3W^G!C0eAo#H^*}Nz_Ubq!{4MzUau^0|>F)D7g zaLJ(;Dk^*|TPgFR|J8`ocy)7ymF_J5`&`a-tRONF#`n4;uJ5kGGGLjLa3f(w`SKb- z``cyXbQ`!(x6!z@Nw9McB(kw0{2v!y?{o%8S5`fhKkm0?onG(=W^$wqTt=c?rSq}q z6?Z}EdS8qowM73t4VsdfU)Vt@WkjAN6*NAnk8tP=ZCD{?eO_oTZQ%sTpbnQ*&H!`n)F_s6o-khY)D63@Z68__pVS7Jky7$o>(T zMJ$ee+6I9Fgsm0qn;%U5g-rHMViUx`)@!Eg+{Lr~gU!&W%M_V`4%352y29k{});)P;lArZz7>#G9tK!|BW}Ct%UFpEzytG@Iek2dXcz9EHQmUv7pmRdD>(eOMCV1;(==jfm zucw}fx0_87uuwoKGeUy zcNU&Bs*Z!{XrI_J3L78Y{lrvE!Ab|>Ui zp$s}pp*FF2z-&~Zx{bm%7j@lnuMPnGOHL@y1HcNL7_m}~f5$CK7EO*0Zdg&L!4>F7 zm<<2K$meMthM{2|=4tOisdaSnCV;UxgWPzqp!|~ClM+XleqehYxw~c~ir9DmgU~&P z6JW&66@`C}0UW&L-S>kFI8B)c)}sW>ogp{7x6?iSl;!oVwENsSUtUG_6rcs`)8}xU zjV3!`*_~_GuHItr8;9}dJET9_O~%vi%7u22B)&v@deo72g{s!~GM=#1xYnyZI8UXw zQxfh`@vX1?3zh7oZNU%b@$RK?mo>0^S`}eYk^!>7LCQKiU>NmRA>k1) z`0H~&UULvqk@epGyCwV8hF5)&z3l@|E~+BYU@y)<_)5$Iq?Fy=B?E1{cnPcVsCjhv z84J3XYi`}j@o(S0VceIWJSK#QjSn2;EUV?L2WodlNGc=2{3OwZKY7v{^*9mi4*HBwv_qbfQs3o|_zWZA9SpEN6fFr4XTB)EaNN5nf9g&u*-l&m%pGJjh z_dh~BM52h3Y=lHY7HbZCyhb5#jsW(Gnq>;MP24pG$lG|_qLXlB@_HJoM6;8Uif;(k z?^auwz|b8<7v+TzF+ch%SKN zu|&3z#|LF*fLuru(O=w1@u-_58Eti&QV(a`g5YanQn$`rcVH}bP$0>+B*^S*?rGhVZFo|ho=ccMmL69um_P8Pyuy-f2sD6TozlTnnBJ>xEO&dhKD6_Aq7vB z_V`d~`~AX?TptZ9cvkDI4+k#kb7vhAf<*}hRwTJhQrJxZPy~?<|2{);6D>T%5*j9z zcPUEr;v=0Ln+4zD2M zW7F#`s435DLa|Kgs{AGex8|Sjh4y_Q5 zsNgs>a*!H5y*G7k8+{r1-0=SPD}yC@3QT1%WhB^-vQB)y znIxxdM#~&$X)=*QBwdylV(f~9-;v~SWax&8vw4(>q*&|3bSt6n?-jspVs`EH0Nf^W zz$9!kWdMuY}_99_**B7D&AZSM5Ztf7MbA1{S!n8sfl}VKRh}(a?O#^@Z%}Zm@)4NTxrnH9r zH@ETr=_KFmu3_NbPFP>izDW+4N(hzl+2m4uOZ~&70kFBdGG8QAjQI=LUgZUj1QwiWD*`Ht9 zj88y4ITmWNIR&=)Wpr*f2*;$?t+f(yy^x$uWzBJt+}c2;!TynmCeSf-AW=N4N#f5q zH%_ZWxO7i91IXwzfpMU7`EhT12O43Nx{6$l-ld5sXPG+e`g)WCI@&Jtrj{9bpGgF# zOrh>u2a*p9fxux`m#?uoM4P8m0Yoanc8}ma8y?XX?~j()cO#W0EdTaC+_G8&P-Yu0 zjSC9^6;HN%Cf(x{4lAK-#k!uZ2%2v6I!BaoSx&Oua+BtEpeV8c(^9wpoIisN3?%_F zH#CMnK_#@NKXMY%%eKW8iHZoQzCjAz`ox0MRBbttTyfjLc9B8=$Cxi9yHCx(`$7Ff zB_)5Aqo4B8Uq5ilg8cp_)s%K}q&eU>l8f0#U><&VXv8c#IB3iQ^1VLKg z!lYaa2L8Jl@YIru zx1oa@2BktPfB z6FLU1!5rIjRx;oLOaV17`~v3gNOcmA31q_>$j6bk_LAwXhD;<6iq+i+S3#1Iwq{09 z?v!0s;dW+#`>Pl5Ky^Bk3!z9BcvaP|N>!YHJ^%O`Doj0B52xqGo7o&kx8AZ!-lo7W zf(>|hiX0|%Z23IK3utzt+9Pu@5I*@x4cC(5XhQyFEdWYH-%m2AYF*ScRi&QJ{ea~> zzCfVg^rbq6jSs2M{<7@8X6-_^i?{+r$g=wkP2oA^$7X3Heo#~US`9lhf?Gh?6XD)T zjBOwSsYn4WOHrh~&1`WeyZp}WM5`&Iz{{^K*2e)PNnA&d9Y8bQb^&^x z*#9&psWkNpMCbU_;1NL)xD24Ma7I&H`uRyq^ss@*l9gOUC?yvMy$X%@5Ql}I8fV4I z@f)jMQ$|1<)9#CK<3V~RU2iTTP4O1r(8b5*{u}1|fx}-;+3+!E34(-J3Pz9 zQ2D{UORY{&I<9B`a1!wGOdHR77z4}Br#DBS1ku&y;vIs9r;KBFX9*tACJ~FDXHo)q zd>P5R$Nk^8qfk{Z}xPT8ngd|i<5hxD7;#rhc}i*3Jt3o4(BZo$z> z+k*YJ)eFVFn>H0FY%WsM^9*yRr!%{GN&t0)dnO4kELja-{jknE6Pcs6uqO&k0g1&{ z0}um#$Uq1aIdoby2A4enEYzC!Qslsa>12cMTJG}0fuzY9Q3{V!X!s>UUO8ueE(h^} zV0X~rALv#qDVR>P52DkrDpcPgwTMn1mDNKEunkmB%ClP~A!T6D1UZSw=|8a6D6dJt zeSr4nM2|wKRJ~@h7EpO5M&E8-VnAt=PHM*{!!m$lEhiqmNYT-!tC{=-cfe>H=hc^X zoQs?~B~HRaLXbxz&13RIQD4KMvF*U zG1ASUBFlOdT_0=lRj$@%av(OO+%yq&#NMsn68<+Ak7T~Ui(9ml=)vB?CaiGcUFWbz z0ELAuDn1to)wM!iNWnPFMTvStxtkYnSb!vX{ZUDuv)e>GFPX9NOTbW9s z-RHLmYX|dYv?!nv6Vt`XS+P{nt(%ykQ8F`8qJY6%RB2oMv&6p7l0E5jcx%@B%;407 z2s>gnF5yr2oYQThA(^YNK+C~aVmxcMp1c02C4 z;wo{qk$u}sQ3`*E~4RXgX%Gaz)soS36@CM2RG8g@Mz<4^zJuv+E z-@PPmf6)>$O4q*UO%9;0_4{mE$*5yh`rL9#umfIxqj0ceiW(d#_Aq`w|JIvSX^oau zjJs6H&aEuRJgaP(aU%R)4T}zU@w~{uwYqjQkzhw;AV^TKea(;L@al+H&8T+%^$|eC z7BF%%ssW+J$yMGP6BHo)uDdFP*M`L^6KZVn_*NcH!~j`GrKN=G{=2)n(ACMzn22gFqym`^thq;`5eufgb<=q->m!t+4i?x+9H2P!`&^Qy$lb)qi!SN}cL zt{rpmWRiFVlp~Eqp<2{@M>5c)Y=5DhsW=0Vh)9*BTM@B+*#u~4N3J5pZFov&xIgnm zUEt{DaS2A#o@o7(DtcY&UQi%0qV>^MwaDeXyTGm%@IDDDVi=eMY0zq+(K3R~*VU(G z#{0Qr^%8HM)u=|DG+TAatJVmmnMSId9wqTm?(cmH*h*eajXBXDS5a0XSnUBPQ9CRJ*2?>~&qTB~_Q)bhxMlyphdLFiFQ>eN;sQwb@kB zneF3Q8+G8RP_P3e?NDJ^-GPU@8U6*qeN81?EbwNJBJmx2uLV8s(2nj$JXGEjSxmt| z`9hFMFvhP(%cAa4FQ2x)g|BRn7@pLgs|ppGOHPOTrX-6On~`8FxhCcPPjui-rP|&K zjdQaIJcyA9`{Fi$+{uT)nP)jT4ZNd-LNz+2#M$<%o%lxvMmho0!VA|ocPIrGoq}rz z{2ZhN0|Ho!u8d%t2bvL>WnjH(q7dfdUrbU!XhENlgm7%?q(i-I0YkkNm)f9pz2884 zd6lf{fdlNLNV}THG2^N(rZ&8)5{I-h`wM6*S^DMPS@i`0ix7Eu0fS1YAq9ot(no?R zo7wWW?B%L6>8M{`^fXD^jGFDJ3OLI1(jOozH^XBLj3BEzhJ(S_{ayZSi}E6u81QT~ zePBaDQP=|ivU%$3A)~GR5*o=$qnupCKt0 z%OMqB+=Q3Tg#&E6t|tZna$vuAvm?le91TCO`fvbSchH&eek8}vW#vsLVHs(h9$k7(ZQJROm-$bY{#b5PrEw|vVaYxF$)rQ^V!O|o zWyAW=b{+aXkkT-2*>=00Cz!hBbSDYyT|{aR=RzG4R^%c|XhR`03CDmZ24WqJ80F?X z($oC}P{E_)o!3hv*cm;~i7?mbwDHWy!|m-nr;465U)>!*TNgKgP7t7Ia${s1L@n|a_@}9K@*6;6EV+h-#SaAr z%4cTZez2(6j31pgTVh5i`N;`ljymiS@dNp6o}UKDNZ;&ybS4f@{V3s6-3%z5n<2L9 zU;kSjzdAL?hKY*oqZS0l>3DD#6sU!yY7}b41>xgzx-?R^H=`2Jn_IO* z_4bD%S`lOE-g`{=X-Yr0=P3mYiF+}O4;iIyfAXy$@uU>%^ebf>MG`yLAp!h@nn`iN zS!)el+L*LbRW8lYTfOTpydk8$whgPqe--}Cj8tq6$`NJ{<-r-;a|*J<^BmXs+wPt07Igx>NdE&301T$+fy zVrcdtBtT6Ly10UUCD!>)*v9+l5B)!Eo#TIAZ}g?x*tTukHkv1P8rx~q*mly`P8z$h z&Bl#wn{&RunRzwy7v%ZmoU`wJuYK*c0COq0BPC|lIfrveWEC{`rf=jy~gc|fFfBg^X=&igAa-REv(fJ6M z!TGKw$m%b9s*+d9O7f@$Ys<~RMOc+RuNgk-9v1*2{huM@_xXG`s(VaQ>z_1xzQ!;q zV3yKMfhw zf>&2S)0pR0af?Ng&hu1~@(>DklmRh$6-S;|UK8hZhXRCcCdo|7rwAaQUo}ut%Ci#*9<_sMEc6=TSphIjTTl%Dl;c)bsqzfLa^^L{?r zVb@l^Lb27g-F@$XyV<)2mTb%#TkbaETE&pm-z%ACL21qGuy5W#ReK~sYZl*V&D9Yp z^-F@>q@ffWhT7>lEj4n#dF-mm^WamHIy2tQ@g!0}LI#|ZE~HAvYtZfvOc-N4hWO4{Lg4Jqa8UGmk9ELulfJ1TWU)~8g$ z^#XE2A+AT zM}ufa<2xc4p|xw>+`g^=78c3;c3EjTzl77RO8j#UNzK*^m9SR0r+z7u1P{;*OR_lS zaS@($#{tBu8nj9wq+z|kcwt^=*dIaypDy6zY*O`|f1jr$6tnBiDq=;m>s3YK3;ZHw=y$%V97o2L|Exazd@;RaL*TvMuz%Sz{Ty};dfz2yl>d5Lgo$S9) zzyv@fKKyP>#Omb#1i4M|vfpN^nji2_7Y-^3SNFsS9CpQJEoAJi-{da&1h`@OzA1YS zqx4B)#jZW1PDS4IOqn3l6>6-oC(kFolxEVEwFmLH8NeezsvQ*W?7Y%9@krXfFliZ9 zoTf9)kMKS%py$wVa{#;${M|v9`dC2;^k3ffwJ1rJ^->uuRzV!J6qNMRo7ZBEMc!_) zk2^Kz`~)W&EwRM5YRr@&EUEZWkOXiDt~i)AB?k>#(9!HQoJZqIt6CdX+2GH!B6vax zv8e|@UaOobG;fJ%_|!m}fu$q_QHo(nJ;T$UX)P^>W{;Yu*6~nmZOlbDXSJCXo~%C% zg-JZSDhDFiP>s_%x-X3Gy1aJwJ@Z0<31PtTp4ho=)#H_!(JD9ieEJ9I1Rdw*CAZ{hAFf{EPCxL z!=D4aUZH99#}hYY_@Qvc*v%JZ*;c~$({IL>E$?QJ^re&?EgeGLY91zgJLtrj+<6K! ze`+rS-QaOaGjD-xFT%obv@>Szz5O*51D6X6moJg9*kxG0?y>+g)r;gq5L1sKm!fd4 zbpS3Ov>E+*#=YeoikN+2=8cNX8r8RrejM@7;zl{qAfkEdV-T$1FjN%3Olq;s8zxx5 zL)tU%N{4o=p#tX@h9O)^0=kp}e1Tg$@YKs7EgWP?4oHDp_eKI=t(I*gS2M|@3ai{- zdVUggE*5KZ7zi?ku*)H+l_){5>@_L61TDgi%N=A{rHc!8%w>n1FEJ=S1D)LvS|7Q!->x~ zq{TNq40{WE>CuB)6pTyxZl@{ljKHfU->=So;nqx~&r0~ShNqCV=3mJizDGZ=IK)3J z3HQX`Y~9Y`o^Ncrv;xzI=Cu*t3nn!U{g6~_IuWrCn<6ZDOvfcsG;5qzT z5~DOzZ5-LVzyAA{NzmLwL1*#VFcn1i`%J*W2*QVV?rJa7=ve|6EBX?o!Q-(KS+dwg z?c6!9*HI@Xe=h%E(A>8+4u+rP91n>GHfff^u{Dlvel+=z-#m582fSAiC#l%wq^R}f zW)|PlO-!7q?w#C-(1`2vl2AwsqWDZzK8>=>iIK{pr%jBmA#l68Rf3YUpx#V0IpOZ6 zR%-Xpc-mK=*Ffo&l0{yg;WueIGf%r;hiz+^TB{t48Gdss#`fs7TSDYS7_FKlo}*k3s;k zN>I#zugIH=65<3`i$Xg6&`%n`j-cahVVCIc^?kP=3PWA+iBMF1tc1SSxBx7dh+QRf zqN{5m+)(7Kj|NA6lBP{NzcZqtzn z>F;JPZ_lw{A8bZT912|nV@Vm3+{I=$Z?`oFd14d65|FlqBJ>Sn-|r@ZY0Q(s;S4Kh zwRD}UrSk>1Zo5Fhp#5hvoP>Txnf4;LV02-_#W}D%MRuaX)jPQYi94) znFz=M#@Jv5>QG6CAd51n)aFt#nr(77QHUF6?7|&4P95EUtiFRZ91EP}_cBOLAto6- zdR$ah#6iDaG)yV6``p**%jlUTo_h%`*;aG2jDKcNd6R8^2^M(t!C}e{xqhK+$WTN)9#Z}$O42ubgCy(A1#g6JP?Tg4!r$DdktVz~o{0Q_ja62j z@kKjYj`^fbDc;+g>F66oebA?j9HUzn>)#MEq|_i~mq1j4OQlyGBe@muhbjm+*jzM- zavcTtVGV5D1W!KVP_cuD!dMYAqI|qyB{+%g80S3-?1Ij)ns0NZZM1NxXPTy7i@MQATOm?V z?#&jC3(F=ay|?BiXqhNxkwcBy*}grjON%AFZ4nlWZxo~9$iF~`IZGHHl}ra2-{B+^ zuewSLRuyXX!=}g&QK*sVd# z+^KD5fV$6b6i!WFLF!|1(w&sWbC2e!Mk@-+2Qt$A(hz|XHEqHLNEi|8Pk8?jKE9?% zc=#12=}%L7oTRi_l_)YMt)=p%gRH5wnV%5x*To}SZhv6Suc%g%uYs-t92_l1uY;@5 zTOrk;^j;Ns?KKFGDQ&rwqmxMf`5`S^B-6s-9)U{$P(GR>t{Jj0?jJ zL^kX5-`u!|jD370LRTnOJ)H%kQa$b@%R_mwgG^Aqa0C>vLdLoYF-I1Mxd~2Sq6CMCQlNO_cq+B83st^D_GuQRCyNwMm$ zSCq-sQ4+>6x17^O&A@516b6P)={YSet%s+DsvV1`?JK+q2q^~IYo2Bf-IA;cT66!?K{g$aWNB7UO>iR0jsw}S_(Iw?dPS%wepF&Gy@6Pb(r!sBfZGZrm)HJ-fjVgZqG*-{5B<1IJjK(yj zySUi|x!i^mseyn1mp*J^6(%tuOWu5sH#^cTeE^+lO%B8GLe@`$*14AY27nYH-^Z!w zAc8~E`1VVj&UClRp~C3*Ibj~zW>8YWpod#E9CpJ=?P-Urh{<+-MPcXZ8gdG%>uM_q zH3WXT_}|sV23{i~*k(nta~aA|77y*lhQU7DiR;7aIHn))Q;?(vC5NDj=7GA{yWD2% z2D}TA%1*xNeWeh_^JgqspJb3toXyZ!q@%-lMrvoGW*Gnk%$-W)dB|YVu0wL^4UKkx&z73Po3Nu_EB_eXo`Up(jvce(XS~1%{;E{%~4-MSW z)twK4(!7z~``9bY21QUfYmE8SB?iXh4AOdBZ&ZK>Eui4x&BLA4H#=UIWW4xA(8v;e&zG9U&m8IMMBgDwd5_uDrhqL9*XJ zp81epoD>+W5zh5ILXQn;xO%mWJ@bYW*GriJb0E-WaLu<2Wji~`y=X%qkTQ>_Do`v< zQIO^p6`u`EaEt>DvA7buYfk+C$Ns3gh$K~0>GjAC^n;|gvbsQ6QF z6wxJG<)M8Xmg(SrY`Kob(V0e*Jz+rdAWYaLQI*QAb5Ps1@}!N z0?S5P+ww?Lsm|LOA>z;wf@zDu5DTVwo|T0%=3X^C*R~4iw;=a6CQ0sc-ZP*fh)=}+ z>d9WV$loO*E=gOp<0xjf_u|WHK%y~(TY3ZfB~*Ku%t3+hF}{>nT#Xd6Y3sSw zDWaApP%;(lCWaR2?jXH?jDDA16RRY$HRd|=ohPbdk3Cv^`oM|*j2uX|+*q8v^QC@F z;BrDM*m!bCb0{VOl8t9gPe77M#}qi6>=uvbyi^FQ(|%IqNH z`uj?$8F}0qUIQI8%O=#8U?g|c%Fs&+98aY!E80pKWEfarIn4ifLheJm3(XLb5&Jz= zdql6AqoqY&!^b$mBeIZ3A?7cFk6lLqCk9w1b?|h(G^qC3M~jW0gqQ34mxWe{rz*X; z0!HFqjpU`8s2g>>rlfUE| zO?SZLXay#3eykP02YuV9&9{d*GbfA?#YZTMZd5f6 zhKW;9p3&czu&Nl0MbonQ7YS+mW?F>>Muh)wI$asW>p>^~Rfi}?w=A%!3o#Q3*Qven zQISSit5`A~n)rJzCqLvG4n9TCE_({#@f}HcNJNl%x44uBuucpT3^Jo+6Cr1OXKj|A zWmw_wO?tmG^Mg0$17n~OYUkMr*4k$j`Q|~|Vy!UD%o?iW^+B3dX=sf34@#fQ#~Sn| zbBsh>WeoFSal!)UAzzS*stlae**`j};Fg@T3PqSwYgx@2A(~$_vc8!ib+K95NZ+EU zKU*A@vjXGYmS%P35Kpd5$eT`93{ZOba6y#c0G8EyrsRC!xO$?-)ZlB)^Na;W9fR#D zALl62DrN|l2FzVA>sMAN>P3a(+tLon0>(-l4rH~oowIH zx>?bwT5P*d0ok0zwyk2WpNlWTr#{B;lRi>)%*%E1I_|c_9^bU8lx>)|nyGr35@?i7 zlu1SYp3pi+-(YXu?v_Bm6q;C^@^T;lRhj@9>--KDODqrZ5q}~73Jl@=+jfi6ICKIZ z9}^CJFAK0uy}zmLnh(ofkD`*-%j3 z*$v`NjJ}JfVXHa5RxePBc$%J{*~6m7WnPVgohN zB_uN1=9oIT_S{QP<3KxUxu?evDpU$(lmtdY(0@>$P*0r%CU)*_t~gTt3%1h4kcN}| zRpBe1H7|UZBL&I?=rzghdbD z7J|vd2(P#GsS!!2Qb+z_8-PyI0EEWr^ngbmu>66bkFACa8f7Jz3x+BuQiG6 z!?n&ED^g(h$Rv*i&Rg1BLOp+;fRU?XSli(VXm3KV1`Y;Z_U+Fo$bhx5LEez~H9{+j z-WQuzz%3@7lSK84IR+B%0juiY_WMEBArg$iLrM{R^57Mh%VcAXWD*LnV!Af?^-1uv zLsy=EO**t}k4h#3$f%Ia07dwCQ9Z-16-cCoVGP{$QTFI0@Jxk*f}oQc?(ti(p2x&4 z+}p|_+Q!JA0vCe+C6=c`>V7M=EEh>*dC+c13+L{OXyb=#<1_ z_a{;p0M5HA&3=d^lihZ|AaJHK&vcx8fh;%-E?fkKO(djk+i4lU&Jlx%J{T^j9jirix>1*_GMnsnWaeh6-o5 z)oosMM4_A|#0b@Na*vY`49;l~`6X51bC&~R7~fd-L^VVTEQL42^YM?ymIlYWb<_Dp z4iR2HtU|vhm!i&h>G>3vZemX`F7uA$a3IVRt~qG{)sba)1)_+E5-xGSlMDMRtDwb1 z=x3yK{M%fTrNfVEHc7vodCzEkI((Vam}nE=JtR?N^lg@k5%$#&>9{GmfX^l`tROGI z3W7{YK*X=9nV(yB;58C!oBc=&<~T~8HSTDYi9zSKtDsp&mR+(6=Z>322xp%W<=65WD6PNvtu5uy~u1ZPhMoP@zXq> z2V;Vd`=;5W+do(mBxU-mb;>K&3LlYDtwi0i);e5r|HYp6X+=l z%IYX&V~KyytK>1X{C%izaAc}?+ylx@e#;jhQ8Uw%t$R!zIQx&CzjE_hVUG4QoEeAt zw1XfKvm(}^FqrEJ0ZgCLtd0dA7Z~N}xBkC5mbUi8i+|nJ#=ZnA!TNu1q_(HVE;yL# zuv0>0Qi(^5G-COsb0lEl!;Bw6oMCvc0s^X?2Sll46f66;$U@DkWv|(1I&A|wrktF@ zK(W4(%?Z;Wsqa=4z#sILMI~eSmbiVDqI1?Yb4x{i<4dv|b$C#I1Xb+*7()P4K@FUd z@GHp;&WQv`(h;;;QfdwDqOY;;+wIcvtQYe*uw4yWF>y$^j+Dc^NE+ZYbK*W__;fBT z-b`#$KADBnZapfvlhJ(FaiGNvrwj@2G6O*h`P* zJsPS?m^MR9v4O>7k-ym?Ejt|iQM0z-FJX}NR??wd%&PQxoHWWQs)#lk z)-|aQQTKt;X?V|?a>~DyL#{@@s<|>=8pE>19u`zJ5$0@LLnvJZ<&OmKWD+h$g3FH8 zp_iSgD&Ek}>z#r2@BrB%f_J=CrJ}P;61vi&iS81SLIS zkKZZnLm!JMVr`l$f8{I{7Vg^+K!Ycd2?1%pHlx|MTAP4&A+RMjSF}>Ao_}) zXJ$eNAs@T0_6)Rqq5wg+NbxPm`v-$FcbAKF%&kGx2w5R&#|NcajsV1N6VlaW3c6B$ z$t7pCR^V@UU!_yJyDPD+m(&^KO3CZyShou$GQ%Vu8U)ce!MHv<;(kY7T!~TneQN3d zmib2dfj~?Aonlt0xUM(O+}YAMXvVFAdx?ivwRQ zyH$F&_uMMSSj z9@Fl2U>VrPI<*r;doLw?(1W8KGf4{ex}EW-8Vf|EUb6~$tKon3*5UN^JTcz;gB#iI{9#n?c)`?y=1PP@xO!*?n2f~MClcIyZ>66HT&nos$%Gy zH$kb#MuB4mZxBzDsyQA)htkOOm4Cvh#n^0dSU`lxj~e0oHs;QOi$f zr5`*$tFYRqbk|P$s!{8S2Z-!mo@V{^Hn-$ybb~7QDP=y!7!V;75ST~*mJKM zwB(m*uyF%Web0@ z_0F^%66Igaik2!e`7X*E%TNHtr|DeET6#!J@ac-2MEtZNs_r zr~bb>O!WV$!?$A+LOV%B#PDD#S^vBd?+-4L_Tgxe<31e`+1{~CtR_>R_I7Q`>@W(7 z8WF18lgIeJJ27xU*LA<+Pn2`#3A^G{-E+M{7DpN?V^EP_$vHH;u78t&BC0g$!LChk zqWi3#EM`(ebScIJ?&S%9%S1)Ec~vv%z2lUAO34NsPR3psFhg16^Tt28(aBKc_F+nP z`fqBXKaaWpuO<_mci^KJ#`D3e?3<8m)xv5H_ znHs6XV(trpcbZu?nP!ppYqk79pH37=uKYssI1<_>XNf6bO5>w!X+(Z%E2L121x>cr z{Tl#}^@N~jUHXqmB59(vD{Z%6d2s}p35a^F_p%rzB&UKvL|;$B5gF^^CwLO#)^0=8 zo}<3VL3}$c`MKC#!6GD=cQ3M);W{6xWZDW>92(OxPU-ef7rP+zQ_DfkR8yJf7fmAM z&}#u(J6<~VtzmUN>5o9-rV{dB#g9R*(eTTZh2Clm^Rj=-=8``4@{yv11N<-UZ0)T= z^UaUURxmf%f)$a97ISF5*w4TkeHL{2o!H(|t3?NoP0HH5>z00lH9>9MVk@iHCHk~) zak?;R5iqGUolb}61e)!lp>#aJHWm^B7Y0$k3yO|IreKkLu@`;^Q5x$)u10G=N_)bQ zz>uCk_e8m|-Wv#5DruOy>omycl*yS`|7`yDBtFF059hfn7)V2W$S`YCE#~I?i8tp9U;idcBn;@ zI51Z}f1<}Mq{KsnlDzE`=if{y&r{?!+8C`bxsG%a+|9cijOVBRI|Kc^#N1>EQ!0W+`aC7;z^V=%ZcLYX-dDoiglFI? zOL5;>)zVw_h1c*IZo$YbtFDd?ty_!Cgl>5K4c!(7ID)SU?U(8k{XhK3_m8EHn}mf z42MNrov3g!nJuY?hcBxjNuJ17MMoo!RJ&#eMh%zJlb||fnfu5N6AkEC24cV_7z4P~ zP`NI`(EOJ)5wpFuA74ofLfNgjvSeKl)d{6dj@^gBlKlN7s?Ib5d{|~@Z4k^q@&m_U zcp9zi3D}J(0UrFi5&nHQG#6`r;Wb<-c1_ z{!c8Z>M75!EekxE2GGV;x7~4`B$bT`I#L@owIq9WEL;*2uiw0bVZ4#x%|fw?u;zEY z%>_GwqW{-K-SuOgTd6*$u z%r)R^u~mv?UBgt~jpmHvJf^n#4|bb^isVj=TSNJW@yT_Ha=ylls03vEKMq4!c)Z@VXZXvOxDP;p$fMPCzMKCM%7@Ev zN!9LSzi7X#A(4a=+>UTS8cUBR&|UY9vi}4+D8vcA1S3QOU2p^97ORH)BJ51t#=$9g$0z% z8qo?Y(nm2?+t9AptTpk-_=u0%BO49qaM-9kcI9WQSn1W#*+lxZ_M*2 z1h{XQWER1BTXL-Gh-ZBD#OKq)?uYcpdyCZ6{1`kVOs^|-WYLIdThsiAH0*2OChcNo zT=^J(LMmreY$R85YKUpNN0?DIqBMJdx#JK16YhTH*CZ>Pc2b=CQDMGfij!8bBl1Fd zYod(;4MBQUcc=`A`V+_8z~kn{VBJke+>_+7LcI`OvN z4}X7n6(SHxy7Tz&mgyEHo>9CLK72m3vs%JP9erK& zlV!yN2~!R0m^qKmOp(#<>8KVJQStGoN;o!goI;YggKh8Uxg(-0CDgjNR=ofM2sc$+ zgoV`iBMph#VY&7`mX0u+_-boAr5I0dx@!1W64meA;(c8mG{{LfBXS6atsLNM*M^l^e+uk<9?}P~z&7el3^m*?V5s;O zjt6dl#Le~y_p5exknuZe?~@}E5@C~G?zxebNwPRK6{QUSFLttpF`)3j+dKLp-FW}} z@ds>M$lI3Bv?$VSO0Gyrm{m2xiWSY4*Q{VGxsyXBj}1&76|J1qG(&CZe$I~Y{x}o1N`~-T zH@FAI*qpDU_usbzuTSm1zNxK<+qJk4u79FQo9h z{+`bp^L#26tHA&TmN_5=C%j3*k!y{zE5y`A6~sHyVTX#LuM)7-{3-)BFYbetlBwZT z0qivYshUjPqS6`CR>9X=pyC#RrcK>xDNz*-5B76Gslf7IDNCt=v=_V!eWeijkTI#_ zx(miwB~K$fV#=fKS{CXtuq{L19hr%r9-&quEy;}yGz!0x^q&0DjJ}hS z9Y$o~BB-XPj770Gl@MAkN9-3&_nBETO$Qb1bMXiuIWuF-3N35y$UgxvV__YY8ReIV z{CTjDQjCL09W_iGRJ2R^eD?avNnF`8e2Demkd`#eqSvuVJ(jI0V=x3V7>5#Uq}Au& zq&v&~z^!9tATC$n^Rjs$f!SL?RT*--AY1L-eb8mWK4>UfG^h*BEbKA=K<@MFO#3xy z;S>KQB^UwPh~kVE7^8|21MBW$FF>KW`zM;(rP3r;$t98rsf8<2PqgZ}H>e<(h=O&_`w|@geQjE`P8T|>sYOlaVn`s^Wz;afNiDbHl4l_YxKf5$fvEm zufhg}{V{Jp0hL|koUOa8;}zlI@6FY&^beB5w{z^2`IBnuVu-5fp!bh;k=G^0XZ<8yk3f zZTd>^G8@DYwo^=2eIMf*a8!>OBR}WYSZF#-e{?PBZL}oG9ePsWu}V$CiK^!qNmQh? z<+GXlblNcS5doc8vL)-o_xc^+m6XbKO4ExF0ME@S1PfRe7B(_23giOn@|+O631u2F z^I+<*B9EsuZ>EU(^pxssjD~6dn2h@0dgzpd2hzo>=_&QuNla>cHdU<4^38XqJR?lH=BOEhr z$bkLXbghI)(oWRTh*Sl=Zd43iL52k0LJgx z4h3W86xVxl0Q!Yjk*JjSa>iPbwHqyA`Hgr}iKXNaLU>DgA;lsu%$m)NjSD+kz>PV)FJIAa?dsfB+vJwaBJdaa0; zhdu<*v05J6WHYrsEnBxT3Wx);AlIDmusZ-1bH&|DawDrSZ_ePOmXB@N;&nj+Xao_} z4@Jwt6g6drLowwVI2(6*Nn4c&JfkdR%CGbdHt~K{5CGMHQWbGtmFX`kXz2COl-&h;Dx$`}SvB9D0vu1_Uvx4Y>3F(6vO~Eb=10yV) z_{C6nVO5vkFpC}U_kl40f2CWU*?SASkNn1m!DB(K5qDY7Lh1cLdLYd1dNsn z2qLjnB@5O3e$mN#IlA#zpW_>!#B@gOw&qalg3H?QNdIWz(h3=%MpLHK4H#>%P_Fmm z-WBTIZb+!*3(W~z>(3@kDQi!#$Z}}Jj{RV7yBx&_n}ZB9yhHX2#qWOouEq8jYHs2i z|03`WRnZc!qCfwnyP8f_=kXpCOUbs4xfrC?L^{X=){aA+vM`bg2Qi@jcw2~`d_2U% zEI*CvFuu78cstK?FrcWF>fokpb?a{gPsiaVXmGS*5u3hU-xzZacw-6i+L|`Lro*b0 z#Mjb3^=#MH?h*tn5ZTwN_L#Yrp+CWuL8>11mC$c$7TE?NrX+lz=j|#>(t)+v3P`9u z5Jhv=4eBM5^lO$Xe$x+jxqonP^sa_WLG=hP!~6JA729VzFqKGSwf0A8GC{{MH0tVm zWg`uD6JWv{y6G@0PPxAolcK}X(!7iO{n)6s(O9;C02uB4hfA%ET>7{q>WvHm#GAUH z_cL*E86i~O-|yr7&^50rO(Q0>j|}CZ;B@3ChIIjA0NjDp{n3GjU4KG??If~6j4AaB zsx9=XuX&TuH@%H}ccN@3%8b3MXF2}gOhkIZp9<$XnT^R2w#ILGJ5{po6DV zb}Nz%o@pdb4cS93p|~(c=aR+VavJ^MKE%5Q(*D$8r2_ezq3_>yw%iwuT7g!AVNgTH zoX0aPyUoEsF%)ICwzVkZ)T2)4Zh~CI>|zpXV~M6|+y+vglM-!JeyD^Wg@A5^D&+k; zvwUEGg3nv@MPInIS*-K9PLT z77v#3lqyINGMM|~FnN0hRXjGfw5Y06RRu;ZV;cmsm~!;h_=b0ujw|bKA{9Ka9+pee zAY_D5HN%`8@G&%>_is-l@2LF2^gZo{&(Vq6aS#%Z3V9Y|)$HjVa5YKrYk~+_8lPQT zezgD9Dw!}ZM*nL274P@^KYhl>coH`wil$zA#f8G+;|n|RAYgwP5@GNH1$);Fn^reoSYcod)n47_kP)=|I`qxilb)H9vhgxPL58Bmavp`f?PgJ|d**UymRtn65=CaTmw}G5kt;e`RNlIp#62 zxQ#Y{E}ltq;z+3iJed6AW~`5K;((ue0(gI?`ot}QitDkSQ{{0uIn@QT2xM~20IUs^ zr~`XRLl`*pDn@gt>i_HR_@lyo{X0yKo@4+4R%X!7dFHGw7b3r!)Yy^m5dMcr#}S3R zq{gQ$PDqZymF^!nu^1%YTssNfp!Zi@LT;jbe1l+0dT`!cdx=W)o}y~IsRO5c*{tyJ z1$jfkc5thIN&y~EKP!2(xV1wE97$u>e)q=&N+r)X{s12v@$BpH&|=pP)s>8SI*Vnb zdj16NEJ;(?8$dRn-w8_el9z@~Qm|yN!%AV9fYX@)Hbaa@O2o%k z7@ja_U%U5McTt`O;4SMi%6(iXL;ilF6NWeL{sLj=0U7e$*P}(SSO=C$5GyP*tRCd( zYFH8Q0C4j}nYC1S)_$1wXOqDadbt=KnHA-Rt`Mf5ylz%jg?!@|>US1pH1ACCfpU`j$YPpPlt&xR%9`S1i z7x)VO_q&Y0PhQe z*x4ZyLnlwKZr99-;HC)mICP{&pNU64Bt%__j$l3t4H&M;@sdP|Gz`n298mWh>vEmR zT+{}23rj-7)H+8J9EZfr_f>R9kp``3R6E*hhKzZ0=yi0+1d%8aeKc(PXWf(-m;ltE z-%A-18L)}Sfwn+ea6@oR-=jpd5U~7&W21W<`sWtc)op>gH7nNQDJqKN>96JsDKuY* z02U<9|51>ojj)S5xBbUtgem2yx_!pb6(@oCRjZ-jtSV}{I#;O<6_%MugYS|%*yt1k z-Cd{RHD0Whsn@Yl3KKZmM$ zR3A%#0FW3u8^GK8C!;bYMW!d$gnEA8e4rw^R&n$|DlA}R!HqIL_A!kmr1&}QzA@m`aHv;9#GvmQ z!I6btv(}Yn1~OPIMv4d%DNQ4M>6WZh!`AJ6_=%ul<+t$9B@@t=dG?s z51sm~3?yy_IHr8G^;3I=Q_E&(p@V^&C-+-0lK;VMHCqWPkEFi@n1YzskngY8);y14Dr8(xvJydfGhuewvv!z%3RH0 zB!EZ(;4_4lB>3KaCsa;)98}dHQNx+U%zYXD3_zUpDR)MSi&;Jn0MS3Ux|YB!sPAnU zi*lPmfh`I^nT)9?pS}Omp^5bNnN4)X%IRX5$G}r|ZU|IX4Bxjn+WP_*v#-Yx*fa;# zR+_vhivL?`J4MAbm);TYQalIp5AH1~3CnrQ_k#R_c}n0jpM#8jES?_u5aUnu7Xg+j zu@bd_elIkydVY;Qy^%E{LUcbdG!}Nk6Nl z9UI6jT;w_OPVn>uPs9Jj$WTrjt6`&c8|4j-dj0a5mtO$U^7&k%+G`##g)XY(3%zg{ zTlgjuri1Ni0kD)(o^F^SE$P1}&^c@Uc^s~u^-OcRfDAV16x7O*wi?u}N}QELI8tRe z*86ggqTGq%T3e-vvT{%96Be_69ysMCjPzrQ(mrXpuJEv%Xu7P|H$FygB8a7Q)>~`Dt;y zo0-AU=)8A2*%2aUCnAvQZi02!XeS6hN;&nddJK$^Ycn_u3mR z2?;-|y`0K-#ly5cy~fJ@nK}7Zy$%L6#GdqR9XTYsblQ5y8YM z2#VnAoulBb-k&!a|Kb*btn74b1_jKanoFjqRY_^(q7yUB;gYju8$>sQOlx2fSi zF7IDoB!jxsFLB2!u7;LI6QKgKs{)oR(yz~X8`dq7*lHl?=EXH-jA67*zHP`Lk>_T)x{<_uVk?z=u7_S*F7NgwA8IU{fANLn%8hK~^R>u_3EJPq}*GPK5(Z%}0}O zsdHURMwDV$^aw*;H|^?13WNYwPFC>%u!NybJI-VV^%_k9*oqg0|KgA(rDg}VC#KW44q;;;W54lDdX zUjf;Q)Gj?rk6r#Z_mlba|1!wn%;-=jHJpM7;+KKqX;$VP!s9<(g z0y{q?+aW*zy!4%?zQE9>f*t|TxmiFXE1$j4!kb<^4NR|J^)>(GN zxkbwwcXxuj26uN4(9pO$!QI_mg1aT5(clu?T@u_i5G1(kefK%ze7k=D1~ja-X4NyR zz7hRtt&+eq5|M5m?a&A-m24W?XG%v3ywaP`ASm;h!Qj!}GH~eW0U^oY@ruF;jzu!6 zR!N+OA-TXC`sid?I5Cn$vl)PxL46FXX_e_(-u2QqXiL;CotSRy1SPaJC~s;as6+Gc zwtGnGS-xaLTS4&3oB#aH4lZ{%Ju&o2PJqK3{-a8W5&>#qBjJF5pPQY({?BKY`2#C) zthJq}@qKa)nJKhT6&g8LJ9w>c*NIofl!a4Z%qw=}>|LtP^X^;|0@8OhB3rf@ZLKGz$CB9n0*9~h?0lw;k-FvL ztG(Z#_@WU%{pRtR%unvG$zyc5kU55SIT_;BPu_$5@A>DnrQ zG~k2>ep^uwcX3#XmT>pQX6dXjd1yyU)C?zVu_xk7@_X22JS-z=o*U&!=+jlCA?w30 za1&qi?!J5$RVqqKlM^f3xk@CEz+TM05S!ZM#X9Y*ShDpoknXCp@V?5EqtbeB_&f+& zS#Boft0t_|p(Q|kFdD4g*8Zv3-xdGyNG;fbzLmc?pnn)eXvnU#q0FQIBh z+g!68Fc`CY?4K7o>J0EY>JSxGxjo3 zNP>##%zuQJ4>5e=^w$*~ara2CIvs>ybi(9mbq)1f=~7ko5eKQQO<%<8`@WFzQBiIN z)wuElM%Uda^k;U1BX30$BB-LdUkvm~U$$QZc@@S;1nnrM6N*@*tN>P7ZCV?Ib?R+! z3#nfYF8^W!wW7E>7p8USOp7`P{}HC3vravd*`4LBZNW7%Ds*sEdTfY&$-j7f9tfK8 z)L9{6gCxvHPn@Y2Fj9_x{s#pD(^RHal`~%a5anG~1j8a~xC)QpbW8>J9K@H7)4$j| zQyho?FYAm@&n@6`Tv*%?TQ>M`i%b5nq2mXTfh7yKCN&uIK9<&G8W6PJejld57VHa- z)+X#9taIvG!vH5S&v*CBET(jKo#W?Oig!Dlb{A|ZoVQf@l_sUR9aiLTB`2*?$B0pr z|BmsEJTNVdaa=u>6oAJ`x;^y{3xFlZ!{uw($Mla5_ULtqli1~Oz>CD_m~_!e6v%aj zUo?|3F+VUG@_oU@g{Vy0m>m!?Stq1!&zPJLhepff(@`19IC5LSz|C7(E%~AXEQr7R zsDjf;UuE8Z?{BOB-}^fw7GgB%!xYNwf+Y<3{xb>rg;88A=p7Kwm<#3GGs2Gxib|VX zI$(YoL8>cJKGrxAz0PxEJw5EMW|CbP-{Qq}Kf$$hIyAMe6wM#&qn3u?6CK9KuQ_Q< z^lj2N;2CSsir`2CKavxHM)Vs!Ur}O&7AJ&_3p7zFXTYuXH}~N|7o{Qn`%#CUVd@EE z=}4c=ivGS+0Ah1{PT+JKc1FX6PB4Zqm}e^Ma>=Ch&db`{fRg~VkHom-E_l$Zx;`$4 zI*rED3yztFFLf_7F-m=0`sq?6d*WQP*c{qbSsrBjja4)GWnyR^g*8A4s-@~%N*8b-^FilAJkW*lrMc>yQxBWuU`y#|2_ zScB>^m9)2n(wd|SS63eDlB@=^$PM0@0^QfetF&Qmzi?+=KE~{4maW>uG$S&tw8Jl+ zdI&L96^Nj2#%qIw=l?^-^75?2MI88GmPD1QhVC-8@q%wTo5kq}QjF$Yq^%tIP|4vM zNDg5$lJjBk=sx=ae4a#Cb1ICDOndY)YwkF!X=tPu*QZrahd!9F;Yaf$L(IurhmeYH zvL*KuYykgF}>fAeN>S+oAf zJ@fJ-TFGN@m>9XdXe1<4&K%Cdi36RoZJv}Q0q-sk>_(CGql4)UqRT$(31Q=#3oJvx zvc_;s3KsLAK?fRR<(c}}QN;MZ5E+&r!BrbAp3@`Jr>Md{triKSg*I9UE`8Z{<2|70 z^xJQ0D1_0Z-0uk6I{OnXc>A@v63KtRPcY1ZF}}_UF9*|{{4<#g8pOTC5)*{VrNmEq zc{Oak7lrPNQCc1>-!*0A*cpt@qD;TwG;>4?pcaMTEdL6oE9+Z@4!8%(Yz9RtyDN~@ zx7W*cjywenF#;^QumnYk7{uG4l&!o^%wXy&0{&!QO2KGgZptY>b$N3=dVM*f&A!_A zF+zzrATaWO2#)1XIAM5_l_$-}o1-7h=fJ zmym_?Yjagji)w0tPi6*X;OJ8pP(u7#(2MKN`I-Xh>V`Qp*Wd|fRZ;eljK;uP)q`|lrtm!RHDp2+_I zA#Go{xuB>kQX-q@GSuT%mVIVpUX-krUJ*YHcYN(JP=<}onB^&c!y!UQ#({e8zoTLHqao{HMx z!TvHOGc?3tF!y|}Y#0%cwsDzHDyC>*2)Y|(U~{q)mo`~Qn!KpJzW-9GW>=&#vfLR3 z@^CsPq7Lq#OSrCHB{vyPteG#;67lC@<_ZjZ-~myj%$<{U`f8?7|CUo#jL60*SyZLq9l5*C0uTC(q>-IQ9%=rnZV&+xb3<@{NTm+5Uinv zM_fyRz(xY$={t&TdK9Y?K#0y}l$UB78$faYKNf%p2;-^$$9jEUor;u^3Q0+1#KF!B z8pw7CuRB`d!0L25CZW|G8m4DC`!J~@I6U}ht~MB4a?xwN z>|`wC?|u*e?lL?bztQ>)I zpRu|5^DAu^v@snHp_wp2P1GUt|M`a6i;{$;gUgYiQGo(P8W4MjvzO}MKk>b{?4`Tg zs+FUQtIHFn6~Nx)k$$BreR6_iA0b6=elCy~$kq!TA2~|#hVqGbVYWyl##+iq}_~z_Fy2;$=xBcJWE*0*{%8#9rOY6!8P|_)jw7b@i2v{yM0_ z5Y(LVbp1d2w`7zEN2sZq;YT5DJD=0rQsa|!bjqoMUkvdfzk(%@jKj9xF4Kih-(P z7`xcP=4RW_Q~4J$j%O@pnw$d#vcXK77aui2H^8bbp_Y7uH^gO`|WUX3~QO6FzOks3(xjGyuJzu$zb|4JwPS)|( z$1ZH4BG(&>9PQBkZ4ZtqxP=f)BIV&kShpY$iV1~|8(>zN-EmjHicO+t+;$w1Kf#V& z-!s^ITwG&qSMBrd<1GMzK+%+y;TRd%f2v(IRFVkx<_6>py93X=NRFpQf@>D3=~_cq zf9eshDvH2Ojkm>EMsV9#!%g7)S#}?j!gtDjsw-+h&8QDq%KQu&8eW{Uwp4P5(!hHy>DTm6A#+qTHq`MQc5##wMFR2>#f|$1*oezvU$; zX5qUbuh@Oo#6mHb`D%;*XeCCs2OY&)&9I5}zLlI8-*b~9q zdB5h?PvrXWh$sJ>EmW>yU$H@lTlE;-cpLR&-jZ8DzBZ(HBCD2AVaWXAxQ0=+yEvXC#yE zSc&!v^@7;-~Ih}wAs4uD&)pq) z4lVQ@d7t>EY*n-@V!KR7P^e{(x|Y^ZvkV@@xnsgY47bDna?Lc3Mfp$X3v#Pa4ib`eqqcvt>uZHFnVFw+c8AbU$@o8 z^R*gx^pU9P6-*aDodxZZPa~Oc9SE@!p=5X1doUcG_;T65_gZ_r$v}G4bEF-;t03sG zF$Q?ZjlUB58}adAh~fqbVzHl==WIViWd9VBaR7C`SAR8awW`#ExpLkNjz5;#*?+~v zHcfz1vn&<#cjZ`=T}yFqhtAPP_JKZQ?9fPjdO2{qFjSC&8Wbbvh+_S|ShuSAT;Jc5 z!`4DkPt z$>O=BGoV|!Igtoboi$ABf(c@|rZ`0ZQ~)$6#P?e*B@vX?gW>6;V>zz}{=+g|ZRPx8 ziG5k&^;NX@ih`qFzYjELqR~PbsAA*Z4GUa##tK1a{6!h2lqTu`xZt z&=H5NyOW_!V%|X`Pww@6poH)v1kyH#;*LKEN`W+-K5d`U{di0#)M(@YScnu= zy`)ojdRR!an)+=&kWngE(lBj-!H4)eTfm3iII%zZ4aUNXDKgUt)-uL~JY0E=8>BNE zu!jZ{@X41WDMmtS%~E2SC%9=PWSEPtmYiwu<`x&iWgeaA=nM!6Csf-|4w7T-kX z3D!wxQjBW${blD-lY>3ptc%Q`%p;Mmjq}64C~Gw(Z{#9j5pqQ?A3g0Y2T#uh(2`5# zKbG2WSs+Is1s;?)1!n}mGQnw(YCSRRqQ(~-){+zD__xBh{8m7JSn*RQzy7m-Gn=d+K2X}oC857 zLzRBYV^RsP^aOK59noo%_8@@4$x>F{(wdmS%Ez&307sF2yn|5XU~KhWJK-Y&u*BB? zB*=9t^rLS`WG?vMnUQ(HozE9Eb1GDWFIuDR=tzr%U^$0h#>TZF;L-l1#t&eAVRB01 zqgPM41T1%kn3Vk5^0@ieEmh7=@4rASoNk2(hfx@@h0(>7t7lQASHZb9wW;|S9%t!` z&%=G8_5Lk4(&1??E^2m4yq+z1&Ge^i{ldzU8&6Lvkn`wG1B%TS9fr5JQ3M&z#U*2I z4)4zXA|V}g?JFdGIrmcwa0N#i*+k19O>0f|&zyOeF((Z^T`xjyDujhfl)(Nt{g7H+1^P1VW2L!H;+4 z$4?tS&Z2}!kgY70X)pBNVPr1n*5WN%OPZ^ZWP^h&c(mtqU=vf?p_vXC!HYT;8}L2< zeddxhw`DPBlC|00W-ztnY!XJ2bLh_s=7EpX15OX%I&x2K!4KX6n^R9;3=gy+32;v5 z!2#rMuvsM)O(=i10ubW8LegO9VR6rs5#onrj?e5lDyKFaZid;DA|(1{H;)>i6=}Vz zm=UnJ`SGNPDRk}*sXQ9Q4S|h9Q*-b=lpH4!QoxPiasmSQy$%21`xCjn3As4>8>UFq zPa1zy0Q$X%I{cOIg^^gE)Nj{@oD>^2fPM22Zz~drmwU=mXOQ1B;h|96U~rxbjY5dM zfNxG$=}6icXPAsXVXA&h3zEPZ_X@%+>_-o+B9EAIkh|0&DQVA?Eg673{(^k`ENP{W zUE|ykf5*Ur7lVqw-Qn(+{Ss)(sSnCEhS$V|%GXIJ5wV#GrxU=QvQd>v^TIg!?$&F` zQTJR5ofszJ!>)%8vW2q?T30H;Ik&9a07>t!RVaw?M;GVS$V(Qku`F5~<|^iNq# zS$i%>>M35fyxsMLh74FXqVsZ-2_3X+2Ce-}VR~bnfk>Ju39g4(X6NHYJeNV+f2Q#= zI(-J-%7k#_)r!z;@75yhNC=|uacX&QN?d9kSzKF(t+n#+-1vN1VX&r);`S(q zaiyzk<|o?i{&wgQ^}bH)?#Z0c&t6Q9Uno?D;RC&eT)2)Ze9SFQKOKz?+hNGB3BqYo zOU_2c;KXid9o425JVu-jdJY&79yYs?e2=yC%VnmLlj!iIQ1t#3vdRIK?{}-FP#S8S z*5cf;`i4t{yfi_wXoh$&Ute9&>5Wi#&yzzNl;T6ot7Dp@R|0bpN?OPT@Tm?3FICkcC@?24QpTplbQK!~kpkKE>c2pD; zHoDR`FV)WRty(!ANBIP@6ohFc$p%zC!R0MG{vbxxYDUnx`?E!~R@bJYqKkvx9RYlA zcWgoKn4ke>u48qV?@b2mR8|!3CPY5eVyeNZi;c}6VLke+ryJ8!y{nNnImvAoPFxPI z<6#^6J*{=fBFFRf^1OA7HK`-#zn@fT(&Nq7tLuoPWNe^+6d+a4X-!DX(q>G_bsns3 z)Q6z)3DpKzm#_@OUDoYY-?dOKY^W!Pf85)5f!2Z%Dl8ePU4vu*?Zns}0_NovysJ#r z<-ajih|TNnx$zE@+sS3d8ToeRgwa-RJc7Zx9sdq&mRHnQvQ5Rb9Dfrz;GKQ`{EtFA zi-=~hbjm< zRYCZw!L;l^@Zp0zf~^EzQ4D-rR(>MGR+Zb`4TS?e>_mCo<*^d~%f9#mMDx~6M?eZj zzD#{ZU6ko{;vP7LAh!V*otR>xUkASh;IhK1cb}Ue%O!isp|3LmQO!nd=Kb@li-9k$ z6Hy)*S&?m4plugj#%?h5E2TLi4m&5c4ZJ2{2G9?yiwN;KNcickO%8nZZTm0FKzD{g zlzzsL*$|M4m+H#%c;7Pj;p;vT;!6Q}d#20yP4f)uQCqmiZFBHP07WzBeqZI~#&_^DVlMMr&=j znYZD=4RS#kD&!Om6^+~V$DBMA8|YOH*uP_RT`cxMcZdA5m88T#kfcExjir;su?=u9 z)preEhHap#6C=ZH+F2;rg}ii?&(GBtB%fd3tFlDBc17)doO`Dk`=@Fkj=|;z{oBj1 zt3+ebEKrbJJLaR9xNM*+{CxS{fYUJsf@k!22;w1g3h!+eqmo$c0cttrVRi}EvKdLQ zQ1hfgLfcR(_#dRg5MDVRzxnYK2M>vvv%Pdb&E9OOQwcM54gKNlKMiNjVK$_4O1-~$ z;t+ce#!pqpIfXVH+g-N!aNTc=?`Q7Wl`I|ngPyhuINTTu{w*cnYCr6-cOw{qFtk`s z99)@-vZ3BHPC(7i27lwD5!Q(afcHTxJ=|=!tQT^s5NRbX39ft}*QX#18Oai?=!pK( zxe}K>d0W+vkWoD<;Azf_#XxV4mtj@X{wwcflENzf6;^7CUIw;rQnm5fDw!$@fL zpgh8oRdV0Z4B~C{okSonX4Q9ODtxYb{)L!+Ar?5XH%dF6kGH&a$DZmcdFYBNq>&Nx zIiHQ3ik6GqENhz*Yv^GCxf=N@gePB2YGI+1a04?mnZgd^wA9Xq?8qr(Txg3C^cJ6w zD^!q5Z;P^~zOWTeDMKd5 zp$`Aalt{U7Zb!CBeO|jer;d+cIXr~1=RA@7+g!$%wruy>KeBG|+0WrCO;>C}S21##7c6 z$r6`8F^CahIwlhM+9*~0+-`~ z3JRMW#?^1n>d8o3XHnX~A6K_qGtlF!gjH+Olt0Om_q=9s(z!s(50P^)$$IR`mn9Bl z0rnWeJ(K6e*&IPzJB_4Olg-%SzlXfh0KojZm)Lx!e(bpH296x3M}76^>FUEJ zT(@&voLOr-!DO(rBKcx@q3KdlYG5ZhgVF?;uDJbhJ_llgwRo-DBk}i(VJ+q9x|<5W ze%p;4B5K*rCz0awiSuJLbMoe{xom&QL@+7Vl#yHoyoT$0|h zj#JdiNnjCFAe@X0MY#%xPM6mx4j}{o+igwESi-m@CFUG9C$N_EImFfgsW0>EL zGHe;aUhe2eGe&9XeinqO52-m$c8e^}=d-g#C+H*fK%%F+T~3%)qa{S^9z7E~avfdK z4QpY~(FOrAJ@q&64mMhwWzh&7CGMN$C+Wq#{3~ZpEtBHj`OspTBVWg|n;B77lNc)1 zAePJ7>5430!bP4Jdc-Nkn#VlsFPxjA=cid5F=ZZdGqkkiOW8FWfq9R9PC6l|Hn)+A zsu%s|5s~VGp(m1x9~WJ?rO8g-1GscXI$DTgHGH!vgIOR#qV z`ov!#MEa~6twuy`^#48P&|kKodcWZj%UX@ClQz|!5`t=h z5PX%V525e|%pZjS5%NfzarIO^)VyX0*ZpolD8U?8qYAP%T+u)>7PVNyee@>lyVt9uGA` zJ5i=Ki?t{(vZpUP_*+y6i>e};>B|=dq^~eYM(|*=uY9fbOE0kt1taT2jBlrbL`tYY z?M9!(vU`sN2@ymM@D8nT!^r)i32NdHvZp?w|2yO$x=_-WtGTYccM7j)sQMkNd4}HW zB54I@3W6I?4gQHYg)dFmX^k9-w042EzsI2A`Qv+&vI`kM^lf=k$(beBZkDW6VH1Y+ zk^tm~b?@OZrY>P+SZ<$W=q#*tERj`(mWPDh;(amNh^YjZ6@le-X82Ni{4h5|@eh#M zFB#|;Jcm;?-fexYdmG@Sh5_KY5*1;f_e6fy+TP^lVBB!0=SW{I4K+QTps--<1HyItfXg_^0F> zbME!9eWdJdSo>b^d|qdXm_OQ{o~%L)_U;3|=ofAk@V`kGsnDyN4?H^SU@<%wD4=3H zQ(Hn%Y96>Lx-aruiE56m!44Z}Y|$HyuYWuH%l8RIab4z=UsdM%jNOcRti!d+&{;f&VOq-Glh{LNl>yTd@z3vAHeE3gT+LXL zUn0H(0dAgJYpFIKtdlv;%^x}p#!*g6lw>(9P%Tg1-=wTBiSMTv&9~*d=f5nF)lXXO zfL!X|A1Oet#b91m2{9qO3Ig_W;^Qo-9gh46# zjZS&+Sj^9*YF)yg&t26e_(fzIQWk&TuXm}eK)fQ@MX^0^vv3)kiYKgr9%veG*-+%< z1q_Hl7*LK?@3i}er>+=G{OwqHw|Pi4IFPNpGte0#sh!0g`#@AwsvDY~fA#!%drI6mgHooV?%^J z7X#7$c}MQ^4D~- z6y%G4hNLTZfC-1BFD@T-dIe-3Dgf69|C&1G4wXlo_*Y}R zsb9z^4>*pZcD3yi$3pTe^Wdc^4?wo*y^?y-SJBh>712(Ij9@ucGTh#Qr$@I_rC;0X zxk*WVNa}o4>B&X4Zqklv`0tx*aN+GUzjCh0L*6s8MpgYiitNh-yjxberS zPA<4if=3s{;HMT?AkRA!VjGTc29-4<&!klDuo^8O$SL{XSZ^AzT$m6EpGcHmqqUTj z<%}R{=hg2CAjYTt7xjL2&+Du6tlh%s)KmvH*1VmEfZM(TzpcaRvcSvEzpXy&#+@NT z<5L*OFHFk3L`?A~ei2d8%LN@1i^HUX8+~E#v)-I^?$POP6oNEl6B85GHfQK0a=|$E z?&bNiuvK*rk}GODXzjw3`1mcGzUm&PGzyBz0Rwxyhl^^mpS-~m*Yy-;ZMjh`7jAG7{;S1MUv`oy*B6WT2WM za|)X(b@I(^L&^|aRG26Lnc}l>LrE?D+oEXJ1|4mfzJd1H14?f7M4dqgf?bXXbZO9I z&n)47=~2I8rGgC1F>4`IMn}x?%q=BNcxVV>QSqXwC!)9JP*sV-0DOk8e7h!mMkg+v zEh7khsHW*~%#?Ef7sC#pm5@@;J5J>!3zF|Xa&}(ctWN+Yka#M=<&N&br-S0bru`n` zvVec8#NUtg7g06@O;A2wJz|=6V3y;t@P&-kNd!Jo>f71(+QJ?r?9lv94iC>t z9A!Kq&$n@FYbroC)lkmx4^;m@7GSlpBr|j2x%-bxQ7T-=6iVhSJZmWGWa2GE{O5fX zGx632?xr$DNJ%x3r~Lg!okAB0u-_3(Ol=J>Nx9p%X*U#r3G1`)Y1vgW`HLT_jFS}H zG%2d;i#gcHUdsK7{NcK}OEAkEtqOimC)>- zPPFCwO)%k`x`$G2!ZIbBRNh9?_&YCNWVDuQHxni;%=!7F6wizA8-+BFaZ&@=b-U2IH-72o4?&}d8=>T^)p;~S3AR)p zjeVtAxa=zQ*+D>8xgllcg2Xf*dzkYDL%4? zPlYl%p{$d?GU=lbW@kV-juNB-tp1k2Nzu764G7^ssuYM)B9 ztFyd~|G9~T4@KF(@YrP-T_kUnX)ScCOUFS}Xd@}Cu%*o-@o z#Dm3I4coA`g09J?3q|8IGi&ph6b!^)C+A|~N#beblS@S zU9MlxNV4MW)U*aE^Oq*j_i7Fg2OHlGon3$Un!(X$c@2yl9bYZbP{9c5$}vavQUSg) zk@HfxI2MsUPN^(jg-g5Z&8eK59dn=L=En>5Xc4of1`o=V@W9^DN>0Ew{P{j?ti~ki zVOZH`A;VFM0LpXKCB?&&wC4_XtR<{%}rp-?#48#!s^ z&)XpodL?gvkfasuk3n6+&IT#To`3%ApO02iKQCPgp>~T_d{+vFRg{s96^U*fj=OlI zqGQ|l)TyRW=x!C3@3k;B&PSU0=qZ~v97SfsqwtYyBV=${#ncdqLXCEe%F}Geun?P9 z3H2ZmpK3W?xev%*rt$i2>)Jl&YxE==%_+%n@~iudhAl!3zi+h7Z4VnCqx|TvUuo4z zLHKyU#xn35fN|0wcsnOS1Vf&Fj!`{r%p@k7{J88rau5|Gh9S`>h!1t`3#hbw9D}Bt zKDb*~lV=7mnuQ((Zotfm^?v(pkeA&1{m15y-h2VlH!W9T|Xy9R}eq2~=qQg)8BrGph9$n=_rcqVN=`dE| zT1+PpARU_j*iDjDv)Y=Z^Z;SN$x(W`p8Dsod+RsA6H;6^l32`$@efIL@aa_6w5dCd zm)_tnxDY_I%Mj#MQsC#c#PcRx`g>jj%zFIxDrXFm^OKZKwg#!*KO=&42Fclw3J%mZ zN*XZs!^h02DW^%W8^cF8{hMs{|N6Pc|B~Y0;?k4YpTx4wyBQTpL9Fui=~jFV9hd47 z@bN2Q$yV8J3|BH_;kQ`SB^2ox#P?KU5nI_xs65!g&pdMO=^{zCiKn~Jy~KKeHrqyw z?E5}f8gz2VL10+cDqX_G?mS9Z8zs9Nw=4c)KDuY%Z6UhJc>Ui%c$ENHG@fd9>@UFB z)pdDrqM#_Ktc4WxytcKSk!5m(km2}ZPSgE#%#ttS+Muj_3y13|Va1&BK|YzZ&wDFy z3tlLf$Cr9D;QEtam#F{UX2iJHzuvhdlx<2Qnc%9L~i3dh`vl_-Bz_nOYSj|i-EbyN@}BaZOPUFvgh)~SoDojDhWqY7WzwY5h4hjlGKU-41(I+6Nh@B`3-18f)vj;2TKn+!9=KG zh9#3AUR9z1Yd6%R1=0(sL993>RBoK6&82TA!5a2@Ngagyid8#Yz8DVU2$1CSsJr!g zk{S0A7TM$e!O}~q1ay20Wm!Crw9L|-eKSa{;c;VSo13@KMl0Gbgws|@P_^iD`2^jK zUR-K06m$*#oV6t9XCb%E!0;e$JqLnL>h-@JVT|5K$LN%l`;!a|8n!9RG#<)m2!m%* zDkkF4S>7hn7C9(sOG)rWBhqGWbSiwX@Oj}3kD(zta*n8~0Uno8%qKOE*j7yu(ZkYO zRkDGS+`}K^2P2)iODfL&FH_UE_=j=PzfIZx@-(uvaPz&;ughm9GWLI7;(vkzt>v}( zq0M^=S)NY8rj3QX3#biFCrgYU@SqF|enB!MOv96->P#zYuIlupMTif*h=7WiK^ttJ z()nB44cNY2UZW4sCDG(kr`bd(5n5VWzk0e}#wWJj+8+*1et>kA7M%1-)VKM20#V20 z(_D846^Rn%WaQ*_7K%C(KAJd5`uPd5X5M+FDbPOL{s@K-RY%GJ$9Zr1w#q}Q8#BJE zGr~Ow1;{@qr^Q~~FPYNQ2t2QYmT{2d(iOmtOiB&3y)mBkDp z(@aZ66e|LZDRggXvo5FK3r=d@`uJI>*7_C+AA9*qeQ07_dXwd zGYM4j%mNsT^d|}?jxaRW379RQX4t)C)5S4`r$46}xSlVtAd_zJD<*KSAfPaAJnF$n zglWl0CPF9!+@;WCQ)HnVZ%VaaTuRWZgBUZ~mGyjlk`fS@Vw5yv_%Y%5M2hSOGc7DP ztXz)GEt8r(aw8VE?&hRTf;mG)M0#{XwW|u4Q!8%o$k!%6^_TXp?T(pq5KGu~BOlSx z`;4vdApNDHQrZ=A5GoD3^ec`PVYi&VxNu-H4}W+#i})ZvcN=(ztWk759DmW6;RIRI zorN^)6x5*4=4N~2F~?u*?do8*(NukfH;68AM0h&;f|A`7tcHZY{fJpvv7670o6{qWp34h}CwNO&62x;}Y4Yq)+ny z3m>?Djf{TFo>te(+lVrHCyCkj5RGj5l$mOti{d9X~t?t z!Q!MLGWR9~TP~{0#}P1uD!~QBsiMHfPr;c?hEJK7**);KqcaMbK$rPlq|Cb9C1OKo zaE3ti`jB!@m1W74*tPn+0*!(MPWtthsISALZ6=C&S0VZ?HgpT>6l{emUj`f;2bLJ- zX9Xq6{PCDOR@}rm&tg>2qxctJa+(1BzcOGA9e~Tx8Ua;CtWo%RxxjYp~ zu9LO|r4@-lJ1k>JF)GBa*RjBVTv4j0+3u&1G4TYOk$P#=#!q;1IQI9Yx@AR5E2B}# z;KHf_XKHEh!}Rf7*&~z+A4%!*AsMMrT3C=KSei%a{VBo*gzRF9ZBT)St$8`C+*FU>xLT_A0L8q&$Sm|7c<5?Zrq6m zy?1PB;@4xORP%c>!(_a^VZKLq`QK5S`N0?m?0h5XBX_Ie-wX&xKze<7Ny!hWMg_NA zUbEK)zX$oDyPZ}pR9$R`+h2}8$yZ#hs54+Bhkw;62L(S?zxvwpHlLf)F%x5|67HlD z;{>=UB;qKNT2>XwzaI4T{a&wiasQU8~84eXMRyhBKeB^L8 z%o^)WM;z8*Vb*ZErxa|!Anb*>y$yz7-55d>j-&9h9<0H66Qf0lJp&fo1jyZ#L0_u? zni*l;W;%K)3?H&y4?pZys?ir>uxr>htR{P;Q>6YZ{Uuw3oH`g7$5j_R?%=9_meePZ zvO!dKnWW~|vC_Y5YkJ~wagaKgyAdHJ-IrBrRobEFGSAO9Txnwq-XC%A2-;(0|6#)N zdFc7XTW&MwUqHst`xObA%M%8CVZ`*HlcOacOtXD_r6{G6xc%!;(Xr0#UY4d- z3&Vl`&Ggyo@ERFQp;{T4N5A=5c=@;r@THXSBZ5LNj5|Mk$rgZc&&|5LP)4FD;>Zv7 z1}?&^ZhlP`YJoY`J&Nt3tf$6TdT8rph?eq8qC;56wN{5z(?4RR>-;7ab_|i1eR8i0 zYQbYJz~3sIpT(SOGbLY~Oxc~}h3yuU1k*sb{~$tkf904NNq}l0j%+5#AG4QKtbvyk zCS=?DF3IEcA>F?_tp4u@IBbjJws%+E5B7cAS4UqO$6(o4GCzqVsbcBfeMkI;TlCxz$ znUcZ}9;4)83k_lJaEGNd9C1w!7di&UtS+TDyFw;wWk0FH9*FS6{~%c|=m^2>H17AOv)ag8(*@rtx(VK*Xc&bVK{g+&-_7=3) zPS2q`I7!*|IFb7D%Qxkn9;JdD+ezU47C-uj@^EUmg(y}kQNljv%z#6i;CC9zw;S}m zlFHw^D0CZ_U^T)k`*jnMigqC`#xhf{Qazgl>6vtmh65&?5iab+~^1R%n8 zS~+w!8A@tpiES<=d`qKqNvnszD_$Zs`I3AY_oAF@qa=@vQ?(+g``3g}vsjyUyC!KB zzy|w+)w}G@UU=G0JrMIO6XSAU{aLisN12k2>%46)mXWu%h@}i_{=gEyS%a3~D>ih1 zgSfr4$VoPT z3%7dnxa)( zS>KpHooOc~48zm!t+i@L$XJ#9Q*x_!4v|YVl`A7Tp+*IqTsXF0xCP2I4m2+JNE;=S zu?+v~X$K_Ib^gkYV`}!KU8b`y@KGpcSXJ)P?I=p z0k*q*`=V>{dn+m6UUf?$sRM-lMLwdOwpR`d2X+Rc zJ0z?C;kN%s(?(){HC$Ti;$e@(<)T+I;Qe)xN{5*Sx|;JolFC7!aymE*+41$0fjsrh zWBJH>3dnqT$>zpXO(o3Z%x&KJO}IL@5HSJBk105bUuNj6*Nl zf)1}k(I#rct~^t9dUb)TcqFzjWb0VImjDG+ABd{Y2p=eltvt~TwDl2&n`70}#w{9=MOr^7Z!6-8 zg%_i$_QsDNt(ScjeTO@o%FVMRev~hsY(*aBuM-0G=Z#busuCo_E{xjK56g5xwrq}4 z1F_NyaeKudFQL;LVP>uCLl_T;eteS*^gz@AEc;(Q^@Ol(n z%?h_li&U8A+LdW(9}y&~=c9!a2}Oc06oZPF4Q&`sx2W4tZ|acsO1yJN(BgD25Ftw} zPx}>ciPm)o=nD0|4nI*H69{o9O7$2a^`6 zJ4B_rt(3+QSk4%Hr-jr@?yX#ikOMio z^by1J;Vff}Da)Q)`p$x7lRMcV_-SnbvnI0@epJv)zvBm?&As$UD*ALvzrn!3$lw-> z!=G7n@?jHsfQPnR1PnIdNt;_DI$4^hhu=n8-IddSW`{NG+2v-)kN-)Z4t&>i zLz473yO*U1)pnPDzPY~Yp88$sw%v8O{4LDOwceyBi?Q9msg|%r93qg447+gz;pSSO zuz8H;3L8os<1C{#S>rmfzTTw+W+zAO;Lp+a64+YpU=Zf%Ssr%!kRU19J`cjU4ITgL zLNmWz3I;DG?ANb#lMDGn|EE5*wyCXq1OJL{aufCO+qWW8#>GzKqCDF&htDbThkM@w6 z3j{ZOQFz#}8*`0wAK+>i58StTV2LkF_pV5pnba2cD#lfs0L1=NSr zz;Q#L8w;U_)k2EAY4GsLTK&|FUNijm?0PdkAqwX41js{+2zs6u^#K^Wuy> z35nR+R^Ci+T+JJ+8jWpiAP-$y=E=(JfZD``}NwS z0ar1n-yUqZgp5(ASPXisXpk1ki#Z5nXWK0_&ujPmA{XJHusba? z>*nYrMM59LRW@Z8evfv=VUP)SM{*?7RnB^ zAnjmFFNqy%z`F*mZd|;M_r0bcUP4r!q+=Zc%Hk0NgWWFim9k0DZOr}bGLd8KECRxT zhp1}rZFn|A=;^tQ(=F?MKcXclf=#T19x`p5gB`}NNvGOcxEsACdVn?EQr@6nK{tk{ zn<#D4weGAFP0|0zUYjp1i0Q~)mch8sr;`9b6SXE?R2z#y_gkg0`aS9O(bJOzhbv@k zyH3+pqR7C>9R&tL`Bdr{7uRe)=Zm(Zw<4m=U>5;i1Jebc5ez#Fz^RlCl8uXi;{w-7 ziJP6Pxlb|$UPF2krG=6T5EyKUmvV3EbfMYS!H%&j?NJQ<#bv{|ft{U~2uQSE_lN{- zc{2G5r-2&$6`LY5Htb`bP&)?fy%1w!Rc8`Ih;DKY^Jh9cu)Qd6!vO)#2x6{Cvd&;D zU!;LJZN$TZ$BI^}4CXS)1ysx{rgOe38AF>Y!Q)ESCi2~SyA_+qe@8PAnuYCIx+-e` z(A|Oh%IewNh4=uWsbUf`Wh)`qP5R-W=mg80#b{0`yfcqVM`NpfKC4}KU^Sqb3|&$Q z|65|+#Si``2d@)0o|^kW8aZ$Nl-;SCIZtL#nK7p64?4;<9>TYU4WMR8@Yr13!Q()D zN)V5!=(O3j*KU}!IF2YT$yMJ2Cn3Z}L3ooX6Tz}3$jCuV!r?KjI(`BJSuXd+0T?Q0 z0?IVuT%UE)fxgXFXY>`VZ8de#UnS_|z-i$T174_MyB;n!R7RhA-%P++m=ScIr|r}YOpviDh%ZnkYFMaSP-nBIfXf;Tf(-R5Hz!aVk^g?|Yw z^%Wp8!+5jTvrR=;-PUkGb7YW^pk)r!9D*I_-a$#{!{KN!p8nTU!B=DR^Ktjb1>`$NtB zk21Fzcdix`lbKO)_Qdboi{%@Cgyz&o`flayuGji{(X{g}rR>Ch!&(lr*Bg_-?_}Fc z$&sq=ewjhVPgmG*y0#SrE!Rhxv>7TwUiPWG@|W2)m_5>NWbXi%M&q!Ts@m%n6_G3s z9yg{!43W>g5*WoH8WSw(l7`LhdHh;5$jcQ84emzbpd4(KZpc&( z(C*Tai{z8bO>4H&EJ66C@4?W1f~9*moHP_jdhx`+Kp5y(A6!woQ$DoMjwvjPLn1=l z{zX2of~><`$!hz+IFBPI5xUli_eteCcu@i6M-pP{t6dY4e`GoZfu-;+FPso2e9bRp zU`eqmE{B2HN{}j;w&oSuu6BZvq>qpQ)WR{UkW^BBrJK$ypR(C)<2<|e@NVy@t8=R$ zxEqZrv*1!?5==MCJ6)X)-UX9eO_hEJ8dZI1u3}cHmG(DzyjM02k;_rXI-`cddY7w# zKQ(*)omGGKE3oxQhWsS|{?Czy zTxlepRPbhLMNcecOdzizyVE0Z)rgGGDKOX;hR5qTqZE@AJ5I~!8Btf)0X;f#jI_R; z5X?=`i435R&dGJnJA^xw*mp)(Ixt>?VeJw4CM}(TTI~Th#FPuAP9IF^4X@$*m!TaY z45I_#um8?;2j}LGpokLJYbAN62Br;T!XaHs4Lvt zd2Z{?UfhwcN*oYX6pL2h$&HqAn+I&iB-g6mx+sM{FPm4DF1p6J>K_i)eg_^29(TN= zsJl5oYkb`b65uf5?mHHQ8sm?G;Y9#+(om00ncCAE#Ls&?kU>pE`H!Xxv6>UYzeqdI zmt|8n;T5qc*BcaWxD?jEcvGiXRI1O+L&gIiqf-+VmGj7NM*KH0OeRO>y?9vh){+d@ z;Tpb15%b`^MRCr$e9-IGlz1@U@$w-Jv{%ml%7wgJ0yV95!p&?B_uWR>;ViB@-Tor= zf#(ep@VR2f$HaN84%Da&Ivt{{@R5Y7l}rkSiFL&1^7uzI=)W1vhle%DFFV#s)jbJk zxafs|l@5VgjKNhRamfUs^*cW=ti~{*j0d;GSFc~1n5%@xIyP`>8*V=|-OzS$se&hQ zW$#U!&QCvMHPb=Lx!Vl6RKoj;Rn?3#I#V+DBCQIPNWnbHixK-Ix%y9+KH)+pv)SrJ zNyvmz-*iOWeV+ow`$98sTD~R->uIRHFkdWceBvI>V&d*TVsyY_C=b6`u-Em}xU&%A zkob_r%y^B4)elGUyv>)yk|DHMftM_ zBkT7~U1jF1%O3qCf4X=er^6xN^?}u(m*1DkXF`M1U_a_D|4odaT9{o2)Uc-(Q) ze*Wvxx5t7zy(G46oqzMrfEcP={~{BDjgO)04zpzj`@3g(cS6H_J7^pJ>|*XkU$;Zn z{j8!FQHOQyj)QxK0~4x�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]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�sJ4d0{5PZ;Y^xO9NfMiYElj= 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