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

Open
wants to merge 39 commits into
base: main
Choose a base branch
from

Conversation

adwk67
Copy link
Member

@adwk67 adwk67 commented Mar 26, 2025

Description

fixes: #618

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        ┆                                 │
├╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤

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
@adwk67 adwk67 removed the request for review from a team April 9, 2025 12:02
@adwk67 adwk67 moved this from Development: Waiting for Review to Development: In Review in Stackable Engineering Apr 9, 2025
@adwk67 adwk67 moved this from Development: In Review to Development: Done in Stackable Engineering Apr 29, 2025
@adwk67 adwk67 moved this from Development: Done to Development: Track in Stackable Engineering Apr 29, 2025
@sbernauer sbernauer moved this from Development: Track to Development: In Progress in Stackable Engineering May 19, 2025
@nightkr
Copy link
Member

nightkr commented May 28, 2025

The corresponding product patch branch is (AIUI) https://github.com/stackabletech/docker-images/tree/feat/hbase-resolvable-endpoints.

@nightkr
Copy link
Member

nightkr commented May 31, 2025

I haven't tested accessing hbase with an actual client and there's a lot (lot) of cleanup to do, but https://github.com/stackabletech/hbase-operator/tree/feat/integrate-listener-operator-/nat (61c79a5) and https://github.com/stackabletech/docker-images/tree/feat/hbase-resolvable-endpoints-/nat (stackabletech/docker-images@2a2a5ac) seem to consistently make it all look correct in the UI at least.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Development: In Progress
Development

Successfully merging this pull request may close these issues.

Integrate HBase Operator with Listener Operator
3 participants