|
1 | 1 | # resonance |
2 | | -// TODO(user): Add simple overview of use/purpose |
| 2 | +Resonance is a simple, experimental multi-cluster Kubernetes operator designed for edge-to-core resource synchronization in edge computing environments. It aims to keep custom resources consistent across edge and core (master) clusters, addressing the unique challenges of distributed edge architectures. |
| 3 | + |
| 4 | +## Architecture Overview |
| 5 | + |
| 6 | +```mermaid |
| 7 | +graph TD |
| 8 | + subgraph "Edge Clusters" |
| 9 | + Edge1["Edge Cluster 1"] |
| 10 | + Edge2["Edge Cluster 2"] |
| 11 | + EdgeN["Edge Cluster N"] |
| 12 | + end |
| 13 | + subgraph "Core Cluster" |
| 14 | + Core["Core (Master) Cluster"] |
| 15 | + end |
| 16 | + Edge1 -- "CRD Sync" --> Core |
| 17 | + Edge2 -- "CRD Sync" --> Core |
| 18 | + EdgeN -- "CRD Sync" --> Core |
| 19 | + Core -- "future: reverse sync" --> Edge1 |
| 20 | + Core -- "future: reverse sync" --> Edge2 |
| 21 | + Core -- "future: reverse sync" --> EdgeN |
| 22 | +``` |
| 23 | +This diagram shows the basic flow: edge clusters synchronize selected resources to the core (master) cluster. Future phases will add reverse sync and more advanced features. |
3 | 24 |
|
4 | 25 | ## Description |
5 | | -// TODO(user): An in-depth paragraph about your project and overview of use |
| 26 | +Resonance is a proof-of-concept (POC) project focused on synchronizing Kubernetes resources from edge clusters to a central core (master) cluster. In its initial phase, Resonance provides a straightforward controller that uses the Kubernetes API to sync a set of pre-defined (sample) CRDs from edge clusters to the core. This enables a basic, reliable mechanism for propagating resource state from distributed edge locations to a central cluster. |
| 27 | + |
| 28 | +Future phases will make Resonance more generic and powerful: |
| 29 | +- Add support for syncing arbitrary CRDs and resources, not just pre-defined samples. |
| 30 | +- Introduce gRPC-based communication for more efficient and flexible edge-to-core synchronization. |
| 31 | +- Implement reverse synchronization, allowing updates from the core to be propagated back to edge clusters, ensuring bidirectional consistency. |
| 32 | +- Address advanced challenges such as conflict resolution, so that edge clusters can safely merge updates from both the master and their own local changes. |
| 33 | + |
| 34 | +The major architectural challenge is enabling edge clusters to receive and reconcile updates from both the master and their own local state, while handling conflicts in a robust way. Resonance is an experimental platform to explore and solve these problems in a simplified, modular manner. |
| 35 | + |
| 36 | +This project is intended for experimentation and learning in the edge computing space, and is not yet production-ready. Contributions and feedback are welcome! |
6 | 37 |
|
7 | 38 | ## Getting Started |
8 | 39 |
|
@@ -111,15 +142,22 @@ previously added to 'dist/chart/values.yaml' or 'dist/chart/manager/manager.yaml |
111 | 142 | is manually re-applied afterwards. |
112 | 143 |
|
113 | 144 | ## Contributing |
114 | | -// TODO(user): Add detailed information on how you would like others to contribute to this project |
| 145 | +We welcome contributions! To contribute: |
| 146 | +- Fork the repository and create a feature branch. |
| 147 | +- Make your changes, following Go and Kubernetes best practices. |
| 148 | +- Run `make fmt` and `make vet` to ensure code quality. |
| 149 | +- Add or update tests as needed (`make test` for unit tests, `make test-e2e` for end-to-end tests). |
| 150 | +- Submit a pull request with a clear description of your changes. |
| 151 | +- For major changes, please open an issue first to discuss your proposal. |
| 152 | + |
115 | 153 |
|
116 | | -**NOTE:** Run `make help` for more information on all potential `make` targets |
| 154 | +**NOTE:** Run `make help` for more information on all potential `make` targets. |
117 | 155 |
|
118 | 156 | More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) |
119 | 157 |
|
120 | 158 | ## License |
121 | 159 |
|
122 | | -Copyright 2025. |
| 160 | +Copyright 2025 Jacob Philip. |
123 | 161 |
|
124 | 162 | Licensed under the Apache License, Version 2.0 (the "License"); |
125 | 163 | you may not use this file except in compliance with the License. |
|
0 commit comments