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:

  1. Select BYOK as Bootstrap Provider
    • In the Streamtime UI, click “Create Kubernetes Fleet”.
    • Choose BYOK as your bootstrap provider. Bootstrap Provider Selection
  2. Configure Tenancy & Sizing
    • Select the tenancy model: shared, isolated, or dedicated.
    • 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). Tenancy & Sizing Configuration
  3. 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.
      Placement Configuration
  4. 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 Kubeconfig
  5. 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 byok detail view

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
}