Conduktor release notes
- Get notified about new releases! Click Follow from the Conduktor Console and Conduktor Gateway pages.
- Try out the latest Conduktor version for free.
- Have questions or feedback? Get in touch.
Console 1.32.1
Release date: 2025-03-24
Fixes
- Fixed dependencies vulnerable to the following CVEs:
- Fixed an issue where web browsers would try to autofill Kafka Connect configuration form fields with saved passwords
Gateway 3.7.0
Release date: 2025-03-21
Breaking changes
New backing topic required for Gateway
The local KMS feature introduced in this release requires a new backing topic to store the keys.
When you upgrade to Gateway 3.7.0, a new topic _conduktor_gateway_encryption_keys
will be created.
To change this default topic name, use the GATEWAY_ENCRYPTION_KEYS_TOPIC
variable.
Find out more about environment variables.
Separator for super users
Super users in Gateway (specified in the GATEWAY_SUPER_USERS
environment variable) are now separated by a semicolon ;
instead of a comma ,
.
This change is to allow super users identified with mTLS using their full DN form (CN=writeuser,OU=Unknown,O=Unknown,L=Unknown,ST=Unknown,C=Unknown
), and makes Gateway aligned with the Kafka configuration.
This change doesn't affect super users specified in virtual clusters, as they are specified using the YAML array.
Deprecating V1 APIs
V1 APIs are now deprecated in favor of the V2 APIs introduced in Gateway 3.3.0 in September 2024.
If you are using the Conduktor CLI to operate the Gateway, you are not impacted.
Check the following link to understand which APIs are deprecated: Gateway API Doc.
We plan to remove the V1 APIs from the Gateway in three releases time, in Gateway 3.10.0.
If you are using the V1 APIs, please migrate to the V2 APIs as soon as possible.
If you need support with this migration, please let us know.
Preview feature: introducing cost-effective Crypto Shredding with Gateway KMS
This feature is currently in preview mode and will be available soon. We recommend that you don't use it in the production workloads.
This release introduces a a preview feature that significantly reduces the cost and complexity of implementing crypto shredding at scale. The new 'gateway' KMS type allows you to manage granular encryption keys for individual users or records without the prohibitive costs of storing each key in AWS KMS (which costs approximately $1 per key).
With this feature, you can maintain regulatory compliance and honor user deletion requests more efficiently by:
- Storing only a single master key in your external KMS
- Securely managing thousands of individual encryption keys in Gateway's internal key store
- Deleting specific user keys when needed, rendering their data permanently inaccessible
This approach is particularly valuable for organizations that need to implement crypto shredding across large user bases or high-volume data sets, offering both substantial cost savings and improved performance compared to managing individual keys directly in AWS KMS.
The keys stored by Gateway are all encrypted themselves via a configured master key externally held in your KMS - ensuring they remain secure and useless without access to the external KMS.
Find out how to configure the Gateway KMS.
Support for AWS Glue Schema Registry
This release extends the support in Gateway for schema registries to include AWS Glue schema registry. The default choice is Confluent like schema registries, and is backwards compatible with previous gateway configurations. For AWS Glue schema registry, different settings are required to connect, and this is covered in the plugin documentation.
Feature changes
- Added support for
.
in the name of theVirtual Cluster
APIs - More detailed errors unrelated to interceptor validation added
Bug fixes
- Added
aws-java-sdk-sts
dependency to allow assume role profiles when using AWS KMS - Added
jcl-over-slf4j
dependency to see logs from AWS SDK
Console 1.32.0
Release date: 2025-03-12
Breaking changes
Partner Zones
Improvements to Partner Zones require Gateway 3.6.1 to be deployed with this release of Console. Find out more about Partner Zones and required environment variables.
Scale
Alert history
In the alert details page you can now also see the history of an alert's status and notifications which may have failed to send. Find out more about alerts.
Audit logs
You can now view the new CloudEvents-based audit log events with enhanced filtering capabilities for the new resource and event types, including Conduktor platform triggered events.
See the full list of all the audited events.
While legacy audit log events will stop being captured in this release, existing legacy events will remain accessible through a dedicated page until a future release.
Service account labels
You can now edit labels on service accounts in plain Kafka clusters through the UI, in addition to the existing CLI & API support.
Support for labels on Aiven and Confluent Cloud service accounts is coming soon.
RBAC-aware menu
The left-hand menu is now RBAC (Role Based Access Control) aware, dynamically showing/hiding menu items based on users' permissions. Hiding functionality that users don't have access to makes onboarding easier and reduces confusion.
In Console, menu items are shown based on the user's Resource access
permissions on individual clusters, while the Settings menu items are shown according to the Service access
permissions. Find out more about RBAC.
Exchange
Exchange is a new Conduktor product that enables you to share data securely with your external partners. Find out more about the Exchange product.
Introducing Partner Zones UI
Partner Zones is currently in Beta and is subject to changes, as we continue building out this functionality.
Partner Zones enable you to securely share your Kafka streaming data with external partners, without the need to replicate that data into a second, physical Kafka cluster.
In this release we're introducing the option to create Partner Zones using the Console UI in just few steps, including the ability to set traffic control policies.
In upcoming releases we'll be adding further enhancements, such as:
- an ability to edit Partner Zone configurations
- the option to rename shared topics, securing your data even further by ensuring that no internal information is shared
Find out more about Partner Zones.
Quality of life improvements
- Enabled the confirmation of resource deletion using the Enter key.
- Updated the connector restart button labels and toast messages to accurately reflect their behavior for Confluent Cloud connectors.
- Removed a legacy option to disable monitoring.
Fixes
- Fixed an issue where editing a schema registry subject would overwrite its compatibility mode with the global compatibility setting.
- Fixed an issue where creating an ACL for a service account with a duplicate name could override the existing ACL.
- Fixed an issue where you could not remove the last ACL and Save in the Service Account UI.
- Fixed an issue where the Kafka Connect failed task heatmap didn't display data for days in 2025.
- Fixed an issue where the CLI would report incorrect actions taken (although the correct actions were shown when the
--dry-run
flag was used). - When Azure Active Directory is used as an LDAP server, the
userPrincipalName
field can now be set as the field containing the email address. - Fixed an issue where very large numbers would show rounded in the details view of a topic message (e.g.
7777705807840271771
would display as7777705807840271000
). - Fixed the UI issue where the option to reset a consumer group offset would disappear off the screen, if the partition count was too large.
Known issues
In the Topic Consume view, equality filters (==
) on JSON number fields isn't working correctly when the number exceeds JavaScript's safe integer limit of 2^53-1
. Note that while range operators (>
, <
, >=
, <=
) still work with large numbers, there's currently no workaround for exact equality filtering. We'll address this in a future release.
Conduktor CLI 0.5.0
Release date: 2025-03-10
Changes
- Included Gateway resources in
get all
- Added cause to ApiError responses
- Fixed apply template comment in YAML file
- Added option to edit and apply immediately to template command
- Standardized flag descriptions
Fixes
- Fixed verbose mode in single client configuration
Gateway 3.6.1
Release date: 2025-03-05
New features
- New metric
gateway.apiKeys.throttle_ms
: sets the throttling time in Kafka responses per apiKey in milliseconds - Updated existing metric
gateway.apiKeys.latency.request_response
: sets the latency to process a request and generate a response for each API key- It now tracks latency for all verbs (eg CONNECTION) not just FETCH/PRODUCE
Feature changes
- Changes to
Limit Commit Offset Plugin
:- accuracy of rate limiting has been improved
action
/throttleTimeInMs
properties did not work correctly and are now ignored
- Changes to
cluster ACLs
:- when creating cluster ACLs using a programmatic API, only allow
kafka-cluster
for the name part of the resource. This makes Gateway consistent with Kafka.
- when creating cluster ACLs using a programmatic API, only allow
Fixes
- Fixed a problem with the Create Topic Policy plugin which would not apply overrides to default configurations from the underlying Kafka setup.
- Fixed a problem with
CreateTopics ACLs
in Gateway which previously also required theCreate cluster
permission enabled. - Addressed a problem with Non Delegated SASL/PLAIN token credentials, where Gateway would continue to work after service account has been deleted. To enable this feature set the environment variable
GATEWAY_USER_POOL_SERVICE_ACCOUNT_REQUIRED
totrue
(it currently defaults tofalse
). - Fixed a problem in
AddPartitionsToTxnRequest
where ACLs on transactionIds in new location were not being checked when Kafka API version was >= 4. - An un-authorized idempotent producer will now throw a
ClusterAuthorizationException
instead of aTransactionalIdAuthorizationException
, making Conduktor Gateway consistent with Kafka.
Console 1.31.2
Release date: 2025-03-03
Fixes
- Fixed prefixed ACLs not displaying correctly in the Service Account UI
- Fixed an issue where Service Accounts with no ACL were incorrectly shown in the UI
- Fixed an issue allowing creation of Service Accounts without ACLs
Known Issues
- When removing ACLs in the Service Account UI, you cannot remove the last ACL
- As a workaround, you can remove that last ACL, then create a new ACL against a resource name that does not exist.
- We will address this issue in the next release
Console 1.31.1
Release date: 2025-02-18
Console metrics performance and configuration
To address issues related to monitoring graph timeouts and OutOfMemory issues when Console is connected with large Kafka clusters, we've introduced a change to how metrics are collected in Console.
This feature is currently optional but will be enabled by default in the next release.
If you're experiencing graph timeouts or OutOfMemory issues, upgrade to 1.31.1 and configure the following additional environment variables:
CDK_MONITORING_ENABLENONAGGREGATEDMETRICS: false
CDK_MONITORING_USEAGGREGATEDMETRICS: true
This configuration will disable the collection of obsolete granular metrics and use the new aggregated metrics in the Console graphs.
See metric configuration for details.
Fixes
- Fixed dependencies vulnerable to the following CVEs:
- Resolved an issue related to SSL checks between the Console and Cortex where bad certificates caused communication issues
- Fixed an issue with user email addresses containing a
'
character that blocked database migrations - Reduced the memory consumption and improved the performance of metrics under heavy load that prevented them from displaying
- Partner Zones: configuration updates are now applied correctly
- Partner Zones: partners can now utilize consumer groups
Gateway 3.6.0
Release date: 2025-02-12
Features
Kafka Cluster connection management
This release includes a set of enhancements to how Gateway manages connectivity to a Kafka Cluster. This provides greater stability and flexibility for how Gateway can be configured with the Kafka Clusters it's connected to, and is a precursor change for future product releases.
Encryption improvements
Encryption Secret Id Mustache Templates
The encryption now allows multiple mustache substitutions in a key secret Id configuration. Previously, only a single substitution was supported. E.g. This is now allowed:
"keySecretId": "vault-kms://my-vault:8200/transit/keys/{{record.key}}-{{record.header.someHeader}}"
Decryption failure modes
This release adds a new optional configuration to the decryption plugin to allow different modes of handling errors. There are two supported modes:
errorPolicy: "return_encrypted"
Previous - if there's an error during decryption, then the encrypted data is returned.errorPolicy: "fail_fetch"
New - if there's an error during decryption, then the fetch that was reading the data is failed and the client will receive an error.
In both cases, we have enhanced the logging, so issues during decryption are more fully reported.
Schema Registry access improvements
Read only Schema Registry access
Some of our Gateway plugins will deserialize and re-serialize messages in order to perform their functions. A side effect of this is that the serializer code would unnecessarily require write access to the Schema Registry. While there was no situation where Gateway would actually cause any updated or additional schema to appear, - we've altered the Schema Registry access to be read only. This avoids having to unnecessarily assign write permission for our Gateway Schema Registry connections if you're using ACLs on your Schema Registry.
Plugin validation of Schema Registry access
All Gateway plugins which access the Schema Registry will now validate that the configuration for the Schema Registry is correct when it's added or updated in Gateway. Previously, this behavior was inconsistent and a few of our plugins would only detect incorrect configurations when they processed a message rather than when they were setup.
Quality of life improvements
- Added a new CLI command
conduktor run generateServiceAccountToken
to generate the JWT for local service accounts. Update your CLI to version 0.4.0 or higher.
Fixes
- Fix: CreateTopicPolicy and AlterTopicPolicy overrides. There were some edge cases where the desired overrides from the plugin config would not be applied. These plugins now behave consistently in all situations.
- Improvement: Removed some verbose logs and updated logging to be clearer. A general set of improvements has been made to Gateway logging, making some errors clearer and reducing repetition.
Conduktor CLI 0.4.0
Release date: 2025-02-07
Changes
- Environment variable references can now be passed to Gateway or Console, allowing you to store references to secret variables used by the host within your configuration.
- Partner Zones are now available, allowing you to securely share your streaming Kafka data with external partners without the need to replicate the data.
- More informative error responses in certain situations
- Console API schema updated
- Added
run
- Schema code reorg
- Ops 630 pass external environment variable reference
- Introduced dev mode for hidden command
- Panic replaced with graceful exit
- Included Partner Zones Gateway API changes
Fixes
- buildAlias duplication fixed
- Fixed ServiceAccount check when defining commands
- Release Action fixed
- Various doc fixes
- Fixed duplicate printout statements
Console 1.31.0
Release date: 2025-02-05
Breaking changes
Removed V1 Alerts
Original alerts created in the Monitoring/Alerts section are no longer available.
Changes to V2 Alerts
V2 Alerts, that can be created since Console 1.28 on the dedicated resource page (Topics, Brokers, etc.) are still available and active, but have been migrated with the following rules:
- Alerts have been automatically configured with the previously globally configured channel (Teams or Slack).
- Alerts have been assigned to the individual who created them.
Read below for more information about the new alerting functionality.
Id of Certificates
The Id of certificates in the public/v1/certificates
API endpoints were modified to represent the fingerprint of the certificate.
It brings a more stable way to identify certificates in audit log and prevent multiple uploads of the same certificate.
Scale
Enhanced Alerting with Added Webhooks Support
We have made significant improvements to the alerting system in Console.
Here are some of the changes:
- Alerts are now owned by individuals, groups, or applications
- We added Webhook destination to alerts notifications
- Destinations are now configurable per-alert
- API / CLI support for Alerts is now available
apiVersion: console/v3
kind: Alert
metadata:
name: messages-in-dead-letter-queue
group: support-team
spec:
cluster: my-dev-cluster
type: TopicAlert
topicName: wikipedia-parsed-DLQ
metric: MessageCount
operator: GreaterThan
threshold: 0
destination:
type: Slack
channel: "alerts-p1"
Alert creation workflow has been updated to allow you to configure the alert destination and ownership in the UI.
Read the alerting section of our documentation for more information about the new alert functionality.
API / CLI support for Service Accounts
We have added support for Service Accounts in the API and CLI.
Declaring ServiceAccount resource lets you manage the ACLs of a service account in Kafka.
At the moment we only support Kafka ACLs (calls to Kafka APIs) but we plan to add support for Aiven ACLs in ServiceAccount resource in the future.
---
apiVersion: v1
kind: ServiceAccount
metadata:
cluster: shadow-it
name: clickstream-sa
spec:
authorization:
type: KAFKA_ACL
acls:
- type: TOPIC
name: click.event-stream.avro
patternType: PREFIXED
operations:
- Write
- type: CLUSTER
name: kafka-cluster
patternType: LITERAL
operations:
- DescribeConfigs
- type: CONSUMER_GROUP
name: cg-name
patternType: LITERAL
operations:
- Read
Labels support for Service Accounts
We have added support for labels in the ServiceAccount resource.
For now you can only edit labels through ServiceAccount resource in the API and CLI.
---
apiVersion: v1
kind: ServiceAccount
metadata:
cluster: shadow-it
name: clickstream-sa
labels:
domain: payment
region: EMEA
application: clickstream
spec:
...
The labels are used to filter the Service Accounts in the UI. Editing labels in the UI will be available in the next release.
Self-Service support for Application Managed Service Accounts
We have added a new mode for ApplicationInstance that allows Application Teams to have full control over their Service Accounts.
This mode can be enabled in the ApplicationInstance with the following flag spec.applicationManagedServiceAccount
set to true
.
When enabled, Self-Service will not synchronize the Service Account with the ApplicationInstance and will let the Application Team manage the Service Account directly.
Application Managed Service Accounts can be declared in the API and CLI using the Application API Key.
---
apiVersion: v1
kind: ServiceAccount
metadata:
appInstance: "clickstream-app-dev" # Mandatory to link the Service Account to the ApplicationInstance
cluster: shadow-it
name: clickstream-sa
spec:
authorization:
type: KAFKA_ACL
acls:
...
Application Group permissions now available on Users Permissions page
The users permissions page has been updated to show the permissions inherited when they belong to an ApplicationGroup.
Exchange
Exchange is a new Conduktor Product aimed at helping you share your data securely with your external partners.
Check the associated Exchange Product page for more information.
Introducing Partner Zones for Third-Party Data Sharing
Partner Zones is currently in Beta and is subject to changes as we continue to build out the feature.
Partner Zones enable you to securely share your streaming data with external partners, without needing to replicate the data into a second, physical Kafka cluster.
In the upcoming releases, we will be adding the following:
- Dedicated pages that allows you to manage Partner Zones completely from the UI
- Support for Traffic Control Policies to limit the amount of data that can be consumed or produced by your partners
- Topic renaming capability to avoid leaking internal topic names to your partners
For more information, check out the Partner Zones documentation.
Quality of Life improvements
- Added a "Groups" tab in the Application page which shows all of the Application Groups created via Self-service
- Improved the license plan page to show the start and end date of the license, as well as the packages included in the license
- Added the remaining days left in the sidebar when the license is expiring in less than 30 days
- Improved how a connector's configuration is displayed in the raw JSON view by sorting the properties alphabetically
Fixes
- Fixed several issues Confluent Cloud Managed Connectors
- Fixed Pause/Resume connector
- Fixed Connector and Task Restart
- Fixed Connector Status (Running, Paused, etc.), previously displayed as "Unknown"
- Fixed a permission check issue when adding partitions to a topic
- Improved the serialization of
String
andcom.fasterxml.jackson.databind.JsonNode
types returned by custom deserializers - Fixed an issue parsing masked data when choosing the String format on data that cannot be parsed as JSON
- Added topics ending with
-subscription-registration-topic
and-subscription-response-topic
to the Kafka Stream filter - Fixed the edition of ownership mode of application instances
- Fixed the form for saving producer templates
- Fixed the navigation to go back to the home page of connectors when switching clusters
Known issues
- We are aware of more inconsistencies with Confluent Cloud Managed Connector support in Console. We are working on it.
- Task status is not always correctly displayed
- Various UI responsiveness issues
Gateway 3.5.2
Release date: 2025-01-17
Features
- Add support for sourcing environment variables from a file
Fixes
- Add automatic refresh of HashiCorp Vault authentication tokens
Conduktor CLI 0.3.4
Release date: 2025-01-10
Changes
- Added support of query params for parent
- Added
template
Fixes
- Fixed the issue when deleting virtual clusters does nothing
Gateway 3.5.1
Release date: 2025-01-08
Features
- Added support for Hashicorp Vault Enterprise namespaces
Conduktor CLI 0.3.3
Release date: 2024-12-16
Changes
- Updated default kind for 1.30
- Added basic auth for Gateway API support
Fixes
- Fixed default vCluster set to null for delete interceptors
Console 1.30.0
Release date: 2024-12-16
Features ✨
RBAC support for Conduktor SQL
In a previous release, we introduced Conduktor SQL. It was restricted to Admins because it did not apply any permission model.
This new update brings full RBAC support on Conduktor SQL:
- Users & Groups can only see and query the tables for which they have an associated Topic permission in Console
- Data masking policies are applied (with limitations)
You can now bring SQL to all users within your organization.
For more detailed information, check out the SQL security section.
Add support for multi-hosts database configuration
You can now setup Console's backing database for high availability(HA). If you have a PostgreSQL HA setup with multiple hosts, you can now configure a Console to JDBC connection to the database using a list of hosts.
CDK_DATABASE_URL: jdbc:postgresql://user:password@host1:5432,host2:5433/console_database
CDK_KAFKASQL_DATABASE_URL: jdbc:postgresql://user:password@host1:5432,host2:5433/kafka_sql_database
For more information, check out the Multi-host configuration section in the Database configuration documentation.
Delegating authentication to an identity provider
Console can now be configured to accept a JWT token from an external identity provider.
It allows you to directly use your identity provider for managing access to Console.
A common use case of this feature is to delegate authentication to your API gateway.
For the full configuration details, check out the documentation.
More Audit Log CloudEvents into Kafka
We have made more events available for the Audit Log Publisher:
- Kafka.Subject.ChangeCompatibility
- Kafka.Topic.Browse
- Kafka.Topic.ProduceRecord
- Kafka.Topic.SqlQuery
- Kafka.Connector.Restart
- Kafka.Connector.Pause
- Kafka.Connector.Resume
- Kafka.Connector.RestartTask
- Kafka.Connector.AutoRestartActivate
- Kafka.Connector.AutoRestartStop
A full list of all the exported audit log event types is published on the Audit Log page.
Quality of Life improvements ✨
- Alert lists in the resource pages have been updated to show the metric and condition, the alert state and a new column "Last Triggered"
- Chargeback data can now be exported into a CSV file to enable easier integration with existing organization cost management data.
- The User permission page provides a clearer distinction between inherited and user-specific permissions.
- Topic policy validation errors message are easier to read when using the CLI
- Added support for Array and Boolean types in Conduktor SQL
- Added Kafka Key column and other metadata in Conduktor SQL Topics (Full list)
Fixes 🔨
- Fixed a pagination issue in the SQL Indexed Topics view
- Fixed several instances where the CLI would not report the expected state change (Updated vs. Not Changed) on apply
Gateway 3.5.0
Release date: 2024-12-16
Breaking changes
Breaking change: Local Users 💣
This breaking change only impacts Local Gateway service accounts generated through our token endpoints:
POST /admin/username/{username}
POST /admin/vclusters/v1/vcluster/{vcluster}/username/{username}
If you are using Gateway services accounts from OIDC, mTLS, Delegated Kafka, you are not impacted.
From this release, we will now strictly enforce that the username and the token matches in requests made to the Gateway where local service accounts are used. This will help reduce inconsistencies and avoid unexpected behaviors. If they do not match, requests will fail to authenticate.
Breaking change: Default SNI Host Separator
In this release we have changed the default value for the separator used in the SNI routing configuration from a period .
to a dash -
. This is in order to better allow the use of wild card certificates when certificates are in use.
The format of the SNI routing host names is now as below:
<host_prefix><cluster_id><broker_id>-<advertised_host>
The previous behaviour of Gateway can be configured by simply adding this to your configuration:
GATEWAY_SNI_HOST_SEPARATOR=.
For more information on SNI routing, see its documentation.
Features ✨
Use of In-memory KMS for Encryption
Gateway has always supported the use of an in memory KMS for encryption in order to provide an easy-to-use setting for testing and developing your encryption config. This mode is not however meant for production use as the state of the KMS is lost when Gateway restarts, rendering any data encrypted with it unrecoverable.
Before this release, the in memory mode was the default setting and would be used as a fallback if no valid external KMS was detected in the encyrption setup.
From this release, you must now explicitly opt-in to the in-memory mode for encryption using the prefix:
in-memory-kms://
If this, or any other valid KMS identifier, is not present the encryption plugin will now fail. This change is a precaution to prevent accidental misconfigurations resulting in the use of in memory mode and subsequent data loss.
See the encryption configuration docs for more information.
License Expiry
We have altered the behaviour of the Gateway when your license expires to provide a better experience. The behaviour is now as below:
- We have added new metric
gateway.license.remaining_days
which you can monitor to track the time left on your license - If the Gateway is currently running, do not automatically exit on license expiry. Rather, Gateway will now log a warning every hour that your license is expired:
License has expired! You need to add a valid license to continue using Conduktor Gateway. Checkout our documentation if unsure how to set the license
- These warnings will start 1 week before expiry occurs as a notification, in the format:
License will expire in less than {N} day(s)! You need to renew your license to continue using Conduktor Gateway
- Finally, we now check your license earlier in the bootstrap sequence for Gateway, so it will fail fast with a clear message when your license is expired.
The key change here is that if your license does expire, Gateway will not exit automatically anymore. It will continue running, logging warnings. Should you restart the Gateway in this state, it will then fail to start up - but there is no automatic shutdown.
Quality of Life Improvements ✨
- Support for Kafka Clients up to 3.9
- Improved compatibility and logging for dealing with kafka-client versions and version negotiations
- Added support for multiple authentication mechanisms against Vault (AppRole, LDAP, ...)
- Introduced a new configuration
enableAuditLogOnError
(default:true
) which enhances the errors which are logged when encryption/decryption fails - Improved error logging for expired tokens on authentication, to replace large stack traces with concise information
- Performance improvements for TLS handshakes, in particular to prevent repeated failed attempts overloading the gateway
- Several improvements to data quality and encryption config validation to provide better error reporting and feedback in the case of problems
General fixes 🔨
- Fixed an issue in ACL handling which caused an error if no topics were passed for an offset fetch request (being the case where the caller wants to retrieve offsets for all topics).
- Fixed an issue in Virtual Clusters which in some cases meant the ACLs for the physical Kafka clusters where exposed in error.
- Fixed an issue in the regular expression application in the data quality and SQL plugins, where
.*
would not always match the entire value for a field - Fix an issue when creating both a service account and a service account group through the cli to ensure the order of operations is always correct, preventing intermittent failures in this case.
Known issues
- We are aware of an issue with
kcat
when the new environment variableGATEWAY_MIN_BROKERID
is not aligned with the first BrokerId of your Kafka cluster- As a workaround, you can either define
GATEWAY_MIN_BROKERID
to your first Kafka BrokerId or usekcat
with the-E
flag
- As a workaround, you can either define
Console 1.29.2
Release date: 2024-12-09
Fixes 🔨
- Fixes a bug where SSO and LDAP sign ups were being rejected for users with upper-case letters in their email
Console 1.29.1
Release date: 2024-11-28
Fixes 🔨
- Fixed an issue where configuring Google OIDC without a
scope
was throwing an Exception.
Console 1.29.0
Release date: 2024-11-25
Breaking Changes 💣
Changes to Conduktor.io Labels
We have moved the conduktor.io
labels previously available on Connector and Topic resources to new locations.
This change impacts you if you:
- Update the Topic Catalog description of Topic resources via CLI/API
- Configure Connect automatic restart with the CLI/API
You are not impacted if you perform these actions through the UI.
We recognize this change breaches the API contract and have carefully considered its implications. We remain committed to minimizing breaking changes and will continue to do our best to ensure that such changes are rare and well-justified.
As we expand the number of Conduktor-related features, this separation reduces the risk of conflicts, simplifies resource management, and provides flexibility for future improvements:
- Labels used for sorting and filtering throughout the product
- Conduktor-specific annotations used to drive behaviors on the resources
Topic Resource
metadata.labels.'conduktor.io/description'
→metadata.description
metadata.labels.'conduktor.io/description.editable'
→metadata.descriptionIsEditable
Connector Resource
metadata.labels.'conduktor.io/auto-restart-enabled'
→metadata.autoRestart.enabled
metadata.labels.'conduktor.io/auto-restart-frequency'
→metadata.autoRestart.frequencySeconds
Their associated values have been automatically migrated under the new names.
Important Note for CLI Users
Applying YAML files with old conduktor.io
labels will fail in Conduktor Console 1.29. Be sure to update your YAML files to reflect the new labels.
Example error for outdated YAML:
$ conduktor apply -f topic.yaml
Could not apply resource Topic/click.event-stream.avro: Invalid value for: body (Couldn't decode key. at 'metadata.labels.conduktor.io/description')
Local Users Password policy update
Passwords for console Local Users configured through YAML and environment variables must comply with a new password policy. This change enforces the following password requirements:
- At least 8 characters in length
- Includes at least 1 uppercase letter, 1 lowercase letter, 1 number, and 1 special symbol
This change impacts you if:
- Your Admin password doesn't comply with the new password policy (
CDK_ADMIN_PASSWORD
) - You have local user configured through YAML or Env variables (
CDK_AUTH_LOCALUSERS_0_PASSWORD
)
Passwords set in existing installations that do not meet these requirements will prevent Console from starting, throwing a startup error in the logs like this:
2024-11-21T14:25:47,434Z [console] ERROR zio-slf4j-logger - zio.Config$Error$InvalidData: (Invalid data at admin: Password must contain at least 8 characters including 1 uppercase letter, 1 lowercase letter, 1 number and 1 special symbol)
Local Users previously created with the UI are not impacted.
Update the passwords in your YAML or environment variables to meet the new policy before upgrading.
Features ✨
Conduktor Chargeback: Track and Allocate Costs & Resource Consumption
This feature is in Beta and is subject to change as we enhance it further.
Conduktor Chargeback allows organizations to track and allocate costs & usage associated with Kafka resources to different teams or departments based on their data consumption and processing, facilitating cost accountability and management.
Check the dedicated Quickstart to get started with Chargeback.
Console Homepage
The cluster homepage have been redesigned to present you with the most useful information in one single view:
- The health of your Kafka Cluster with a few key metrics and graphs
- The state of Console Indexing modules for this Kafka Cluster
- Quick access to your most recently viewed resources
Consumer Group pages overhaul
Consumer group details page is now organized in a way that helps understand the status of your Consumer Group more easily:
- Topics tab shows the Consumer Group info grouped by its subscribed Topics
- Members tab shows the Consumer Group info grouped by its active members
Both Topics and Members lists can be explored further down to individual member/topic-partition assignments.
On top of that graphs are now directly available in the resource page for Lag and Time Lag, as well as a dedicated tab to manage Alerts.
Self-Service Topic Catalog visibility
You can now choose which Topics should be visible in the Topic Catalog by annotating their YAML.
---
apiVersion: kafka/v2
kind: Topic
metadata:
cluster: shadow-it
name: click.event-stream.avro
catalogVisibility: PUBLIC # or PRIVATE
spec:
...
It is also possible to change the default Topic Catalog visibility of all Topics of an Application Instance directly
Check the associated documentation.
Self-Service New Topic Policy Allowed Keys
We have added a new constraint AllowedKeys
to our Self-Service Topic Policy that restricts the properties that can be configured on a Topic.
---
# Limits the Topic spec.configs to only have retention.ms and cleanup.policy keys
apiVersion: self-service/v1
kind: TopicPolicy
metadata:
name: "generic-dev-topic"
spec:
policies:
spec.configs:
constraint: AllowedKeys
keys:
- retention.ms
- cleanup.policy
This works in conjunction with existing constraints and ensures your Application Teams will only define properties that are allowed by the Central Team.
Read more about our Topic Policy constraints.
More Audit Log CloudEvents into Kafka
We have made more events available for the Audit Log Publisher:
- IAM.User.Logout
- IAM.User.Login
- Kafka.ConsumerGroup.Duplicate
- Kafka.ConsumerGroup.Delete
- Kafka.ConsumerGroup.Update ( when we reset the offset of the consumer group )
A full list of all the exported audit log event types is published on the Audit Log page.
Expanded Terraform Provider: Kafka Cluster, Schema Registry, Kafka Connect
We've expanded the scope of our Terraform provider, you can now create additional resources: Kafka cluster with schema registry, and Kafka connect clusters using Terraform. With this version also comes some additional small fixes as requested by the community, see the dedicated provider releases page for the full list.
All examples are available in our provider repo such as the below snippet for a Confluent Kafka cluster and schema registry (with mTLS) definition.
resource "conduktor_kafka_cluster_v2" "confluent" {
name = "confluent-cluster"
labels = {
"env" = "staging"
}
spec {
display_name = "Confluent Cluster"
bootstrap_servers = "aaa-aaaa.us-west4.gcp.confluent.cloud:9092"
properties = {
"sasl.jaas.config" = "org.apache.kafka.common.security.plain.PlainLoginModule required username='admin' password='admin-secret';"
"security.protocol" = "SASL_PLAINTEXT"
"sasl.mechanism" = "PLAIN"
}
icon = "kafka"
ignore_untrusted_certificate = false
kafka_flavor = {
type = "Confluent"
key = "yourApiKey123456"
secret = "yourApiSecret123456"
confluent_environment_id = "env-12345"
confluent_cluster_id = "lkc-67890"
}
schema_registry = {
type = "ConfluentLike"
url = "https://bbb-bbbb.us-west4.gcp.confluent.cloud:8081"
ignore_untrusted_certificate = false
security = {
type = "SSLAuth"
key = <<EOT
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
EOT
certificate_chain = <<EOT
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
EOT
}
}
}
}
Quality of Life improvements
- Improved the performance of the Automatic deserializer
- Improved the performance of the Schema Registry indexing process
- Added support for Google Cloud Identity group claims
- Added License expiry warning in the UI when there is less than 30 days left
Fixes 🔨
- Fixed an issue where Custom Deserializers weren't working as expected
- Fixed an issue where the ManageClusters permission wasn't working as expected
- Fixed an issue that prevented creating a KafkaCluster and a Topic on that newly declared KafkaCluster in a single CLI apply command
- Fixed
/health/readiness
endpoint to return HTTP 503 when the Postgres DB is down - Fixed an issue where the Message Count wasn't updated to 0 when emptying a topic
- Fixed an issue where the Pause/Resume button wasn't visible when a connector was in the Failed state
- Fixed an issue where the Topic creation failure reason wasn't shown in the UI
- This helps understand why Topic Creation is rejected (useful for Gateway and Self-Service Topic Policies), and how to modify the topic create request to meet the policy requirements
Conduktor CLI 0.3.2
Release date: 2024-11-25
Changes
- Updated Console schema with latest version
Fixes
- Changed ordering between groups and service accounts in Gateway entities
Gateway 3.4.0
Release date: 2024-11-15
Upcoming Breaking change: Local Users 💣
This breaking change only impacts Local Gateway service accounts generated through our token endpoints:
POST /admin/username/{username}
POST /admin/vclusters/v1/vcluster/{vcluster}/username/{username}
If you are using Gateway services accounts from OIDC, mTLS, Delegated Kafka, you are not impacted.
Today, the token as the password for local Gateway service accounts contains all the necessary information. As a result, the SASL username is not used during the authentication phase.
In release 3.5.0, we will strictly enforce that the username and the token matches. This will help reduce inconsistencies and avoid unexpected behavior.
For this release 3.4.0, we'll only raise the following warning in the logs:
2024-08-27T18:15:29 [WARN] - Inconsistency detected for plain authentication. Username applicationA is not consistent with validated token created for application-A. SASL configuration should be changed accordingly.
Features ✨
Correct Offsets on Concentrated Topics
Concentrated Topics were reporting the offsets of the underlying backing topic. This caused Lag and Message Count metrics to be invalid.
Correct offsets can now be enabled per ConcentrationRule.
---
kind: ConcentrationRule
metadata:
name: myapp-concentrated
spec:
pattern: myapp-.*
physicalTopics:
delete: myapp-concentrated
autoManaged: false
offsetCorrectness: true
This feature is experimental and comes with a number of limitations that are important to understand beforehand.
General fixes 🔨
- Fixed an issue impacting live consumption from concentrated topics within Console
- Fixed an issue with upserts in API V2 relating to service accounts (reporting updated when the status should be not changed)
- Fixed an issue related to Kafka 3.7 client support, ensuring topic id's for alias and concentrated topics are distinct from their underlying topics
- Fixed an issue whereby audit logs were not being captured during cluster switching
- Fixed an issue with SQL topics when parsing topic names containing "-"
Known issues
- We are aware of an issue with
kcat
when the new environment variableGATEWAY_MIN_BROKERID
is not aligned with the first BrokerId of your Kafka cluster- As a workaround, you can either define
GATEWAY_MIN_BROKERID
to your first Kafka BrokerId or usekcat
with the-E
flag
- As a workaround, you can either define
Console 1.28.0
Release date: 2024-10-14
Features ✨
Conduktor SQL
This feature is in Beta and is subject to change as we enhance it further.
It's currently only available to Console Admins, and will be made available for all users when integrated with our security model (i.e. RBAC, Data Masking).
Index data from Kafka topics in a database to enable data to be queried from the UI, API or CLI using SQL.
This allows you to troubleshoot, sample, analyze, aggregate and join data through:
- Querying Kafka message data
- Querying Kafka metadata (such as the offset, partition and timestamp)
Read the dedicated guide on configuring SQL.
Query through the UI
Query through the API & CLI
CLI (upgrade to v0.3.1):
conduktor sql 'select * from "kafka-cluster-dev_customer_orders"' -n 2
API:
curl \
--header "Authorization: $token" \
--request POST 'localhost:8080/api/public/sql/v1/execute?maxLine=2' \
--data 'select * from "kafka-cluster-dev_customer_orders"'
Important information regarding SQL
To use the feature there is a dependency on provisioning a new database. As a user, you have the choice of which topics you wish to index. Learn more about this and how to configure SQL using the dedicated guide.
We encourage you to use this feature in non-production environments and give us feedback.
Monitoring improvements
We are migrating our Monitoring dashboards into their respective resource pages for a more integrated experience.
This migration will happen over the next few releases with our objective to remove the existing, generic Monitoring pages:
- Overview will be refactored into Home page
- Cluster Health dashboards and alerts will move under Brokers page
- Topic monitoring will be integrated with Topics page
- Apps monitoring will be integrated with Consumer Groups pages
- Alerts will be integrated as tabs in all the resource pages, similar to the recent changes for Kafka Connect
For this 1.28.0 release we are migrating the Topic monitoring and Cluster Health pages.
Topic Monitoring
The 3 existing graphs have been moved to the Topic details. We have also added a new graph to track the number of records in the topic.
- Produce Rate and Consume Rate
- Disk Usage
- Records (new)
Cluster Health
The charts and alerts are now available under the Brokers page with cleaner graphs.
- Produce Rate and Consume Rate
- Disk Usage
- Partitions Count
- Offline, Under Replicated and Under Min ISR Partitions
We have removed two metrics that were not always calculated correctly since the removal of the JMX integration back in release 1.15 (May 2023).
- Active Controller Count
- Unclean Leader Election
New CLI/API resource Alert
Alerts can now be created via the API or CLI in addition to the UI.
See below for example config, and check the Alerts documentation for more details.
---
apiVersion: console/v2
kind: Alert
metadata:
cluster: local-julien
name: my-alert
spec:
type: TopicAlert
topicName: wikipedia-parsed-DLQ
metric: MessageCount
operator: GreaterThan
threshold: 0
Starting today, we recommend you use the new alerts available under Brokers and Topics pages.
We do not plan to migrate existing alerts to the new Alert model.
Original alerts will be removed in the near future in favor of the new ones.
We'll let you know a few releases in advance.
If you have a large number of alerts configured and need some help, we're happy to help, please get in touch with our support.
Shareable Filters
Filters in the Topic Consume view are now shareable. This brings a number of benefits:
- Improved collaboration: Share pre-defined views to ensure users are looking at the same subset of data
- Time savings: Speed up troubleshooting and analysis with repeatable filters that share the same or similar criteria
- Consistency and accuracy: Standardized filters across teams and departments reduce the risk of errors or discrepancies that can occur when individuals manually create filters
After you've finished configuring filters on a topic, you now have an option to save the filter either as a Private or an Organization filter.
Anyone can then load Organization filters from the dedicated section.
Tags Become Labels
With the introduction of the Self-service resource manifests, we brought customers a means to annotate all their resources with labels. Labels are more structured than the existing Conduktor tags, thereby allowing for more precise filtering capabilities, as can be seen in the Topic Catalog.
In this release, we'll perform an automatic migration from Tags to Labels.
Tags written with the naming convention <key>/<value>
will automatically be added as similar labels:
<key>: <value>
If there is a conflict such as; a topic containing tags with the same key, that already has the target label, or is not written with this naming convention, then they will be created with a tag-
prefix as follows:
tag-<value>: true
Here's an example of how tags will be migrated into labels:
# Tags defined on topic:
- format/avro
- project/supplychain
- team/delivery
- color/blue
- color/red
- wikipedia
- non-prod
# Resulting topic labels after migration
labels:
format: avro
project: supplychain
team: delivery
tag-color/blue: true # Because conflict on "color"
tag-color/red: true # Because conflict on "color"
tag-wikipedia: true # Because wikipedia is not a key value pair
tag-non-prod: true # Becuase non-prod is not a key value pair
The Topic list and Topic details page have been modified to use labels instead of tags.
We plan to bring this capability on all resources (Connectors, Service Accounts, Consumer Groups, ...) over the next few releases.
Let us know which resource you would like to see covered first.
Publish AuditLog CloudEvents into Kafka
It is now possible to publish Console Audit Log events into a Kafka topic directly for any further use you may have for them, such as maintaining your own audit trail in other systems.
The exportable audit log events have more detail compared to the current UI events, providing additional information about the event that has taken place.
The events conform to the CloudEvents specification, a vendor-neutral format that follows the following structure:
{
"specversion" : "1.0",
"type" : "com.github.pull_request.opened",
"source" : "https://github.com/cloudevents/spec/pull",
"subject" : "123",
"id" : "A234-1234-1234",
"time" : "2018-04-05T17:31:00Z",
"comexampleextension1" : "value",
"comexampleothervalue" : 5,
"datacontenttype" : "text/xml",
"data" : "<much wow=\"xml\"/>"
}
An example Conduktor event would look like:
{
"source": "//kafka/kafkacluster/production/topic/website-orders",
"data": {
"eventType": "Kafka.Topic.Create",
// Additional event specific data...
"metadata": {
"name": "website-orders",
"cluster": "production"
}
// Additional event specific metadata...
},
"datacontenttype": "application/json",
"id": "ad85122c-0041-421e-b04b-6bc2ec901e08",
"time": "2024-10-10T07:52:07.483140Z",
"type": "AuditLogEventType(Kafka,Topic,Create)",
"specversion": "1.0"
}
Specify the target Kafka cluster and topic using the environment variables CDK_AUDITLOGPUBLISHER_CLUSTER
& CDK_AUDITLOGPUBLISHER_TOPICNAME
and events will start being produced to the destination topic.
A full list of all the exported audit log event types is published on the Audit Log page.
Logging API
Adjust the log level of Console without requiring a restart. We've added a new API endpoint to support targeted changes to log levels dynamically. Check the associated documentation for the full list of capabilities.
curl -X PUT 'http://localhost:8080/api/public/debug/v1/loggers/io.conduktor.authenticator/DEBUG' \
-H "Authorization: Bearer $API_KEY"
Quality of Life improvements
- Updated design and color theme
- Added navigation breadcrumb
- Enhanced error messages throughout the product
- Improved the connector 90 days heatmap
- Declaring an ApplicationInstance with resources ending in
*
will now fail with this error messageCould not apply resource ApplicationInstance/my-app-inst: resource name 'appA-*' is not allowed. Use name 'appA-' with patternType PREFIXED instead
Fixes 🔨
- Fixed an issue with Topic Policy constraint Range where
max
value wasn't inclusive andmin
could greater thanmax
- Fixed an issue where Topic Policies were not enforced on Topic configuration changes in Console
- Added an error message when using the copy to clipboard button (for API Keys for instance) fails
- Added checks on local user creation emails
- Added new optional environment variable
CDK_SSO_OAUTH2_0_OPENID_METADATADOCUMENT
to modify the default discovery .well-known end-point - Fixed an issue where Avro messages using logical type UUID couldn't be deserialized properly
- Fixed an issue with Cluster configuration page requiring
platform.certificates.create
permission to perform the TLS check - Fixed an issue with "Remove user from group" button which is now disabled for users added by external group mapping
- Prevented the deletion of a group when it is owner of an Application
- Fixed an issue with the "New version" button in the banner that was still showing despite being on the latest version
- Fixed an issue where connections to the AWS glue schema registry would disconnect after a certain time and struggle to reconnect
- Fixed an issue where the "Reprocess message" feature was converting empty string headers to null value
- Fixed all critical and high CVE in
console-cortex
image - Fixed an issue with the metric
under_replicated_partitions
when topics haveconfluent.placement.constraints
property
Conduktor CLI 0.3.1
Release date: 2024-10-14
Changes
- Added handling of environment variables for YAML
- Added description for token CMD
- Updated README.md
- Added
run sql
- Updated with latest Gateway API changes
- Added
all
Fixes
- Fixed release version check
- Fixed version bump in Homebrew PRs
- Fixed releases prefix to prevent errors
Gateway 3.3.2
Release date: 2024-10-07
Fixes 🔨
- Fixed an issue where the Producer Rate Limiting Policy would not honor its configuration.
Console 1.27.1
Release date: 2024-09-25
Fixes 🔨
- Improved performance of RBAC resolution when there is a large number of permissions
Gateway 3.3.1
Release date: 2024-09-25
General fixes 🔨
- Fixed an issue where Gateway would close the client connection upon receiving certain API Keys in parallel of the initial Metadata Request
Console 1.27.0
Release date: 2024-09-14
Features ✨
Kafka Connect Configuration Wizard
We are very excited to introduce our Configuration Wizard for Kafka Connect which is taking full advantage of the Kafka Connect Validate API:
- Form is generated with structured configuration groups
- Much nicer error handling, attached to each individual field
- Embedded documentation that helps you understand which fields are required and what are their expected and default values
- Ability to toggle advanced configuration to visualize only the most important fields
- Ability to switch seamlessly between Form View and JSON View at any time.
Give it a try and let us know what you think!
Alerts for Kafka Connect
On top of the Kafka Connect Graphs we shipped last release, we now have added the ability to create alerts on them.
Self-service: Limited Ownership mode
To help organizations transition to Self-service more easily, we have added a new attribute on ApplicationInstance to let Platform Teams decide the level of autonomy to give to Application Teams.
- ApplicationInstance resources configured with
ownershipMode: ALL
, which is the default, delegates all permissions related to that resource to the Application Team - ApplicationInstance resources configured with
ownershipMode: LIMITED
delegates only a subset of the available permissions to the Application Team
This is especially useful if you already have a centralized repository and existing workflow for Topic creation. You may want to provide Self-service capabilities while still forcing your Application Teams to go through your pipeline for Topic Creation, instead of Self-service.
Quality of Life improvements
- Self-service: External Group Mapping is now available for ApplicationGroup
- The Login page now steers users towards their OIDC provider rather than basic auth when OIDC is enabled
Fixes 🔨
- Fixed an issue on Consumer group reset offset with the ToDatetime strategy
- Fixed an issue with Console indexing that could occur when deleting and recreating subject
- Fixed a recent regression with default replication factor when creating a topic
- Fixed a recent regression with Broker feature "Similar config" calculation
- Fixed a UI issue when Application Instance was created without any resources
- Fixed several issues around Microsoft Teams Integration to support Teams Workflow webhooks (Step by step guide)
- Fixed Kafka Connect client to use HTTP Proxy JVM configuration
- Switching Kafka cluster from the Topic details page now redirects to the Topic List
- Console doesn't override the client.id property anymore
Deprecation Warning: Upcoming migration from Tags to Labels 💣
With the introduction of the Self-service resource manifests, we brought customers a means to annotate all their resources with labels. Labels are more structured than the existing Conduktor tags, thereby allowing for more precise filtering capabilities, as can be seen in the Topic Catalog.
In an upcoming release, we'll perform an automatic migration from Tags to Labels.
Tags written with the naming convention <key>/<value>
will automatically be added as similar labels:
<key>: <value>
If there is a conflict such as; a topic containing tags with the same key, that already has the target label, or is not written with this naming convention, then they will be created as follows:
tag-<value>: true
Here's an example of how tags will be migrated into labels:
# Tags:
- format/avro
- project/supplychain
- team/delivery
- color/blue
- color/red
- wikipedia
- non-prod
# Result
labels:
format: avro
project: supplychain
team: delivery
tag-color/blue: true # Because conflict on "color"
tag-color/red: true # Because conflict on "color"
tag-wikipedia: true
tag-non-prod: true
⚠️ Conduktor can help you rename tags through Customer Support
Between now and the migration, we can help you rename your tags for a smooth transition to labels.
Contact us as soon as possible if you would like support.
We are aware of a critical CVE - CVE-2024-41110 - coming from a dependency of prometheus on the console-cortex
image. This CVE is related to prometheus docker metric scraping, which is not used by Conduktor.
Regardless, as soon as the prometheus team fix this issue, it will be patched immediately by Conduktor.
Conduktor CLI 0.3.0
Release date: 2024-09-17
Changes
- Added support for
-o json
and-o name
onget
- Updated to latest Gateway API
- Added support for Gateway API v2
- Clarified version with a
v
Fixes
- Fixed the release tag
- Fixed missing key retrieval from environment
Gateway 3.3.0
Release date: 2024-09-05
Upcoming Breaking change 💣
This breaking change only impacts Local Gateway service accounts generated through our token endpoints:
POST /admin/username/{username}
POST /admin/vclusters/v1/vcluster/{vcluster}/username/{username}
If you are not using Local Gateway services accounts (OIDC, mTLS, Delegated Kafka), you are not impacted.
Today, the token as the password for local Gateway service accounts contains all the necessary information. As a result, the SASL username is not used during the authentication phase.
In an upcoming release, we will strictly enforce that the username and the token matches. This will help reduce inconsistencies and avoid unexpected behaviors.
This breaking change is due for release 3.5.0.
For this release 3.3.0, and next product release 3.4.0, we'll only raise the following warning in the logs:
2024-08-27T18:15:29 [WARN] - Inconsistency detected for plain authentication. Username applicationA is not consistent with validated token created for application-A. SASL configuration should be changed accordingly.
Features ✨
- New V2 APIs and CLI support
- Support for HTTPS APIs
- Better UX for ACLs and superUsers
- Encryption Enhancements and Support Clarification
New V2 APIs and CLI support
We’re excited to introduce our new Gateway API, designed for seamless integration with our CLI. This update allows you to deploy Gateway resources using infrastructure-as-code with straightforward, clearly defined concepts:
- Interceptor
- GatewayServiceAccount
- GatewayGroup
- ConcentrationRule
- AliasTopic
- VirtualCluster
Check the CLI reference to get started, and the resources reference for more information on each concept.
---
apiVersion: gateway/v2
kind: GatewayGroup
metadata:
name: groupB
spec:
members:
- name: user1
- name: user2
---
apiVersion: gateway/v2
kind: Interceptor
metadata:
name: enforce-partition-limit
scope:
group: groupB
spec:
pluginClass: io.conduktor.gateway.interceptor.safeguard.CreateTopicPolicyPlugin
priority: 100
config:
numPartition:
action: BLOCK
max: 9
min: 9
topic: .*
$ conduktor apply -f gateway.yml
GatewayGroup/groupB: Created
Interceptor/enforce-partition-limit: Created
$ conduktor delete GatewayGroup groupB
The group groupB is still used by the following interceptor(s): enforce-partition-limit
Note: API V1 is still available, but we recommend that new users and those with simple Gateway configurations begin using the V2 API as soon as possible. We will announce a deprecation plan in the coming weeks and notify you in advance of which Gateway version will be the last to support the V1 APIs.
Support for HTTPS APIs
It is now possible to configure HTTPS and mTLS authentication on the Gateway HTTP APIs. Check the HTTP section of the Environment Variables page for more details.
Better UX for ACLs and superUsers
To coincide with the clearly defined concepts established in API V2, we are making changes to ACLs management in Gateway.
- ACLs and Super Users on the Gateway (excluding Virtual Clusters) must be configured through Environment Variables.
- ACLs and Super Users on Virtual Clusters must now be driven explicitly through API/CLI.
Enable ACLs for Gateway (excl. Virtual Clusters)
Configure both environment variables:
GATEWAY_ACL_ENABLED=true # default false
GATEWAY_SUPER_USERS=alice,bob
If GATEWAY_SUPER_USERS
is not set, it will default to GATEWAY_ADMIN_API_USERS
for backward compatibility.
Enable ACLs for Virtual Clusters
Note that if you are migrating from an older version of Gateway, the migration will automatically generate existing Virtual Clusters as configuration.
- The automation will derive the boolean value
aclEnabled
from the previously usedGATEWAY_ACL_STORE_ENABLED
variable. - The migration will not populate the
superUsers
list automatically, so this must be addressed as part of your migration.
Example configuration:
---
apiVersion: gateway/v2
kind: VirtualCluster
metadata:
name: "mon-app-A"
spec:
aclEnabled: "true" # defaults to false
superUsers:
- username1
- username2
Encryption Enhancements and Support Clarification
Field-Level Encryption: Preserving Message Format to Enhance Usability
When applying field-level encryption prior to 3.3.0
, the encryption plugin would convert the message to JSON, and re-apply the schema format when the message was read back through the decryption plugin.
In Gateway 3.3.0
, we now preserve the schema format for Avro messages - meaning the same schema is used in the backing topic, and the data can be read directly from Kafka or without the decryption plugin at all.
Read more about this change to the default behaviour, and how to configure it.
Fields which cannot be encrypted in-place (effectively any non-string field) have their encrypted value placed in the headers, and the field itself is given a default masking value. The default values are clarified below:
Field Type | Default Value in 3.3.0 |
---|---|
Integer | Int MIN_VALUE |
Long | Long MIN_VALUE |
Float | Float, MIN_VALUE |
Double | Float MIN_VALUE (float again here due to some serdes behaviour) |
byte[] | "********" as bytes |
fixed[] | every byte filled with charater "*" |
boolean | false |
Note that the same default values are now used across all relevant plugins when manipulating a non-string field - Data Masking, Partial Decrypt, and Encrypt on Fetch.
Attempt to apply encryption to a message more than once will now fail
If any of the encryption headers are detected in a message when encryption is about to be applied, then the encryption operation will fail. This is because applying encryption twice (or more) is currently not reversible.
Deprecated support for Schema Based (tag) encryption with Protobuf
Note this is no longer supported, and the Gateway will now throw an exception if the encryption plugin attempts to apply schema (tag) based processing to a Protobuf message.
Note that any data previously written in this mode can still be read back - as the decrypt does not use the schemas at all, rather it uses the message header to know what was encrypted.
General fixes 🔨
- Large double values (where > Float Max) are now supported in field-level encryption for Avro and Protobuf
- Bytes and fixed fields now properly supported in field-level encryption for Avro
- Avro unions of two or more values (rather than just a value and a null) are now supported in field-level encryption for Avro
- Schema (tag) based encryption now checks and fails if its config is invalid
- It is not possible to encrypt the headers which the encryption plugin uses to manage its decryption process (as this would render the data unrecoverable)
- Improved log messages for Interceptors that reject actions, such as TopicPolicyPlugin
- Several improvements to the LargeMessage & LargeBatch Interceptors
- Fixed an issue where KCache topic initialization would fail silently and leave Gateway in an unusable state
- Added a new Environment Variable
GATEWAY_MIN_BROKERID
(default 0) that allows for determinist mapping of brokers and ports - Improved network stability during Gateway scaling or Kafka topology changes
- Added support for overriding Kafka Producer properties used for Audit Log topic with
GATEWAY_AUDIT_LOG_KAFKA_
environment variables - Removed metric
gateway.brokered_active_connections
. This was equal to portCount with port mapping and always 1 in host mapping - Changed metric
gateway.request_expired
tags: nodeHost/nodePort are replaced by nodeId/clusterId - Fix default value for
GATEWAY_UPSTREAM_THREAD
config. The new intended default (number of CPU) previously was (2 x number of CPU). - Fixed an issue with
GATEWAY_ADVERTISED_SNI_PORT
that wasn't working properly - Add log level for io.confluent packages in default log configuration
- Add default value to non mandatory configruation value for min and max bytes in FetchPolicyInterceptor
- Fix an issue with Concentrated Topics creation with Redpanda
Known issues
- We are aware of an issue with
kcat
when the new environment variableGATEWAY_MIN_BROKERID
is not aligned with the first BrokerId of your Kafka cluster.- As a workaround, you can either define
GATEWAY_MIN_BROKERID
to your first Kafka BrokerId or usekcat
with the-E
flag
- As a workaround, you can either define
- It is not possible to add Service Accounts to GatewayGroups using API V2 unless they are previously declared as GatewayServiceAccount.
- This is not a wanted behavior, especially for OAuth or Delegated Kafka Authentication where declaring a GatewayServiceAccount should not be needed. We'll address this issue in a follow-up release
- API V1 (user-mapping) is not impacted
- If you perform a rolling upgrade to 3.3.0, Gateway nodes in earlier versions will show the following error in the logs:
[ERROR] [KafkaCache:1007] - Failed to deserialize a value org.apache.avro.AvroTypeException: Expected field name not found: clusterId
- This is fine and will not cause any further problems
- If you use Virtual Clusters and ACLs: After updating to 3.3.0, you must manage VirtualCluster's ACL and superUsers through V2 API.
Gateway 3.2.2
Release date: 2024-08-28
Upcoming Breaking change 💣
This breaking change only impacts Local Gateway service accounts generated through our token endpoints:
POST /admin/username/{username}
POST /admin/vclusters/v1/vcluster/{vcluster}/username/{username}
If you are not using Local Gateway services accounts (OIDC, mTLS, Delegated Kafka), you are not impacted.
Today, the token as the password for local Gateway service accounts contains all the necessary information. As a result, the SASL username is not used during the authentication phase.
In an upcoming release, we will strictly enforce that the username and the token matches. This will help reduce inconsistencies and avoid unexpected behaviors.
This breaking change is due for release 3.5.0.
For this hotfix release 3.2.2, and next product releases 3.3.0 and 3.4.0s, we'll only raise the following warning in the logs:
2024-08-27T18:15:29 [WARN] - Inconsistency detected for plain authentication. Username applicationA is not consistent with validated token created for application-A. SASL configuration should be changed accordingly.
General fixes 🔨
- Fixed a severe authentication issue with Gateway generated tokens that could lead to a different user being authenticated, effectively causing elevated privileges under certain conditions.
- Fixed an issue where
GATEWAY_SNI_HOST_SEPARATOR
couldn't be set to the value-
- Fixed an issue where
GATEWAY_SNI_HOST_SEPARATOR
wasn't properly taken in account - Fixed an issue with
GATEWAY_ADVERTISED_SNI_PORT
that wasn't working properly
Console 1.26.0
Release date: 2024-08-14
We are aware of a critical CVE - CVE-2024-41110 - coming from a dependency of prometheus on the console-cortex
image. This CVE is related to prometheus docker metric scraping, which is not used by Conduktor.
Regardless, as soon as the prometheus team fix this issue, it will be patched immediately by Conduktor.
Features ✨
- Manage Connectors using the CLI
- Self-service support for Connectors
- Enhanced UI & Alerts for Kafka Connect
- Quality of Life improvements
- Deprecation Warning: Upcoming migration from Tags to Labels
Manage Connectors using the CLI
Continuing with the Infra-as-code approach, we are happy to introduce CLI support for Connectors, providing an efficient and automated way to manage your Kafka Connect resources.
---
apiVersion: kafka/v2
kind: Connector
metadata:
connectCluster: kafka-connect
name: click.my-connector
labels:
conduktor.io/auto-restart-enabled: true
conduktor.io/auto-restart-frequency: 600
spec:
config:
connector.class: 'org.apache.kafka.connect.tools.MockSourceConnector'
tasks.max: '1'
topic: click.pageviews
Self-service support for Connectors
Application Teams can now manage their Connectors with Self-service.
From now on, you can grant ownership to connectors on Self-service Application Instance.
---
apiVersion: self-service/v1
kind: ApplicationInstance
metadata:
application: "clickstream-app"
name: "clickstream-dev"
spec:
cluster: "shadow-it"
serviceAccount: "sa-clicko"
resources:
- type: CONNECTOR
connectCluster: shadow-connect
patternType: PREFIXED
name: "click."
Enhanced UI & Graphs for Kafka Connect
We have revisited the Kafka Connect UI in multiple ways to improve your experience:
- Connect Cluster selection screen with a preview of Connector status
- New graphs demonstrating the state of your Connector over time
Support for High Availability (HA) Console
Multiple Console instances can now be deployed in parallel to achieve high availability.
This applies to the deployment of conduktor-console
, while conduktor-console-cortex
is currently limited to a single instance. The design ensures minimal impact on the cluster by assigning only one instance to handle the indexing of Kafka data used for performance monitoring.
Quality of Life improvements
- The checkbox to skip TLS verification is now always visible
- The YAML for Topic object now allows number in
spec.configs
. Previously it was mandatory to quote all numbers. - Self-service Topic Policies are now visible in the UI