stackabletech / hbase-operator

Kubernetes Operator for Apache HBase built by Stackable for the Stackable Data Platform
https://stackable.tech
Other
15 stars 4 forks source link

Expose master + regionservers ui via NodePort Service #239

Open sbernauer opened 2 years ago

sbernauer commented 2 years ago

Currently stackablectl shows the following services:

stackablectl services list 
 PRODUCT    NAME       NAMESPACE  ENDPOINTS                             EXTRA INFOS 

 hbase      hbase      default    regionserver 172.18.0.3:30025                     
                                  ui           http://172.18.0.3:30164              
                                  metrics      172.18.0.3:30447                     

 hdfs       hdfs       default                                                      

 zookeeper  zookeeper  default    zk           172.18.0.5:31384

There are clearly some services missing. A task for refinement is to research what UIs should be accessible. We already know that there should be one endpoint per RegionServer. All RegionServers must be reachable individually.

Additional information

k get svc | grep hbase
hbase                        NodePort    10.96.252.49    <none>        16020:30025/TCP,16030:30164/TCP,8081:30447/TCP                11m
hbase-master-default         ClusterIP   None            <none>        16000/TCP,16010/TCP,8081/TCP                                  11m
hbase-regionserver-default   ClusterIP   None            <none>        16020/TCP,16030/TCP,8081/TCP                                  11m

k describe svc hbase hbase-master-default hbase-regionserver-default
Name:                     hbase
Namespace:                default
Labels:                   app.kubernetes.io/component=regionserver
                          app.kubernetes.io/instance=hbase
                          app.kubernetes.io/managed-by=hbase-operator
                          app.kubernetes.io/name=hbase
                          app.kubernetes.io/role-group=global
                          app.kubernetes.io/version=2.4.12-stackable0.2.0
Annotations:              <none>
Selector:                 app.kubernetes.io/component=regionserver,app.kubernetes.io/instance=hbase,app.kubernetes.io/name=hbase
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.96.252.49
IPs:                      10.96.252.49
Port:                     regionserver  16020/TCP
TargetPort:               16020/TCP
NodePort:                 regionserver  30025/TCP
Endpoints:                10.244.1.79:16020,10.244.3.88:16020
Port:                     ui  16030/TCP
TargetPort:               16030/TCP
NodePort:                 ui  30164/TCP
Endpoints:                10.244.1.79:16030,10.244.3.88:16030
Port:                     metrics  8081/TCP
TargetPort:               8081/TCP
NodePort:                 metrics  30447/TCP
Endpoints:                10.244.1.79:8081,10.244.3.88:8081
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

Name:              hbase-master-default
Namespace:         default
Labels:            app.kubernetes.io/component=master
                   app.kubernetes.io/instance=hbase
                   app.kubernetes.io/managed-by=hbase-operator
                   app.kubernetes.io/name=hbase
                   app.kubernetes.io/role-group=default
                   app.kubernetes.io/version=2.4.12-stackable0.2.0
                   prometheus.io/scrape=true
Annotations:       <none>
Selector:          app.kubernetes.io/component=master,app.kubernetes.io/instance=hbase,app.kubernetes.io/name=hbase,app.kubernetes.io/role-group=default
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                None
IPs:               None
Port:              master  16000/TCP
TargetPort:        16000/TCP
Endpoints:         10.244.3.87:16000
Port:              ui  16010/TCP
TargetPort:        16010/TCP
Endpoints:         10.244.3.87:16010
Port:              metrics  8081/TCP
TargetPort:        8081/TCP
Endpoints:         10.244.3.87:8081
Session Affinity:  None
Events:            <none>

Name:              hbase-regionserver-default
Namespace:         default
Labels:            app.kubernetes.io/component=regionserver
                   app.kubernetes.io/instance=hbase
                   app.kubernetes.io/managed-by=hbase-operator
                   app.kubernetes.io/name=hbase
                   app.kubernetes.io/role-group=default
                   app.kubernetes.io/version=2.4.12-stackable0.2.0
                   prometheus.io/scrape=true
Annotations:       <none>
Selector:          app.kubernetes.io/component=regionserver,app.kubernetes.io/instance=hbase,app.kubernetes.io/name=hbase,app.kubernetes.io/role-group=default
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                None
IPs:               None
Port:              regionserver  16020/TCP
TargetPort:        16020/TCP
Endpoints:         10.244.1.79:16020,10.244.3.88:16020
Port:              ui  16030/TCP
TargetPort:        16030/TCP
Endpoints:         10.244.1.79:16030,10.244.3.88:16030
Port:              metrics  8081/TCP
TargetPort:        8081/TCP
Endpoints:         10.244.1.79:8081,10.244.3.88:8081
Session Affinity:  None
Events:            <none>
lfrancke commented 1 year ago

Actually: There should be one endpoint per RegionServer. All RegionServers must be reachable individually

sbernauer commented 1 year ago

Updated ticket. Moved researching what is needed to refinement (as I'm no hbase expert, feel free to put requirements in)

chaicesan commented 1 year ago

Any updates on this ticket? If not then what updates would be involved to make this happen?

lfrancke commented 1 year ago

Hi @chaicesan thanks for your interest, unfortunately the answer is "it's complicated" :( We need some preliminary work in our framework for this which we have scheduled for around April and only then can we get to this.

chaicesan commented 1 year ago

Thanks for your response @lfrancke. Could I also get some information about the stackable project and how it's run? Is all communication via github issues or is there a DM platform like slack available too (just a preference for me)? This is a project that I am looking into and experimenting with a lot and I often have questions and don't necessarily want to create an issue for each one.

Jimvin commented 1 year ago

I agree discussion often makes more sense outside of GitHub issues and we have recently created a Stackable Community Discord server. You can follow this invite link to join the server - https://discord.gg/7jdYQbt8

lfrancke commented 1 year ago

And if you have any other questions just reach out to info@stackable.tech and one of us will get back to you