Skip to content

Commit da21c66

Browse files
committed
Add more contents
Signed-off-by: Jian Qiu <jqiu@redhat.com>
1 parent f4fea1e commit da21c66

1 file changed

Lines changed: 77 additions & 46 deletions

File tree

cncf/GTR.md

Lines changed: 77 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# General Technical Review - [Project Name] / [Level]
1+
# General Technical Review - Open Cluster Management / Sandbox
22

33
- **Project:** Open Cluster Management
44
- **Project Version:** v1.0.0
55
- **Website:** https://open-cluster-management.io/
66
- **Date Updated:** 2025-8-7
77
- **Template Version:** v1.0
8-
- **Description:** A lightweight and extensible multiple kubernetes cluster management tool
8+
- **Description:** A lightweight and extensible multi-cluster Kubernetes management tool
99

1010
## Day 0 - Planning Phase
1111

@@ -25,29 +25,29 @@
2525
* Describe the target persona or user(s) for the project?
2626

2727
The target users of the project are those who have multiple Kubernetes clusters and want to manage them easily,
28-
and also those who provide kubernetes cluster management platform
28+
and also those who provide Kubernetes cluster management platforms
2929

3030
* Explain the primary use case for the project. What additional use cases are supported by the project?
3131

32-
1. Admin is able to manage and monitor multiple kubernetes cluster in a centralized control plane
32+
1. Administrators are able to manage and monitor multiple Kubernetes clusters in a centralized control plane
3333
2. Users are able to deploy their workload across multiple clusters.
3434
3. Users are able to define a cluster selection criteria to deploy different workloads.
35-
4. Users are able to easily extend the control plane by adding more management functionality across multiple cluster.
35+
4. Users are able to easily extend the control plane by adding more management functionality across multiple clusters.
3636

3737
* Explain which use cases have been identified as unsupported by the project.
3838

39-
Provisioning/lifecycling the kubernetes cluster is not the scope of this project.
39+
Provisioning/lifecycle management of Kubernetes clusters is not the scope of this project.
4040

4141
* Describe the intended types of organizations who would benefit from adopting this project. (i.e. financial services, any software manufacturer, organizations providing platform engineering services)?
4242

43-
- Entities, e.g. financial institutions, internet companies, with many kubernetes clusters.
43+
- Entities, e.g. financial institutions, internet companies, with many Kubernetes clusters.
4444
- Vendors that provide platform engineering services.
4545

4646
* Please describe any completed end user research and link to any reports.
4747

4848
- AppsCode held a webinar on "Managing Many Clusters using Open Cluster Management" on 15th June 2023.
4949
https://appscode.com/blog/post/monthly-review-june-2023/#managing-many-clusters-using-open-cluster-management
50-
- Alibaba publishes a document on their user experience on kubefed and why move to ocm on Sep 22, 2021.
50+
- Alibaba published a document on their user experience with kubefed and why they moved to OCM on Sep 22, 2021.
5151
https://cloudnativenow.com/features/the-next-kubernetes-frontier-multicluster-management/
5252

