Skip to content

Commit 53aa069

Browse files
authored
Merge pull request #5 from jacobtrvl/architecture
Architecture
2 parents 483f205 + 1445d85 commit 53aa069

File tree

1 file changed

+43
-5
lines changed

1 file changed

+43
-5
lines changed

README.md

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,39 @@
11
# 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.
324

425
## 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!
637

738
## Getting Started
839

@@ -111,15 +142,22 @@ previously added to 'dist/chart/values.yaml' or 'dist/chart/manager/manager.yaml
111142
is manually re-applied afterwards.
112143

113144
## 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+
115153

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.
117155

118156
More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html)
119157

120158
## License
121159

122-
Copyright 2025.
160+
Copyright 2025 Jacob Philip.
123161

124162
Licensed under the Apache License, Version 2.0 (the "License");
125163
you may not use this file except in compliance with the License.

0 commit comments

Comments
 (0)