Video Tutorial: Bootstrapping a BYOK Fleet
Bootstrapping a Kubernetes Fleet with BYOK
Bring Your Own Kubernetes (BYOK) allows you to use your existing Kubernetes clusters with Streamtime. This guide covers the steps to bootstrap a Kubernetes fleet using BYOK.
What is BYOK?
BYOK (Bring Your Own Kubernetes) allows you to leverage your existing Kubernetes infrastructure to run Apache Kafka clusters managed by Streamtime. Instead of relying on Streamtime’s managed cloud services, you can deploy Kafka directly on your own Kubernetes clusters, whether they are on-premises or in the cloud. This approach provides you with full control over your environment while still benefiting from Streamtime’s automation and management capabilities.
When to use BYOK
BYOK is ideal when you have existing Kubernetes clusters that you want to integrate with Streamtime for Kafka management. It allows you to leverage your current infrastructure while benefiting from Streamtime’s Kafka management capabilities.
Key Features
- Self-Hosted Kafka: Deploy and manage Kafka clusters on your own Kubernetes infrastructure.
- Full Control: You retain ownership of your Kafka environment, networking, and security policies.
- Flexible Deployment: Use your existing Kubernetes clusters, whether on-premises, in the cloud, or in a hybrid setup.
- Enterprise-Grade Automation: Streamtime automates Kafka operations, including scaling, monitoring, and maintenance, while you control the underlying infrastructure.
- Seamless Integration: Easily integrate Kafka into your existing IT and security landscape without relying on external cloud providers.
- Multi-Tenancy Support: Deploy multiple Kafka clusters within a single Kubernetes cluster, allowing for efficient resource utilization and isolation between different teams or environments.
How to Bootstrap a Kubernetes Fleet with BYOK
Follow these steps to bootstrap a Kubernetes fleet using BYOK in Streamtime:
- Select BYOK as Bootstrap Provider
- In the Streamtime UI, click “Create Kubernetes Fleet”.
- Choose BYOK as your bootstrap provider.
- Configure Tenancy & Sizing
- Select the tenancy model:
shared
,isolated
, ordedicated
. - Define your base domain, set the maximum tenancy (number of Kafka clusters per fleet), and specify the maximum Kafka units (throughput capacity).
- Choose the appropriate node size based on your workload (e.g., 1 Kafka unit = 20 MBps, recommended node: 4 vCPU / 16 GB RAM).
- Select the tenancy model:
- Placement Configuration
- Optionally, specify provider and region details for placement metadata to optimize for latency, compliance, or cost.
- This step is optional but recommended for better performance and compliance.
- Upload Your Kubernetes Configuration
- Upload your Kubernetes
kubeconfig
file. This file contains the necessary credentials and configuration to connect to your existing Kubernetes clusters.
- Upload your Kubernetes
- Deploy and Validate
- Click Deploy. Streamtime will validate your kubeconfig and configure the Kubernetes fleet.
- Once deployed, the fleet status will show as “Healthy” and is ready for Kafka
API Reference
Create a Kubernetes Fleet with BYOK
curl -X POST https://<streamtime-api-endpoint>/organizations/<your-org-id>/infrastructure/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"identifier": "additional-alpaca",
"infra_type": "byok",
"domain": "<your-domain>.com",
"max_tenants": 4,
"max_kafka_units": 17,
"tenancy_mode": "Shared",
"advanced_config": {
"kubeconfig": "<your-kubeconfig-string>"
},
"placement_config": {},
"organization": "<your-org-id>"
}'
Response:
{
"id": "bfca99b0-35a5-4490-9cc4-40296910f76d",
"organization": "acme",
"domain": "<your-domain>.com",
"identifier": "additional-alpaca",
"provisioner_name": null,
"destroyer_name": null,
"infra_type": "byok",
"tenancy_mode": "Shared",
"max_tenants": 4,
"max_kafka_units": 17,
"kubeconfig": null,
"kubeconfig_str": null,
"metadata": {},
"prometheus_endpoint": null,
"opencost_endpoint": null,
"loki_endpoint": null,
"loadbalancer_dns": null,
"placement_config": {},
"advanced_config": {
"kubeconfig": "<your-kubeconfig-string>"
},
"advanced_properties": {},
"status": "Pending",
"created_at": "2025-07-17T04:37:33.316063Z",
"updated_at": "2025-07-17T04:37:33.316090Z",
"network": null
}