5353
### Usability
@@ -70,7 +70,7 @@
7070
ArgoCD by deploying an agent addon to managed clusters, enabling automated GitOps-based application synchronization and management.
7171
- [Kueue](https://github.com/open-cluster-management-io/addon-contrib/tree/main/kueue-addon): OCM integrates Kueue by installing
7272
a scheduler addon on managed clusters, providing unified batch workload scheduling and resource management across clusters.
73-
-[Fluid](https://github.com/open-cluster-management-io/addon-contrib/tree/main/fluid-addon): OCM integrates Fluid by deploying
73+
- [Fluid](https://github.com/open-cluster-management-io/addon-contrib/tree/main/fluid-addon): OCM integrates Fluid by deploying
7474
its runtime via an addon, enabling distributed data caching and acceleration capabilities in managed clusters.
7575
- [Open-Telemetry](https://github.com/open-cluster-management-io/addon-contrib/tree/main/open-telemetry-addon): OCM
7676
integrates Open-Telemetry by deploying its operator through an addon, allowing centralized observability and telemetry data
@@ -83,9 +83,17 @@
8383
- hub-spoke architecture: the hub component is lightweight to let users set instructions to the spoke via CRD mechanism,
8484
and the spoke agent acts based on the hub’s instructions.
8585
- Extensible: another design principle of the projects is to keep the core components as simple and lightweight as possible,
86-
but with extension point to easily adding customized functionality.
86+
but with extension points to easily add customized functionality.
8787

88-
* Outline or link to the project’s architecture requirements? Describe how they differ for Proof of Concept, Development, Test and Production environments, as applicable.
88+
* Outline or link to the project's architecture requirements? Describe how they differ for Proof of Concept, Development, Test and Production environments, as applicable.
89+
90+
The OCM architecture consists of a hub-spoke model documented at https://open-cluster-management.io/docs/concepts/architecture/.
91+
92+
For different environments:
93+
- **Proof of Concept**: Single hub cluster with 1-3 spoke clusters, minimal resource allocation (2 CPU, 4GB RAM per hub component)
94+
- **Development**: Similar to PoC but with additional development addons and potentially multiple hub clusters for testing
95+
- **Test**: Multi-hub setup with various addon configurations to test different scenarios and upgrade paths
96+
- **Production**: High availability hub clusters with proper resource allocation, backup/restore procedures, and monitoring across potentially hundreds of managed clusters
8997

9098
* Define any specific service dependencies the project relies on in the cluster.
9199

@@ -102,12 +110,12 @@
102110

103111
* Describe any compliance requirements addressed by the project.
104112

105-
OCM has a policy add-on component that can integrate with Open policy agent or kyverno to manage the compliance
106-
policy across multiple clusters. Details is documented here https://open-cluster-management.io/docs/getting-started/integration/policy-controllers/
113+
OCM has a policy add-on component that can integrate with Open Policy Agent or Kyverno to manage compliance
114+
policies across multiple clusters. Details are documented here https://open-cluster-management.io/docs/getting-started/integration/policy-controllers/
107115

108116
* Describe the project’s High Availability requirements.
109117

110-
OCM controlplane is based on the kubernetes controlplane. The controller of OCM hub and agent on the spoke cluster
118+
OCM control plane is based on the Kubernetes control plane. The controller of OCM hub and agent on the spoke cluster
111119
can run in multiple replicas with leader election.
112120

113121
In addition, there is also a requirement that OCM hub clusters can be recovered upon disaster, which needs API
@@ -118,7 +126,7 @@
118126

119127
OCM has controllers on the hub cluster, and agents on spoke clusters. Each has its own CPU/memory requirements.
120128
The CPU/memory of the hub and agent can be set in ClusterManager/Klusterlet API or using clusteradm.
121-
OCM requires the spoke cluster is able to reach to the apiserver of the hub cluster directly or via http proxy.
129+
OCM requires the spoke cluster to be able to reach the API server of the hub cluster directly or via HTTP proxy.
122130

123131
* Describe the project’s storage requirements, including its use of ephemeral and/or persistent storage.
124132

@@ -134,22 +142,45 @@
134142
- Addon related: managedclusteraddon, clustermanagementaddon, addontemplate.
135143
- And operator API (clustermanager and klusterlet) to manage components in OCM.
136144

137-
The API design follow the API convention defined https://github.com/open-cluster-management-io/api/blob/main/docs/api-conventions.md
145+
The API design follows the API conventions defined at https://github.com/open-cluster-management-io/api/blob/main/docs/api-conventions.md
146+
147+
* Describe the project defaults
148+
149+
OCM defaults include secure hub-spoke communication via mTLS, least-privilege RBAC, and automatic certificate rotation with 24-hour expiry.
150+
Default resource limits are set conservatively for hub components (500m CPU, 2Gi memory) and can be customized via ClusterManager/Klusterlet APIs.
151+
152+
* Outline any additional configurations from default to make reasonable use of the project
153+
154+
For production use, administrators should:
155+
- Configure high availability with multiple replicas for hub components
156+
- Set up proper resource requests/limits based on cluster scale
157+
- Enable addon frameworks for policy management, observability, and application lifecycle management
158+
- Configure backup/restore procedures for disaster recovery scenarios
138159

139-
* Describe the project defaults
140-
* Outline any additional configurations from default to make reasonable use of the project
141160
* Describe any new or changed API types and calls \- including to cloud providers \- that will result from this project
142-
being enabled and used
143-
* Describe compatibility of any new or changed APIs with API servers, including the Kubernetes API server
161+
being enabled and used
162+
163+
OCM introduces several CRDs in the cluster.open-cluster-management.io API group:
164+
- ManagedCluster, ManagedClusterSet for cluster lifecycle
165+
- ManifestWork for resource deployment to managed clusters
166+
- Placement, PlacementDecision for cluster selection and scheduling
167+
- ManagedClusterAddon, ClusterManagementAddon for addon lifecycle
168+
OCM does not make direct calls to cloud providers - it operates through standard Kubernetes APIs.
169+
170+
* Describe compatibility of any new or changed APIs with API servers, including the Kubernetes API server
171+
172+
All OCM APIs are implemented as standard Kubernetes CRDs, ensuring full compatibility with any conformant Kubernetes API server.
173+
We maintain compatibility with Kubernetes versions from 1.24+ and test against multiple Kubernetes distributions.
174+
144175
* Describe versioning of any new or changed APIs, including how breaking changes are handled
145-
146-
A new or changed API would introduce an api version upgrade which would need api migration taking more than 1 release.
147-
The document https://github.com/open-cluster-management-io/api/blob/main/docs/development.md#api-upgrade-flow describe
148-
the general flow we follow for API upgrade.
176+
177+
A new or changed API would introduce an API version upgrade which would need API migration taking more than 1 release.
178+
The document https://github.com/open-cluster-management-io/api/blob/main/docs/development.md#api-upgrade-flow describes
179+
the general flow we follow for API upgrades.
149180

150181
* Describe the project’s release processes, including major, minor and patch releases.
151182

152-
Release process is defined here https://github.com/open-cluster-management-io/community/blob/main/RELEASE.md
183+
The release process is defined here https://github.com/open-cluster-management-io/community/blob/main/RELEASE.md
153184

154185
### Installation
155186

@@ -178,7 +209,7 @@
178209
helm install
179210
```
180211

181-
* Insatll cluster manager
212+
* Install cluster manager
182213

183214
```
184215
helm install cluster-manager --version <version> ocm/cluster-manager --namespace=open-cluster-management --create-namespace
@@ -267,8 +298,8 @@ Self-assessment: https://github.com/open-cluster-management-io/ocm/blob/main/SEL
267298
* How do you recommend users alter security defaults in order to "loosen" the security of the project? Please link to any documentation the project has written concerning these use cases.
268299

269300
We do not recommend or document methods to "loosen" the security of the project, as our defaults are designed to be secure. However,
270-
OCM is highly configurable; in some cases, a user needs to grant Klusterlet agent permissions to manage their resources. We recommend users
271-
only grant permissions with the least privilege, referencing the doc permission setting for work agent, but for purposes like testing, users
301+
OCM is highly configurable; in some cases, users need to grant Klusterlet agent permissions to manage their resources. We recommend users
302+
only grant permissions with the least privilege, referencing the documentation permission setting for work agent. For purposes like testing, users
272303
can grant sufficient privileges to the Klusterlet agent that could intentionally create a less secure configuration.
273304

274305
These actions require deliberate and explicit configuration by a cluster administrator. Our documentation focuses on how to configure
@@ -288,10 +319,10 @@ Self-assessment: https://github.com/open-cluster-management-io/ocm/blob/main/SEL
288319

289320
* Describe how the project has evaluated which features will be a security risk to users if they are not maintained by the project?
290321

291-
The ManifestWork API feature. It was designed to dispatch/manage Kubernetes resources on the managed cluster, since it can dispatch/manage any resources,
292-
the work-agnet might need wide permission for the managed clusters. To mitigate the risk, we ensured that:
293-
- The agent on the spoke cluster to apply the manifests has the admin permission, instead of the cluster-admin, so that it can apply most Kubernetes resources.
294-
- For some specific resources, like some CustomResourceDefinition, users need to explicitly grant the permission to the work agent referencing the doc permission setting for work agent
322+
The ManifestWork API feature was designed to dispatch/manage Kubernetes resources on the managed cluster. Since it can dispatch/manage any resources,
323+
the work-agent might need wide permissions for the managed clusters. To mitigate the risk, we ensured that:
324+
- The agent on the spoke cluster to apply the manifests has admin permission, instead of cluster-admin, so that it can apply most Kubernetes resources.
325+
- For some specific resources, like some CustomResourceDefinitions, users need to explicitly grant permission to the work agent referencing the documentation permission setting for work agent
295326
- Users can delegate manifest application to a specific identity on the spoke cluster, further sandboxing the operation, see dynamic identity authorization.
296327

297328
* Cloud Native Threat Modeling
@@ -340,7 +371,7 @@ Self-assessment: https://github.com/open-cluster-management-io/ocm/blob/main/SEL
340371
All charts are uploaded to https://artifacthub.io/packages/search?org=open-cluster-management&sort=relevance&page=1, which provides the community with a trusted, versioned, and verifiable source to deploy the OCM components,
341372
ensuring they are using official project artifacts.
342373

343-
## Day 1 \- Installation and Deployment Phase
374+
## Day 1 - Installation and Deployment Phase
344375

345376
### Project Installation and Configuration
346377

@@ -353,8 +384,8 @@ Self-assessment: https://github.com/open-cluster-management-io/ocm/blob/main/SEL
353384

354385
* How can this project be enabled or disabled in a live cluster? Please describe any downtime required of the control plane or nodes.
355386

356-
Open Cluster Management is a foundational component, and it can not be enabled/disabled in a live cluster.
357-
User can only cut off the connection of hub and spoke, follow this doc
387+
Open Cluster Management is a foundational component, and it cannot be enabled/disabled in a live cluster.
388+
Users can only cut off the connection between hub and spoke by following this doc
358389
https://open-cluster-management.io/docs/concepts/cluster-inventory/managedcluster/#cluster-removal. No downtime required.
359390

360391
* Describe how enabling the project changes any default behavior of the cluster or running workloads.
@@ -367,8 +398,8 @@ Self-assessment: https://github.com/open-cluster-management-io/ocm/blob/main/SEL
367398

368399
* How does the project clean up any resources created, including CRDs?
369400

370-
Open Cluster Management cleans up the resources when the managed cluster is deleted,
371-
the process is described in: https://open-cluster-management.io/docs/getting-started/installation/register-a-cluster/#detach-the-cluster-from-hub
401+
Open Cluster Management cleans up resources when the managed cluster is deleted.
402+
The process is described at: https://open-cluster-management.io/docs/getting-started/installation/register-a-cluster/#detach-the-cluster-from-hub
372403

373404
### Rollout, Upgrade and Rollback Planning
374405

@@ -378,28 +409,28 @@ Self-assessment: https://github.com/open-cluster-management-io/ocm/blob/main/SEL
378409

379410
* Describe how the project handles rollback procedures.
380411

381-
OCM handles the rollback the same as upgrades, but need to specify a lower version https://open-cluster-management.io/docs/getting-started/administration/upgrading/ .
412+
OCM handles rollbacks the same as upgrades, but needs to specify a lower version: https://open-cluster-management.io/docs/getting-started/administration/upgrading/
382413

383414
* How can a rollout or rollback fail? Describe any impact to already running workloads.
384415

385-
If a rollout or rollback fails, the spoke cluster may lose connection with the hub, and can not be managed anymore. The already running
386-
workloads will keep running, but will not be managed by the hub and status will not be reported back to the hub.
416+
If a rollout or rollback fails, the spoke cluster may lose connection with the hub and cannot be managed anymore. The already running
417+
workloads will keep running, but will not be managed by the hub and their status will not be reported back to the hub.
387418

388419
* Describe any specific metrics that should inform a rollback.
389420

390-
Clusteradm provides command to check the cluster info after upgrade and rollback. https://open-cluster-management.io/docs/getting-started/administration/upgrading/
391-
The managedcluster status will also reflect whether a cluster is available or not after the upgrade.
421+
Clusteradm provides commands to check the cluster info after upgrade and rollback: https://open-cluster-management.io/docs/getting-started/administration/upgrading/
422+
The ManagedCluster status will also reflect whether a cluster is available or not after the upgrade.
392423

393424
* Explain how upgrades and rollbacks were tested and how the upgrade-\>downgrade-\>upgrade path was tested.
394425

395-
The user should run `clusteradm upgrade` on the test environment before upgrading in the product environment.
426+
Users should run `clusteradm upgrade` on the test environment before upgrading in the production environment.
396427

397428
* Explain how the project informs users of deprecations and removals of features and APIs.
398429

399-
We will log issues in the community for the features/API deprecations and removals plan, add it to the roadmap, and inform users in the community meeting and Slack channel as well.
430+
We will log issues in the community for features/API deprecations and removal plans, add them to the roadmap, and inform users in community meetings and Slack channels as well.
400431

401432
* Explain how the project permits utilization of alpha and beta capabilities as part of a rollout.
402433

403-
The project should follow the API upgrade flow https://github.com/open-cluster-management-io/api/blob/main/docs/development.md#api-upgrade-flow to rollout from alpha to beta.
404-
Feature gates alpha to beta follow a standard lifecycle
434+
The project follows the API upgrade flow https://github.com/open-cluster-management-io/api/blob/main/docs/development.md#api-upgrade-flow to rollout from alpha to beta.
435+
Feature gates from alpha to beta follow a standard lifecycle:
405436
https://open-cluster-management.io/docs/getting-started/administration/featuregates/

0 commit comments

Comments
 (0)