Building a Kubernetes operator for deploying and managing self-hosted Supabase instances using Kubebuilder framework.
- Language: Go 1.22+
- Framework: Kubebuilder v4.0+
- Testing: Ginkgo/Gomega with envtest
- Container Runtime: Kubernetes 1.25+
- Key Dependencies: controller-runtime v0.22.1, k8s.io/client-go v0.34.0
- Controller Pattern: Idempotent reconciliation loops
- Status Management: Granular conditions inspired by Rook operator
- Component Deployment: Ordered deployment with health checks
- External Dependencies: PostgreSQL and S3 (user-provided only)
- CRD: SupabaseProject (namespace-scoped)
- Managed Services: Kong, Auth/GoTrue, PostgREST, Realtime, Storage API, Meta
- Status Tracking: Per-component phases and conditions
- Secret Management: JWT generation and API key management
- Follow Kubebuilder project structure
- Use TDD with envtest for controller testing
- Implement comprehensive status reporting
- Use structured logging with controller-runtime
- Follow Kubernetes API conventions
- 002-helm-chart-release: Added Go 1.22+ (operator code), YAML (Helm charts/workflows) + GitHub Actions, helm-gh-pages action, Helm 3.x
- Initialized Kubebuilder project with domain strrl.dev
- Created SupabaseProject API scaffold
- Unit tests for reconciliation logic
- Integration tests with envtest
- Contract tests for CRD validation
- E2E tests for deployment scenarios
Implementing the SupabaseProject controller with granular status management and component deployment logic.
- Go 1.22+ (operator code), YAML (Helm charts/workflows) + GitHub Actions, helm-gh-pages action, Helm 3.x (002-helm-chart-release)
- GitHub Pages repository for chart hosting (002-helm-chart-release)