Migrate from V2 to V3¶
Use hash and trim long Helm release names instead of only trimming¶
KPOps handles long (more than 53 characters) Helm releases names differently. Helm will not find your (long) old release names anymore. Therefore, it is recommended that you should once destroy your pipeline with KPOps v2 to remove old Helm release names. After a clean destroy, re-deploy your pipeline with the KPOps v3.
For example if you have a component with the Helm release name example-component-name-too-long-fake-fakefakefakefakefake
. The new release name will shorten the original name to 53 characters and then replace the last 6 characters of the trimmed name with the first 5 characters of the result of SHA-1(helm_release_name).
Create HelmApp component¶
All Helm-specific parts of the built-in KubernetesApp
have been extracted to a new child component that is more appropriately named HelmApp
. It has to be renamed in your existing pipeline defintions and custom components module.
pipeline.yaml¶
custom_module.py¶
Create StreamsBootstrap component & refactor cleanup jobs as individual HelmApp¶
Previously the default KafkaApp
component configured the streams-bootstrap Helm Charts. Now, this component is no longer tied to Helm (or Kubernetes). Instead, there is a new StreamsBootstrap
component that configures the Helm Chart repository for the components that use it, e.g. StreamsApp
and ProducerApp
. If you are using non-default values for the Helm Chart repository or version, it has to be updated as shown below.
defaults.yaml¶
Refactor Kafka Connector resetter as individual HelmApp¶
Internally, the Kafka Connector resetter is now its own standard HelmApp
, removing a lot of the shared code.
It is configured using the resetter_namespace
(formerly namespace
) and resetter_values
attributes.
defaults.yaml¶
Make Kafka REST Proxy & Kafka Connect hosts default and improve Schema Registry config¶
The breaking changes target the config.yaml
file:
-
The
schema_registry_url
is replaced withschema_registry.url
(defaulthttp://localhost:8081
) andschema_registry.enabled
(defaultfalse
). -
kafka_rest_host
is renamed tokafka_rest.url
(defaulthttp://localhost:8082
). -
kafka_connect_host
is replaced withkafka_connect.url
(defaulthttp://localhost:8083
). -
brokers
is renamed tokafka_brokers
.
The environment variable names of these config fields changed respectively. Please refer to the environment variables documentation page to see the newest changes.
config.yaml¶
pipeline.yaml and default.yaml¶
The variable is now called kafka_brokers
.
Define custom components module & pipeline base dir globally¶
Warning
The previous CLI parameters have been removed.
The options for a custom components_module
and pipeline_base_dir
are now global settings, defined in config.yaml
.
config.yaml¶
Move GitHub action to repsitory root¶
The location of the GitHub action has changed, and it's now available directly as bakdata/kpops
.
You'll need to change it in your GitHub CI workflows.
Allow overriding config files¶
Specifying the environment is no longer mandatory. If not defined, only the global files will be used.
environment
is no longer specified in config.yaml
. Instead, it can be either set via the CLI flag --environment
or with the environment variable KPOPS_ENVIRONMENT
.
The --config
flag in the CLI now points to the directory that contains config*.yaml
files. The files to be used are resolved based on the provided (or not) environment
.
config.yaml¶
Change substitution variables separator to .
¶
The delimiter in the substitution variables is changed to .
.
pipeline.yaml and default.yaml¶
config.yaml¶
Refactor generate template for Python API usage¶
The template
method of every pipeline component has been renamed to manifest
as it is no longer strictly tied to Helm template. Instead, it can be used to render the final resources of a component, such as Kubernetes manifests.
There is also a new kpops manifest
command replacing the existing kpops generate --template
flag.
If you're using this functionality in your custom components, it needs to be updated.
Namespace substitution vars¶
The global configuration variables are now namespaced under the config key, such as ${config.kafka_brokers}
, ${config.schema_registry.url}
. Same with pipeline variables, e.g. ${pipeline_name} → ${pipeline.name}
.
This would make it more uniform with the existing ${component.<key>}
variables.