KubeKanvas Logo
  • Features
  • Pricing
  • Templates
    • How KubeKanvas works
    • Docs
    • Downloads
    • Blog
    • E-Book
    • Tutorials
  • FAQs
  • Contact
  • Features
  • Pricing
  • Templates
    • How KubeKanvas works
    • Docs
    • Downloads
    • Blog
    • E-Book
    • Tutorials
  • FAQs
  • Contact
Back to Templates

Deploy QuestDB on Kubernetes: Fast Time-Series Database

Tags:
QuestdbTSDBKubernetesKubekanvasPostgresMySQL
Created by:
Siddiqui
Deploy QuestDB on Kubernetes: Fast Time-Series Database template preview
0 uses
KubeKanvas Logo
Visual Kubernetes cluster design tool that helps you create, manage, and deploy your applications with ease.
Product
  • Features
  • Pricing
  • Templates
Resources
  • Blog
  • Tutorials
Company
  • About Us
  • Contact
  • Terms of Service
  • Privacy Policy
  • Responsible AI Policy
  • Impressum
XGitHubLinkedIn
© 2026 KubeKanvas. All rights reserved.

Deploy QuestDB on Kubernetes to process high-throughput time-series data with SQL support. This template provisions a single-node QuestDB instance, persistent storage, internal network services, and Ingress routing for monitoring and analytics workloads.

What's Included

ComponentTypePortRole
questdb-monitoringNamespaceN/AIsolates QuestDB resources
questdb-dataPersistentVolumeClaimN/AStores persistent time-series data
questdbService9000, 8812, 9009Exposes HTTP, PGWire, and ILP endpoints
questdbDeployment9000, 8812, 9009Runs single-replica QuestDB container
questdb-configConfigMapN/AHolds custom environment configuration
questdb-ingressIngress80Routes external traffic to Web Console

Architecture Overview

The Ingress controller routes HTTP traffic from external clients to port 9000 of the ClusterIP Service. The Service forwards requests to the QuestDB Deployment. Applications write data through port 9009 using InfluxDB Line Protocol or query through port 8812 via PostgreSQL wire protocol. The Deployment mounts the PersistentVolumeClaim to /var/lib/questdb for state persistence, and environment variables inject from the ConfigMap.

Prerequisites

  • Active Kubernetes cluster with an NGINX Ingress Controller installed.
  • StorageClass configured for dynamic PersistentVolume provisioning.
  • Configured local DNS or hosts file pointing questdb.local to your Ingress IP address.
  • KubeKanvas CLI installed and running on your computer (Optional, if you want to use one-click deployment)

How to Deploy

  1. Select your target Kubernetes namespace or keep the default questdb-monitoring namespace.
  2. Review the storage request in the PersistentVolumeClaim and adjust the 20Gi request if needed.
  3. Configure custom QuestDB environment variables in the ConfigMap data block if required.
  4. Update the Ingress host field from questdb.local to your designated domain name.
  5. Deploy the template to your cluster via the Play button in the top right bar. If you prefer to deploy manually, download the YAML and apply it with kubectl.
  6. Wait for all pods to reach Running status. You can monitor progress in the Release Monitor screen.

How to Test

  1. Open your browser and navigate to [http://questdb.local](http://questdb.local) to access the QuestDB Web Console.
  2. Execute the HTTP health check probe by running curl -I [http://questdb.local/ping](http://questdb.local/ping).
  3. Test PostgreSQL wire protocol connectivity by running pg_isready -h questdb.local -p 8812.

Use Cases

  • High-Throughput Metric Ingestion: Ingest real-time application and IoT telemetry using the InfluxDB Line Protocol endpoint on port 9009.
  • SQL Analytics for Time-Series: Execute fast SQL queries against time-partitioned columnar metric data via the Web Console or REST API.
  • Grafana Dashboard Backend: Connect Grafana using the standard PostgreSQL database connector over port 8812 for live monitoring.

Summary

This template configures a complete QuestDB deployment on Kubernetes, including persistent volume storage, multi-protocol Service endpoints, and Ingress routing for real-time time-series analytics.