Skip to content

Latest commit

 

History

History
47 lines (31 loc) · 2.67 KB

058-deprecate-and-remove-envvar-config-provider.md

File metadata and controls

47 lines (31 loc) · 2.67 KB

Deprecate and remove EnvVarConfigProvider

This proposes deprecating the kafka-env-var-config-provider project. It also proposes a timeline to archive the project and stop including the JAR in Strimzi releases.

Current situation

In proposal 30, we added an implementation of the ConfigProvider interface of Apache Kafka that allows retrieving configuration values at runtime from environment variables. This implementation lives in the kafka-env-var-config-provider project. This is especially useful to safely configure sensitive settings in virtualized/containerized environments like Kubernetes.

For example, a Kafka client can use this provider with specified environment variables:

config.providers=env
config.providers.env.class=io.strimzi.kafka.EnvVarConfigProvider
option1=${env:FIRST_ENV_VAR}

Motivation

Since Apache Kafka 3.5.0, there's a built-in ConfigProvider implementation that works with environment variables. It was added via KIP-887. It provides the same functionality as Strimzi's implementation.

Example usage:

config.providers=env
config.providers.env.class=org.apache.kafka.common.config.provider.EnvVarConfigProvider
option1=${env:FIRST_ENV_VAR}

Proposal

Once Strimzi only supports Kafka versions >= 3.5.0, we should:

  • deprecate the kafka-env-var-config-provider project
  • update all references to io.strimzi.kafka.EnvVarConfigProvider by org.apache.kafka.common.config.provider.EnvVarConfigProvider. This includes code, examples, documentation, etc

After 4 Strimzi releases have happened or Strimzi reached 1.0.0 (whichever comes first), we will archive the kafka-env-var-config-provider project and stop including the JAR in Strimzi releases.

Affected/not affected projects

This impacts:

Compatibility

Users relying on Strimzi's EnvVarConfigProvider will have to migrate to Kafka's implementation.

Rejected alternatives

Do nothing and keep maintaining our own environment variable ConfigProvider implementation.