Skip to main content
This guide walks through the Kubernetes resources needed to deploy Lakehouse Table in a StreamNative Private Cloud environment.

Prerequisites

  • A StreamNative Private Cloud environment with the StreamNative operator (PulsarCoordinator) installed
  • An object storage bucket (AWS S3, GCS, or Azure Blob Storage)
  • An IAM role or service account with read/write permissions on the bucket
  • Kubernetes namespace (e.g., pulsar) for deploying resources

1. ServiceAccount and IAM

Create a Kubernetes ServiceAccount that binds to your cloud IAM role. This grants the Pulsar broker and compaction service access to the object storage bucket.

AWS (EKS)

The IAM role must have the following permissions on the storage bucket:

GCS (GKE)

Coming Soon.

Azure (AKS)

Coming Soon.

2. Secrets

Create secrets for broker credentials and cloud provider configuration:

3. PulsarCoordinator

Deploy the StreamNative operator:

4. Oxia Cluster and Namespaces

Oxia provides metadata storage, leader election for the compaction service, and offset index management.

OxiaCluster

OxiaNamespaces

Three namespaces are required:

5. StorageCatalog

The StorageCatalog resource connects the Pulsar broker to Oxia and object storage:

6. PulsarBroker with Compaction Service

The PulsarBroker resource includes the compaction scheduler configuration that enables lakehouse integration:

Key Configuration Fields

Compaction Service Tuning (Optional)

Additional properties can be added under compactionScheduler.config:

7. Cloud Provider Variants

GCS

Coming Soon.

Azure

Coming Soon.

Next Steps

After deploying the infrastructure, proceed to:
  1. Prepare Lakehouse Catalogs — Set up your external catalog service
  2. Register Lakehouse Catalogs — Connect catalogs to the compaction service
  3. Enable Lakehouse Integration — Enable at cluster, namespace, or topic level