|
| 1 | +<!-- This template is provided as an example with sections you may wish to comment on with respect to your proposal. Add or remove sections as required to best articulate the proposal. --> |
| 2 | + |
| 3 | +# Enhance KafkaBridge resource with consumer inactivity timeout and HTTP consumer/producer parts enablement |
| 4 | + |
| 5 | +Providing support in the Strimzi Kubernetes Operator for following properties supported in the Strimzi HTTP Kafka Bridge: |
| 6 | +* `http.timeoutSeconds` - For deleting inactive consumers after a timeout (disabled by default). |
| 7 | +* `http.consumer.enabled` - To enable/disable the HTTP consumer part (enabled by default). |
| 8 | +* `http.producer.enabled` - To enable/disable the HTTP producer part (enabled by default. |
| 9 | + |
| 10 | +## Current situation |
| 11 | + |
| 12 | +Properties are not yet supported in the Strimzi Kubernetes Operator. |
| 13 | + |
| 14 | +## Motivation |
| 15 | + |
| 16 | +Raised in the discussion here: https://github.com/strimzi/strimzi-kafka-operator/issues/8732 and triaged on 29.6.2023: We should enable the configuration of these fields. But how should the API look like? Should have a proposal to clarify the API changes. |
| 17 | + |
| 18 | +## Proposal |
| 19 | + |
| 20 | +Proposal is implemented here: https://github.com/strimzi/strimzi-kafka-operator/pull/9820, both Paolo and Jakub suggested to raise a proposal for the implementation of `http.consumer.enabled` and `http.producer.enabled` specifically, as it can be done in two ways, motivated here: https://github.com/strimzi/strimzi-kafka-operator/pull/9820#discussion_r1523500115. |
| 21 | + |
| 22 | +### Version 1 (which is currently implemented): |
| 23 | + |
| 24 | +Adding dedicated section under the `http` properties for defining enablement of producer and consumer: |
| 25 | +```yaml |
| 26 | +spec: |
| 27 | + http: |
| 28 | + type: object |
| 29 | + properties: |
| 30 | + timeoutSeconds: |
| 31 | + type: integer |
| 32 | + description: The timeout in seconds for deleting inactive consumers. |
| 33 | + producer: |
| 34 | + type: object |
| 35 | + properties: |
| 36 | + enabled: |
| 37 | + type: boolean |
| 38 | + description: Whether the HTTP producer should be enabled or disabled. |
| 39 | + description: Configurations for the HTTP Producer. |
| 40 | + consumer: |
| 41 | + type: object |
| 42 | + properties: |
| 43 | + enabled: |
| 44 | + type: boolean |
| 45 | + description: Whether the HTTP consumer should be enabled or disabled. |
| 46 | + description: Configurations for the HTTP Consumer. |
| 47 | +``` |
| 48 | +
|
| 49 | +### Version 2: |
| 50 | +
|
| 51 | +Adding enablement of producer and consumer to their own sections, example: |
| 52 | +```yaml |
| 53 | +spec: |
| 54 | + consumer: |
| 55 | + type: object |
| 56 | + properties: |
| 57 | + enabled: |
| 58 | + type: boolean |
| 59 | + description: Whether the HTTP consumer should be enabled or disabled. |
| 60 | + config: |
| 61 | + x-kubernetes-preserve-unknown-fields: true |
| 62 | + type: object |
| 63 | + description: "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. (with the exception of: ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)." |
| 64 | + description: Kafka consumer related configuration. |
| 65 | + producer: |
| 66 | + type: object |
| 67 | + properties: |
| 68 | + enabled: |
| 69 | + type: boolean |
| 70 | + description: Whether the HTTP producer should be enabled or disabled. |
| 71 | + config: |
| 72 | + x-kubernetes-preserve-unknown-fields: true |
| 73 | + type: object |
| 74 | + description: "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. (with the exception of: ssl.endpoint.identification.algorithm, ssl.cipher.suites, ssl.protocol, ssl.enabled.protocols)." |
| 75 | + description: Kafka producer related configuration.``` |
| 76 | + |
| 77 | +## Affected/not affected projects |
| 78 | + |
| 79 | +PR raised for the HTTP Bridge to use the new ENV parameters introduced from the operator: https://github.com/strimzi/strimzi-kafka-bridge/pull/882 |
| 80 | + |
| 81 | +## Compatibility |
| 82 | + |
| 83 | +None. |
| 84 | + |
| 85 | +## Rejected alternatives |
| 86 | + |
| 87 | +None. |
0 commit comments