Skip to content

DBZ#1054 Update QOSDK to 7.7.0#172

Open
mfvitale wants to merge 8 commits intodebezium:mainfrom
mfvitale:dbz#1054
Open

DBZ#1054 Update QOSDK to 7.7.0#172
mfvitale wants to merge 8 commits intodebezium:mainfrom
mfvitale:dbz#1054

Conversation

@mfvitale
Copy link
Copy Markdown
Member

@mfvitale mfvitale commented Apr 7, 2026

Upgrade to JOSDK 5, Quarkus 3.32, and Fabric8 7.5

Dependency Upgrades

Dependency Old Version New Version
Quarkus 3.27.x 3.32.3
Quarkus Operator SDK 6.9.3 7.7.0
JOSDK (Java Operator SDK) 4.x 5.3.0
Fabric8 Kubernetes Client 7.3.1 7.5.2
Fabric8 CRD Generator 7.3.1 7.5.2

Code Changes

1. API Migration

  • Removed discriminators (no longer needed in JOSDK 5)
  • Updated reconciler to use new JOSDK 5 API patterns
  • Migrated from ReconcilerUtils to ReconcilerUtilsInternal

2. OffsetsConfigMapDependent - NPE Fix

  • Implemented targetSecondaryResourceID() override for JOSDK 5 resource tracking
  • Added null-safe handling in OffsetConfigMapRequired precondition

3. ConfigProperties - Serialization Fix

  • Added @PreserveUnknownFields annotation (required by Fabric8 7.4.0+)
  • Fixes loss of all .config properties during Kubernetes serialization

4. Helm Chart Generation

  • Added quarkus-helm dependency for automated Helm chart generation
  • Migrated to nested app.* structure

5. Default Namespace Configuration

  • Changed default watched namespace to JOSDK_ALL_NAMESPACES

Breaking Changes - Helm Chart Migration Required

The Helm chart structure has changed. Users with custom values.yaml files must migrate.

Configuration Changes

Setting Old Path New Path
Namespace watching watchNamespaces app.envs.QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES
Container image image app.image

Migration Examples

Before (no longer works):

# values.yaml
watchNamespaces: "JOSDK_ALL_NAMESPACES"
image: "quay.io/debezium/operator:1.0.0"

After (required):
# values.yaml
app:
  envs:
    QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES: JOSDK_ALL_NAMESPACES
  image: quay.io/debezium/operator:1.0.0

Upgrade Steps

Step 1: Update your values.yaml file using the new structure (see above)

Step 2: Run the upgrade with --reuse-values=false:

  helm upgrade debezium-operator ./debezium-operator \
    --values values.yaml \
    --reuse-values=false

Step 3: Verify the configuration:

  kubectl get deployment debezium-operator -o jsonpath='{.spec.template.spec.containers[0].image}'
  kubectl get deployment debezium-operator -o
  jsonpath='{.spec.template.spec.containers[0].env[?(@.name=="QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES")].value}'

Using --set flags

Before:

helm install debezium-operator ./debezium-operator \
    --set watchNamespaces=JOSDK_ALL_NAMESPACES \
    --set image=quay.io/debezium/operator:1.0.0

After:

helm install debezium-operator ./debezium-operator \
    --set app.envs.QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES=JOSDK_ALL_NAMESPACES \
    --set app.image=quay.io/debezium/operator:1.0.0

Namespace Watching Options:

  • JOSDK_ALL_NAMESPACES: Watch all namespaces (default)
  • JOSDK_WATCH_CURRENT: Watch only operator's namespace
  • namespace1,namespace2 :Watch specific namespaces

Testing

  • Verified that the are not relevant changes in the resulting helm apart from the breaking changes described above
  • Manual tests that the QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES works as expected.

closes: debezium/dbz#1054

@mfvitale mfvitale requested a review from jcechace April 7, 2026 12:57
mfvitale added 8 commits April 7, 2026 19:01
Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
…RD generator update

Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
…to avoid NPE when resource is optional

Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
Signed-off-by: Fiore Mario Vitale <mvitale@redhat.com>
@mfvitale mfvitale force-pushed the dbz#1054 branch 5 times, most recently from 1d89a0f to d03f349 Compare April 7, 2026 22:19
@mfvitale mfvitale marked this pull request as draft April 8, 2026 09:59
@mfvitale
Copy link
Copy Markdown
Member Author

mfvitale commented Apr 8, 2026

Test failures are related to debezium/debezium#7310 that causes the DS instance to not come up.

Let's wait the fix and the new DS nightly image published to re-run the tests.

@mfvitale mfvitale marked this pull request as ready for review April 8, 2026 10:42


# Quarkus helm configurations
quarkus.helm.values."app.envs.QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES".value=JOSDK_ALL_NAMESPACES No newline at end of file
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This is just the default right? Overridable on chart deployment?

Don't recall the behavior -- will check when I get to my other laptop.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes, the current default now is CURRENT_NAMESPACE so this is why the override in the application.properties then you can also override from values.yaml

app:
  envs:
    QUARKUS_OPERATOR_SDK_CONTROLLERS_DEBEZIUMSERVER_NAMESPACES: JOSDK_ALL_NAMESPACES

Copy link
Copy Markdown
Contributor

@jpechane jpechane left a comment

Choose a reason for hiding this comment

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

@mfvitale LGTM, thanks. Feel free to merge yourself when CI passes.

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.

Update QOSDK to 7.x.x [DBZ-9012]

3 participants