{"id":50741155,"url":"https://github.com/abd-ulbasit/goplatform","last_synced_at":"2026-06-10T17:01:51.486Z","repository":{"id":363768505,"uuid":"1153609193","full_name":"abd-ulbasit/goplatform","owner":"abd-ulbasit","description":"Learning-focused Kubernetes operator (kubebuilder v4) that provisions in-cluster databases, caches, and queues via a custom Application CRD — with tier-based observability and drift detection.","archived":false,"fork":false,"pushed_at":"2026-06-10T08:17:42.000Z","size":656,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T10:09:20.414Z","etag":null,"topics":["cloud-native","cnpg","controller-runtime","crd","devops","go","golang","kubebuilder","kubernetes","kubernetes-operator","operator","platform-engineering","postgresql","prometheus","rabbitmq","redis","sre"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abd-ulbasit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-02-09T13:53:28.000Z","updated_at":"2026-06-10T08:17:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/abd-ulbasit/goplatform","commit_stats":null,"previous_names":["abd-ulbasit/goplatform"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/abd-ulbasit/goplatform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abd-ulbasit%2Fgoplatform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abd-ulbasit%2Fgoplatform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abd-ulbasit%2Fgoplatform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abd-ulbasit%2Fgoplatform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abd-ulbasit","download_url":"https://codeload.github.com/abd-ulbasit/goplatform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abd-ulbasit%2Fgoplatform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34161284,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-native","cnpg","controller-runtime","crd","devops","go","golang","kubebuilder","kubernetes","kubernetes-operator","operator","platform-engineering","postgresql","prometheus","rabbitmq","redis","sre"],"created_at":"2026-06-10T17:01:49.150Z","updated_at":"2026-06-10T17:01:51.481Z","avatar_url":"https://github.com/abd-ulbasit.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GoPlatform\n\n**Kubernetes Operator for Self-Service Infrastructure Provisioning**\n\nA learning-focused Kubernetes operator built with kubebuilder v4 that transforms declarative Application CRDs into fully provisioned, in-cluster infrastructure. Developers declare what they need; the operator provisions databases, caches, queues, and monitoring automatically.\n\n---\n\n## The Problem\n\nPlatform teams spend endless hours on:\n- **Ticket-based provisioning** - \"Please create my database\" (3-day SLA)\n- **Snowflake infrastructure** - Every service configured differently\n- **Knowledge silos** - Only platform team knows how to deploy\n\n## The Solution\n\nDevelopers declare what they need. The platform provisions everything automatically:\n\n```yaml\napiVersion: platform.goplatform.io/v1alpha1\nkind: Application\nmetadata:\n  name: payments-api\nspec:\n  team: payments\n  tier: critical\n\n  workload:\n    image: ghcr.io/org/payments-api:v1.0.0\n    replicas: 3\n\n  database:\n    type: postgres\n    size: small\n    highAvailability: true\n\n  cache:\n    type: redis\n    size: small\n\n  queue:\n    type: rabbitmq\n    deadLetterQueue:\n      enabled: true\n\n# GoPlatform automatically provisions:\n# ✅ Kubernetes Deployment, Service, HPA, PDB\n# ✅ CloudNativePG PostgreSQL cluster\n# ✅ Redis via Spotahome operator\n# ✅ RabbitMQ via Cluster Operator\n# ✅ Credential Secrets with connection strings\n# ✅ Prometheus ServiceMonitor + AlertRules\n```\n\n---\n\n## Architecture\n\n```\n┌─────────────────────────────────────────────────────────────────────────────┐\n│                              Developer Interface                            │\n│                              kubectl apply                                  │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                       │\n                                       ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│                         Kubernetes API Server                               │\n│                         Application CRD (v1alpha1)                          │\n└─────────────────────────────────────────────────────────────────────────────┘\n                                       │ watch\n                                       ▼\n┌─────────────────────────────────────────────────────────────────────────────┐\n│                        GoPlatform Controller                                │\n│  ┌─────────────────┐  ┌──────────────────┐  ┌────────────────────────────┐  │\n│  │ App Reconciler  │  │ Infra Provider   │  │ Admission Webhooks         │  │\n│  │ - K8s resources │  │ - CNPG           │  │ - Validating               │  │\n│  │ - Status mgmt   │  │ - Redis          │  │ - Mutating                 │  │\n│  │ - Conditions    │  │ - RabbitMQ       │  │ - Conversion               │  │\n│  └─────────────────┘  └──────────────────┘  └────────────────────────────┘  │\n└─────────────────────────────────────────────────────────────────────────────┘\n          │                      │                         │\n          ▼                      ▼                         ▼\n┌─────────────────┐   ┌─────────────────────┐   ┌─────────────────────────┐\n│ K8s Resources   │   │ Operator CRDs       │   │ Monitoring              │\n│ - Deployment    │   │ - CNPG Cluster      │   │ - ServiceMonitor        │\n│ - Service       │   │ - RedisFailover     │   │ - PrometheusRule        │\n│ - HPA, PDB      │   │ - RabbitmqCluster   │   │ - Controller metrics    │\n│ - ConfigMap     │   │ - PVCs              │   │                         │\n│ - Secret        │   │ - Secrets           │   │                         │\n└─────────────────┘   └─────────────────────┘   └─────────────────────────┘\n```\n\n---\n\n## Quick Start\n\n### Prerequisites\n- Kubernetes 1.28+ cluster (Kind, Colima, or managed)\n- kubectl configured\n\n### Installation\n```bash\n# Install CRDs\nmake install\n\n# Run controller locally\nmake run\n```\n\n### Deploy an Application\n```bash\nkubectl apply -f config/samples/platform_v1alpha1_application.yaml\n\n# Watch provisioning status\nkubectl get applications -w\n\n# Check detailed status\nkubectl describe application demo-app\n```\n\n---\n\n## Development Phases\n\n| Phase | Description | Milestones | Status |\n|-------|-------------|------------|--------|\n| **Phase 1** | Solid Foundation (CRDs, Controller, Status, Finalizers, Provider) | M1-M5 | ✅ Complete |\n| **Phase 2** | Real-World Operator (Integration, Webhooks, Observability, Drift) | M6-M9 | 🔄 In Progress |\n| **Phase 3** | Advanced Patterns (Multi-version CRD, Kyverno, E2E/CI) | M10-M12 | 📋 Planned |\n\nSee [PROGRESS.md](PROGRESS.md) for detailed milestone tracking with learning objectives and implementation guides.\n\n---\n\n## Tech Stack\n\n- **Language:** Go 1.22+\n- **Operator Framework:** controller-runtime, kubebuilder v4\n- **Infrastructure:** CloudNativePG, Spotahome Redis Operator, RabbitMQ Cluster Operator\n- **Monitoring:** Prometheus, Grafana (via Prometheus Operator CRDs)\n- **Policy:** Kyverno\n- **Testing:** Ginkgo/Gomega, envtest, Kind\n\n---\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.\n\n---\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabd-ulbasit%2Fgoplatform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabd-ulbasit%2Fgoplatform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabd-ulbasit%2Fgoplatform/lists"}