Skip to content

feat: HBase Listener integration #639

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 61 commits into from
Jul 8, 2025
Merged

Conversation

adwk67
Copy link
Member

@adwk67 adwk67 commented Mar 26, 2025

Description

fixes: #618

Warning

Merge this at the same time as stackabletech/docker-images#1159, otherwise tests will break!

How to test

  • build the image locally with bake -p hbase from the branch for this PR
  • upload image(s) to local kind cluster with e.g. kind load docker-image oci.stackable.tech/sdp/hbase:2.6.1-stackable0.0.0-dev --name stackable-data-platform
  • deploy the operator with stackable op in hbase=0.0.0-pr639
  • run tests with e.g. ./scripts/run-tests --skip-operator hbase --test ...

Implementation notes

  • Persistent volumes are used for all endpoints as they are all user-facing
  • the listener endpoints are written to hbase-site.xml
  • no group listeners are used across a group of replicas, but each listener is specific to a particular pod

Output from the HBase demo:

17:59 $ stackablectl stacklet list

┌───────────┬───────────┬───────────┬──────────────────────────────────────────────────────────────┬─────────────────────────────────┐
│ PRODUCT   ┆ NAME      ┆ NAMESPACE ┆ ENDPOINTS                                                    ┆ CONDITIONS                      │
╞═══════════╪═══════════╪═══════════╪══════════════════════════════════════════════════════════════╪═════════════════════════════════╡
│ hbase     ┆ hbase     ┆ default   ┆ master-default-0-master              172.19.0.3:32673        ┆ Available, Reconciling, Running │
│           ┆           ┆           ┆ master-default-0-ui-http             172.19.0.3:30430        ┆                                 │
│           ┆           ┆           ┆ regionserver-default-0-regionserver  172.19.0.4:31204        ┆                                 │
│           ┆           ┆           ┆ regionserver-default-0-ui-http       172.19.0.4:31767        ┆                                 │
│           ┆           ┆           ┆ regionserver-default-1-regionserver  172.19.0.3:30602        ┆                                 │
│           ┆           ┆           ┆ regionserver-default-1-ui-http       172.19.0.3:31627        ┆                                 │
│           ┆           ┆           ┆ restserver-default-0-rest-http       172.19.0.3:30155        ┆                                 │
│           ┆           ┆           ┆ restserver-default-0-ui-http         172.19.0.3:30586        ┆                                 │
├╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤

The Localities indicate that the serving region is the same node as the HDFS data:

image

CRD change

Note

There does not need to be a decision on this (discussed briefly in planning 09.04.2024) as the implementation is in line with existing implementations for HDFs and Kafka.

old:

clusterConfig:
   listenerClass: {external-unstable|external-stable|cluster-internal}

new:
(this is inline with the implementations for HDFS and Kafka)

spec:
  masters:
    config:
      listenerClass: {external-unstable|external-stable|cluster-internal}
  regionServers:
    config:
      listenerClass: {external-unstable|external-stable|cluster-internal}
  restServers:
    config:
      listenerClass: {external-unstable|external-stable|cluster-internal}

Tests (OpenShift)

