|
1 | | -# AddOn Framework |
| 1 | +# Open Cluster Management Addon Framework |
2 | 2 |
|
3 | | -This is to define an AddOn framework library. |
| 3 | +A Go library that provides a framework for developing addons for Open Cluster Management (OCM). This framework simplifies the process of creating, installing, and managing addons across multiple Kubernetes clusters in an OCM environment. |
4 | 4 |
|
5 | | -## Community, discussion, contribution, and support |
| 5 | +## Overview |
6 | 6 |
|
7 | | -Check the [CONTRIBUTING Doc](CONTRIBUTING.md) for how to contribute to the repo. |
| 7 | +Open Cluster Management (OCM) is a Kubernetes-native solution for managing multiple clusters. The Addon Framework enables developers to build addons that can be deployed and managed across these clusters with minimal complexity. The framework handles addon lifecycle management, configuration, registration, and deployment patterns. |
8 | 8 |
|
9 | | -<!-- |
| 9 | +## Features |
10 | 10 |
|
11 | | -You can reach the maintainers of this project at: |
| 11 | +- **Multiple Deployment Methods**: Support for Go templates, Helm charts, and template-based deployments |
| 12 | +- **Lifecycle Management**: Automated installation, upgrade, and removal of addons across managed clusters |
| 13 | +- **Configuration Management**: Flexible configuration system supporting various configuration types |
| 14 | +- **Hosting Modes**: Support for both standard and hosted deployment modes |
| 15 | +- **Registration Framework**: Automatic addon registration with cluster management |
| 16 | +- **RBAC Integration**: Built-in support for role-based access control |
| 17 | +- **Multi-cluster Support**: Deploy addons across multiple managed clusters from a central hub |
12 | 18 |
|
13 | | -- [#xxx on Slack](https://slack.com/signin?redir=%2Fmessages%2Fxxx) |
| 19 | +## Core Concepts |
14 | 20 |
|
15 | | ---> |
| 21 | +The framework is built around several key Kubernetes custom resources: |
16 | 22 |
|
17 | | ------- |
18 | | -## Purpose |
| 23 | +- **[ClusterManagementAddOn](https://github.com/open-cluster-management-io/api/blob/main/addon/v1alpha1/types_clustermanagementaddon.go)**: Hub cluster resource that defines addon metadata and installation strategy |
| 24 | +- **[ManagedClusterAddOn](https://github.com/open-cluster-management-io/api/blob/main/addon/v1alpha1/types_managedclusteraddon.go)**: Managed cluster resource that represents addon installation state |
| 25 | +- **AddOnTemplate**: Template-based addon deployment without dedicated controllers |
19 | 26 |
|
20 | | -This library is used to implement AddOn management like installation, registration etc. |
21 | | -So developers could be able to develop their own addon functions more easily. |
| 27 | +## Getting Started |
22 | 28 |
|
23 | | -## Concepts |
| 29 | +### Prerequisites |
24 | 30 |
|
25 | | -* [ManagedClusterAddon](https://github.com/open-cluster-management-io/api/blob/main/addon/v1alpha1/types_managedclusteraddon.go) |
26 | | -* [ClusterManagementAddOn](https://github.com/open-cluster-management-io/api/blob/main/addon/v1alpha1/types_clustermanagementaddon.go) |
| 31 | +- One or more Kubernetes clusters |
| 32 | +- [Open Cluster Management](https://github.com/open-cluster-management-io/registration-operator) installed and configured |
| 33 | +- At least one managed cluster imported and accepted |
27 | 34 |
|
28 | | -## Design Doc |
| 35 | +### Installation |
29 | 36 |
|
30 | | -* [AddOn Framework](https://github.com/open-cluster-management-io/enhancements/tree/main/enhancements/sig-architecture/8-addon-framework) |
| 37 | +Add the framework to your Go module: |
31 | 38 |
|
32 | | -## AddOn Consumers |
33 | | -* [cluster-proxy](https://github.com/open-cluster-management-io/cluster-proxy) |
| 39 | +```bash |
| 40 | +go get open-cluster-management.io/addon-framework |
| 41 | +``` |
34 | 42 |
|
35 | | -* [managed-serviceaccount](https://github.com/open-cluster-management-io/managed-serviceaccount) |
| 43 | +### Basic Usage |
36 | 44 |
|
37 | | -## AddOn Contributions |
| 45 | +The framework supports multiple addon implementation patterns: |
38 | 46 |
|
39 | | -A [collection of OCM addons](https://github.com/open-cluster-management-io/addon-contrib) |
40 | | -for staging and testing PoC purposes: |
| 47 | +1. **Go Template Based**: Use Go templates to define addon resources |
| 48 | +2. **Helm Chart Based**: Deploy addons using Helm charts |
| 49 | +3. **Template Based**: Use AddOnTemplate for simplified deployment |
| 50 | +4. **Hosted Mode**: Run addon agents on hosting clusters |
41 | 51 |
|
42 | | -AI integration, IoT layer, cluster proxy, telemetry, resource usage collection and more. |
| 52 | +For detailed examples and tutorials, see the [examples directory](examples/README.md). |
43 | 53 |
|
44 | | -## AddOn Examples |
| 54 | +For comprehensive documentation on OCM addons, refer to: |
| 55 | +- [OCM Add-on Concepts](https://open-cluster-management.io/docs/concepts/add-on-extensibility/addon/) - Core concepts and architecture |
| 56 | +- [OCM Add-on Developer Guide](https://open-cluster-management.io/docs/developer-guides/addon/) - Complete development guide |
45 | 57 |
|
46 | | -We have examples to implement AddOn using Helm Chart or Go Template. You can find more details in [examples](examples/README.md). |
| 58 | +### Framework Documentation |
| 59 | +- [Design Documentation](https://github.com/open-cluster-management-io/enhancements/tree/main/enhancements/sig-architecture/8-addon-framework) |
| 60 | +- [Helm Agent Addon Guide](docs/helmAgentAddon.md) |
| 61 | +- [Template Agent Addon Guide](docs/templateAgentAddon.md) |
| 62 | +- [Pre-delete Hook Guide](docs/preDeleteHook.md) |
| 63 | + |
| 64 | +## Examples |
| 65 | + |
| 66 | +The repository includes several example addons: |
| 67 | + |
| 68 | +- **HelloWorld**: Basic addon using Go templates |
| 69 | +- **HelloWorld Helm**: Addon implemented with Helm charts |
| 70 | +- **HelloWorld Hosted**: Addon with hosted deployment mode |
| 71 | +- **Kubernetes Dashboard**: Real-world addon example |
| 72 | + |
| 73 | +See [examples/README.md](examples/README.md) for detailed instructions. |
| 74 | + |
| 75 | +## Community Addons |
| 76 | + |
| 77 | +### Active Projects |
| 78 | + |
| 79 | +- [cluster-proxy](https://github.com/open-cluster-management-io/cluster-proxy): Provides secure proxy access to managed clusters |
| 80 | +- [managed-serviceaccount](https://github.com/open-cluster-management-io/managed-serviceaccount): Manages service accounts across clusters |
| 81 | + |
| 82 | +### Contributed Addons |
| 83 | + |
| 84 | +A [collection of community addons](https://github.com/open-cluster-management-io/addon-contrib) including: |
| 85 | +AI integration, IoT layer, cluster proxy, telemetry, resource usage collection, and more. |
| 86 | + |
| 87 | +## Contributing |
| 88 | + |
| 89 | +We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on how to contribute to this project. |
| 90 | + |
| 91 | +## Support |
| 92 | + |
| 93 | +For questions and support: |
| 94 | +- Open an issue in this repository |
| 95 | +- Join the Open Cluster Management community discussions |
0 commit comments