Skip to content

[Feature]: Kubernetes deployment support #366

Description

@thuanpham582002

Feature Description

I would like to be able to deploy Open Notebook on my Kubernetes cluster (EKS/GKE/AKS/minikube). Currently there's no official K8s deployment method, requiring manual creation of Deployments, Services, ConfigMaps, Secrets, and other resources which is error-prone and hard to maintain.

Why would this be helpful?

  • Enables cloud-native deployment on AWS EKS, GCP GKE, Azure AKS, and local clusters (minikube, kind)
  • Provides auto-scaling with Horizontal Pod Autoscaler (HPA)
  • Self-healing deployments with automatic restarts
  • Rolling updates and rollbacks with zero downtime
  • Resource management (CPU/memory limits and requests)
  • Persistent volume management for SurrealDB data
  • Service discovery and load balancing
  • Ingress support for domain access and TLS certificates
  • Multi-environment support (dev/staging/prod) with consistent deployments
  • Industry-standard deployment method used by most production applications

Proposed Solution

Add a Helm chart for Kubernetes deployment:

Helm Chart (recommended): Industry standard for K8s application packaging

  • Simple installation: helm install open-notebook ./helm/open-notebook
  • Easy upgrades: helm upgrade open-notebook ./helm/open-notebook
  • Rollback support: helm rollback open-notebook
  • Configurable via values files
  • Environment-specific configurations (dev/staging/prod)
  • Follows Bitnami Helm chart best practices

Alternative approaches:

  • Kubectl manifests in k8s/ directory (simpler, less flexible)
  • Kustomize (native K8s tool, good for multi-environment)

Additional Context

Key requirements for Kubernetes deployment:

  • Support all 17 AI providers (OpenAI, Anthropic, Google, etc.)
  • SurrealDB deployment using StatefulSet for persistence
  • Secret management for API keys (automatic creation)
  • Health checks (liveness, readiness, startup probes)
  • Persistent volume claims for app data and database
  • Ingress configuration for external access
  • Configurable replicas, resources, and security contexts
  • Network policies for traffic control
  • ServiceMonitor for Prometheus monitoring

Example Helm chart structure:

helm/open-notebook/
├── Chart.yaml          # Chart metadata
├── values.yaml         # All configuration options
├── values.schema.json  # JSON schema validation
├── README.md           # Documentation
└── templates/          # Kubernetes manifests
    ├── deployment.yaml
    ├── statefulset.yaml  # SurrealDB
    ├── service.yaml
    ├── ingress.yaml
    ├── pvc.yaml
    ├── secret.yaml
    └── configmap.yaml

Example installation:

# Basic with OpenAI
helm install open-notebook ./helm/open-notebook \
  --set config.aiProviders.openai.apiKey=sk-xxx

# With NodePort service
helm install open-notebook ./helm/open-notebook \
  --set service.type=NodePort

Contribution

  • I am a developer and would like to work on implementing this feature (pending maintainer approval)

References:

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area: databaseDatabase, SurrealDB, and data layerneeds-designWanted, but the how isn't resolved — needs design/spec before it's ready

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions