confluentinc/kafka-rest

Is there a plan to add support for multiple clusters in the future?

punit-kulal opened this issue · 3 comments

  • The v3 API path seems to have semantic flexibility to add support for multiple clusters. However, currently kafka-rest can act as a REST proxy for only one kafka cluster.
  • Is there any future roadmap to add support for multiple cluster in kafka-rest.

Yes, this feature is very helpful. When using one of the proxy nodes to get cluster information, we want to be able to return a list of available nodes for the entire Kafka-REST cluster, which is necessary for fault tolerance of clients using the proxy to write messages.
I want to add nodes to the following data nodes like this:

{
    "kind": "KafkaClusterList",
    "metadata": {
        "self": "http://localhost:9391/v3/clusters",
        "next": null
    },
    "data": [
        {
            "kind": "KafkaCluster",
            "metadata": {
                "self": "http://localhost:9391/v3/clusters/cluster-1",
                "resource_name": "crn:///kafka=cluster-1"
            },
            "cluster_id": "cluster-1",
            "nodes": [
                "http://192.168.1.1:9391/",
                "http://192.168.1.2:9391"
            ],
            "controller": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/brokers/1"
            },
            "acls": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/acls"
            },
            "brokers": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/brokers"
            },
            "broker_configs": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/broker-configs"
            },
            "consumer_groups": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/consumer-groups"
            },
            "topics": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/topics"
            },
            "partition_reassignments": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/topics/-/partitions/-/reassignment"
            }
        }
    ]
}

Yes, this feature is very helpful. When using one of the proxy nodes to get cluster information, we want to be able to return a list of available nodes for the entire Kafka-REST cluster, which is necessary for fault tolerance of clients using the proxy to write messages. I want to add nodes to the following data nodes like this:

{
    "kind": "KafkaClusterList",
    "metadata": {
        "self": "http://localhost:9391/v3/clusters",
        "next": null
    },
    "data": [
        {
            "kind": "KafkaCluster",
            "metadata": {
                "self": "http://localhost:9391/v3/clusters/cluster-1",
                "resource_name": "crn:///kafka=cluster-1"
            },
            "cluster_id": "cluster-1",
            "nodes": [
                "http://192.168.1.1:9391/",
                "http://192.168.1.2:9391"
            ],
            "controller": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/brokers/1"
            },
            "acls": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/acls"
            },
            "brokers": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/brokers"
            },
            "broker_configs": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/broker-configs"
            },
            "consumer_groups": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/consumer-groups"
            },
            "topics": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/topics"
            },
            "partition_reassignments": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/topics/-/partitions/-/reassignment"
            }
        }
    ]
}

Sorry, the previous data format is wrong, this is a new data format, put nodes information in ClusterDataList, I don't know what you think.

{
    "kind": "KafkaClusterList",
    "metadata": {
        "self": "http://localhost:9391/v3/clusters",
        "next": null
    },
    "nodes": {
        "self": "http://localhost:8082/",
        "available_node": [
            {
                "host": "http://192.168.1.1:8082/",
                "healthy": true,
                "weight": 1.0,
                "enabled": true,
                "metadata": {
                    "foo1": "bar1"
                }
            },
            {
                "host": "http://192.168.1.2:8082/",
                "healthy": true,
                "weight": 1.0,
                "enabled": true,
                "metadata": {
                    "foo2": "bar2"
                }
            }
        ]
    },
    "data": [
        {
            "kind": "KafkaCluster",
            "metadata": {
                "self": "http://localhost:9391/v3/clusters/cluster-1",
                "resource_name": "crn:///kafka=cluster-1"
            },
            "cluster_id": "cluster-1",
            "controller": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/brokers/1"
            },
            "acls": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/acls"
            },
            "brokers": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/brokers"
            },
            "broker_configs": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/broker-configs"
            },
            "consumer_groups": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/consumer-groups"
            },
            "topics": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/topics"
            },
            "partition_reassignments": {
                "related": "http://localhost:9391/v3/clusters/cluster-1/topics/-/partitions/-/reassignment"
            }
        }
    ]
}

Could you point me to any open apache wiki issue for adding multiple cluster support. Would be happy to contribute