Skip to content

[FSTORE-1973] Allow for managed BYOK - #706

Open
bubriks wants to merge 6 commits into
logicalclocks:mainfrom
bubriks:FSTORE-1973
Open

bubriks wants to merge 6 commits into
logicalclocks:mainfrom
bubriks:FSTORE-1973

Conversation

@bubriks

@bubriks bubriks commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

https://hopsworks.atlassian.net/browse/FSTORE-1973

Summary

From 5.3, with an external Kafka (enable_bring_your_own_kafka), Hopsworks creates and deletes the topics it needs on that cluster through each project's kafka_connector, a feature group's notification topic becomes a topic of its project, and Kafka changes through a shared feature store are refused (hopsworks-ee PR below). The external Kafka guide said Hopsworks provisions no topics there and told users to pre-create them.

  • setup_installation/admin/upgrade.md, 5.2.x to 5.3.x (moved here from the chart's UPGRADE.md, which hopsworks-helm#2609 removed):
    • "Bring your own Kafka: Hopsworks creates and deletes topics": broker reachability from the Hopsworks pods, existing topics used as they are, the operations that create topics and the principal's Create and Delete, what is deleted and on which cluster, rows recorded before the upgrade staying on the bundled Kafka (migration V126), partitions and replicas, the OnlineFS topicPattern, inference logging staying on the bundled Kafka.
    • "Notification topics and shared feature stores": notification topics belong to their project (190026 for another project's), and changes through a shared feature store fail with 190027.
    • The 5.2.2 OnlineFS topic section now says the external Kafka exception holds on 5.2.2 only, and links the 5.3 rule.
  • setup_installation/on_prem/external_kafka_cluster.md:
    • Configuration is shown as Helm values (hopsworks.variables.enable_bring_your_own_kafka, onlinefs.dependencies.kafka, onlinefs.configmapOverrides.kafka) in place of the cluster-definition YAML.
    • OnlineFS must subscribe by topicPattern (default .*_onlinefs), since a fixed topicList misses the topics Hopsworks creates later.
    • "Topics on the external Kafka cluster": which topics are created, that existing topics are used and never deleted, which topics are deleted with their feature group or project, notification topics, and that owned topics are not shared between projects.
    • A warning that topics are deleted by name on the cluster the kafka_connector points at when they are deleted.
    • A permissions table for the kafka_connector principal (Describe, Read, Write, Create, Delete) and what fails without each.
    • Partitions and replicas: onlinefs_service_thread_number and kafka_num_replicas, the requested values for topics created through the topic API, and the min.insync.replicas interaction.
  • user_guides/fs/feature_group/topic.md: a topic that does not exist is created on the external Kafka too, and the topicPattern note names the Helm value.
  • user_guides/fs/feature_group/notification.md: the notification topic is a topic of the project that Hopsworks creates and deletes, instead of one to create first.
  • user_guides/fs/data_source/usage.md: a confluent_options() example for producers and consumers of your own.
  • reference/rest_error_codes.md: regenerated from hopsworks-ee. It adds 190026 and 190027, rewords 190003, and picks up the codes other merged changes added since the last run.

Related

Merge with or after the hopsworks-ee PR, since this describes its behaviour, and no later than the hopsworks-helm PR. The change ships in 5.3 only, so there is no branch-5.2 counterpart.

Test plan

  • uv run hopsworks-docs markdownlint passes.
  • Strict uv run hopsworks-docs check build passes.
  • The new Python block passes the snakeoil ruff rule set.
  • The described behaviour was checked on dev cluster bubriks with the backend branch: the hopsworks-ee PR lists the loadtests.

🤖 Generated with Claude Code

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The linked backend and Helm changes remain unavailable for verification of destructive topic behavior, and the permissions guidance needs correction.

1 open issue
What changed in this PR

Updates the documentation for Hopsworks 5.3 managed topic creation and deletion on external Kafka clusters.

Changes:

  • Replaces cluster-definition examples with Helm configuration and pattern-based subscriptions.
  • Documents topic ownership, deletion risks, permissions, replication, and client configuration.
  • Aligns Feature Group topic guidance with external topic provisioning.
File Description
docs/​user_guides/​fs/​feature_group/​topic.md Updates topic creation and subscription guidance.
docs/​setup_installation/​on_prem/​external_kafka_cluster.md Documents configuration and managed external-topic behavior.

Review effort: Balanced

Comment thread docs/setup_installation/on_prem/external_kafka_cluster.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Destructive topic-lifecycle guarantees need human confirmation against the linked backend change, which was unavailable for verification.

1 open issue
1 previously missed issue

In code that hasn't changed since last review

Low severity Move the SDK example to user guide documentation

docs/​setup_installation/​on_prem/​external_kafka_cluster.md:149

This introduces a user-facing SDK how-to inside the infrastructure/admin guide. .claude/docs/README.md:26–27 places task-focused feature usage under user_guides/. Move the confluent_options() example to the Kafka Data Source usage documentation and link to it here, keeping this page focused on cluster integration.

1 resolved since last review

Review effort: Balanced

Comment thread docs/user_guides/fs/feature_group/notification.md

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The example needs correction, and topic-deletion behavior and Helm settings still require verification against the inaccessible backend and chart changes.

1 open issue
1 resolved since last review

Review effort: Balanced

Comment thread docs/user_guides/fs/data_source/usage.md Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Destructive topic-lifecycle behavior and Helm settings still need confirmation against the linked backend and chart changes.

No open issues 🎉

2 previously missed issues

In code that hasn't changed since last review

Low severity Keep each operation description to one sentence per line

docs/​setup_installation/​on_prem/​external_kafka_cluster.md:105

The Describe, Write, Read, Create, and Delete descriptions each contain multiple sentences on one source line, contrary to the repository's one-sentence-per-line rule. Rephrase each description as a single sentence while keeping the Markdown table rows intact.

Low severity Use heading-ID syntax for the cross-reference

docs/​setup_installation/​on_prem/​external_kafka_cluster.md:147

This new cross-reference uses a relative Markdown file path rather than the heading-ID syntax required by the repository's linking guidelines. Use [Data Source usage guide][streaming-based-connector] to follow the versioned documentation's linking convention.

1 resolved since last review

Review effort: Balanced

@bubriks
bubriks marked this pull request as ready for review October 23, 2026 14:46
https://hopsworks.atlassian.net/browse/FSTORE-1973

With bring-your-own-Kafka enabled, Hopsworks now creates and deletes the
topics the feature store needs on the external Kafka through each
feature store's kafka_connector, as it does on the bundled Kafka. Topics
that already exist there are used as they are and never deleted. A
feature group's notification topic becomes a topic of its project, and
Kafka topics and schemas are no longer changed through a shared feature
store. hopsworks-ee carries the behaviour, hopsworks-api fixes the SDK's
Kafka connector, the docs describe it and the upgrade, hopsworks-helm
checks it in the satellite CI lane, and loadtest adds the e2e_byok
tests.

The upgrade guide's 5.2.x to 5.3.x hop describes what the external
Kafka's principal needs, that the Hopsworks pods must reach its brokers,
which operations create and delete topics, that rows recorded before the
upgrade stay on the bundled Kafka, partitions and replicas, moving
OnlineFS from a topic list to the pattern, notification topics, and
changes through shared feature stores. The external Kafka guide shows
the configuration as Helm values and covers the topics Hopsworks
creates, uses and deletes there, the principal's permissions, the
OnlineFS clients and topic pattern, partitions and replicas, and
notification topics. The Change Data Capture guide no longer asks for
the topic to be created first, the confluent-kafka example moves to the
Data Source usage guide, and the REST status code reference is
regenerated.

Reviewed-by: GitHub Copilot <Copilot@users.noreply.github.com>
Reviewed-by: OpenAI Codex (codex-plugin-cc 1.0.6) <codex@openai.com>
Signed-off-by: Ralfs Zangis <ralfs@logicalclocks.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bubriks and others added 5 commits October 26, 2026 10:17
# Conflicts:
#	docs/setup_installation/admin/upgrade.md
https://hopsworks.atlassian.net/browse/FSTORE-1973

The external_kafka migration is V128 in hopsworks-ee: master took V123
and V124.

Signed-off-by: Ralfs Zangis <ralfs@logicalclocks.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
https://hopsworks.atlassian.net/browse/FSTORE-1973

The external_kafka migration is V125 in hopsworks-ee, the next version
after master's V124.

Signed-off-by: Ralfs Zangis <ralfs@logicalclocks.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
https://hopsworks.atlassian.net/browse/FSTORE-1973

The external_kafka migration is V126 in hopsworks-ee: master's
HWORKS-3535 took V125.

Signed-off-by: Ralfs Zangis <ralfs@logicalclocks.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
https://hopsworks.atlassian.net/browse/FSTORE-1973

Selecting an existing topic for inference logging with an external
Kafka is refused with one of several codes, depending on the topic, so
the upgrade note no longer names BAD_TOPIC alone.

Signed-off-by: Ralfs Zangis <ralfs@logicalclocks.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants