KubeBlocks
BlogsEnterprise
⌘K
​
Blogs

Overview
Quickstart
Architecture

Operations

Stop / Start / Restart
Vertical Scaling
Horizontal Scaling
Volume Expansion
Reconfigure
Manage Services

Observability

Prometheus Integration
  1. Prerequisites
  2. Expose the NameServer
  3. Disable External Access
  4. Cleanup

Manage Services for RocketMQ

By default, RocketMQ services are only accessible within the cluster. Use an OpsRequest to expose the NameServer externally via a LoadBalancer service.

Prerequisites

    Before proceeding, verify your environment meets these requirements:

    • A functional Kubernetes cluster (v1.21+ recommended)
    • kubectl v1.21+ installed and configured with cluster access
    • Helm installed (installation guide)
    • KubeBlocks installed (installation guide)
    • RocketMQ Add-on installed and a RocketMQ cluster running (see Quickstart)
    NOTE

    A LoadBalancer requires cloud provider support (e.g., AWS ELB, Aliyun SLB). On bare-metal or local clusters, use NodePort instead.

    Expose the NameServer

    kubectl apply -f - <<EOF apiVersion: operations.kubeblocks.io/v1alpha1 kind: OpsRequest metadata: name: rocketmq-expose-enable namespace: demo spec: type: Expose clusterName: rocketmq-cluster expose: - componentName: namesrv services: - name: internet serviceType: LoadBalancer ports: - name: nameserver port: 9876 targetPort: nameserver annotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: "" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small switch: Enable EOF
    NOTE

    Adjust the annotations for your cloud provider. Remove them entirely for NodePort or bare-metal clusters.

    Monitor progress:

    kubectl get opsrequest rocketmq-expose-enable -n demo -w
    Example Output
    NAME TYPE CLUSTER STATUS PROGRESS AGE rocketmq-expose-enable Expose rocketmq-cluster Succeed 1/1 15s

    Get the external endpoint:

    kubectl get service -n demo -l app.kubernetes.io/instance=rocketmq-cluster
    Example Output
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rocketmq-cluster-namesrv-internet LoadBalancer 10.100.55.20 47.x.x.x 9876:30xxx/TCP 30s rocketmq-cluster-namesrv-namesrv-internal ClusterIP 10.100.42.31 <none> 9876/TCP 10m

    The external NameServer address is 47.x.x.x:9876.

    Disable External Access

    kubectl apply -f - <<EOF apiVersion: operations.kubeblocks.io/v1alpha1 kind: OpsRequest metadata: name: rocketmq-expose-disable namespace: demo spec: type: Expose clusterName: rocketmq-cluster expose: - componentName: namesrv services: - name: internet serviceType: LoadBalancer switch: Disable EOF

    Cleanup

    kubectl delete opsrequest rocketmq-expose-enable rocketmq-expose-disable -n demo --ignore-not-found

    © 2026 KUBEBLOCKS INC