@@ -58,7 +58,7 @@ If none of those approvers are still appropriate, then changes to that list
58
58
should be approved by the remaining approvers and/or the owning SIG (or
59
59
SIG Architecture for cross-cutting KEPs).
60
60
-->
61
- # KEP-4322: Inventory Cluster API
61
+ # KEP-4322: ClusterProfile API
62
62
63
63
<!--
64
64
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
195
195
multiple clusters and deploying applications across them, projects like
196
196
Open Cluster Management (OCM), Karmada, Clusternet, and Fleet Manager
197
197
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
199
199
for cluster inventory, defining a standard for status reporting while
200
200
allowing for multiple implementations.
201
201
@@ -220,7 +220,7 @@ solutions, we believe that it is critical to devise a common API where
220
220
applications, toolsets, and human operators can easily discover clusters
221
221
under management.
222
222
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
224
224
concern themselves with the implementation details of various projects.
225
225
Instead, they can leverage a foundational API for multi-cluster
226
226
management. Examples of consumers includes:
@@ -229,13 +229,13 @@ management. Examples of consumers includes:
229
229
distributing application/workload to multiple clusters. The scheduling
230
230
can be based on certain cluster properties, e.g. cloud the cluster
231
231
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
233
233
standard to reason about clusters and help to foster the growth of
234
234
this area.
235
235
* GitOps tools (ArgoCD, flux etc) are having the requirement to deploy
236
236
workload to multiple clusters. They either need to build the cluster
237
237
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
239
239
a thin compatible layer for different projects.
240
240
* Operation tools or customized external consumers: this API gives a
241
241
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
250
250
know that this has succeeded?
251
251
-->
252
252
253
- * Establish a standardized inventory cluster API to represent clusters.
253
+ * Establish a standardized ClusterProfile API to represent clusters.
254
254
* Lay the groundwork for multi-cluster tooling by providing a
255
255
foundational component.
256
256
* Accommodate multiple implementations to encourage flexibility and
@@ -300,21 +300,21 @@ the API proposed by this KEP aims to
300
300
301
301
### Terminology
302
302
303
- - ** Cluster Manager** : An entity that creates the inventory cluster API
303
+ - ** Cluster Manager** : An entity that creates the ClusterProfile API
304
304
object per member cluster, and keeps their status up-to-date. Each
305
305
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
307
307
of cluster manager are projects like OCM, Karmada, Clusternet or Azure
308
308
fleet manager.
309
309
310
- - ** Inventory Cluster Consumer** : the person running the cluster managers
310
+ - ** ClusterProfile API Consumer** : the person running the cluster managers
311
311
or the person developing extensions for cluster managers for the purpose of
312
312
workload distribution, operation management etc.
313
313
314
314
- ** Member Cluster** : A kubernetes cluster that is managed by the cluster
315
315
manager. A cluster manager SHOULD have sufficient permission to access
316
316
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.
318
318
319
319
### User Stories (Optional)
320
320
@@ -521,7 +521,7 @@ Predefined condition types:
521
521
522
522
``` yaml
523
523
apiVersion : multicluster.x-k8s.io/v1alpha1
524
- kind : InventoryCluster
524
+ kind : ClusterProfile
525
525
metadata :
526
526
name : generated-cluster-name
527
527
labels :
@@ -640,7 +640,7 @@ implementing this enhancement to ensure the enhancements have also solid foundat
640
640
- The API should expose access information including but not limited to :
641
641
- APIServer endpoint url of the member cluster.
642
642
- 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.
644
644
645
645
# ### GA
646
646
@@ -1002,6 +1002,21 @@ What other approaches did you consider, and why did you rule them out? These do
1002
1002
not need to be as detailed as the proposal, but should include enough
1003
1003
information to express the idea and why it was not acceptable.
1004
1004
-->
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.
1005
1020
1006
1021
# # Infrastructure Needed (Optional)
1007
1022
0 commit comments