--- PASS: kuttl (1736.72s)
    --- PASS: kuttl/harness (0.00s)
        --- PASS: kuttl/harness/cluster-operation_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (251.16s)
        --- PASS: kuttl/harness/omid_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true_omid-1.1.2 (287.90s)
        --- PASS: kuttl/harness/orphaned_resources_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (186.60s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.1_hdfs-3.4.1_zookeeper-3.9.3_listener-class-external-unstable_openshift-true (320.82s)
        --- PASS: kuttl/harness/overrides_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (182.74s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-external-unstable_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-true (510.35s)
        --- PASS: kuttl/harness/snapshot-export_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (259.22s)
        --- PASS: kuttl/harness/profiling_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (196.50s)
        --- PASS: kuttl/harness/opa_hbase-opa-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_opa-1.0.1_openshift-true (280.21s)
        --- PASS: kuttl/harness/logging_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (209.32s)
        --- PASS: kuttl/harness/shutdown_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (331.83s)
        --- PASS: kuttl/harness/external-access_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_listener-class-external-unstable_openshift-true (180.55s)
        --- PASS: kuttl/harness/resources_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-true (213.95s)
PASS

Definition of Done Checklist

  • Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant
  • Please make sure all these things are done and tick the boxes

Author

  • Changes are OpenShift compatible
  • CRD changes approved
  • CRD documentation for all fields, following the style guide.
  • Helm chart can be installed and deployed operator works
  • Integration tests passed (for non trivial changes)
  • Changes need to be "offline" compatible

Reviewer

  • Code contains useful comments
  • Code contains useful logging statements
  • (Integration-)Test cases added
  • Documentation added or updated. Follows the style guide.
  • Changelog updated
  • Cargo.toml only contains references to git tags (not specific commits or branches)

Acceptance

  • Feature Tracker has been updated
  • Proper release label has been added
  • Roadmap has been updated

@adwk67 adwk67 self-assigned this Mar 26, 2025
@adwk67 adwk67 marked this pull request as ready for review April 3, 2025 16:37
@adwk67 adwk67 requested a review from a team April 3, 2025 16:38
@adwk67 adwk67 moved this to Development: Waiting for Review in Stackable Engineering Apr 3, 2025
@sbernauer
Copy link
Member

Can you please run cargo update -p tokio to fix the cargo deny? :)

@sbernauer sbernauer self-requested a review April 9, 2025 07:06
Copy link
Member

@maltesander maltesander left a comment

Choose a reason for hiding this comment

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

Tests / Demos look good so far!

@adwk67
Copy link
Member Author

adwk67 commented Jun 27, 2025

🟢 Re-run local tests

Tests
--- PASS: kuttl (2312.09s)
    --- PASS: kuttl/harness (0.00s)
        --- PASS: kuttl/harness/logging_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (309.14s)
        --- PASS: kuttl/harness/shutdown_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (346.83s)
        --- PASS: kuttl/harness/overrides_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (172.70s)
        --- PASS: kuttl/harness/omid_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false_omid-1.1.3 (322.48s)
        --- PASS: kuttl/harness/resources_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (162.23s)
        --- PASS: kuttl/harness/opa_hbase-opa-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_opa-1.4.2_openshift-false (390.30s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.2_hdfs-3.4.1_zookeeper-3.9.3_listener-class-external-unstable_openshift-false (256.92s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.2_hdfs-3.4.1_zookeeper-3.9.3_listener-class-cluster-internal_openshift-false (260.77s)
        --- PASS: kuttl/harness/orphaned_resources_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (218.15s)
        --- PASS: kuttl/harness/snapshot-export_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (297.74s)
        --- PASS: kuttl/harness/profiling_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (159.04s)
        --- PASS: kuttl/harness/external-access_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (164.32s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-external-unstable_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-false (751.62s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-cluster-internal_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-false (448.56s)
        --- PASS: kuttl/harness/cluster-operation_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (209.02s)
PASS

Copy link
Member

@maltesander maltesander left a comment

Choose a reason for hiding this comment

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

LGTM! Will wait with approval for on stackabletech/docker-images#1159

@adwk67
Copy link
Member Author

adwk67 commented Jun 28, 2025

🟢 Re-run local tests (changed to use the 2.6.1 image)

Tests
--- PASS: kuttl (1867.33s)
    --- PASS: kuttl/harness (0.00s)
        --- PASS: kuttl/harness/logging_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (180.17s)
        --- PASS: kuttl/harness/snapshot-export_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (240.76s)
        --- PASS: kuttl/harness/orphaned_resources_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (143.83s)
        --- PASS: kuttl/harness/cluster-operation_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (157.69s)
        --- PASS: kuttl/harness/external-access_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (440.71s)
        --- PASS: kuttl/harness/profiling_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (143.43s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.1_hdfs-3.4.1_zookeeper-3.9.3_listener-class-external-unstable_openshift-false (195.82s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.1_hdfs-3.4.1_zookeeper-3.9.3_listener-class-cluster-internal_openshift-false (198.67s)
        --- PASS: kuttl/harness/omid_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false_omid-1.1.3 (210.73s)
        --- PASS: kuttl/harness/shutdown_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (235.33s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-external-unstable_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-false (464.67s)
        --- PASS: kuttl/harness/resources_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (165.30s)
        --- PASS: kuttl/harness/overrides_hbase-latest-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (150.12s)
        --- PASS: kuttl/harness/opa_hbase-opa-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_opa-1.4.2_openshift-false (293.78s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.1_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-cluster-internal_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-false (367.82s)
PASS

Copy link
Contributor

@nightkr nightkr left a comment

Choose a reason for hiding this comment

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

(Not a full review just something that stood out to me.)

@adwk67
Copy link
Member Author

adwk67 commented Jul 8, 2025

🟢 Re-run local tests (using images built from this branch)

Tests
--- PASS: kuttl (2106.76s)
    --- PASS: kuttl/harness (0.00s)
        --- PASS: kuttl/harness/overrides_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (116.37s)
        --- PASS: kuttl/harness/logging_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (185.77s)
        --- PASS: kuttl/harness/omid_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false_omid-1.1.3 (211.97s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-external-unstable_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-false (348.70s)
        --- PASS: kuttl/harness/external-access_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (159.24s)
        --- PASS: kuttl/harness/orphaned_resources_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (136.45s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.2_hdfs-3.4.1_zookeeper-3.9.3_listener-class-external-unstable_openshift-false (195.79s)
        --- PASS: kuttl/harness/resources_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (168.33s)
        --- PASS: kuttl/harness/kerberos_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_listener-class-cluster-internal_kerberos-realm-PROD.MYCORP_kerberos-backend-mit_openshift-false (330.32s)
        --- PASS: kuttl/harness/cluster-operation_hbase-latest-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (143.62s)
        --- PASS: kuttl/harness/snapshot-export_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (213.10s)
        --- PASS: kuttl/harness/smoke_hbase-2.6.2_hdfs-3.4.1_zookeeper-3.9.3_listener-class-cluster-internal_openshift-false (217.47s)
        --- PASS: kuttl/harness/shutdown_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (233.77s)
        --- PASS: kuttl/harness/profiling_hbase-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_openshift-false (139.94s)
        --- PASS: kuttl/harness/opa_hbase-opa-2.6.2_hdfs-latest-3.4.1_zookeeper-latest-3.9.3_krb5-1.21.1_opa-1.4.2_openshift-false (727.72s)
PASS

Copy link
Member

@maltesander maltesander left a comment

Choose a reason for hiding this comment

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

LGTM!

@NickLarsenNZ NickLarsenNZ merged commit f6781ca into main Jul 8, 2025
16 checks passed
@NickLarsenNZ NickLarsenNZ deleted the feat/integrate-listener-operator branch July 8, 2025 15:38
@adwk67 adwk67 moved this from Development: In Review to Development: Done in Stackable Engineering Jul 8, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Development: Done
Development

Successfully merging this pull request may close these issues.

Integrate HBase Operator with Listener Operator
5 participants