(Part of acquisition of Molnett) Kubernetes operator for managing self-hosted Neon Postgres database clusters. This operator enables you to manage all necessary components of Neon's control plane on Kubernetes (in cloud and on-premises).
See the codeA Kubernetes operator for managing self-hosted Neon Postgres database clusters. This operator enables you to manage all necessary compoents of Neon's control plane on Kubernetes (in cloud and on-premises).
This product isn't affiliated with or endorsed by Neon in any way.
This operator is functional for development and testing environments. It implements Neon's core architecture components and provides basic cluster management capabilities. We are currently working on Day 1 and Day 2 operations, which means performance is not yet optimized.
This self-hosted operator currently has several limitations compared to the fully managed Neon service:
This operator implements Neon's separation of compute and storage:
Each component runs as Kubernetes workloads with persistent storage and service discovery.
This operator is tested with:
A single-purpose Kind cluster is recommended for local development.
For rapid iteration during development:
# Start Tilt (rebuilds and redeploys on changes)
tilt up
# View Tilt UI
tilt up --web
# Install CRDs
make install
make test
# Run full E2E test suite (builds image and tests cluster lifecycle)
make test-e2e
# Cleanup any leftover test clusters
make cleanup-test-e2e
# Build manager binary
make build
# Build Docker image
make docker-build
make install
make deploy
The correct order for creating resources is:
Important: The entire cluster must be available before projects and branches can be created. Monitor cluster status before proceeding with dependent resources.
apiVersion: oltp.molnett.org/v1alpha1
kind: NeonCluster
metadata:
name: my-neon-cluster
spec:
storage:
pageserver:
storageClass: "fast-ssd"
size: "10Gi"
safekeeper:
storageClass: "fast-ssd"
size: "5Gi"
kind: NeonProject
apiVersion: oltp.molnett.org/v1
metadata:
name: molnett-project
spec:
cluster_name: basic-cluster
id: neon-project
name: neon-project
pg_version: "PG17"
kind: NeonBranch
apiVersion: oltp.molnett.org/v1
metadata:
name: neon-main
spec:
name: main
pg_version: "PG17"
default_branch: true
project_id: neon-project
The operator exposes HTTP endpoints on port 8080:
/health - Health check endpoint/metrics - Prometheus metrics (basic)/ - Diagnostics informationContributions welcome! Please read the CONTRIBUTING.md file for details on how to contribute.
Apache License 2.0 - see LICENSE file for details.
Go
95.4%
Makefile
4.2%
(Part of acquisition of Molnett) Kubernetes operator for managing self-hosted Neon Postgres database clusters. This operator enables you to manage all necessary components of Neon's control plane on Kubernetes (in cloud and on-premises).
See the codeA Kubernetes operator for managing self-hosted Neon Postgres database clusters. This operator enables you to manage all necessary compoents of Neon's control plane on Kubernetes (in cloud and on-premises).
This product isn't affiliated with or endorsed by Neon in any way.
This operator is functional for development and testing environments. It implements Neon's core architecture components and provides basic cluster management capabilities. We are currently working on Day 1 and Day 2 operations, which means performance is not yet optimized.
This self-hosted operator currently has several limitations compared to the fully managed Neon service:
This operator implements Neon's separation of compute and storage:
Each component runs as Kubernetes workloads with persistent storage and service discovery.
This operator is tested with:
A single-purpose Kind cluster is recommended for local development.
For rapid iteration during development:
# Start Tilt (rebuilds and redeploys on changes)
tilt up
# View Tilt UI
tilt up --web
# Install CRDs
make install
make test
# Run full E2E test suite (builds image and tests cluster lifecycle)
make test-e2e
# Cleanup any leftover test clusters
make cleanup-test-e2e
# Build manager binary
make build
# Build Docker image
make docker-build
make install
make deploy
The correct order for creating resources is:
Important: The entire cluster must be available before projects and branches can be created. Monitor cluster status before proceeding with dependent resources.
apiVersion: oltp.molnett.org/v1alpha1
kind: NeonCluster
metadata:
name: my-neon-cluster
spec:
storage:
pageserver:
storageClass: "fast-ssd"
size: "10Gi"
safekeeper:
storageClass: "fast-ssd"
size: "5Gi"
kind: NeonProject
apiVersion: oltp.molnett.org/v1
metadata:
name: molnett-project
spec:
cluster_name: basic-cluster
id: neon-project
name: neon-project
pg_version: "PG17"
kind: NeonBranch
apiVersion: oltp.molnett.org/v1
metadata:
name: neon-main
spec:
name: main
pg_version: "PG17"
default_branch: true
project_id: neon-project
The operator exposes HTTP endpoints on port 8080:
/health - Health check endpoint/metrics - Prometheus metrics (basic)/ - Diagnostics informationContributions welcome! Please read the CONTRIBUTING.md file for details on how to contribute.
Apache License 2.0 - see LICENSE file for details.
Go
95.4%
Makefile
4.2%