Skip to content

✨ feat: Add K8 operator for GEOStudio #27

Open
bglar wants to merge 20 commits intomainfrom
feat-k8-operator
Open

✨ feat: Add K8 operator for GEOStudio #27
bglar wants to merge 20 commits intomainfrom
feat-k8-operator

Conversation

@bglar
Copy link
Contributor

@bglar bglar commented Feb 17, 2026

Summary

This PR introduces a Kubernetes Operator for GeoStudio, enabling automated deployment and lifecycle management of the GeoStudio platform on Kubernetes and OpenShift clusters. The operator is built using the Operator Framework with Helm and provides a unified CLI for managing both operator infrastructure and application instances.

Key additions:

  • Kubernetes Operator (operators/) - Helm-based operator with Custom Resource Definitions (CRDs), RBAC configurations, and OLM bundle v0.0.1 for OpenShift/K8s distribution
  • Infrastructure provisioning jobs - Helm hook-based jobs with weighted execution order to install and configure:
    • PostgreSQL database
    • Keycloak authentication
    • MinIO object storage
    • IBM Object S3 CSI driver
    • GeoServer with workspaces and WMS configuration
  • CI/CD workflow (.github/workflows/operator-build-publish.yml) - Automated operator image building and publishing to Quay.io
  • Comprehensive documentation - Architecture diagrams, installation flows, quickstart guides, and deployment instructions

Related Issue (optional)

How to test this PR?

Prerequisites:

  • Kubernetes or OpenShift cluster (or Lima VM for local testing)
  • kubectl configured with cluster access
  • Docker for building operator images

Testing steps:

  1. Build the operator image (local development)
./geostudio build --local
  1. Install the operator
./geostudio operator install --local
  1. Deploy a GeoStudio instance
./geostudio app deploy
  1. Verify all components are running
kubectl get pods -n geostudio
kubectl get geostudios.geostudio.ibm.com -n geostudio
  1. Test cleanup
./geostudio app delete
./geostudio operator uninstall

Expected results:

  • Operator pods running in the cluster
  • All infrastructure components (PostgreSQL, Keycloak, MinIO, GeoServer) deployed in correct order via weighted jobs
  • GeoStudio application pods (Gateway, UI, MLflow, Pipelines) running successfully
  • Services and ingresses accessible

Screenshots / Logs (optional)

The PR includes a demo GIF showing the deployment process: operators/assets/operator-install.gif

Checklist

  • This PR targets the main branch
  • I have added or updated relevant docs. operators/README.md
  • I have not included any secrets or credentials.
  • Linting and formatting checks pass.

@bglar bglar force-pushed the feat-k8-operator branch 7 times, most recently from 2ebfcba to 4e58e18 Compare February 24, 2026 11:39
@bglar bglar marked this pull request as ready for review February 24, 2026 11:43
@bglar bglar force-pushed the feat-k8-operator branch 8 times, most recently from bc6c183 to 48fbfb4 Compare March 4, 2026 21:33
bglar added 10 commits March 5, 2026 13:11
Signed-off-by: Brian Glar <bogolla4@gmail.com>
- Add QUICKSTART.md with minimal deployment steps
- Add README.md as landing page referencing both guides
- QUICKSTART: Step-by-step commands for fast deployment
- README: High-level overview with links to detailed docs

Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
…io/files

Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
bglar added 9 commits March 5, 2026 13:11
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
The {{branch}} placeholder in docker metadata-action was not resolving
correctly, causing invalid tags like ':-c9522d6'. Changed to use static
'sha-' prefix which will generate valid tags like 'sha-c9522d6'.

Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Signed-off-by: Brian Glar <bogolla4@gmail.com>
@bglar bglar force-pushed the feat-k8-operator branch from 5cffc11 to 7030b4f Compare March 5, 2026 10:12
Signed-off-by: Brian Glar <bogolla4@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant