Operate one CloudNativePG cluster without handing out kubectl.
Source-attributed, bounded, and honest when Kubernetes or the operator is uncertain.
pgConsole is a per-cluster operational console for one CloudNativePG
Cluster. It renders operator status and conditions, membership-verified
instance pods, recent events, backup resources, bounded log tails, and a
small set of explicitly enabled day-2 actions.
Important
pgConsole reports what CloudNativePG and Kubernetes claim. It does not independently prove replication health, data integrity, or restoreability.
- No kubectl for routine visibility — application owners get a focused view of one cluster without receiving general Kubernetes credentials.
- Every claim has a source — operator-reported, Kubernetes-observed, and application-derived state remain visibly distinct.
- Failure stays visible — broken watches, forbidden reads, stale snapshots,
truncation, and missing fields become
unknownorstale, never healthy. - Bounded exposure — event windows, retained objects, messages, and on-demand log tails all have explicit limits.
- Guarded operations — backup, reload, restart, and promote are the entire mutation surface, behind proxy-asserted levels, confirmation, CSRF, audit, feature flags, and namespaced RBAC.
| Capability | Status |
|---|---|
| Cluster status, conditions, pods, roles, restarts, and events | ✅ Available |
| Backup and ScheduledBackup catalog | ✅ Available |
| Bounded, poweruser-gated instance log tail | ✅ Available |
| Backup, reload, restart, and promote operations | ✅ Opt-in |
| DBA access-request review panel | ✅ Opt-in |
| pgObjectStoreViewer sidecar evidence correlation | ✅ Opt-in |
| SQL queries, database contents, or Secret access | ⛔ Not provided |
| Authentication, TLS termination, or user management | ⛔ Operator/proxy responsibility |
pgConsole reads only in-cluster ServiceAccount credentials, so the development
path runs it inside a disposable kind cluster. You need Docker, kind, kubectl,
Go 1.26+, and make:
git clone https://github.com/fyannk/pgConsole.git
cd pgconsole
make dev-upThe command creates a CloudNativePG cluster, deploys pgConsole with its optional DBA capabilities, seeds one access request, and forwards it to http://localhost:3000. Add the proxy headers shown by the command with a browser extension. Tear the environment down with:
kind delete cluster --name pgc-devTagged releases publish multi-architecture images to GitHub Container Registry with SBOM and provenance attestations:
docker pull ghcr.io/fyannk/pgconsole:<version>For Kubernetes, adapt the hardened
deploy/kubernetes-example.yaml manifest.
The pgToolBox operator normally owns the PgConsole resource, authentication
proxy, exposure, default-deny NetworkPolicy, and exact namespaced RBAC.
Warning
pgConsole intentionally provides no authentication or TLS. Its forwarded identity and authorization-level headers are trustworthy only behind the operator-managed proxy and network boundary. Never expose port 3000 directly.
The details live in the documentation site:
- Overview
- Installation
- Configuration reference
- Authorization model
- Day-2 operations
- Repository evidence
- Troubleshooting
Bug reports, Kubernetes edge cases, security tests, documentation fixes, and pull requests are welcome. Start with:
make test # fast, hermetic unit suite
make check # complete non-Docker verification
make docs # type-check and build the documentation siteDocker-backed integration, scale, restricted-runtime, multiarch, and pinned
CloudNativePG checks are described in CONTRIBUTING.md.
The Go code and tests are the source of truth; the site explains their behavior.
pgConsole is available under the Apache License 2.0.