A Kafka Connect cluster moves data between a Kafka cluster and other systems (databases, object storage, search) with connectors. Streamtime runs the Connect cluster next to its Kafka cluster, installs the connector plugins you choose, and manages the connectors on it.
Key Features
Strimzi or Confluent Connect: choose the Provider to match the Kafka cluster.
Your connector plugins: add plugins from HTTPS ZIP archives; the cluster is built with them.
Connector lifecycle: browse plugins and their settings, validate a configuration, then create, pause, resume, restart and delete connectors.
Monitoring: a dashboard, metrics and logs for the cluster and its connectors.
Settings
Basic Configuration: Identifier and Provider (Strimzi or Confluent).
Kafka Cluster Selection: the Kafka Cluster it connects to.
Advanced Configuration: the connector plugins to install, each a name, an HTTPS URL to a ZIP archive and, optionally, its SHA-512 checksum; and the chart Version, to upgrade.
Before you start
A fleet in Healthy state with room for the Kafka Connect workload (see Fleet management).
For the API: an access token in STREAMTIME_TOKEN and your organization identifier in place of <org>. Replace api.example.com with your Streamtime API address.
packagemainimport("bytes""crypto/rand""encoding/hex""encoding/json""net/http""os")constapi="https://api.example.com/organizations/<org>"// newKey returns a random idempotency key.funcnewKey()string{b:=make([]byte,16)rand.Read(b)returnhex.EncodeToString(b)}// call sends one request with the access token and a JSON body (or none).// An optional idempotency key is sent as the Idempotency-Key header.funccall(method,pathstring,bodyany,idempotencyKey...string)(*http.Response,error){varbufbytes.Bufferifbody!=nil{iferr:=json.NewEncoder(&buf).Encode(body);err!=nil{returnnil,err}}req,err:=http.NewRequest(method,api+path,&buf)iferr!=nil{returnnil,err}req.Header.Set("Authorization","Bearer "+os.Getenv("STREAMTIME_TOKEN"))req.Header.Set("Content-Type","application/json")iflen(idempotencyKey)>0{req.Header.Set("Idempotency-Key",idempotencyKey[0])}returnhttp.DefaultClient.Do(req)}
Saving a Kafka Connect resource and provisioning it are separate steps in the API: create or change it, then reconcile its new generation. The reconcile returns 202 with the operation it started; the same Idempotency-Key returns that operation again, and a 409 means the generation is out of date.
Create a Connect cluster
In the sidebar, select Kafka Connect, then Add Kafka Connect.
Basic Configuration: enter the Identifier and choose the Provider.
Kafka Cluster Selection: choose the Kafka Cluster.
Advanced Configuration: add the connector plugins you need.
Create it. It shows Pending, then Provisioning, then Healthy.
# 1. Save it. The response includes "generation".
curl -X POST "$API/kafka-connect/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"\-H"Content-Type: application/json"\-d'{
"identifier": "cdc",
"kafka_id": "<kafka-cluster>",
"provider": "skc",
"advanced_config": {
"connector_plugin_zips": [{"name": "<plugin>", "url": "https://example.com/<plugin>.zip"}]
}
}'# 2. Provision it
curl -X POST "$API/kafka-connect/cdc/reconcile/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"\-H"Content-Type: application/json"\-H"Idempotency-Key: $(uuidgen)"\-d'{"generation": 1}'
provider is skc (Strimzi) or cfk (Confluent). Send "advanced_config": {} to install the default plugins.
resp,err:=call("GET","/kafka-connect/cdc/",nil)// Decode "status" from resp.Body.
streamtime kafka-connect list
streamtime kafka-connect get cdc
Not available in MCP yet. Check the status from the UI, API or CLI.
Manage connectors
Once the Connect cluster is Healthy, list the plugins it has, look up a plugin’s settings, validate a configuration, then create the connector. A connector’s config is Kafka Connect’s own string key/value map.
Open the Connect cluster from Kafka Connect and select Connectors.
Select Create Connector. Enter the Identifier, choose the Connector type (Source or Sink) and the plugin, and fill in the form generated from the plugin’s settings. Select Test Connection to validate the configuration before you save it.
Open a connector to Pause Connector, Resume Connector, Restart Connector, Update Connector or delete it. Its Status Snapshot shows the state of the connector and its tasks.
C="$API/kafka-connect/cdc"# Plugins on the cluster, and one plugin's settings
curl -s"$C/connector-plugins/"-H"Authorization: Bearer $STREAMTIME_TOKEN"
curl -s"$C/connector-plugins/<connector-class>/config-schema/"-H"Authorization: Bearer $STREAMTIME_TOKEN"# Validate, then create
curl -X POST "$C/connectors/validate/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"-H"Content-Type: application/json"\-d'{"connector_class": "<connector-class>", "config": {"tasks.max": "1", "topics": "orders"}}'
curl -X POST "$C/connectors/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"-H"Content-Type: application/json"\-d'{
"identifier": "orders-sink",
"connector_class": "<connector-class>",
"plugin_type": "sink",
"config": {"tasks.max": "1", "topics": "orders"}
}'# Status, pause, resume, restart, delete
curl -X POST "$C/connectors/orders-sink/status/"-H"Authorization: Bearer $STREAMTIME_TOKEN"
curl -X POST "$C/connectors/orders-sink/pause/"-H"Authorization: Bearer $STREAMTIME_TOKEN"
curl -X POST "$C/connectors/orders-sink/resume/"-H"Authorization: Bearer $STREAMTIME_TOKEN"
curl -X POST "$C/connectors/orders-sink/restart/"-H"Authorization: Bearer $STREAMTIME_TOKEN"
curl -X DELETE "$C/connectors/orders-sink/"-H"Authorization: Bearer $STREAMTIME_TOKEN"
plugin_type is source or sink. Change a connector’s config with PATCH $C/connectors/orders-sink/.
The typed connector model marks server-set fields as required, so create the connector with the SDK’s HTTP client; the other calls are typed:
Not available in MCP yet. Manage connectors from the UI, API or CLI.
Change the configuration or upgrade
Change the connector plugins, or upgrade to a new Version (advanced_config.chart_config.main.version). The cluster is rebuilt with the new plugins.
Open it from Kafka Connect and select Configuration (or Edit).
Change the settings, then save. Streamtime applies the change, and the status shows Updating, then Healthy.
# 1. Save the change. The response includes the new "generation".GEN=$(curl -s-X PATCH "$API/kafka-connect/cdc/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"\-H"Content-Type: application/json"\-d'{"advanced_config": {"connector_plugin_zips": [{"name": "<plugin>", "url": "https://example.com/<plugin>-2.zip"}]}}' | jq .generation)# 2. Apply it
curl -X POST "$API/kafka-connect/cdc/reconcile/"\-H"Authorization: Bearer $STREAMTIME_TOKEN"\-H"Content-Type: application/json"\-H"Idempotency-Key: $(uuidgen)"\-d"{\"generation\": $GEN}"
The SDK has no typed call for this update yet, so save it with the SDK’s HTTP client, then apply it:
Not available in the CLI yet. Change the configuration from the UI or API.
Not available in MCP yet. Change the configuration from the UI or API.
View metrics, logs and alerts
Open it from Kafka Connect and select Monitoring for its metrics and logs, and Alert Rules (where shown) for the alerts that watch it. Alerts that fire also appear on the fleet’s Monitoring tab.
Metrics and logs are read through the fleet that runs it: