Skip to content

Commit 178e7cb

Browse files
authored
Merge pull request #4533 from mikeshng/kep-4322-alpha1-update
KEP-4322: rename API to "Cluster Profile" and add alternative section
2 parents 6394dde + 1e0ce75 commit 178e7cb

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

keps/sig-multicluster/4322-cluster-inventory/README.md

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ If none of those approvers are still appropriate, then changes to that list
5858
should be approved by the remaining approvers and/or the owning SIG (or
5959
SIG Architecture for cross-cutting KEPs).
6060
-->
61-
# KEP-4322: Inventory Cluster API
61+
# KEP-4322: ClusterProfile API
6262

6363
<!--
6464
This is the title of your KEP. Keep it short, simple, and descriptive. A good
@@ -195,7 +195,7 @@ cluster inventory. However, with the growing number of users managing
195195
multiple clusters and deploying applications across them, projects like
196196
Open Cluster Management (OCM), Karmada, Clusternet, and Fleet Manager
197197
have emerged. This document introduces a proposal for a new universal
198-
inventory cluster API. The objective is to establish a shared interface
198+
ClusterProfile API. The objective is to establish a shared interface
199199
for cluster inventory, defining a standard for status reporting while
200200
allowing for multiple implementations.
201201

@@ -220,7 +220,7 @@ solutions, we believe that it is critical to devise a common API where
220220
applications, toolsets, and human operators can easily discover clusters
221221
under management.
222222

223-
By adopting this new inventory cluster API, consumers no longer need to
223+
By adopting this new ClusterProfile API, consumers no longer need to
224224
concern themselves with the implementation details of various projects.
225225
Instead, they can leverage a foundational API for multi-cluster
226226
management. Examples of consumers includes:
@@ -229,13 +229,13 @@ management. Examples of consumers includes:
229229
distributing application/workload to multiple clusters. The scheduling
230230
can be based on certain cluster properties, e.g. cloud the cluster
231231
resides in, resources a cluster provides, or latency to some external
232-
endpoints. A common inventory cluster API will give schedulers a
232+
endpoints. A common ClusterProfile API will give schedulers a
233233
standard to reason about clusters and help to foster the growth of
234234
this area.
235235
* GitOps tools (ArgoCD, flux etc) are having the requirement to deploy
236236
workload to multiple clusters. They either need to build the cluster
237237
concept by themselves or understand cluster API from each different
238-
cluster management project. A common inventory cluster API can provide
238+
cluster management project. A common ClusterProfile API can provide
239239
a thin compatible layer for different projects.
240240
* Operation tools or customized external consumers: this API gives a
241241
common way for different clouds and vendors to define clusters,
@@ -250,7 +250,7 @@ List the specific goals of the KEP. What is it trying to achieve? How will we
250250
know that this has succeeded?
251251
-->
252252

253-
* Establish a standardized inventory cluster API to represent clusters.
253+
* Establish a standardized ClusterProfile API to represent clusters.
254254
* Lay the groundwork for multi-cluster tooling by providing a
255255
foundational component.
256256
* Accommodate multiple implementations to encourage flexibility and
@@ -300,21 +300,21 @@ the API proposed by this KEP aims to
300300

301301
### Terminology
302302

303-
- **Cluster Manager**: An entity that creates the inventory cluster API
303+
- **Cluster Manager**: An entity that creates the ClusterProfile API
304304
object per member cluster, and keeps their status up-to-date. Each
305305
cluster manager SHOULD be identified with a unique name. Each cluster
306-
inventory resource SHOULD be managed by only one cluster manager. Examples
306+
profile resource SHOULD be managed by only one cluster manager. Examples
307307
of cluster manager are projects like OCM, Karmada, Clusternet or Azure
308308
fleet manager.
309309

310-
- **Inventory Cluster Consumer**: the person running the cluster managers
310+
- **ClusterProfile API Consumer**: the person running the cluster managers
311311
or the person developing extensions for cluster managers for the purpose of
312312
workload distribution, operation management etc.
313313

314314
- **Member Cluster**: A kubernetes cluster that is managed by the cluster
315315
manager. A cluster manager SHOULD have sufficient permission to access
316316
the member cluster to fetch the information so it can update the status
317-
of the inventory cluster API resource.
317+
of the ClusterProfile API resource.
318318

319319
### User Stories (Optional)
320320

@@ -521,7 +521,7 @@ Predefined condition types:
521521

522522
```yaml
523523
apiVersion: multicluster.x-k8s.io/v1alpha1
524-
kind: InventoryCluster
524+
kind: ClusterProfile
525525
metadata:
526526
name: generated-cluster-name
527527
labels:
@@ -640,7 +640,7 @@ implementing this enhancement to ensure the enhancements have also solid foundat
640640
- The API should expose access information including but not limited to:
641641
- APIServer endpoint url of the member cluster.
642642
- Credential with limited access to the member cluster.
643-
- At least two providers and one consumer using inventory cluster API.
643+
- At least two providers and one consumer using ClusterProfile API.
644644

645645
#### GA
646646

@@ -1002,6 +1002,21 @@ What other approaches did you consider, and why did you rule them out? These do
10021002
not need to be as detailed as the proposal, but should include enough
10031003
information to express the idea and why it was not acceptable.
10041004
-->
1005+
We also considered the possibility of extending the existing Cluster API's
1006+
[Cluster](https://github.com/kubernetes-sigs/cluster-api/blob/v1.6.2/api/v1beta1/cluster_types.go#L39)
1007+
resource to accommodate our needs for describing clusters within a multi-cluster
1008+
environment. However, this approach was ruled out due to the Cluster API's primary
1009+
focus on cluster lifecycle management. Its tight coupling with cluster provisioning
1010+
processes made it less suitable for scenarios where clusters are either provisioned
1011+
through different methods or already exist. Furthermore, another distinction is the
1012+
nature of the information each API conveys: the Cluster API's Cluster resource
1013+
outlines the desired state of the cluster. In contrast, the new API is intended to
1014+
reflect the actual state of the cluster, more similar to the Cluster.status in the
1015+
Cluster API, but with a broader scope and intended for use in a multi-cluster context.
1016+
This distinction also extends to the ownership of the resources; the Cluster API's
1017+
Cluster is primarily owned by platform administrators focused on provisioning clusters,
1018+
whereas the new API is designed to be owned by the cluster manager that created the
1019+
cluster it represents.
10051020

10061021
## Infrastructure Needed (Optional)
10071022

keps/sig-multicluster/4322-cluster-inventory/kep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
title: Inventory Cluster API
1+
title: Cluster Profile API
22
kep-number: 4322
33
authors:
44
- "@qiujian16"

0 commit comments

Comments
 (0)