From 27c84a5064da1689db0a0d59ed801f9845d87f26 Mon Sep 17 00:00:00 2001 From: Tamal Saha Date: Thu, 26 Dec 2024 20:27:03 -0800 Subject: [PATCH] Update to ocm v0.15.0 Signed-off-by: Tamal Saha --- catalog/imagelist.yaml | 18 +- charts/cluster-auth-manager/Chart.yaml | 4 +- charts/cluster-auth-manager/README.md | 10 +- ...management.io_clustermanagementaddons.yaml | 488 ++++++++-------- ...nagement.io_managedclustersetbindings.yaml | 98 ++-- ...open-cluster-management.io_placements.yaml | 506 ++++++++--------- ...management.io_manifestworkreplicasets.yaml | 532 +++++++++--------- charts/cluster-auth/Chart.yaml | 4 +- charts/cluster-auth/README.md | 10 +- charts/cluster-gateway-manager/Chart.yaml | 4 +- charts/cluster-gateway-manager/README.md | 10 +- ...management.io_clustermanagementaddons.yaml | 488 ++++++++-------- ...nagement.io_managedclustersetbindings.yaml | 98 ++-- ...open-cluster-management.io_placements.yaml | 506 ++++++++--------- charts/cluster-gateway/Chart.yaml | 4 +- charts/cluster-gateway/README.md | 10 +- charts/cluster-manager-hub/Chart.yaml | 4 +- charts/cluster-manager-hub/README.md | 10 +- ...cluster-management.io_clustermanagers.yaml | 352 ++++++------ .../clustermanager_cluster_role.yaml | 6 + charts/cluster-manager-spoke/Chart.yaml | 4 +- charts/cluster-manager-spoke/README.md | 12 +- ...pen-cluster-management.io_klusterlets.yaml | 474 +++++++++------- .../templates/cluster_role.yaml | 1 - charts/cluster-manager-spoke/values.yaml | 2 +- charts/cluster-profile-manager/Chart.yaml | 4 +- charts/cluster-profile-manager/README.md | 10 +- ...nagement.io_managedclustersetbindings.yaml | 98 ++-- ...open-cluster-management.io_placements.yaml | 506 ++++++++--------- ...management.io_manifestworkreplicasets.yaml | 532 +++++++++--------- charts/cluster-proxy-manager/Chart.yaml | 4 +- charts/cluster-proxy-manager/README.md | 10 +- ...management.io_clustermanagementaddons.yaml | 488 ++++++++-------- ...nagement.io_managedclustersetbindings.yaml | 98 ++-- ...open-cluster-management.io_placements.yaml | 506 ++++++++--------- charts/fluxcd-manager/Chart.yaml | 4 +- charts/fluxcd-manager/README.md | 10 +- ...management.io_clustermanagementaddons.yaml | 488 ++++++++-------- ...nagement.io_managedclustersetbindings.yaml | 98 ++-- ...open-cluster-management.io_placements.yaml | 506 ++++++++--------- .../managed-serviceaccount-manager/Chart.yaml | 4 +- .../managed-serviceaccount-manager/README.md | 10 +- ...management.io_clustermanagementaddons.yaml | 488 ++++++++-------- ...nagement.io_managedclustersetbindings.yaml | 98 ++-- ...open-cluster-management.io_placements.yaml | 506 ++++++++--------- .../templates/deployment.yaml | 3 +- charts/multicluster-controlplane/Chart.yaml | 4 +- charts/multicluster-controlplane/README.md | 10 +- hack/scripts/import-crds.sh | 8 +- 49 files changed, 3991 insertions(+), 4157 deletions(-) diff --git a/catalog/imagelist.yaml b/catalog/imagelist.yaml index de92f775..cd5223ce 100644 --- a/catalog/imagelist.yaml +++ b/catalog/imagelist.yaml @@ -1,11 +1,11 @@ - ghcr.io/appscode/kubectl-nonroot:1.31 -- ghcr.io/kluster-manager/cluster-auth:v0.2.0 -- ghcr.io/kluster-manager/cluster-gateway-manager:v1.9.2 -- ghcr.io/kluster-manager/cluster-gateway:v1.9.2 -- ghcr.io/kluster-manager/cluster-profile:v0.3.0 -- ghcr.io/kluster-manager/cluster-proxy:v0.5.0 -- ghcr.io/kluster-manager/clusteradm:v0.9.0 -- ghcr.io/kluster-manager/fluxcd-addon:v0.0.4 -- ghcr.io/kluster-manager/managed-serviceaccount:v0.6.0 +- ghcr.io/kluster-manager/cluster-auth:v0.3.0 +- ghcr.io/kluster-manager/cluster-gateway-manager:v1.10.0 +- ghcr.io/kluster-manager/cluster-gateway:v1.10.0 +- ghcr.io/kluster-manager/cluster-profile:v0.4.0 +- ghcr.io/kluster-manager/cluster-proxy:v0.6.0 +- ghcr.io/kluster-manager/clusteradm:v0.10.0 +- ghcr.io/kluster-manager/fluxcd-addon:v0.0.5 +- ghcr.io/kluster-manager/managed-serviceaccount:v0.7.0 - quay.io/open-cluster-management/multicluster-controlplane:latest -- quay.io/open-cluster-management/registration-operator:v0.14.0 +- quay.io/open-cluster-management/registration-operator:v0.15.2 diff --git a/charts/cluster-auth-manager/Chart.yaml b/charts/cluster-auth-manager/Chart.yaml index 918d37ad..028a0fd9 100644 --- a/charts/cluster-auth-manager/Chart.yaml +++ b/charts/cluster-auth-manager/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: Cluster Auth Manager name: cluster-auth-manager -version: v2024.11.18 -appVersion: v0.2.0 +version: v2024.12.26 +appVersion: v0.3.0 home: https://github.com/kluster-manager/cluster-auth icon: https://cdn.appscode.com/images/products/searchlight/icons/android-icon-192x192.png sources: diff --git a/charts/cluster-auth-manager/README.md b/charts/cluster-auth-manager/README.md index ba627eef..c87fb2fa 100644 --- a/charts/cluster-auth-manager/README.md +++ b/charts/cluster-auth-manager/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/cluster-auth-manager --version=v2024.11.18 -$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 +$ helm search repo appscode/cluster-auth-manager --version=v2024.12.26 +$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys an Cluster Auth Manager on a [Kubernetes](http://kubernetes.i To install/upgrade the chart with the release name `cluster-auth-manager`: ```bash -$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 +$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` The command deploys an Cluster Auth Manager on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -64,12 +64,12 @@ The following table lists the configurable parameters of the `cluster-auth-manag Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 --set registryFQDN=ghcr.io +$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --set registryFQDN=ghcr.io ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 --values values.yaml +$ helm upgrade -i cluster-auth-manager appscode/cluster-auth-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-auth-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml b/charts/cluster-auth-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml index 465dd73b..9d69e582 100644 --- a/charts/cluster-auth-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml +++ b/charts/cluster-auth-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml @@ -24,22 +24,27 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ClusterManagementAddOn represents the registration of an add-on - to the cluster manager. This resource allows you to discover which add-ons - are available for the cluster manager and provides metadata information - about the add-ons. The ClusterManagementAddOn name is used for the namespace-scoped - ManagedClusterAddOn resource. ClusterManagementAddOn is a cluster-scoped - resource. + description: |- + ClusterManagementAddOn represents the registration of an add-on to the cluster manager. + This resource allows you to discover which add-ons are available for the cluster manager + and provides metadata information about the add-ons. The ClusterManagementAddOn name is used + for the namespace-scoped ManagedClusterAddOn resource. + ClusterManagementAddOn is a cluster-scoped resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -48,22 +53,21 @@ spec: the cluster management add-on. properties: addOnConfiguration: - description: 'Deprecated: Use supportedConfigs filed instead addOnConfiguration - is a reference to configuration information for the add-on. In scenario - where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn - resources need to be created and reference the same AddOnConfiguration.' + description: |- + Deprecated: Use supportedConfigs filed instead + addOnConfiguration is a reference to configuration information for the add-on. + In scenario where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn + resources need to be created and reference the same AddOnConfiguration. properties: crName: - description: crName is the name of the CR used to configure instances - of the managed add-on. This field should be configured if add-on - CR have a consistent name across the all of the ManagedCluster - instaces. + description: |- + crName is the name of the CR used to configure instances of the managed add-on. + This field should be configured if add-on CR have a consistent name across the all of the ManagedCluster instaces. type: string crdName: - description: crdName is the name of the CRD used to configure - instances of the managed add-on. This field should be configured - if the add-on have a CRD that controls the configuration of - the add-on. + description: |- + crdName is the name of the CRD used to configure instances of the managed add-on. + This field should be configured if the add-on have a CRD that controls the configuration of the add-on. type: string lastObservedGeneration: description: lastObservedGeneration is the observed generation @@ -87,22 +91,22 @@ spec: installStrategy: default: type: Manual - description: InstallStrategy represents that related ManagedClusterAddOns - should be installed on certain clusters. + description: |- + InstallStrategy represents that related ManagedClusterAddOns should be installed + on certain clusters. properties: placements: - description: Placements is a list of placement references honored - when install strategy type is Placements. All clusters selected - by these placements will install the addon If one cluster belongs - to multiple placements, it will only apply the strategy defined - later in the order. That is to say, The latter strategy overrides - the previous one. + description: |- + Placements is a list of placement references honored when install strategy type is + Placements. All clusters selected by these placements will install the addon + If one cluster belongs to multiple placements, it will only apply the strategy defined + later in the order. That is to say, The latter strategy overrides the previous one. items: properties: configs: - description: Configs is the configuration of managedClusterAddon - during installation. User can override the configuration - by updating the managedClusterAddon directly. + description: |- + Configs is the configuration of managedClusterAddon during installation. + User can override the configuration by updating the managedClusterAddon directly. items: properties: group: @@ -114,9 +118,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string resource: description: resource of the add-on configuration. @@ -138,9 +142,9 @@ spec: rolloutStrategy: default: type: All - description: The rollout strategy to apply addon configurations - change. The rollout strategy only watches the addon configurations - defined in ClusterManagementAddOn. + description: |- + The rollout strategy to apply addon configurations change. + The rollout strategy only watches the addon configurations defined in ClusterManagementAddOn. properties: all: description: All defines required fields for RolloutStrategy @@ -151,52 +155,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -205,26 +198,26 @@ spec: RolloutStrategy type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -232,10 +225,9 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of - clusters to deploy workload concurrently. The - default value for MaxConcurrency is determined - from the clustersPerDecisionGroup defined in the + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true @@ -244,52 +236,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -298,26 +279,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -326,52 +307,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -394,35 +364,37 @@ spec: x-kubernetes-list-type: map type: default: Manual - description: 'Type is the type of the install strategy, it can - be: - Manual: no automatic install - Placements: install to - clusters selected by placements.' + description: |- + Type is the type of the install strategy, it can be: + - Manual: no automatic install + - Placements: install to clusters selected by placements. enum: - Manual - Placements type: string type: object supportedConfigs: - description: supportedConfigs is a list of configuration types supported - by add-on. An empty list means the add-on does not require configurations. + description: |- + supportedConfigs is a list of configuration types supported by add-on. + An empty list means the add-on does not require configurations. The default is an empty list items: description: ConfigMeta represents a collection of metadata information for add-on configuration. properties: defaultConfig: - description: defaultConfig represents the namespace and name - of the default add-on configuration. In scenario where all - add-ons have a same configuration. + description: |- + defaultConfig represents the namespace and name of the default add-on configuration. + In scenario where all add-ons have a same configuration. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string required: - name @@ -452,9 +424,9 @@ spec: description: defaultconfigReferences is a list of current add-on default configuration references. items: - description: DefaultConfigReference is a reference to the current - add-on configuration. This resource is used to record the configuration - resource for the current add-on. + description: |- + DefaultConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config spec hash. @@ -464,9 +436,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -496,46 +468,45 @@ spec: monitored components for the operator. items: description: "Condition contains details for one aspect of - the current state of this API Resource. --- This struct + the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path - .status.conditions. For example, \n type FooStatus struct{ - // Represents the observations of a foo's current state. - // Known .status.conditions.type are: \"Available\", \"Progressing\", - and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields - }" + .status.conditions. For example,\n\n\n\ttype FooStatus + struct{\n\t // Represents the observations of a foo's + current state.\n\t // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // + +listType=map\n\t // +listMapKey=type\n\t Conditions + []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" + patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should - be when the underlying condition changed. If that is - not known, then using the time when the API field changed - is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the - current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define expected - values and meanings for this field, and whether the - values are considered a guaranteed API. The value should - be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -549,12 +520,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across - resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability - to deconflict is important. The regex it matches is - (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -570,9 +541,9 @@ spec: description: configReferences is a list of current add-on configuration references. items: - description: InstallConfigReference is a reference to the - current add-on configuration. This resource is used to record - the configuration resource for the current add-on. + description: |- + InstallConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config name @@ -583,9 +554,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -598,18 +569,18 @@ spec: description: group of the add-on configuration. type: string lastAppliedConfig: - description: lastAppliedConfig records the config spec - hash when the all the corresponding ManagedClusterAddOn - are applied successfully. + description: |- + lastAppliedConfig records the config spec hash when the all the corresponding + ManagedClusterAddOn are applied successfully. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -618,22 +589,21 @@ spec: - name type: object lastKnownGoodConfig: - description: lastKnownGoodConfig records the last known - good config spec hash. For fresh install or rollout - with type UpdateAll or RollingUpdate, the lastKnownGoodConfig - is the same as lastAppliedConfig. For rollout with type - RollingUpdateWithCanary, the lastKnownGoodConfig is - the last successfully applied config spec hash of the - canary placement. + description: |- + lastKnownGoodConfig records the last known good config spec hash. + For fresh install or rollout with type UpdateAll or RollingUpdate, the + lastKnownGoodConfig is the same as lastAppliedConfig. + For rollout with type RollingUpdateWithCanary, the lastKnownGoodConfig + is the last successfully applied config spec hash of the canary placement. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. diff --git a/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml b/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml index 6e75601a..294939ea 100644 --- a/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml +++ b/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml @@ -17,22 +17,27 @@ spec: - name: v1beta2 schema: openAPIV3Schema: - description: ManagedClusterSetBinding projects a ManagedClusterSet into a - certain namespace. You can create a ManagedClusterSetBinding in a namespace - and bind it to a ManagedClusterSet if both have a RBAC rules to CREATE on - the virtual subresource of managedclustersets/bind. Workloads that you create - in the same namespace can only be distributed to ManagedClusters in ManagedClusterSets - that are bound in this namespace by higher-level controllers. + description: |- + ManagedClusterSetBinding projects a ManagedClusterSet into a certain namespace. + You can create a ManagedClusterSetBinding in a namespace and bind it to a + ManagedClusterSet if both have a RBAC rules to CREATE on the virtual subresource of managedclustersets/bind. + Workloads that you create in the same namespace can only be distributed to ManagedClusters + in ManagedClusterSets that are bound in this namespace by higher-level controllers. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -40,11 +45,11 @@ spec: description: Spec defines the attributes of ManagedClusterSetBinding. properties: clusterSet: - description: ClusterSet is the name of the ManagedClusterSet to bind. - It must match the instance name of the ManagedClusterSetBinding - and cannot change once created. User is allowed to set this field - if they have an RBAC rule to CREATE on the virtual subresource of - managedclustersets/bind. + description: |- + ClusterSet is the name of the ManagedClusterSet to bind. It must match the + instance name of the ManagedClusterSetBinding and cannot change once created. + User is allowed to set this field if they have an RBAC rule to CREATE on the + virtual subresource of managedclustersets/bind. minLength: 1 type: string type: object @@ -56,42 +61,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -105,11 +110,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_placements.yaml b/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_placements.yaml index dd4ac28c..fdb3729f 100644 --- a/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_placements.yaml +++ b/charts/cluster-auth-manager/crds/cluster.open-cluster-management.io_placements.yaml @@ -24,34 +24,49 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: "Placement defines a rule to select a set of ManagedClusters - from the ManagedClusterSets bound to the placement namespace. \n Here is - how the placement policy combines with other selection methods to determine - a matching list of ManagedClusters: 1. Kubernetes clusters are registered - with hub as cluster-scoped ManagedClusters; 2. ManagedClusters are organized - into cluster-scoped ManagedClusterSets; 3. ManagedClusterSets are bound - to workload namespaces; 4. Namespace-scoped Placements specify a slice of - ManagedClusterSets which select a working set of potential ManagedClusters; - 5. Then Placements subselect from that working set using label/claim selection. - \n A ManagedCluster will not be selected if no ManagedClusterSet is bound - to the placement namespace. A user is able to bind a ManagedClusterSet to - a namespace by creating a ManagedClusterSetBinding in that namespace if - they have an RBAC rule to CREATE on the virtual subresource of `managedclustersets/bind`. - \n A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement - name} will be created to represent the ManagedClusters selected by this - placement. \n If a ManagedCluster is selected and added into the PlacementDecisions, - other components may apply workload on it; once it is removed from the PlacementDecisions, - the workload applied on this ManagedCluster should be evicted accordingly." + description: |- + Placement defines a rule to select a set of ManagedClusters from the ManagedClusterSets bound + to the placement namespace. + + + Here is how the placement policy combines with other selection methods to determine a matching + list of ManagedClusters: + 1. Kubernetes clusters are registered with hub as cluster-scoped ManagedClusters; + 2. ManagedClusters are organized into cluster-scoped ManagedClusterSets; + 3. ManagedClusterSets are bound to workload namespaces; + 4. Namespace-scoped Placements specify a slice of ManagedClusterSets which select a working set + of potential ManagedClusters; + 5. Then Placements subselect from that working set using label/claim selection. + + + A ManagedCluster will not be selected if no ManagedClusterSet is bound to the placement + namespace. A user is able to bind a ManagedClusterSet to a namespace by creating a + ManagedClusterSetBinding in that namespace if they have an RBAC rule to CREATE on the virtual + subresource of `managedclustersets/bind`. + + + A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement name} + will be created to represent the ManagedClusters selected by this placement. + + + If a ManagedCluster is selected and added into the PlacementDecisions, other components may + apply workload on it; once it is removed from the PlacementDecisions, the workload applied on + this ManagedCluster should be evicted accordingly. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -59,12 +74,11 @@ spec: description: Spec defines the attributes of Placement. properties: clusterSets: - description: ClusterSets represent the ManagedClusterSets from which - the ManagedClusters are selected. If the slice is empty, ManagedClusters - will be selected from the ManagedClusterSets bound to the placement - namespace, otherwise ManagedClusters will be selected from the intersection - of this slice and the ManagedClusterSets bound to the placement - namespace. + description: |- + ClusterSets represent the ManagedClusterSets from which the ManagedClusters are selected. + If the slice is empty, ManagedClusters will be selected from the ManagedClusterSets bound to the placement + namespace, otherwise ManagedClusters will be selected from the intersection of this slice and the + ManagedClusterSets bound to the placement namespace. items: type: string type: array @@ -81,32 +95,28 @@ spec: - type: integer - type: string default: 100% - description: "ClustersPerDecisionGroup is a specific number - or percentage of the total selected clusters. The specific - number will divide the placementDecisions to decisionGroups - each group has max number of clusters equal to that specific - number. The percentage will divide the placementDecisions - to decisionGroups each group has max number of clusters - based on the total num of selected clusters and percentage. - ex; for a total 100 clusters selected, ClustersPerDecisionGroup - equal to 20% will divide the placement decision to 5 groups - each group should have 20 clusters. Default is having all - clusters in a single group. \n The predefined decisionGroups - is expected to be a subset of the selected clusters and - the number of items in each group SHOULD be less than ClustersPerDecisionGroup. - Once the number of items exceeds the ClustersPerDecisionGroup, - the decisionGroups will also be be divided into multiple - decisionGroups with same GroupName but different GroupIndex." + description: |- + ClustersPerDecisionGroup is a specific number or percentage of the total selected clusters. + The specific number will divide the placementDecisions to decisionGroups each group has max number of clusters + equal to that specific number. + The percentage will divide the placementDecisions to decisionGroups each group has max number of clusters based + on the total num of selected clusters and percentage. + ex; for a total 100 clusters selected, ClustersPerDecisionGroup equal to 20% will divide the placement decision + to 5 groups each group should have 20 clusters. + Default is having all clusters in a single group. + + + The predefined decisionGroups is expected to be a subset of the selected clusters and the number of items in each + group SHOULD be less than ClustersPerDecisionGroup. Once the number of items exceeds the ClustersPerDecisionGroup, + the decisionGroups will also be be divided into multiple decisionGroups with same GroupName but different GroupIndex. pattern: ^((100|[1-9][0-9]{0,1})%|[1-9][0-9]*)$ x-kubernetes-int-or-string: true decisionGroups: - description: DecisionGroups represents a list of predefined - groups to put decision results. Decision groups will be - constructed based on the DecisionGroups field at first. - The clusters not included in the DecisionGroups will be - divided to other decision groups afterwards. Each decision - group should not have the number of clusters larger than - the ClustersPerDecisionGroup. + description: |- + DecisionGroups represents a list of predefined groups to put decision results. + Decision groups will be constructed based on the DecisionGroups field at first. The clusters not included in the + DecisionGroups will be divided to other decision groups afterwards. Each decision group should not have the number + of clusters larger than the ClustersPerDecisionGroup. items: description: DecisionGroup define a subset of clusters that will be added to placementDecisions with groupName label. @@ -124,32 +134,29 @@ spec: claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -165,46 +172,42 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -223,18 +226,18 @@ spec: type: object type: object numberOfClusters: - description: NumberOfClusters represents the desired number of ManagedClusters - to be selected which meet the placement requirements. 1) If not - specified, all ManagedClusters which meet the placement requirements - (including ClusterSets, and Predicates) will be selected; 2) Otherwise - if the nubmer of ManagedClusters meet the placement requirements - is larger than NumberOfClusters, a random subset with desired number - of ManagedClusters will be selected; 3) If the nubmer of ManagedClusters - meet the placement requirements is equal to NumberOfClusters, all - of them will be selected; 4) If the nubmer of ManagedClusters meet - the placement requirements is less than NumberOfClusters, all of - them will be selected, and the status of condition `PlacementConditionSatisfied` - will be set to false; + description: |- + NumberOfClusters represents the desired number of ManagedClusters to be selected which meet the + placement requirements. + 1) If not specified, all ManagedClusters which meet the placement requirements (including ClusterSets, + and Predicates) will be selected; + 2) Otherwise if the nubmer of ManagedClusters meet the placement requirements is larger than + NumberOfClusters, a random subset with desired number of ManagedClusters will be selected; + 3) If the nubmer of ManagedClusters meet the placement requirements is equal to NumberOfClusters, + all of them will be selected; + 4) If the nubmer of ManagedClusters meet the placement requirements is less than NumberOfClusters, + all of them will be selected, and the status of condition `PlacementConditionSatisfied` will be + set to false; format: int32 type: integer predicates: @@ -244,16 +247,13 @@ spec: description: ClusterPredicate represents a predicate to select ManagedClusters. properties: requiredClusterSelector: - description: RequiredClusterSelector represents a selector of - ManagedClusters by label and claim. If specified, 1) Any ManagedCluster, - which does not match the selector, should not be selected - by this ClusterPredicate; 2) If a selected ManagedCluster - (of this ClusterPredicate) ceases to match the selector (e.g. - due to an update) of any ClusterPredicate, it will be eventually - removed from the placement decisions; 3) If a ManagedCluster - (not selected previously) starts to match the selector, it - will either be selected or at least has a chance to be selected - (when NumberOfClusters is specified); + description: |- + RequiredClusterSelector represents a selector of ManagedClusters by label and claim. If specified, + 1) Any ManagedCluster, which does not match the selector, should not be selected by this ClusterPredicate; + 2) If a selected ManagedCluster (of this ClusterPredicate) ceases to match the selector (e.g. due to + an update) of any ClusterPredicate, it will be eventually removed from the placement decisions; + 3) If a ManagedCluster (not selected previously) starts to match the selector, it will either + be selected or at least has a chance to be selected (when NumberOfClusters is specified); properties: claimSelector: description: ClaimSelector represents a selector of ManagedClusters @@ -263,8 +263,8 @@ spec: description: matchExpressions is a list of cluster claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -272,20 +272,20 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -300,8 +300,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -309,33 +309,33 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -343,10 +343,10 @@ spec: type: object type: array prioritizerPolicy: - description: PrioritizerPolicy defines the policy of the prioritizers. - If this field is unset, then default prioritizer mode and configurations - are used. Referring to PrioritizerPolicy to see more description - about Mode and Configurations. + description: |- + PrioritizerPolicy defines the policy of the prioritizers. + If this field is unset, then default prioritizer mode and configurations are used. + Referring to PrioritizerPolicy to see more description about Mode and Configurations. properties: configurations: items: @@ -362,37 +362,35 @@ spec: resource name and score name. properties: resourceName: - description: ResourceName defines the resource name - of the AddOnPlacementScore. The placement prioritizer - selects AddOnPlacementScore CR by this name. + description: |- + ResourceName defines the resource name of the AddOnPlacementScore. + The placement prioritizer selects AddOnPlacementScore CR by this name. type: string scoreName: - description: ScoreName defines the score name inside - AddOnPlacementScore. AddOnPlacementScore contains - a list of score name and score value, ScoreName - specify the score to be used by the prioritizer. + description: |- + ScoreName defines the score name inside AddOnPlacementScore. + AddOnPlacementScore contains a list of score name and score value, ScoreName specify the score to be used by + the prioritizer. type: string required: - resourceName - scoreName type: object builtIn: - description: 'BuiltIn defines the name of a BuiltIn - prioritizer. Below are the valid BuiltIn prioritizer - names. 1) Balance: balance the decisions among the - clusters. 2) Steady: ensure the existing decision - is stabilized. 3) ResourceAllocatableCPU & ResourceAllocatableMemory: - sort clusters based on the allocatable. 4) Spread: - spread the workload evenly to topologies.' + description: |- + BuiltIn defines the name of a BuiltIn prioritizer. Below are the valid BuiltIn prioritizer names. + 1) Balance: balance the decisions among the clusters. + 2) Steady: ensure the existing decision is stabilized. + 3) ResourceAllocatableCPU & ResourceAllocatableMemory: sort clusters based on the allocatable. + 4) Spread: spread the workload evenly to topologies. type: string type: default: BuiltIn - description: Type defines the type of the prioritizer - score. Type is either "BuiltIn", "AddOn" or "", where - "" is "BuiltIn" by default. When the type is "BuiltIn", - need to specify a BuiltIn prioritizer name in BuiltIn. - When the type is "AddOn", need to configure the score - source in AddOn. + description: |- + Type defines the type of the prioritizer score. + Type is either "BuiltIn", "AddOn" or "", where "" is "BuiltIn" by default. + When the type is "BuiltIn", need to specify a BuiltIn prioritizer name in BuiltIn. + When the type is "AddOn", need to configure the score source in AddOn. enum: - BuiltIn - AddOn @@ -402,14 +400,13 @@ spec: type: object weight: default: 1 - description: Weight defines the weight of the prioritizer - score. The value must be ranged in [-10,10]. Each prioritizer - will calculate an integer score of a cluster in the range - of [-100, 100]. The final score of a cluster will be sum(weight - * prioritizer_score). A higher weight indicates that the - prioritizer weights more in the cluster selection, while - 0 weight indicates that the prioritizer is disabled. A - negative weight indicates wants to select the last ones. + description: |- + Weight defines the weight of the prioritizer score. The value must be ranged in [-10,10]. + Each prioritizer will calculate an integer score of a cluster in the range of [-100, 100]. + The final score of a cluster will be sum(weight * prioritizer_score). + A higher weight indicates that the prioritizer weights more in the cluster selection, + while 0 weight indicates that the prioritizer is disabled. A negative weight indicates + wants to select the last ones. format: int32 maximum: 10 minimum: -10 @@ -420,43 +417,38 @@ spec: type: array mode: default: Additive - description: Mode is either Exact, Additive, "" where "" is Additive - by default. In Additive mode, any prioritizer not explicitly - enumerated is enabled in its default Configurations, in which - Steady and Balance prioritizers have the weight of 1 while other - prioritizers have the weight of 0. Additive doesn't require - configuring all prioritizers. The default Configurations may - change in the future, and additional prioritization will happen. - In Exact mode, any prioritizer not explicitly enumerated is - weighted as zero. Exact requires knowing the full set of prioritizers - you want, but avoids behavior changes between releases. + description: |- + Mode is either Exact, Additive, "" where "" is Additive by default. + In Additive mode, any prioritizer not explicitly enumerated is enabled in its default Configurations, + in which Steady and Balance prioritizers have the weight of 1 while other prioritizers have the weight of 0. + Additive doesn't require configuring all prioritizers. The default Configurations may change in the future, + and additional prioritization will happen. + In Exact mode, any prioritizer not explicitly enumerated is weighted as zero. + Exact requires knowing the full set of prioritizers you want, but avoids behavior changes between releases. type: string type: object spreadPolicy: - description: SpreadPolicy defines how placement decisions should be - distributed among a set of ManagedClusters. + description: |- + SpreadPolicy defines how placement decisions should be distributed among a + set of ManagedClusters. properties: spreadConstraints: - description: SpreadConstraints defines how the placement decision - should be distributed among a set of ManagedClusters. The importance - of the SpreadConstraintsTerms follows the natural order of their - index in the slice. The scheduler first consider SpreadConstraintsTerms - with smaller index then those with larger index to distribute - the placement decision. + description: |- + SpreadConstraints defines how the placement decision should be distributed among a set of ManagedClusters. + The importance of the SpreadConstraintsTerms follows the natural order of their index in the slice. + The scheduler first consider SpreadConstraintsTerms with smaller index then those with larger index + to distribute the placement decision. items: description: SpreadConstraintsTerm defines a terminology to spread placement decisions. properties: maxSkew: default: 1 - description: MaxSkew represents the degree to which the - workload may be unevenly distributed. Skew is the maximum - difference between the number of selected ManagedClusters - in a topology and the global minimum. The global minimum - is the minimum number of selected ManagedClusters for - the topologies within the same TopologyKey. The minimum - possible value of MaxSkew is 1, and the default value - is 1. + description: |- + MaxSkew represents the degree to which the workload may be unevenly distributed. + Skew is the maximum difference between the number of selected ManagedClusters in a topology and the global minimum. + The global minimum is the minimum number of selected ManagedClusters for the topologies within the same TopologyKey. + The minimum possible value of MaxSkew is 1, and the default value is 1. format: int32 minimum: 1 type: integer @@ -475,13 +467,11 @@ spec: type: string whenUnsatisfiable: default: ScheduleAnyway - description: WhenUnsatisfiable represents the action of - the scheduler when MaxSkew cannot be satisfied. It could - be DoNotSchedule or ScheduleAnyway. The default value - is ScheduleAnyway. DoNotSchedule instructs the scheduler - not to schedule more ManagedClusters when MaxSkew is not - satisfied. ScheduleAnyway instructs the scheduler to keep - scheduling even if MaxSkew is not satisfied. + description: |- + WhenUnsatisfiable represents the action of the scheduler when MaxSkew cannot be satisfied. + It could be DoNotSchedule or ScheduleAnyway. The default value is ScheduleAnyway. + DoNotSchedule instructs the scheduler not to schedule more ManagedClusters when MaxSkew is not satisfied. + ScheduleAnyway instructs the scheduler to keep scheduling even if MaxSkew is not satisfied. enum: - DoNotSchedule - ScheduleAnyway @@ -494,53 +484,52 @@ spec: type: array type: object tolerations: - description: Tolerations are applied to placements, and allow (but - do not require) the managed clusters with certain taints to be selected - by placements with matching tolerations. + description: |- + Tolerations are applied to placements, and allow (but do not require) the managed clusters with + certain taints to be selected by placements with matching tolerations. items: - description: Toleration represents the toleration object that can - be attached to a placement. The placement this Toleration is attached - to tolerates any taint that matches the triple - using the matching operator . + description: |- + Toleration represents the toleration object that can be attached to a placement. + The placement this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSelect, PreferNoSelect and NoSelectIfNew. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSelect, PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string operator: default: Equal - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a placement - can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a placement can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoSelect/PreferNoSelect, - otherwise this field is ignored) tolerates the taint. The - default value is nil, which indicates it tolerates the taint - forever. The start time of counting the TolerationSeconds - should be the TimeAdded in Taint, not the cluster scheduled - time or TolerationSeconds added time. + description: |- + TolerationSeconds represents the period of time the toleration (which must be of effect + NoSelect/PreferNoSelect, otherwise this field is ignored) tolerates the taint. + The default value is nil, which indicates it tolerates the taint forever. + The start time of counting the TolerationSeconds should be the TimeAdded in Taint, not the cluster + scheduled time or TolerationSeconds added time. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. maxLength: 1024 type: string type: object @@ -554,42 +543,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -603,11 +592,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-auth-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml b/charts/cluster-auth-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml index d861e242..40975a97 100644 --- a/charts/cluster-auth-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml +++ b/charts/cluster-auth-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml @@ -33,22 +33,26 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ManifestWorkReplicaSet is the Schema for the ManifestWorkReplicaSet - API. This custom resource is able to apply ManifestWork using Placement - for 0..n ManagedCluster(in their namespaces). It will also remove the ManifestWork - custom resources when deleted. Lastly the specific ManifestWork custom resources - created per ManagedCluster namespace will be adjusted based on PlacementDecision + description: |- + ManifestWorkReplicaSet is the Schema for the ManifestWorkReplicaSet API. This custom resource is able to apply + ManifestWork using Placement for 0..n ManagedCluster(in their namespaces). It will also remove the ManifestWork custom resources + when deleted. Lastly the specific ManifestWork custom resources created per ManagedCluster namespace will be adjusted based on PlacementDecision changes. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -61,21 +65,20 @@ spec: be used to generate a per-cluster ManifestWork properties: deleteOption: - description: DeleteOption represents deletion strategy when the - manifestwork is deleted. Foreground deletion strategy is applied - to all the resource in this manifestwork if it is not set. + description: |- + DeleteOption represents deletion strategy when the manifestwork is deleted. + Foreground deletion strategy is applied to all the resource in this manifestwork if it is not set. properties: propagationPolicy: default: Foreground - description: propagationPolicy can be Foreground, Orphan or - SelectivelyOrphan SelectivelyOrphan should be rarely used. It - is provided for cases where particular resources is transfering - ownership from one ManifestWork to another or another management - unit. Setting this value will allow a flow like 1. create - manifestwork/2 to manage foo 2. update manifestwork/1 to - selectively orphan foo 3. remove foo from manifestwork/1 - without impacting continuity because manifestwork/2 adopts - it. + description: |- + propagationPolicy can be Foreground, Orphan or SelectivelyOrphan + SelectivelyOrphan should be rarely used. It is provided for cases where particular resources is transfering + ownership from one ManifestWork to another or another management unit. + Setting this value will allow a flow like + 1. create manifestwork/2 to manage foo + 2. update manifestwork/1 to selectively orphan foo + 3. remove foo from manifestwork/1 without impacting continuity because manifestwork/2 adopts it. enum: - Foreground - Orphan @@ -86,26 +89,26 @@ spec: following orphan deletion stratecy properties: orphaningRules: - description: orphaningRules defines a slice of orphaningrule. - Each orphaningrule identifies a single resource included - in this manifestwork + description: |- + orphaningRules defines a slice of orphaningrule. + Each orphaningrule identifies a single resource included in this manifestwork items: description: OrphaningRule identifies a single resource included in this manifestwork to be orphaned properties: group: - description: Group is the API Group of the Kubernetes - resource, empty string indicates it is in core - group. + description: |- + Group is the API Group of the Kubernetes resource, + empty string indicates it is in core group. type: string name: description: Name is the name of the Kubernetes resource. type: string namespace: - description: Name is the namespace of the Kubernetes - resource, empty string indicates it is a cluster - scoped resource. + description: |- + Name is the namespace of the Kubernetes resource, empty string indicates + it is a cluster scoped resource. type: string resource: description: Resource is the resource name of the @@ -119,23 +122,22 @@ spec: type: object type: object executor: - description: Executor is the configuration that makes the work - agent to perform some pre-request processing/checking. e.g. - the executor identity tells the work agent to check the executor - has sufficient permission to write the workloads to the local - managed cluster. Note that nil executor is still supported for - backward-compatibility which indicates that the work agent will - not perform any additional actions before applying resources. + description: |- + Executor is the configuration that makes the work agent to perform some pre-request processing/checking. + e.g. the executor identity tells the work agent to check the executor has sufficient permission to write + the workloads to the local managed cluster. + Note that nil executor is still supported for backward-compatibility which indicates that the work agent + will not perform any additional actions before applying resources. properties: subject: - description: Subject is the subject identity which the work - agent uses to talk to the local cluster when applying the - resources. + description: |- + Subject is the subject identity which the work agent uses to talk to the + local cluster when applying the resources. properties: serviceAccount: - description: ServiceAccount is for identifying which service - account to use by the work agent. Only required if the - type is "ServiceAccount". + description: |- + ServiceAccount is for identifying which service account to use by the work agent. + Only required if the type is "ServiceAccount". properties: name: description: Name is the name of the service account. @@ -155,8 +157,9 @@ spec: - namespace type: object type: - description: 'Type is the type of the subject identity. - Supported types are: "ServiceAccount".' + description: |- + Type is the type of the subject identity. + Supported types are: "ServiceAccount". enum: - ServiceAccount type: string @@ -172,9 +175,9 @@ spec: of a manifest defined in workload field. properties: feedbackRules: - description: FeedbackRules defines what resource status - field should be returned. If it is not set or empty, no - feedback rules will be honored. + description: |- + FeedbackRules defines what resource status field should be returned. If it is not set or empty, + no feedback rules will be honored. items: properties: jsonPaths: @@ -187,22 +190,19 @@ spec: for this field type: string path: - description: Path represents the json path of - the field under status. The path must point - to a field with single value in the type of - integer, bool or string. If the path points - to a non-existing field, no value will be - returned. If the path points to a structure, - map or slice, no value will be returned and - the status conddition of StatusFeedBackSynced - will be set as false. Ref to https://kubernetes.io/docs/reference/kubectl/jsonpath/ - on how to write a jsonPath. + description: |- + Path represents the json path of the field under status. + The path must point to a field with single value in the type of integer, bool or string. + If the path points to a non-existing field, no value will be returned. + If the path points to a structure, map or slice, no value will be returned and the status conddition + of StatusFeedBackSynced will be set as false. + Ref to https://kubernetes.io/docs/reference/kubectl/jsonpath/ on how to write a jsonPath. type: string version: - description: Version is the version of the Kubernetes - resource. If it is not specified, the resource - with the semantically latest version is used - to resolve the path. + description: |- + Version is the version of the Kubernetes resource. + If it is not specified, the resource with the semantically latest version is + used to resolve the path. type: string required: - name @@ -210,14 +210,13 @@ spec: type: object type: array type: - description: Type defines the option of how status - can be returned. It can be jsonPaths or wellKnownStatus. - If the type is JSONPaths, user should specify the - jsonPaths field If the type is WellKnownStatus, - certain common fields of status defined by a rule - only for types in in k8s.io/api and open-cluster-management/api - will be reported, If these status fields do not - exist, no values will be reported. + description: |- + Type defines the option of how status can be returned. + It can be jsonPaths or wellKnownStatus. + If the type is JSONPaths, user should specify the jsonPaths field + If the type is WellKnownStatus, certain common fields of status defined by a rule only + for types in in k8s.io/api and open-cluster-management/api will be reported, + If these status fields do not exist, no values will be reported. enum: - WellKnownStatus - JSONPaths @@ -227,22 +226,22 @@ spec: type: object type: array resourceIdentifier: - description: ResourceIdentifier represents the group, resource, - name and namespace of a resoure. iff this refers to a - resource not created by this manifest work, the related - rules will not be executed. + description: |- + ResourceIdentifier represents the group, resource, name and namespace of a resoure. + iff this refers to a resource not created by this manifest work, the related rules will not be executed. properties: group: - description: Group is the API Group of the Kubernetes - resource, empty string indicates it is in core group. + description: |- + Group is the API Group of the Kubernetes resource, + empty string indicates it is in core group. type: string name: description: Name is the name of the Kubernetes resource. type: string namespace: - description: Name is the namespace of the Kubernetes - resource, empty string indicates it is a cluster scoped - resource. + description: |- + Name is the namespace of the Kubernetes resource, empty string indicates + it is a cluster scoped resource. type: string resource: description: Resource is the resource name of the Kubernetes @@ -253,19 +252,20 @@ spec: - resource type: object updateStrategy: - description: UpdateStrategy defines the strategy to update - this manifest. UpdateStrategy is Update if it is not set. + description: |- + UpdateStrategy defines the strategy to update this manifest. UpdateStrategy is Update + if it is not set. properties: serverSideApply: - description: serverSideApply defines the configuration - for server side apply. It is honored only when type - of updateStrategy is ServerSideApply + description: |- + serverSideApply defines the configuration for server side apply. It is honored only when + type of updateStrategy is ServerSideApply properties: fieldManager: default: work-agent - description: FieldManager is the manager to apply - the resource. It is work-agent by default, but - can be other name with work-agent as the prefix. + description: |- + FieldManager is the manager to apply the resource. It is work-agent by default, but can be other name with work-agent + as the prefix. pattern: ^work-agent type: string force: @@ -275,17 +275,15 @@ spec: type: object type: default: Update - description: type defines the strategy to update this - manifest, default value is Update. Update type means - to update resource by an update call. CreateOnly type - means do not update resource based on current manifest. - ServerSideApply type means to update resource using - server side apply with work-controller as the field - manager. If there is conflict, the related Applied - condition of manifest will be in the status of False - with the reason of ApplyConflict. ReadOnly type means - the agent will only check the existence of the resource - based on its metadata. + description: |- + type defines the strategy to update this manifest, default value is Update. + Update type means to update resource by an update call. + CreateOnly type means do not update resource based on current manifest. + ServerSideApply type means to update resource using server side apply with work-controller as the field manager. + If there is conflict, the related Applied condition of manifest will be in the status of False with the + reason of ApplyConflict. + ReadOnly type means the agent will only check the existence of the resource based on its metadata, + statusFeedBackRules can still be used to get feedbackResults. enum: - Update - CreateOnly @@ -316,8 +314,8 @@ spec: type: object type: object placementRefs: - description: PacementRefs is a list of the names of the Placement - resource, from which a PlacementDecision will be found and used + description: |- + PacementRefs is a list of the names of the Placement resource, from which a PlacementDecision will be found and used to distribute the ManifestWork. items: description: localPlacementReference is the name of a Placement @@ -344,49 +342,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number of - clusters in the current rollout that can fail before - proceeding to the next rollout. Fail means the cluster - has a failed status or timeout status (does not reach - successful status after ProgressDeadline). Once the - MaxFailures is breached, the rollout will stop. MaxFailures - is only considered for rollout types Progressive and - ProgressivePerGroup. For Progressive, this is considered - over the total number of clusters. For ProgressivePerGroup, - this is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no failures - are tolerated. + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status + (does not reach successful status after ProgressDeadline). + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In other - words, the minimum amount of time the workload applier - controller will wait from the start of each rollout - before proceeding (assuming a successful state has - been reached and MaxFailures wasn't breached). MinSuccessTime - is only considered for rollout types Progressive and - ProgressivePerGroup. The default value is 0 meaning - the workload applier proceeds immediately after a - successful state is reached. MinSuccessTime must be - defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h - , 90m , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload to reach - a successful state in the cluster. If the workload - does not reach a successful state after ProgressDeadline, - will stop waiting and workload will be treated as - "timeout" and be counted into MaxFailures. Once the - MaxFailures is breached, the rollout will stop. ProgressDeadline - default value is "None", meaning the workload applier - will wait for a successful state indefinitely. ProgressDeadline - must be defined in [0-9h]|[0-9m]|[0-9s] format examples; - 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -395,26 +385,26 @@ spec: type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or indexes - to apply the workload first and fail if workload did - not reach successful state. GroupName or GroupIndex - must match with the decisionGroups defined in the - placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label value - with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group should - match the placementDecisions label value with - label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -422,10 +412,10 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of clusters - to deploy workload concurrently. The default value - for MaxConcurrency is determined from the clustersPerDecisionGroup - defined in the placement->DecisionStrategy. + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the + placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true maxFailures: @@ -433,49 +423,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number of - clusters in the current rollout that can fail before - proceeding to the next rollout. Fail means the cluster - has a failed status or timeout status (does not reach - successful status after ProgressDeadline). Once the - MaxFailures is breached, the rollout will stop. MaxFailures - is only considered for rollout types Progressive and - ProgressivePerGroup. For Progressive, this is considered - over the total number of clusters. For ProgressivePerGroup, - this is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no failures - are tolerated. + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status + (does not reach successful status after ProgressDeadline). + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In other - words, the minimum amount of time the workload applier - controller will wait from the start of each rollout - before proceeding (assuming a successful state has - been reached and MaxFailures wasn't breached). MinSuccessTime - is only considered for rollout types Progressive and - ProgressivePerGroup. The default value is 0 meaning - the workload applier proceeds immediately after a - successful state is reached. MinSuccessTime must be - defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h - , 90m , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload to reach - a successful state in the cluster. If the workload - does not reach a successful state after ProgressDeadline, - will stop waiting and workload will be treated as - "timeout" and be counted into MaxFailures. Once the - MaxFailures is breached, the rollout will stop. ProgressDeadline - default value is "None", meaning the workload applier - will wait for a successful state indefinitely. ProgressDeadline - must be defined in [0-9h]|[0-9m]|[0-9s] format examples; - 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -484,26 +466,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or indexes - to apply the workload first and fail if workload did - not reach successful state. GroupName or GroupIndex - must match with the decisionGroups defined in the - placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label value - with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group should - match the placementDecisions label value with - label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -512,49 +494,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number of - clusters in the current rollout that can fail before - proceeding to the next rollout. Fail means the cluster - has a failed status or timeout status (does not reach - successful status after ProgressDeadline). Once the - MaxFailures is breached, the rollout will stop. MaxFailures - is only considered for rollout types Progressive and - ProgressivePerGroup. For Progressive, this is considered - over the total number of clusters. For ProgressivePerGroup, - this is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no failures - are tolerated. + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status + (does not reach successful status after ProgressDeadline). + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In other - words, the minimum amount of time the workload applier - controller will wait from the start of each rollout - before proceeding (assuming a successful state has - been reached and MaxFailures wasn't breached). MinSuccessTime - is only considered for rollout types Progressive and - ProgressivePerGroup. The default value is 0 meaning - the workload applier proceeds immediately after a - successful state is reached. MinSuccessTime must be - defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h - , 90m , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload to reach - a successful state in the cluster. If the workload - does not reach a successful state after ProgressDeadline, - will stop waiting and workload will be treated as - "timeout" and be counted into MaxFailures. Once the - MaxFailures is breached, the rollout will stop. ProgressDeadline - default value is "None", meaning the workload applier - will wait for a successful state indefinitely. ProgressDeadline - must be defined in [0-9h]|[0-9m]|[0-9s] format examples; - 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -579,48 +553,49 @@ spec: resources properties: conditions: - description: 'Conditions contains the different condition statuses - for distrbution of ManifestWork resources Valid condition types - are: 1. AppliedManifestWorks represents ManifestWorks have been - distributed as per placement All, Partial, None, Problem 2. PlacementRefValid' + description: |- + Conditions contains the different condition statuses for distrbution of ManifestWork resources + Valid condition types are: + 1. AppliedManifestWorks represents ManifestWorks have been distributed as per placement All, Partial, None, Problem + 2. PlacementRefValid items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -634,11 +609,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -657,9 +633,9 @@ spec: and clusterGroups selected by the placement refs. properties: availableDecisionGroups: - description: availableDecisionGroups shows number of decisionGroups - that have all clusters manifestWorks in available state regards - total number of decisionGroups. ex; 2/4 (2 out of 4) + description: |- + availableDecisionGroups shows number of decisionGroups that have all clusters manifestWorks in available state regards total number of decisionGroups. + ex; 2/4 (2 out of 4) type: string name: description: PlacementRef Name diff --git a/charts/cluster-auth/Chart.yaml b/charts/cluster-auth/Chart.yaml index 3a2da2a3..08db178b 100755 --- a/charts/cluster-auth/Chart.yaml +++ b/charts/cluster-auth/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: Cluster Auth Agent name: cluster-auth-agent -version: v2024.11.18 -appVersion: v0.2.0 +version: v2024.12.26 +appVersion: v0.3.0 home: https://github.com/kluster-manager/cluster-auth icon: https://cdn.appscode.com/images/products/searchlight/icons/android-icon-192x192.png sources: diff --git a/charts/cluster-auth/README.md b/charts/cluster-auth/README.md index f5468f20..55f84836 100644 --- a/charts/cluster-auth/README.md +++ b/charts/cluster-auth/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/cluster-auth-agent --version=v2024.11.18 -$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.11.18 +$ helm search repo appscode/cluster-auth-agent --version=v2024.12.26 +$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys an Cluster Auth Agent on a [Kubernetes](http://kubernetes.io) To install/upgrade the chart with the release name `cluster-auth`: ```bash -$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.11.18 +$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.12.26 ``` The command deploys an Cluster Auth Agent on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -79,12 +79,12 @@ The following table lists the configurable parameters of the `cluster-auth-agent Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.11.18 --set replicaCount=1 +$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.12.26 --set replicaCount=1 ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.11.18 --values values.yaml +$ helm upgrade -i cluster-auth appscode/cluster-auth-agent -n open-cluster-management-cluster-auth --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-gateway-manager/Chart.yaml b/charts/cluster-gateway-manager/Chart.yaml index 9215dbc9..42afdb34 100644 --- a/charts/cluster-gateway-manager/Chart.yaml +++ b/charts/cluster-gateway-manager/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: cluster-gateway-manager description: A Helm chart for Cluster-Gateway Addon-Manager type: application -version: v2024.11.18 -appVersion: v1.9.2 +version: v2024.12.26 +appVersion: v1.10.0 diff --git a/charts/cluster-gateway-manager/README.md b/charts/cluster-gateway-manager/README.md index bd8743d8..a7a0fdae 100644 --- a/charts/cluster-gateway-manager/README.md +++ b/charts/cluster-gateway-manager/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/cluster-gateway-manager --version=v2024.11.18 -$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 +$ helm search repo appscode/cluster-gateway-manager --version=v2024.12.26 +$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a cluster-gateway-manager on a [Kubernetes](http://kubernetes To install/upgrade the chart with the release name `cluster-gateway-manager`: ```bash -$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 +$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` The command deploys a cluster-gateway-manager on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -72,12 +72,12 @@ The following table lists the configurable parameters of the `cluster-gateway-ma Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 --set image=ghcr.io/kluster-manager/cluster-gateway-manager +$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --set image=ghcr.io/kluster-manager/cluster-gateway-manager ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 --values values.yaml +$ helm upgrade -i cluster-gateway-manager appscode/cluster-gateway-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-gateway-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml b/charts/cluster-gateway-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml index 465dd73b..9d69e582 100644 --- a/charts/cluster-gateway-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml +++ b/charts/cluster-gateway-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml @@ -24,22 +24,27 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ClusterManagementAddOn represents the registration of an add-on - to the cluster manager. This resource allows you to discover which add-ons - are available for the cluster manager and provides metadata information - about the add-ons. The ClusterManagementAddOn name is used for the namespace-scoped - ManagedClusterAddOn resource. ClusterManagementAddOn is a cluster-scoped - resource. + description: |- + ClusterManagementAddOn represents the registration of an add-on to the cluster manager. + This resource allows you to discover which add-ons are available for the cluster manager + and provides metadata information about the add-ons. The ClusterManagementAddOn name is used + for the namespace-scoped ManagedClusterAddOn resource. + ClusterManagementAddOn is a cluster-scoped resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -48,22 +53,21 @@ spec: the cluster management add-on. properties: addOnConfiguration: - description: 'Deprecated: Use supportedConfigs filed instead addOnConfiguration - is a reference to configuration information for the add-on. In scenario - where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn - resources need to be created and reference the same AddOnConfiguration.' + description: |- + Deprecated: Use supportedConfigs filed instead + addOnConfiguration is a reference to configuration information for the add-on. + In scenario where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn + resources need to be created and reference the same AddOnConfiguration. properties: crName: - description: crName is the name of the CR used to configure instances - of the managed add-on. This field should be configured if add-on - CR have a consistent name across the all of the ManagedCluster - instaces. + description: |- + crName is the name of the CR used to configure instances of the managed add-on. + This field should be configured if add-on CR have a consistent name across the all of the ManagedCluster instaces. type: string crdName: - description: crdName is the name of the CRD used to configure - instances of the managed add-on. This field should be configured - if the add-on have a CRD that controls the configuration of - the add-on. + description: |- + crdName is the name of the CRD used to configure instances of the managed add-on. + This field should be configured if the add-on have a CRD that controls the configuration of the add-on. type: string lastObservedGeneration: description: lastObservedGeneration is the observed generation @@ -87,22 +91,22 @@ spec: installStrategy: default: type: Manual - description: InstallStrategy represents that related ManagedClusterAddOns - should be installed on certain clusters. + description: |- + InstallStrategy represents that related ManagedClusterAddOns should be installed + on certain clusters. properties: placements: - description: Placements is a list of placement references honored - when install strategy type is Placements. All clusters selected - by these placements will install the addon If one cluster belongs - to multiple placements, it will only apply the strategy defined - later in the order. That is to say, The latter strategy overrides - the previous one. + description: |- + Placements is a list of placement references honored when install strategy type is + Placements. All clusters selected by these placements will install the addon + If one cluster belongs to multiple placements, it will only apply the strategy defined + later in the order. That is to say, The latter strategy overrides the previous one. items: properties: configs: - description: Configs is the configuration of managedClusterAddon - during installation. User can override the configuration - by updating the managedClusterAddon directly. + description: |- + Configs is the configuration of managedClusterAddon during installation. + User can override the configuration by updating the managedClusterAddon directly. items: properties: group: @@ -114,9 +118,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string resource: description: resource of the add-on configuration. @@ -138,9 +142,9 @@ spec: rolloutStrategy: default: type: All - description: The rollout strategy to apply addon configurations - change. The rollout strategy only watches the addon configurations - defined in ClusterManagementAddOn. + description: |- + The rollout strategy to apply addon configurations change. + The rollout strategy only watches the addon configurations defined in ClusterManagementAddOn. properties: all: description: All defines required fields for RolloutStrategy @@ -151,52 +155,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -205,26 +198,26 @@ spec: RolloutStrategy type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -232,10 +225,9 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of - clusters to deploy workload concurrently. The - default value for MaxConcurrency is determined - from the clustersPerDecisionGroup defined in the + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true @@ -244,52 +236,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -298,26 +279,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -326,52 +307,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -394,35 +364,37 @@ spec: x-kubernetes-list-type: map type: default: Manual - description: 'Type is the type of the install strategy, it can - be: - Manual: no automatic install - Placements: install to - clusters selected by placements.' + description: |- + Type is the type of the install strategy, it can be: + - Manual: no automatic install + - Placements: install to clusters selected by placements. enum: - Manual - Placements type: string type: object supportedConfigs: - description: supportedConfigs is a list of configuration types supported - by add-on. An empty list means the add-on does not require configurations. + description: |- + supportedConfigs is a list of configuration types supported by add-on. + An empty list means the add-on does not require configurations. The default is an empty list items: description: ConfigMeta represents a collection of metadata information for add-on configuration. properties: defaultConfig: - description: defaultConfig represents the namespace and name - of the default add-on configuration. In scenario where all - add-ons have a same configuration. + description: |- + defaultConfig represents the namespace and name of the default add-on configuration. + In scenario where all add-ons have a same configuration. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string required: - name @@ -452,9 +424,9 @@ spec: description: defaultconfigReferences is a list of current add-on default configuration references. items: - description: DefaultConfigReference is a reference to the current - add-on configuration. This resource is used to record the configuration - resource for the current add-on. + description: |- + DefaultConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config spec hash. @@ -464,9 +436,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -496,46 +468,45 @@ spec: monitored components for the operator. items: description: "Condition contains details for one aspect of - the current state of this API Resource. --- This struct + the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path - .status.conditions. For example, \n type FooStatus struct{ - // Represents the observations of a foo's current state. - // Known .status.conditions.type are: \"Available\", \"Progressing\", - and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields - }" + .status.conditions. For example,\n\n\n\ttype FooStatus + struct{\n\t // Represents the observations of a foo's + current state.\n\t // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // + +listType=map\n\t // +listMapKey=type\n\t Conditions + []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" + patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should - be when the underlying condition changed. If that is - not known, then using the time when the API field changed - is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the - current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define expected - values and meanings for this field, and whether the - values are considered a guaranteed API. The value should - be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -549,12 +520,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across - resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability - to deconflict is important. The regex it matches is - (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -570,9 +541,9 @@ spec: description: configReferences is a list of current add-on configuration references. items: - description: InstallConfigReference is a reference to the - current add-on configuration. This resource is used to record - the configuration resource for the current add-on. + description: |- + InstallConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config name @@ -583,9 +554,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -598,18 +569,18 @@ spec: description: group of the add-on configuration. type: string lastAppliedConfig: - description: lastAppliedConfig records the config spec - hash when the all the corresponding ManagedClusterAddOn - are applied successfully. + description: |- + lastAppliedConfig records the config spec hash when the all the corresponding + ManagedClusterAddOn are applied successfully. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -618,22 +589,21 @@ spec: - name type: object lastKnownGoodConfig: - description: lastKnownGoodConfig records the last known - good config spec hash. For fresh install or rollout - with type UpdateAll or RollingUpdate, the lastKnownGoodConfig - is the same as lastAppliedConfig. For rollout with type - RollingUpdateWithCanary, the lastKnownGoodConfig is - the last successfully applied config spec hash of the - canary placement. + description: |- + lastKnownGoodConfig records the last known good config spec hash. + For fresh install or rollout with type UpdateAll or RollingUpdate, the + lastKnownGoodConfig is the same as lastAppliedConfig. + For rollout with type RollingUpdateWithCanary, the lastKnownGoodConfig + is the last successfully applied config spec hash of the canary placement. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. diff --git a/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml b/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml index 6e75601a..294939ea 100644 --- a/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml +++ b/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml @@ -17,22 +17,27 @@ spec: - name: v1beta2 schema: openAPIV3Schema: - description: ManagedClusterSetBinding projects a ManagedClusterSet into a - certain namespace. You can create a ManagedClusterSetBinding in a namespace - and bind it to a ManagedClusterSet if both have a RBAC rules to CREATE on - the virtual subresource of managedclustersets/bind. Workloads that you create - in the same namespace can only be distributed to ManagedClusters in ManagedClusterSets - that are bound in this namespace by higher-level controllers. + description: |- + ManagedClusterSetBinding projects a ManagedClusterSet into a certain namespace. + You can create a ManagedClusterSetBinding in a namespace and bind it to a + ManagedClusterSet if both have a RBAC rules to CREATE on the virtual subresource of managedclustersets/bind. + Workloads that you create in the same namespace can only be distributed to ManagedClusters + in ManagedClusterSets that are bound in this namespace by higher-level controllers. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -40,11 +45,11 @@ spec: description: Spec defines the attributes of ManagedClusterSetBinding. properties: clusterSet: - description: ClusterSet is the name of the ManagedClusterSet to bind. - It must match the instance name of the ManagedClusterSetBinding - and cannot change once created. User is allowed to set this field - if they have an RBAC rule to CREATE on the virtual subresource of - managedclustersets/bind. + description: |- + ClusterSet is the name of the ManagedClusterSet to bind. It must match the + instance name of the ManagedClusterSetBinding and cannot change once created. + User is allowed to set this field if they have an RBAC rule to CREATE on the + virtual subresource of managedclustersets/bind. minLength: 1 type: string type: object @@ -56,42 +61,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -105,11 +110,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_placements.yaml b/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_placements.yaml index dd4ac28c..fdb3729f 100644 --- a/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_placements.yaml +++ b/charts/cluster-gateway-manager/crds/cluster.open-cluster-management.io_placements.yaml @@ -24,34 +24,49 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: "Placement defines a rule to select a set of ManagedClusters - from the ManagedClusterSets bound to the placement namespace. \n Here is - how the placement policy combines with other selection methods to determine - a matching list of ManagedClusters: 1. Kubernetes clusters are registered - with hub as cluster-scoped ManagedClusters; 2. ManagedClusters are organized - into cluster-scoped ManagedClusterSets; 3. ManagedClusterSets are bound - to workload namespaces; 4. Namespace-scoped Placements specify a slice of - ManagedClusterSets which select a working set of potential ManagedClusters; - 5. Then Placements subselect from that working set using label/claim selection. - \n A ManagedCluster will not be selected if no ManagedClusterSet is bound - to the placement namespace. A user is able to bind a ManagedClusterSet to - a namespace by creating a ManagedClusterSetBinding in that namespace if - they have an RBAC rule to CREATE on the virtual subresource of `managedclustersets/bind`. - \n A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement - name} will be created to represent the ManagedClusters selected by this - placement. \n If a ManagedCluster is selected and added into the PlacementDecisions, - other components may apply workload on it; once it is removed from the PlacementDecisions, - the workload applied on this ManagedCluster should be evicted accordingly." + description: |- + Placement defines a rule to select a set of ManagedClusters from the ManagedClusterSets bound + to the placement namespace. + + + Here is how the placement policy combines with other selection methods to determine a matching + list of ManagedClusters: + 1. Kubernetes clusters are registered with hub as cluster-scoped ManagedClusters; + 2. ManagedClusters are organized into cluster-scoped ManagedClusterSets; + 3. ManagedClusterSets are bound to workload namespaces; + 4. Namespace-scoped Placements specify a slice of ManagedClusterSets which select a working set + of potential ManagedClusters; + 5. Then Placements subselect from that working set using label/claim selection. + + + A ManagedCluster will not be selected if no ManagedClusterSet is bound to the placement + namespace. A user is able to bind a ManagedClusterSet to a namespace by creating a + ManagedClusterSetBinding in that namespace if they have an RBAC rule to CREATE on the virtual + subresource of `managedclustersets/bind`. + + + A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement name} + will be created to represent the ManagedClusters selected by this placement. + + + If a ManagedCluster is selected and added into the PlacementDecisions, other components may + apply workload on it; once it is removed from the PlacementDecisions, the workload applied on + this ManagedCluster should be evicted accordingly. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -59,12 +74,11 @@ spec: description: Spec defines the attributes of Placement. properties: clusterSets: - description: ClusterSets represent the ManagedClusterSets from which - the ManagedClusters are selected. If the slice is empty, ManagedClusters - will be selected from the ManagedClusterSets bound to the placement - namespace, otherwise ManagedClusters will be selected from the intersection - of this slice and the ManagedClusterSets bound to the placement - namespace. + description: |- + ClusterSets represent the ManagedClusterSets from which the ManagedClusters are selected. + If the slice is empty, ManagedClusters will be selected from the ManagedClusterSets bound to the placement + namespace, otherwise ManagedClusters will be selected from the intersection of this slice and the + ManagedClusterSets bound to the placement namespace. items: type: string type: array @@ -81,32 +95,28 @@ spec: - type: integer - type: string default: 100% - description: "ClustersPerDecisionGroup is a specific number - or percentage of the total selected clusters. The specific - number will divide the placementDecisions to decisionGroups - each group has max number of clusters equal to that specific - number. The percentage will divide the placementDecisions - to decisionGroups each group has max number of clusters - based on the total num of selected clusters and percentage. - ex; for a total 100 clusters selected, ClustersPerDecisionGroup - equal to 20% will divide the placement decision to 5 groups - each group should have 20 clusters. Default is having all - clusters in a single group. \n The predefined decisionGroups - is expected to be a subset of the selected clusters and - the number of items in each group SHOULD be less than ClustersPerDecisionGroup. - Once the number of items exceeds the ClustersPerDecisionGroup, - the decisionGroups will also be be divided into multiple - decisionGroups with same GroupName but different GroupIndex." + description: |- + ClustersPerDecisionGroup is a specific number or percentage of the total selected clusters. + The specific number will divide the placementDecisions to decisionGroups each group has max number of clusters + equal to that specific number. + The percentage will divide the placementDecisions to decisionGroups each group has max number of clusters based + on the total num of selected clusters and percentage. + ex; for a total 100 clusters selected, ClustersPerDecisionGroup equal to 20% will divide the placement decision + to 5 groups each group should have 20 clusters. + Default is having all clusters in a single group. + + + The predefined decisionGroups is expected to be a subset of the selected clusters and the number of items in each + group SHOULD be less than ClustersPerDecisionGroup. Once the number of items exceeds the ClustersPerDecisionGroup, + the decisionGroups will also be be divided into multiple decisionGroups with same GroupName but different GroupIndex. pattern: ^((100|[1-9][0-9]{0,1})%|[1-9][0-9]*)$ x-kubernetes-int-or-string: true decisionGroups: - description: DecisionGroups represents a list of predefined - groups to put decision results. Decision groups will be - constructed based on the DecisionGroups field at first. - The clusters not included in the DecisionGroups will be - divided to other decision groups afterwards. Each decision - group should not have the number of clusters larger than - the ClustersPerDecisionGroup. + description: |- + DecisionGroups represents a list of predefined groups to put decision results. + Decision groups will be constructed based on the DecisionGroups field at first. The clusters not included in the + DecisionGroups will be divided to other decision groups afterwards. Each decision group should not have the number + of clusters larger than the ClustersPerDecisionGroup. items: description: DecisionGroup define a subset of clusters that will be added to placementDecisions with groupName label. @@ -124,32 +134,29 @@ spec: claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -165,46 +172,42 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -223,18 +226,18 @@ spec: type: object type: object numberOfClusters: - description: NumberOfClusters represents the desired number of ManagedClusters - to be selected which meet the placement requirements. 1) If not - specified, all ManagedClusters which meet the placement requirements - (including ClusterSets, and Predicates) will be selected; 2) Otherwise - if the nubmer of ManagedClusters meet the placement requirements - is larger than NumberOfClusters, a random subset with desired number - of ManagedClusters will be selected; 3) If the nubmer of ManagedClusters - meet the placement requirements is equal to NumberOfClusters, all - of them will be selected; 4) If the nubmer of ManagedClusters meet - the placement requirements is less than NumberOfClusters, all of - them will be selected, and the status of condition `PlacementConditionSatisfied` - will be set to false; + description: |- + NumberOfClusters represents the desired number of ManagedClusters to be selected which meet the + placement requirements. + 1) If not specified, all ManagedClusters which meet the placement requirements (including ClusterSets, + and Predicates) will be selected; + 2) Otherwise if the nubmer of ManagedClusters meet the placement requirements is larger than + NumberOfClusters, a random subset with desired number of ManagedClusters will be selected; + 3) If the nubmer of ManagedClusters meet the placement requirements is equal to NumberOfClusters, + all of them will be selected; + 4) If the nubmer of ManagedClusters meet the placement requirements is less than NumberOfClusters, + all of them will be selected, and the status of condition `PlacementConditionSatisfied` will be + set to false; format: int32 type: integer predicates: @@ -244,16 +247,13 @@ spec: description: ClusterPredicate represents a predicate to select ManagedClusters. properties: requiredClusterSelector: - description: RequiredClusterSelector represents a selector of - ManagedClusters by label and claim. If specified, 1) Any ManagedCluster, - which does not match the selector, should not be selected - by this ClusterPredicate; 2) If a selected ManagedCluster - (of this ClusterPredicate) ceases to match the selector (e.g. - due to an update) of any ClusterPredicate, it will be eventually - removed from the placement decisions; 3) If a ManagedCluster - (not selected previously) starts to match the selector, it - will either be selected or at least has a chance to be selected - (when NumberOfClusters is specified); + description: |- + RequiredClusterSelector represents a selector of ManagedClusters by label and claim. If specified, + 1) Any ManagedCluster, which does not match the selector, should not be selected by this ClusterPredicate; + 2) If a selected ManagedCluster (of this ClusterPredicate) ceases to match the selector (e.g. due to + an update) of any ClusterPredicate, it will be eventually removed from the placement decisions; + 3) If a ManagedCluster (not selected previously) starts to match the selector, it will either + be selected or at least has a chance to be selected (when NumberOfClusters is specified); properties: claimSelector: description: ClaimSelector represents a selector of ManagedClusters @@ -263,8 +263,8 @@ spec: description: matchExpressions is a list of cluster claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -272,20 +272,20 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -300,8 +300,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -309,33 +309,33 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -343,10 +343,10 @@ spec: type: object type: array prioritizerPolicy: - description: PrioritizerPolicy defines the policy of the prioritizers. - If this field is unset, then default prioritizer mode and configurations - are used. Referring to PrioritizerPolicy to see more description - about Mode and Configurations. + description: |- + PrioritizerPolicy defines the policy of the prioritizers. + If this field is unset, then default prioritizer mode and configurations are used. + Referring to PrioritizerPolicy to see more description about Mode and Configurations. properties: configurations: items: @@ -362,37 +362,35 @@ spec: resource name and score name. properties: resourceName: - description: ResourceName defines the resource name - of the AddOnPlacementScore. The placement prioritizer - selects AddOnPlacementScore CR by this name. + description: |- + ResourceName defines the resource name of the AddOnPlacementScore. + The placement prioritizer selects AddOnPlacementScore CR by this name. type: string scoreName: - description: ScoreName defines the score name inside - AddOnPlacementScore. AddOnPlacementScore contains - a list of score name and score value, ScoreName - specify the score to be used by the prioritizer. + description: |- + ScoreName defines the score name inside AddOnPlacementScore. + AddOnPlacementScore contains a list of score name and score value, ScoreName specify the score to be used by + the prioritizer. type: string required: - resourceName - scoreName type: object builtIn: - description: 'BuiltIn defines the name of a BuiltIn - prioritizer. Below are the valid BuiltIn prioritizer - names. 1) Balance: balance the decisions among the - clusters. 2) Steady: ensure the existing decision - is stabilized. 3) ResourceAllocatableCPU & ResourceAllocatableMemory: - sort clusters based on the allocatable. 4) Spread: - spread the workload evenly to topologies.' + description: |- + BuiltIn defines the name of a BuiltIn prioritizer. Below are the valid BuiltIn prioritizer names. + 1) Balance: balance the decisions among the clusters. + 2) Steady: ensure the existing decision is stabilized. + 3) ResourceAllocatableCPU & ResourceAllocatableMemory: sort clusters based on the allocatable. + 4) Spread: spread the workload evenly to topologies. type: string type: default: BuiltIn - description: Type defines the type of the prioritizer - score. Type is either "BuiltIn", "AddOn" or "", where - "" is "BuiltIn" by default. When the type is "BuiltIn", - need to specify a BuiltIn prioritizer name in BuiltIn. - When the type is "AddOn", need to configure the score - source in AddOn. + description: |- + Type defines the type of the prioritizer score. + Type is either "BuiltIn", "AddOn" or "", where "" is "BuiltIn" by default. + When the type is "BuiltIn", need to specify a BuiltIn prioritizer name in BuiltIn. + When the type is "AddOn", need to configure the score source in AddOn. enum: - BuiltIn - AddOn @@ -402,14 +400,13 @@ spec: type: object weight: default: 1 - description: Weight defines the weight of the prioritizer - score. The value must be ranged in [-10,10]. Each prioritizer - will calculate an integer score of a cluster in the range - of [-100, 100]. The final score of a cluster will be sum(weight - * prioritizer_score). A higher weight indicates that the - prioritizer weights more in the cluster selection, while - 0 weight indicates that the prioritizer is disabled. A - negative weight indicates wants to select the last ones. + description: |- + Weight defines the weight of the prioritizer score. The value must be ranged in [-10,10]. + Each prioritizer will calculate an integer score of a cluster in the range of [-100, 100]. + The final score of a cluster will be sum(weight * prioritizer_score). + A higher weight indicates that the prioritizer weights more in the cluster selection, + while 0 weight indicates that the prioritizer is disabled. A negative weight indicates + wants to select the last ones. format: int32 maximum: 10 minimum: -10 @@ -420,43 +417,38 @@ spec: type: array mode: default: Additive - description: Mode is either Exact, Additive, "" where "" is Additive - by default. In Additive mode, any prioritizer not explicitly - enumerated is enabled in its default Configurations, in which - Steady and Balance prioritizers have the weight of 1 while other - prioritizers have the weight of 0. Additive doesn't require - configuring all prioritizers. The default Configurations may - change in the future, and additional prioritization will happen. - In Exact mode, any prioritizer not explicitly enumerated is - weighted as zero. Exact requires knowing the full set of prioritizers - you want, but avoids behavior changes between releases. + description: |- + Mode is either Exact, Additive, "" where "" is Additive by default. + In Additive mode, any prioritizer not explicitly enumerated is enabled in its default Configurations, + in which Steady and Balance prioritizers have the weight of 1 while other prioritizers have the weight of 0. + Additive doesn't require configuring all prioritizers. The default Configurations may change in the future, + and additional prioritization will happen. + In Exact mode, any prioritizer not explicitly enumerated is weighted as zero. + Exact requires knowing the full set of prioritizers you want, but avoids behavior changes between releases. type: string type: object spreadPolicy: - description: SpreadPolicy defines how placement decisions should be - distributed among a set of ManagedClusters. + description: |- + SpreadPolicy defines how placement decisions should be distributed among a + set of ManagedClusters. properties: spreadConstraints: - description: SpreadConstraints defines how the placement decision - should be distributed among a set of ManagedClusters. The importance - of the SpreadConstraintsTerms follows the natural order of their - index in the slice. The scheduler first consider SpreadConstraintsTerms - with smaller index then those with larger index to distribute - the placement decision. + description: |- + SpreadConstraints defines how the placement decision should be distributed among a set of ManagedClusters. + The importance of the SpreadConstraintsTerms follows the natural order of their index in the slice. + The scheduler first consider SpreadConstraintsTerms with smaller index then those with larger index + to distribute the placement decision. items: description: SpreadConstraintsTerm defines a terminology to spread placement decisions. properties: maxSkew: default: 1 - description: MaxSkew represents the degree to which the - workload may be unevenly distributed. Skew is the maximum - difference between the number of selected ManagedClusters - in a topology and the global minimum. The global minimum - is the minimum number of selected ManagedClusters for - the topologies within the same TopologyKey. The minimum - possible value of MaxSkew is 1, and the default value - is 1. + description: |- + MaxSkew represents the degree to which the workload may be unevenly distributed. + Skew is the maximum difference between the number of selected ManagedClusters in a topology and the global minimum. + The global minimum is the minimum number of selected ManagedClusters for the topologies within the same TopologyKey. + The minimum possible value of MaxSkew is 1, and the default value is 1. format: int32 minimum: 1 type: integer @@ -475,13 +467,11 @@ spec: type: string whenUnsatisfiable: default: ScheduleAnyway - description: WhenUnsatisfiable represents the action of - the scheduler when MaxSkew cannot be satisfied. It could - be DoNotSchedule or ScheduleAnyway. The default value - is ScheduleAnyway. DoNotSchedule instructs the scheduler - not to schedule more ManagedClusters when MaxSkew is not - satisfied. ScheduleAnyway instructs the scheduler to keep - scheduling even if MaxSkew is not satisfied. + description: |- + WhenUnsatisfiable represents the action of the scheduler when MaxSkew cannot be satisfied. + It could be DoNotSchedule or ScheduleAnyway. The default value is ScheduleAnyway. + DoNotSchedule instructs the scheduler not to schedule more ManagedClusters when MaxSkew is not satisfied. + ScheduleAnyway instructs the scheduler to keep scheduling even if MaxSkew is not satisfied. enum: - DoNotSchedule - ScheduleAnyway @@ -494,53 +484,52 @@ spec: type: array type: object tolerations: - description: Tolerations are applied to placements, and allow (but - do not require) the managed clusters with certain taints to be selected - by placements with matching tolerations. + description: |- + Tolerations are applied to placements, and allow (but do not require) the managed clusters with + certain taints to be selected by placements with matching tolerations. items: - description: Toleration represents the toleration object that can - be attached to a placement. The placement this Toleration is attached - to tolerates any taint that matches the triple - using the matching operator . + description: |- + Toleration represents the toleration object that can be attached to a placement. + The placement this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSelect, PreferNoSelect and NoSelectIfNew. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSelect, PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string operator: default: Equal - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a placement - can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a placement can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoSelect/PreferNoSelect, - otherwise this field is ignored) tolerates the taint. The - default value is nil, which indicates it tolerates the taint - forever. The start time of counting the TolerationSeconds - should be the TimeAdded in Taint, not the cluster scheduled - time or TolerationSeconds added time. + description: |- + TolerationSeconds represents the period of time the toleration (which must be of effect + NoSelect/PreferNoSelect, otherwise this field is ignored) tolerates the taint. + The default value is nil, which indicates it tolerates the taint forever. + The start time of counting the TolerationSeconds should be the TimeAdded in Taint, not the cluster + scheduled time or TolerationSeconds added time. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. maxLength: 1024 type: string type: object @@ -554,42 +543,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -603,11 +592,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-gateway/Chart.yaml b/charts/cluster-gateway/Chart.yaml index d60f75db..23d94934 100644 --- a/charts/cluster-gateway/Chart.yaml +++ b/charts/cluster-gateway/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: cluster-gateway description: A Helm chart for Cluster-Gateway type: application -version: v2024.11.18 -appVersion: v1.9.2 +version: v2024.12.26 +appVersion: v1.10.0 diff --git a/charts/cluster-gateway/README.md b/charts/cluster-gateway/README.md index 897229eb..9a7f3ce1 100644 --- a/charts/cluster-gateway/README.md +++ b/charts/cluster-gateway/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/cluster-gateway --version=v2024.11.18 -$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.11.18 +$ helm search repo appscode/cluster-gateway --version=v2024.12.26 +$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a cluster-gateway on a [Kubernetes](http://kubernetes.io) clu To install/upgrade the chart with the release name `cluster-gateway`: ```bash -$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.11.18 +$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.12.26 ``` The command deploys a cluster-gateway on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -59,12 +59,12 @@ The following table lists the configurable parameters of the `cluster-gateway` c Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.11.18 --set image=ghcr.io/kluster-manager/cluster-gateway +$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.12.26 --set image=ghcr.io/kluster-manager/cluster-gateway ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.11.18 --values values.yaml +$ helm upgrade -i cluster-gateway appscode/cluster-gateway -n open-cluster-management --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-manager-hub/Chart.yaml b/charts/cluster-manager-hub/Chart.yaml index 14024a22..f570d0f6 100644 --- a/charts/cluster-manager-hub/Chart.yaml +++ b/charts/cluster-manager-hub/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: cluster-manager-hub description: A Helm chart for Open Cluster Manager Hub type: application -version: v2024.7.10 -appVersion: v0.14.0 +version: v2024.12.26 +appVersion: v0.15.2 home: https://open-cluster-management.io sources: - https://github.com/kluster-manager/installer diff --git a/charts/cluster-manager-hub/README.md b/charts/cluster-manager-hub/README.md index 72396cb8..ee9b105b 100644 --- a/charts/cluster-manager-hub/README.md +++ b/charts/cluster-manager-hub/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable/ $ helm repo update -$ helm search repo appscode/cluster-manager-hub --version=v2024.7.10 -$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.7.10 +$ helm search repo appscode/cluster-manager-hub --version=v2024.12.26 +$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a Cluster Manager Hub on a [Kubernetes](http://kubernetes.io) To install/upgrade the chart with the release name `cluster-manager-hub`: ```bash -$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.7.10 +$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.12.26 ``` The command deploys a Cluster Manager Hub on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -66,12 +66,12 @@ The following table lists the configurable parameters of the `cluster-manager-hu Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.7.10 --set hub.registry=quay.io/open-cluster-management +$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.12.26 --set hub.registry=quay.io/open-cluster-management ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.7.10 --values values.yaml +$ helm upgrade -i cluster-manager-hub appscode/cluster-manager-hub -n open-cluster-management --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-manager-hub/crds/operator.open-cluster-management.io_clustermanagers.yaml b/charts/cluster-manager-hub/crds/operator.open-cluster-management.io_clustermanagers.yaml index 7b8aea1c..cdaa058e 100644 --- a/charts/cluster-manager-hub/crds/operator.open-cluster-management.io_clustermanagers.yaml +++ b/charts/cluster-manager-hub/crds/operator.open-cluster-management.io_clustermanagers.yaml @@ -14,21 +14,25 @@ spec: - name: v1 schema: openAPIV3Schema: - description: ClusterManager configures the controllers on the hub that govern - registration and work distribution for attached Klusterlets. In Default - mode, ClusterManager will only be deployed in open-cluster-management-hub - namespace. In Hosted mode, ClusterManager will be deployed in the namespace - with the same name as cluster manager. + description: |- + ClusterManager configures the controllers on the hub that govern registration and work distribution for attached Klusterlets. + In Default mode, ClusterManager will only be deployed in open-cluster-management-hub namespace. + In Hosted mode, ClusterManager will be deployed in the namespace with the same name as cluster manager. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -44,16 +48,16 @@ spec: of addon manager properties: featureGates: - description: 'FeatureGates represents the list of feature gates - for addon manager If it is set empty, default feature gates - will be used. If it is set, featuregate/Foo is an example of - one item in FeatureGates: 1. If featuregate/Foo does not exist, - registration-operator will discard it 2. If featuregate/Foo - exists and is false by default. It is now possible to set featuregate/Foo=[false|true] - 3. If featuregate/Foo exists and is true by default. If a cluster-admin - upgrading from 1 to 2 wants to continue having featuregate/Foo=false, - he can set featuregate/Foo=false before upgrading. Let''s say - the cluster-admin wants featuregate/Foo=false.' + description: "FeatureGates represents the list of feature gates + for addon manager\nIf it is set empty, default feature gates + will be used.\nIf it is set, featuregate/Foo is an example of + one item in FeatureGates:\n 1. If featuregate/Foo does not + exist, registration-operator will discard it\n 2. If featuregate/Foo + exists and is false by default. It is now possible to set featuregate/Foo=[false|true]\n + \ 3. If featuregate/Foo exists and is true by default. If a + cluster-admin upgrading from 1 to 2 wants to continue having + featuregate/Foo=false,\n \the can set featuregate/Foo=false + before upgrading. Let's say the cluster-admin wants featuregate/Foo=false." items: properties: feature: @@ -61,11 +65,10 @@ spec: type: string mode: default: Disable - description: Mode is either Enable, Disable, "" where "" - is Disable by default. In Enable mode, a valid feature - gate `featuregate/Foo` will be set to "--featuregate/Foo=true". - In Disable mode, a valid feature gate `featuregate/Foo` - will be set to "--featuregate/Foo=false". + description: |- + Mode is either Enable, Disable, "" where "" is Disable by default. + In Enable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=true". + In Disable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=false". enum: - Enable - Disable @@ -83,7 +86,8 @@ spec: deployOption: default: mode: Default - description: DeployOption contains the options of deploying a cluster-manager + description: |- + DeployOption contains the options of deploying a cluster-manager Default mode is used if DeployOption is not set. properties: hosted: @@ -95,9 +99,10 @@ spec: customized webhook-server configuration of registration. properties: address: - description: Address represents the address of a webhook-server. - It could be in IP format or fqdn format. The Address - must be reachable by apiserver of the hub cluster. + description: |- + Address represents the address of a webhook-server. + It could be in IP format or fqdn format. + The Address must be reachable by apiserver of the hub cluster. pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ type: string port: @@ -115,9 +120,10 @@ spec: webhook-server configuration of work. properties: address: - description: Address represents the address of a webhook-server. - It could be in IP format or fqdn format. The Address - must be reachable by apiserver of the hub cluster. + description: |- + Address represents the address of a webhook-server. + It could be in IP format or fqdn format. + The Address must be reachable by apiserver of the hub cluster. pattern: ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$ type: string port: @@ -133,14 +139,13 @@ spec: type: object mode: default: Default - description: 'Mode can be Default or Hosted. In Default mode, - the Hub is installed as a whole and all parts of Hub are deployed - in the same cluster. In Hosted mode, only crd and configurations - are installed on one cluster(defined as hub-cluster). Controllers - run in another cluster (defined as management-cluster) and connect - to the hub with the kubeconfig in secret of "external-hub-kubeconfig"(a - kubeconfig of hub-cluster with cluster-admin permission). Note: - Do not modify the Mode field once it''s applied.' + description: |- + Mode can be Default or Hosted. + In Default mode, the Hub is installed as a whole and all parts of Hub are deployed in the same cluster. + In Hosted mode, only crd and configurations are installed on one cluster(defined as hub-cluster). Controllers run in another + cluster (defined as management-cluster) and connect to the hub with the kubeconfig in secret of "external-hub-kubeconfig"(a kubeconfig + of hub-cluster with cluster-admin permission). + Note: Do not modify the Mode field once it's applied. enum: - Default - Hosted @@ -159,45 +164,44 @@ spec: on. The default is an empty list. type: object tolerations: - description: Tolerations are attached by pods to tolerate any - taint that matches the triple using the matching - operator . The default is an empty list. + description: |- + Tolerations are attached by pods to tolerate any taint that matches + the triple using the matching operator . + The default is an empty list. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, allowed - values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match - all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to - the value. Valid operators are Exists and Equal. Defaults - to Equal. Exists is equivalent to wildcard for value, - so that a pod can tolerate all taints of a particular - category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of - time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the taint - forever (do not evict). Zero and negative values will - be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array @@ -212,26 +216,25 @@ spec: of registration properties: autoApproveUsers: - description: AutoApproveUser represents a list of users that can - auto approve CSR and accept client. If the credential of the - bootstrap-hub-kubeconfig matches to the users, the cluster created - by the bootstrap-hub-kubeconfig will be auto-registered into - the hub cluster. This takes effect only when ManagedClusterAutoApproval - feature gate is enabled. + description: |- + AutoApproveUser represents a list of users that can auto approve CSR and accept client. If the credential of the + bootstrap-hub-kubeconfig matches to the users, the cluster created by the bootstrap-hub-kubeconfig will + be auto-registered into the hub cluster. This takes effect only when ManagedClusterAutoApproval feature gate + is enabled. items: type: string type: array featureGates: - description: 'FeatureGates represents the list of feature gates - for registration If it is set empty, default feature gates will - be used. If it is set, featuregate/Foo is an example of one - item in FeatureGates: 1. If featuregate/Foo does not exist, - registration-operator will discard it 2. If featuregate/Foo - exists and is false by default. It is now possible to set featuregate/Foo=[false|true] - 3. If featuregate/Foo exists and is true by default. If a cluster-admin - upgrading from 1 to 2 wants to continue having featuregate/Foo=false, - he can set featuregate/Foo=false before upgrading. Let''s say - the cluster-admin wants featuregate/Foo=false.' + description: "FeatureGates represents the list of feature gates + for registration\nIf it is set empty, default feature gates + will be used.\nIf it is set, featuregate/Foo is an example of + one item in FeatureGates:\n 1. If featuregate/Foo does not + exist, registration-operator will discard it\n 2. If featuregate/Foo + exists and is false by default. It is now possible to set featuregate/Foo=[false|true]\n + \ 3. If featuregate/Foo exists and is true by default. If a + cluster-admin upgrading from 1 to 2 wants to continue having + featuregate/Foo=false,\n \the can set featuregate/Foo=false + before upgrading. Let's say the cluster-admin wants featuregate/Foo=false." items: properties: feature: @@ -239,11 +242,10 @@ spec: type: string mode: default: Disable - description: Mode is either Enable, Disable, "" where "" - is Disable by default. In Enable mode, a valid feature - gate `featuregate/Foo` will be set to "--featuregate/Foo=true". - In Disable mode, a valid feature gate `featuregate/Foo` - will be set to "--featuregate/Foo=false". + description: |- + Mode is either Enable, Disable, "" where "" is Disable by default. + In Enable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=true". + In Disable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=false". enum: - Enable - Disable @@ -259,28 +261,33 @@ spec: of registration controller/webhook installed on hub. type: string resourceRequirement: - description: ResourceRequirement specify QoS classes of deployments - managed by clustermanager. It applies to all the containers in the - deployments. + description: |- + ResourceRequirement specify QoS classes of deployments managed by clustermanager. + It applies to all the containers in the deployments. properties: resourceRequirements: description: ResourceRequirements defines resource requests and limits when Type is ResourceQosClassResourceRequirement properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. It can only be - set for containers." + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + + This field is immutable. It can only be set for containers. items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry in - pod.spec.resourceClaims of the Pod where this field - is used. It makes that resource available inside a - container. + description: |- + Name must match the name of one entry in pod.spec.resourceClaims of + the Pod where this field is used. It makes that resource available + inside a container. type: string required: - name @@ -296,8 +303,9 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object requests: additionalProperties: @@ -306,11 +314,11 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. Requests cannot exceed - Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object type: object type: @@ -327,16 +335,16 @@ spec: description: WorkConfiguration contains the configuration of work properties: featureGates: - description: 'FeatureGates represents the list of feature gates - for work If it is set empty, default feature gates will be used. - If it is set, featuregate/Foo is an example of one item in FeatureGates: - 1. If featuregate/Foo does not exist, registration-operator - will discard it 2. If featuregate/Foo exists and is false by - default. It is now possible to set featuregate/Foo=[false|true] - 3. If featuregate/Foo exists and is true by default. If a cluster-admin - upgrading from 1 to 2 wants to continue having featuregate/Foo=false, - he can set featuregate/Foo=false before upgrading. Let''s say - the cluster-admin wants featuregate/Foo=false.' + description: "FeatureGates represents the list of feature gates + for work\nIf it is set empty, default feature gates will be + used.\nIf it is set, featuregate/Foo is an example of one item + in FeatureGates:\n 1. If featuregate/Foo does not exist, registration-operator + will discard it\n 2. If featuregate/Foo exists and is false + by default. It is now possible to set featuregate/Foo=[false|true]\n + \ 3. If featuregate/Foo exists and is true by default. If a + cluster-admin upgrading from 1 to 2 wants to continue having + featuregate/Foo=false,\n \the can set featuregate/Foo=false + before upgrading. Let's say the cluster-admin wants featuregate/Foo=false." items: properties: feature: @@ -344,11 +352,10 @@ spec: type: string mode: default: Disable - description: Mode is either Enable, Disable, "" where "" - is Disable by default. In Enable mode, a valid feature - gate `featuregate/Foo` will be set to "--featuregate/Foo=true". - In Disable mode, a valid feature gate `featuregate/Foo` - will be set to "--featuregate/Foo=false". + description: |- + Mode is either Enable, Disable, "" where "" is Disable by default. + In Enable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=true". + In Disable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=false". enum: - Enable - Disable @@ -359,15 +366,17 @@ spec: type: array workDriver: default: kube - description: "WorkDriver represents the type of work driver. Possible - values are \"kube\", \"mqtt\", or \"grpc\". If not provided, - the default value is \"kube\". If set to non-\"kube\" drivers, - the klusterlet need to use the same driver. and the driver configuration - must be provided in a secret named \"work-driver-config\" in - the namespace where the cluster manager is running, adhering - to the following structure: config.yaml: | - \n For detailed driver configuration, please refer to the sdk-go - documentation: https://github.com/open-cluster-management-io/sdk-go/blob/main/pkg/cloudevents/README.md#supported-protocols-and-drivers" + description: |- + WorkDriver represents the type of work driver. Possible values are "kube", "mqtt", or "grpc". + If not provided, the default value is "kube". + If set to non-"kube" drivers, the klusterlet need to use the same driver. + and the driver configuration must be provided in a secret named "work-driver-config" + in the namespace where the cluster manager is running, adhering to the following structure: + config.yaml: | + + + + For detailed driver configuration, please refer to the sdk-go documentation: https://github.com/open-cluster-management-io/sdk-go/blob/main/pkg/cloudevents/README.md#supported-protocols-and-drivers enum: - kube - mqtt @@ -385,50 +394,52 @@ spec: govern the lifecycle of managed clusters. properties: conditions: - description: 'Conditions contain the different condition statuses - for this ClusterManager. Valid condition types are: Applied: Components - in hub are applied. Available: Components in hub are available and - ready to serve. Progressing: Components in hub are in a transitioning - state. Degraded: Components in hub do not match the desired configuration - and only provide degraded service.' + description: |- + Conditions contain the different condition statuses for this ClusterManager. + Valid condition types are: + Applied: Components in hub are applied. + Available: Components in hub are available and ready to serve. + Progressing: Components in hub are in a transitioning state. + Degraded: Components in hub do not match the desired configuration and only provide + degraded service. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -442,11 +453,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -462,9 +474,9 @@ spec: description: Generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction. items: - description: GenerationStatus keeps track of the generation for - a given resource so that decisions about forced updates can be - made. The definition matches the GenerationStatus defined in github.com/openshift/api/v1 + description: |- + GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made. + The definition matches the GenerationStatus defined in github.com/openshift/api/v1 properties: group: description: group is the group of the resource that you're diff --git a/charts/cluster-manager-hub/templates/clustermanager_cluster_role.yaml b/charts/cluster-manager-hub/templates/clustermanager_cluster_role.yaml index d39f3037..33e18b87 100644 --- a/charts/cluster-manager-hub/templates/clustermanager_cluster_role.yaml +++ b/charts/cluster-manager-hub/templates/clustermanager_cluster_role.yaml @@ -146,3 +146,9 @@ rules: - apiGroups: ["config.openshift.io"] resources: ["infrastructures"] verbs: ["get"] +- apiGroups: ["multicluster.x-k8s.io"] + resources: ["clusterprofiles"] + verbs: ["get", "list", "watch", "create", "update", "patch", "delete"] +- apiGroups: ["multicluster.x-k8s.io"] + resources: ["clusterprofiles/status"] + verbs: ["update", "patch"] diff --git a/charts/cluster-manager-spoke/Chart.yaml b/charts/cluster-manager-spoke/Chart.yaml index 4626e375..0ade8461 100644 --- a/charts/cluster-manager-spoke/Chart.yaml +++ b/charts/cluster-manager-spoke/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: cluster-manager-spoke description: A Helm chart to join a spoke cluster to Open Cluster Manager Hub type: application -version: v2024.9.30 -appVersion: v0.14.0 +version: v2024.12.26 +appVersion: v0.15.2 home: https://open-cluster-management.io sources: - https://github.com/kluster-manager/installer diff --git a/charts/cluster-manager-spoke/README.md b/charts/cluster-manager-spoke/README.md index 50d96c96..9766713b 100644 --- a/charts/cluster-manager-spoke/README.md +++ b/charts/cluster-manager-spoke/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable/ $ helm repo update -$ helm search repo appscode/cluster-manager-spoke --version=v2024.9.30 -$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.9.30 +$ helm search repo appscode/cluster-manager-spoke --version=v2024.12.26 +$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a Cluster Manager Spoke on a [Kubernetes](http://kubernetes.i To install/upgrade the chart with the release name `cluster-manager-spoke`: ```bash -$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.9.30 +$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.12.26 ``` The command deploys a Cluster Manager Spoke on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -63,7 +63,7 @@ The following table lists the configurable parameters of the `cluster-manager-sp | bundleVersion.placementImageVersion | | "" | | bundleVersion.workImageVersion | | "" | | bundleVersion.operatorImageVersion | | "" | -| bundleVersion.clusteradmImageVersion | | "v0.9.0" | +| bundleVersion.clusteradmImageVersion | | "v0.10.0" | | managedKubeconfig | | '' | | registrationFeatures | | [] | | workFeatures | | [] | @@ -72,12 +72,12 @@ The following table lists the configurable parameters of the `cluster-manager-sp Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.9.30 --set clusterMetadata.name=TBD +$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.12.26 --set clusterMetadata.name=TBD ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.9.30 --values values.yaml +$ helm upgrade -i cluster-manager-spoke appscode/cluster-manager-spoke -n open-cluster-management --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-manager-spoke/crds/operator.open-cluster-management.io_klusterlets.yaml b/charts/cluster-manager-spoke/crds/operator.open-cluster-management.io_klusterlets.yaml index 30debf7d..2daf2d99 100644 --- a/charts/cluster-manager-spoke/crds/operator.open-cluster-management.io_klusterlets.yaml +++ b/charts/cluster-manager-spoke/crds/operator.open-cluster-management.io_klusterlets.yaml @@ -14,22 +14,27 @@ spec: - name: v1 schema: openAPIV3Schema: - description: Klusterlet represents controllers to install the resources for - a managed cluster. When configured, the Klusterlet requires a secret named - bootstrap-hub-kubeconfig in the agent namespace to allow API requests to - the hub for the registration protocol. In Hosted mode, the Klusterlet requires - an additional secret named external-managed-kubeconfig in the agent namespace - to allow API requests to the managed cluster for resources installation. + description: |- + Klusterlet represents controllers to install the resources for a managed cluster. + When configured, the Klusterlet requires a secret named bootstrap-hub-kubeconfig in the + agent namespace to allow API requests to the hub for the registration protocol. + In Hosted mode, the Klusterlet requires an additional secret named external-managed-kubeconfig + in the agent namespace to allow API requests to the managed cluster for resources installation. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -38,9 +43,9 @@ spec: agent. properties: clusterName: - description: ClusterName is the name of the managed cluster to be - created on hub. The Klusterlet agent generates a random name if - it is not set, or discovers the appropriate cluster name on OpenShift. + description: |- + ClusterName is the name of the managed cluster to be created on hub. + The Klusterlet agent generates a random name if it is not set, or discovers the appropriate cluster name on OpenShift. maxLength: 63 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string @@ -48,32 +53,29 @@ spec: description: DeployOption contains the options of deploying a klusterlet properties: mode: - description: 'Mode can be Default, Hosted, Singleton or SingletonHosted. - It is Default mode if not specified In Default mode, all klusterlet - related resources are deployed on the managed cluster. In Hosted - mode, only crd and configurations are installed on the spoke/managed - cluster. Controllers run in another cluster (defined as management-cluster) - and connect to the mangaged cluster with the kubeconfig in secret - of "external-managed-kubeconfig"(a kubeconfig of managed-cluster - with cluster-admin permission). In Singleton mode, registration/work - agent is started as a single deployment. In SingletonHosted - mode, agent is started as a single deployment in hosted mode. - Note: Do not modify the Mode field once it''s applied.' + description: |- + Mode can be Default, Hosted, Singleton or SingletonHosted. It is Default mode if not specified + In Default mode, all klusterlet related resources are deployed on the managed cluster. + In Hosted mode, only crd and configurations are installed on the spoke/managed cluster. Controllers run in another + cluster (defined as management-cluster) and connect to the mangaged cluster with the kubeconfig in secret of + "external-managed-kubeconfig"(a kubeconfig of managed-cluster with cluster-admin permission). + In Singleton mode, registration/work agent is started as a single deployment. + In SingletonHosted mode, agent is started as a single deployment in hosted mode. + Note: Do not modify the Mode field once it's applied. type: string type: object externalServerURLs: - description: ExternalServerURLs represents a list of apiserver urls - and ca bundles that is accessible externally If it is set empty, - managed cluster has no externally accessible url that hub cluster - can visit. + description: |- + ExternalServerURLs represents a list of apiserver urls and ca bundles that is accessible externally + If it is set empty, managed cluster has no externally accessible url that hub cluster can visit. items: description: ServerURL represents the apiserver url and ca bundle that is accessible externally properties: caBundle: - description: CABundle is the ca bundle to connect to apiserver - of the managed cluster. System certs are used if it is not - set. + description: |- + CABundle is the ca bundle to connect to apiserver of the managed cluster. + System certs are used if it is not set. format: byte type: string url: @@ -83,9 +85,9 @@ spec: type: object type: array hubApiServerHostAlias: - description: HubApiServerHostAlias contains the host alias for hub - api server. registration-agent and work-agent will use it to communicate - with hub api server. + description: |- + HubApiServerHostAlias contains the host alias for hub api server. + registration-agent and work-agent will use it to communicate with hub api server. properties: hostname: description: Hostname for the above IP address. @@ -100,20 +102,20 @@ spec: - ip type: object imagePullSpec: - description: ImagePullSpec represents the desired image configuration - of agent, it takes effect only when singleton mode is set. quay.io/open-cluster-management.io/registration-operator:latest - will be used if unspecified + description: |- + ImagePullSpec represents the desired image configuration of agent, it takes effect only when + singleton mode is set. quay.io/open-cluster-management.io/registration-operator:latest will + be used if unspecified type: string namespace: - description: Namespace is the namespace to deploy the agent on the - managed cluster. The namespace must have a prefix of "open-cluster-management-", - and if it is not set, the namespace of "open-cluster-management-agent" - is used to deploy agent. In addition, the add-ons are deployed to - the namespace of "{Namespace}-addon". In the Hosted mode, this namespace - still exists on the managed cluster to contain necessary resources, - like service accounts, roles and rolebindings, while the agent is - deployed to the namespace with the same name as klusterlet on the - management cluster. + description: |- + Namespace is the namespace to deploy the agent on the managed cluster. + The namespace must have a prefix of "open-cluster-management-", and if it is not set, + the namespace of "open-cluster-management-agent" is used to deploy agent. + In addition, the add-ons are deployed to the namespace of "{Namespace}-addon". + In the Hosted mode, this namespace still exists on the managed cluster to contain + necessary resources, like service accounts, roles and rolebindings, while the agent + is deployed to the namespace with the same name as klusterlet on the management cluster. maxLength: 57 pattern: ^open-cluster-management-[-a-z0-9]*[a-z0-9]$ type: string @@ -128,82 +130,81 @@ spec: on. The default is an empty list. type: object tolerations: - description: Tolerations are attached by pods to tolerate any - taint that matches the triple using the matching - operator . The default is an empty list. + description: |- + Tolerations are attached by pods to tolerate any taint that matches + the triple using the matching operator . + The default is an empty list. items: - description: The pod this Toleration is attached to tolerates - any taint that matches the triple using - the matching operator . + description: |- + The pod this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. - Empty means match all taint effects. When specified, allowed - values are NoSchedule, PreferNoSchedule and NoExecute. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match - all values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. type: string operator: - description: Operator represents a key's relationship to - the value. Valid operators are Exists and Equal. Defaults - to Equal. Exists is equivalent to wildcard for value, - so that a pod can tolerate all taints of a particular - category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a pod can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of - time the toleration (which must be of effect NoExecute, - otherwise this field is ignored) tolerates the taint. - By default, it is not set, which means tolerate the taint - forever (do not evict). Zero and negative values will - be treated as 0 (evict immediately) by the system. + description: |- + TolerationSeconds represents the period of time the toleration (which must be + of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + it is not set, which means tolerate the taint forever (do not evict). Zero and + negative values will be treated as 0 (evict immediately) by the system. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. type: string type: object type: array type: object priorityClassName: - description: PriorityClassName is the name of the PriorityClass that - will be used by the deployed klusterlet agent. It will be ignored - when the PriorityClass/v1 API is not available on the managed cluster. + description: |- + PriorityClassName is the name of the PriorityClass that will be used by the + deployed klusterlet agent. It will be ignored when the PriorityClass/v1 API + is not available on the managed cluster. type: string registrationConfiguration: description: RegistrationConfiguration contains the configuration of registration properties: bootstrapKubeConfigs: - description: "BootstrapKubeConfigs defines the ordered list of - bootstrap kubeconfigs. The order decides which bootstrap kubeconfig - to use first when rebootstrap. \n When the agent loses the connection - to the current hub over HubConnectionTimeoutSeconds, or the - managedcluster CR is set `hubAcceptsClient=false` on the hub, - the controller marks the related bootstrap kubeconfig as \"failed\". - \n A failed bootstrapkubeconfig won't be used for the duration - specified by SkipFailedBootstrapKubeConfigSeconds. But if the - user updates the content of a failed bootstrapkubeconfig, the - \"failed\" mark will be cleared." + description: |- + BootstrapKubeConfigs defines the ordered list of bootstrap kubeconfigs. The order decides which bootstrap kubeconfig to use first when rebootstrap. + + + When the agent loses the connection to the current hub over HubConnectionTimeoutSeconds, or the managedcluster CR + is set `hubAcceptsClient=false` on the hub, the controller marks the related bootstrap kubeconfig as "failed". + + + A failed bootstrapkubeconfig won't be used for the duration specified by SkipFailedBootstrapKubeConfigSeconds. + But if the user updates the content of a failed bootstrapkubeconfig, the "failed" mark will be cleared. properties: localSecretsConfig: - description: LocalSecretsConfig include a list of secrets - that contains the kubeconfigs for ordered bootstrap kubeconifigs. - The secrets must be in the same namespace where the agent - controller runs. + description: |- + LocalSecretsConfig include a list of secrets that contains the kubeconfigs for ordered bootstrap kubeconifigs. + The secrets must be in the same namespace where the agent controller runs. properties: hubConnectionTimeoutSeconds: default: 600 - description: HubConnectionTimeoutSeconds is used to set - the timeout of connecting to the hub cluster. When agent - loses the connection to the hub over the timeout seconds, - the agent do a rebootstrap. By default is 10 mins. + description: |- + HubConnectionTimeoutSeconds is used to set the timeout of connecting to the hub cluster. + When agent loses the connection to the hub over the timeout seconds, the agent do a rebootstrap. + By default is 10 mins. format: int32 minimum: 180 type: integer @@ -221,41 +222,39 @@ spec: type: object type: default: None - description: Type specifies the type of priority bootstrap - kubeconfigs. By default, it is set to None, representing - no priority bootstrap kubeconfigs are set. + description: |- + Type specifies the type of priority bootstrap kubeconfigs. + By default, it is set to None, representing no priority bootstrap kubeconfigs are set. enum: - None - LocalSecrets type: string type: object clientCertExpirationSeconds: - description: clientCertExpirationSeconds represents the seconds - of a client certificate to expire. If it is not set or 0, the - default duration seconds will be set by the hub cluster. If - the value is larger than the max signing duration seconds set - on the hub cluster, the max signing duration seconds will be - set. + description: |- + clientCertExpirationSeconds represents the seconds of a client certificate to expire. If it is not set or 0, the default + duration seconds will be set by the hub cluster. If the value is larger than the max signing duration seconds set on + the hub cluster, the max signing duration seconds will be set. format: int32 type: integer clusterAnnotations: additionalProperties: type: string - description: ClusterAnnotations is annotations with the reserve - prefix "agent.open-cluster-management.io" set on ManagedCluster - when creating only, other actors can update it afterwards. + description: |- + ClusterAnnotations is annotations with the reserve prefix "agent.open-cluster-management.io" set on + ManagedCluster when creating only, other actors can update it afterwards. type: object featureGates: - description: 'FeatureGates represents the list of feature gates - for registration If it is set empty, default feature gates will - be used. If it is set, featuregate/Foo is an example of one - item in FeatureGates: 1. If featuregate/Foo does not exist, - registration-operator will discard it 2. If featuregate/Foo - exists and is false by default. It is now possible to set featuregate/Foo=[false|true] - 3. If featuregate/Foo exists and is true by default. If a cluster-admin - upgrading from 1 to 2 wants to continue having featuregate/Foo=false, - he can set featuregate/Foo=false before upgrading. Let''s say - the cluster-admin wants featuregate/Foo=false.' + description: "FeatureGates represents the list of feature gates + for registration\nIf it is set empty, default feature gates + will be used.\nIf it is set, featuregate/Foo is an example of + one item in FeatureGates:\n 1. If featuregate/Foo does not + exist, registration-operator will discard it\n 2. If featuregate/Foo + exists and is false by default. It is now possible to set featuregate/Foo=[false|true]\n + \ 3. If featuregate/Foo exists and is true by default. If a + cluster-admin upgrading from 1 to 2 wants to continue having + featuregate/Foo=false,\n \the can set featuregate/Foo=false + before upgrading. Let's say the cluster-admin wants featuregate/Foo=false." items: properties: feature: @@ -263,11 +262,10 @@ spec: type: string mode: default: Disable - description: Mode is either Enable, Disable, "" where "" - is Disable by default. In Enable mode, a valid feature - gate `featuregate/Foo` will be set to "--featuregate/Foo=true". - In Disable mode, a valid feature gate `featuregate/Foo` - will be set to "--featuregate/Foo=false". + description: |- + Mode is either Enable, Disable, "" where "" is Disable by default. + In Enable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=true". + In Disable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=false". enum: - Enable - Disable @@ -278,46 +276,85 @@ spec: type: array kubeAPIBurst: default: 100 - description: 'KubeAPIBurst indicates the maximum burst of the - throttle while talking with apiserver of hub cluster from the - spoke cluster. If it is set empty, use the default value: 100' + description: |- + KubeAPIBurst indicates the maximum burst of the throttle while talking with apiserver of hub cluster from the spoke cluster. + If it is set empty, use the default value: 100 format: int32 type: integer kubeAPIQPS: default: 50 - description: 'KubeAPIQPS indicates the maximum QPS while talking - with apiserver of hub cluster from the spoke cluster. If it - is set empty, use the default value: 50' + description: |- + KubeAPIQPS indicates the maximum QPS while talking with apiserver of hub cluster from the spoke cluster. + If it is set empty, use the default value: 50 format: int32 type: integer + registrationDriver: + description: This provides driver details required to register + with hub + properties: + authType: + default: csr + description: Type of the authentication used by managedcluster + to register as well as pull work from hub. Possible values + are csr and awsirsa. + enum: + - csr + - awsirsa + type: string + awsIrsa: + description: |- + Contain the details required for registering with hub cluster (ie: an EKS cluster) using AWS IAM roles for service account. + This is required only when the authType is awsirsa. + properties: + hubClusterArn: + description: |- + The arn of the hub cluster (ie: an EKS cluster). This will be required to pass information to hub, which hub will use to create IAM identities for this klusterlet. + Example - arn:eks:us-west-2:12345678910:cluster/hub-cluster1. + minLength: 1 + type: string + managedClusterArn: + description: |- + The arn of the managed cluster (ie: an EKS cluster). This will be required to generate the md5hash which will be used as a suffix to create IAM role on hub + as well as used by kluslerlet-agent, to assume role suffixed with the md5hash, on startup. + Example - arn:eks:us-west-2:12345678910:cluster/managed-cluster1. + minLength: 1 + type: string + type: object + type: object type: object registrationImagePullSpec: - description: RegistrationImagePullSpec represents the desired image - configuration of registration agent. quay.io/open-cluster-management.io/registration:latest - will be used if unspecified. + description: |- + RegistrationImagePullSpec represents the desired image configuration of registration agent. + quay.io/open-cluster-management.io/registration:latest will be used if unspecified. type: string resourceRequirement: - description: ResourceRequirement specify QoS classes of deployments - managed by klusterlet. It applies to all the containers in the deployments. + description: |- + ResourceRequirement specify QoS classes of deployments managed by klusterlet. + It applies to all the containers in the deployments. properties: resourceRequirements: description: ResourceRequirements defines resource requests and limits when Type is ResourceQosClassResourceRequirement properties: claims: - description: "Claims lists the names of resources, defined - in spec.resourceClaims, that are used by this container. - \n This is an alpha field and requires enabling the DynamicResourceAllocation - feature gate. \n This field is immutable. It can only be - set for containers." + description: |- + Claims lists the names of resources, defined in spec.resourceClaims, + that are used by this container. + + + This is an alpha field and requires enabling the + DynamicResourceAllocation feature gate. + + + This field is immutable. It can only be set for containers. items: description: ResourceClaim references one entry in PodSpec.ResourceClaims. properties: name: - description: Name must match the name of one entry in - pod.spec.resourceClaims of the Pod where this field - is used. It makes that resource available inside a - container. + description: |- + Name must match the name of one entry in pod.spec.resourceClaims of + the Pod where this field is used. It makes that resource available + inside a container. type: string required: - name @@ -333,8 +370,9 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Limits describes the maximum amount of compute resources allowed. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object requests: additionalProperties: @@ -343,11 +381,11 @@ spec: - type: string pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. Requests cannot exceed - Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' + description: |- + Requests describes the minimum amount of compute resources required. + If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + otherwise to an implementation-defined value. Requests cannot exceed Limits. + More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ type: object type: object type: @@ -362,24 +400,23 @@ spec: description: WorkConfiguration contains the configuration of work properties: appliedManifestWorkEvictionGracePeriod: - description: AppliedManifestWorkEvictionGracePeriod is the eviction - grace period the work agent will wait before evicting the AppliedManifestWorks, - whose corresponding ManifestWorks are missing on the hub cluster, - from the managed cluster. If not present, the default value - of the work agent will be used. + description: |- + AppliedManifestWorkEvictionGracePeriod is the eviction grace period the work agent will wait before + evicting the AppliedManifestWorks, whose corresponding ManifestWorks are missing on the hub cluster, from + the managed cluster. If not present, the default value of the work agent will be used. pattern: ^([0-9]+(s|m|h))+$ type: string featureGates: - description: 'FeatureGates represents the list of feature gates - for work If it is set empty, default feature gates will be used. - If it is set, featuregate/Foo is an example of one item in FeatureGates: - 1. If featuregate/Foo does not exist, registration-operator - will discard it 2. If featuregate/Foo exists and is false by - default. It is now possible to set featuregate/Foo=[false|true] - 3. If featuregate/Foo exists and is true by default. If a cluster-admin - upgrading from 1 to 2 wants to continue having featuregate/Foo=false, - he can set featuregate/Foo=false before upgrading. Let''s say - the cluster-admin wants featuregate/Foo=false.' + description: "FeatureGates represents the list of feature gates + for work\nIf it is set empty, default feature gates will be + used.\nIf it is set, featuregate/Foo is an example of one item + in FeatureGates:\n 1. If featuregate/Foo does not exist, registration-operator + will discard it\n 2. If featuregate/Foo exists and is false + by default. It is now possible to set featuregate/Foo=[false|true]\n + \ 3. If featuregate/Foo exists and is true by default. If a + cluster-admin upgrading from 1 to 2 wants to continue having + featuregate/Foo=false,\n \the can set featuregate/Foo=false + before upgrading. Let's say the cluster-admin wants featuregate/Foo=false." items: properties: feature: @@ -387,11 +424,10 @@ spec: type: string mode: default: Disable - description: Mode is either Enable, Disable, "" where "" - is Disable by default. In Enable mode, a valid feature - gate `featuregate/Foo` will be set to "--featuregate/Foo=true". - In Disable mode, a valid feature gate `featuregate/Foo` - will be set to "--featuregate/Foo=false". + description: |- + Mode is either Enable, Disable, "" where "" is Disable by default. + In Enable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=true". + In Disable mode, a valid feature gate `featuregate/Foo` will be set to "--featuregate/Foo=false". enum: - Enable - Disable @@ -402,74 +438,75 @@ spec: type: array kubeAPIBurst: default: 100 - description: 'KubeAPIBurst indicates the maximum burst of the - throttle while talking with apiserver of hub cluster from the - spoke cluster. If it is set empty, use the default value: 100' + description: |- + KubeAPIBurst indicates the maximum burst of the throttle while talking with apiserver of hub cluster from the spoke cluster. + If it is set empty, use the default value: 100 format: int32 type: integer kubeAPIQPS: default: 50 - description: 'KubeAPIQPS indicates the maximum QPS while talking - with apiserver of hub cluster from the spoke cluster. If it - is set empty, use the default value: 50' + description: |- + KubeAPIQPS indicates the maximum QPS while talking with apiserver of hub cluster from the spoke cluster. + If it is set empty, use the default value: 50 format: int32 type: integer type: object workImagePullSpec: - description: WorkImagePullSpec represents the desired image configuration - of work agent. quay.io/open-cluster-management.io/work:latest will - be used if unspecified. + description: |- + WorkImagePullSpec represents the desired image configuration of work agent. + quay.io/open-cluster-management.io/work:latest will be used if unspecified. type: string type: object status: description: Status represents the current status of Klusterlet agent. properties: conditions: - description: 'Conditions contain the different condition statuses - for this Klusterlet. Valid condition types are: Applied: Components - have been applied in the managed cluster. Available: Components - in the managed cluster are available and ready to serve. Progressing: - Components in the managed cluster are in a transitioning state. - Degraded: Components in the managed cluster do not match the desired - configuration and only provide degraded service.' + description: |- + Conditions contain the different condition statuses for this Klusterlet. + Valid condition types are: + Applied: Components have been applied in the managed cluster. + Available: Components in the managed cluster are available and ready to serve. + Progressing: Components in the managed cluster are in a transitioning state. + Degraded: Components in the managed cluster do not match the desired configuration and only provide + degraded service. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -483,11 +520,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -503,9 +541,9 @@ spec: description: Generations are used to determine when an item needs to be reconciled or has changed in a way that needs a reaction. items: - description: GenerationStatus keeps track of the generation for - a given resource so that decisions about forced updates can be - made. The definition matches the GenerationStatus defined in github.com/openshift/api/v1 + description: |- + GenerationStatus keeps track of the generation for a given resource so that decisions about forced updates can be made. + The definition matches the GenerationStatus defined in github.com/openshift/api/v1 properties: group: description: group is the group of the resource that you're diff --git a/charts/cluster-manager-spoke/templates/cluster_role.yaml b/charts/cluster-manager-spoke/templates/cluster_role.yaml index a2a11f4a..0dbcdcdd 100644 --- a/charts/cluster-manager-spoke/templates/cluster_role.yaml +++ b/charts/cluster-manager-spoke/templates/cluster_role.yaml @@ -23,7 +23,6 @@ rules: - "external-managed-kubeconfig-work" - "external-managed-kubeconfig-registration" - "external-managed-kubeconfig-agent" - - "work-webhook-serving-cert" # get pods and replicasets is for event creation - apiGroups: [""] resources: ["pods"] diff --git a/charts/cluster-manager-spoke/values.yaml b/charts/cluster-manager-spoke/values.yaml index 387decb7..b53f4c1a 100644 --- a/charts/cluster-manager-spoke/values.yaml +++ b/charts/cluster-manager-spoke/values.yaml @@ -45,7 +45,7 @@ bundleVersion: placementImageVersion: "" workImageVersion: "" operatorImageVersion: "" - clusteradmImageVersion: "v0.9.0" + clusteradmImageVersion: "v0.10.0" managedKubeconfig: '' diff --git a/charts/cluster-profile-manager/Chart.yaml b/charts/cluster-profile-manager/Chart.yaml index 3ed054a8..c24a509a 100644 --- a/charts/cluster-profile-manager/Chart.yaml +++ b/charts/cluster-profile-manager/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v1 description: Cluster Profile Manager name: cluster-profile-manager -version: v2024.11.18 -appVersion: v0.3.0 +version: v2024.12.26 +appVersion: v0.4.0 home: https://github.com/kluster-manager/cluster-profile icon: https://cdn.appscode.com/images/products/searchlight/icons/android-icon-192x192.png sources: diff --git a/charts/cluster-profile-manager/README.md b/charts/cluster-profile-manager/README.md index ec1f835d..ec9b196b 100644 --- a/charts/cluster-profile-manager/README.md +++ b/charts/cluster-profile-manager/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/cluster-profile-manager --version=v2024.11.18 -$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 +$ helm search repo appscode/cluster-profile-manager --version=v2024.12.26 +$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys an Cluster Profile Manager on a [Kubernetes](http://kubernete To install/upgrade the chart with the release name `cluster-profile-manager`: ```bash -$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 +$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` The command deploys an Cluster Profile Manager on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -84,12 +84,12 @@ The following table lists the configurable parameters of the `cluster-profile-ma Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 --set manager.image=ghcr.io/kluster-manager/cluster-profile +$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --set manager.image=ghcr.io/kluster-manager/cluster-profile ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.11.18 --values values.yaml +$ helm upgrade -i cluster-profile-manager appscode/cluster-profile-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml b/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml index 6e75601a..294939ea 100644 --- a/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml +++ b/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml @@ -17,22 +17,27 @@ spec: - name: v1beta2 schema: openAPIV3Schema: - description: ManagedClusterSetBinding projects a ManagedClusterSet into a - certain namespace. You can create a ManagedClusterSetBinding in a namespace - and bind it to a ManagedClusterSet if both have a RBAC rules to CREATE on - the virtual subresource of managedclustersets/bind. Workloads that you create - in the same namespace can only be distributed to ManagedClusters in ManagedClusterSets - that are bound in this namespace by higher-level controllers. + description: |- + ManagedClusterSetBinding projects a ManagedClusterSet into a certain namespace. + You can create a ManagedClusterSetBinding in a namespace and bind it to a + ManagedClusterSet if both have a RBAC rules to CREATE on the virtual subresource of managedclustersets/bind. + Workloads that you create in the same namespace can only be distributed to ManagedClusters + in ManagedClusterSets that are bound in this namespace by higher-level controllers. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -40,11 +45,11 @@ spec: description: Spec defines the attributes of ManagedClusterSetBinding. properties: clusterSet: - description: ClusterSet is the name of the ManagedClusterSet to bind. - It must match the instance name of the ManagedClusterSetBinding - and cannot change once created. User is allowed to set this field - if they have an RBAC rule to CREATE on the virtual subresource of - managedclustersets/bind. + description: |- + ClusterSet is the name of the ManagedClusterSet to bind. It must match the + instance name of the ManagedClusterSetBinding and cannot change once created. + User is allowed to set this field if they have an RBAC rule to CREATE on the + virtual subresource of managedclustersets/bind. minLength: 1 type: string type: object @@ -56,42 +61,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -105,11 +110,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_placements.yaml b/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_placements.yaml index dd4ac28c..fdb3729f 100644 --- a/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_placements.yaml +++ b/charts/cluster-profile-manager/crds/cluster.open-cluster-management.io_placements.yaml @@ -24,34 +24,49 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: "Placement defines a rule to select a set of ManagedClusters - from the ManagedClusterSets bound to the placement namespace. \n Here is - how the placement policy combines with other selection methods to determine - a matching list of ManagedClusters: 1. Kubernetes clusters are registered - with hub as cluster-scoped ManagedClusters; 2. ManagedClusters are organized - into cluster-scoped ManagedClusterSets; 3. ManagedClusterSets are bound - to workload namespaces; 4. Namespace-scoped Placements specify a slice of - ManagedClusterSets which select a working set of potential ManagedClusters; - 5. Then Placements subselect from that working set using label/claim selection. - \n A ManagedCluster will not be selected if no ManagedClusterSet is bound - to the placement namespace. A user is able to bind a ManagedClusterSet to - a namespace by creating a ManagedClusterSetBinding in that namespace if - they have an RBAC rule to CREATE on the virtual subresource of `managedclustersets/bind`. - \n A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement - name} will be created to represent the ManagedClusters selected by this - placement. \n If a ManagedCluster is selected and added into the PlacementDecisions, - other components may apply workload on it; once it is removed from the PlacementDecisions, - the workload applied on this ManagedCluster should be evicted accordingly." + description: |- + Placement defines a rule to select a set of ManagedClusters from the ManagedClusterSets bound + to the placement namespace. + + + Here is how the placement policy combines with other selection methods to determine a matching + list of ManagedClusters: + 1. Kubernetes clusters are registered with hub as cluster-scoped ManagedClusters; + 2. ManagedClusters are organized into cluster-scoped ManagedClusterSets; + 3. ManagedClusterSets are bound to workload namespaces; + 4. Namespace-scoped Placements specify a slice of ManagedClusterSets which select a working set + of potential ManagedClusters; + 5. Then Placements subselect from that working set using label/claim selection. + + + A ManagedCluster will not be selected if no ManagedClusterSet is bound to the placement + namespace. A user is able to bind a ManagedClusterSet to a namespace by creating a + ManagedClusterSetBinding in that namespace if they have an RBAC rule to CREATE on the virtual + subresource of `managedclustersets/bind`. + + + A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement name} + will be created to represent the ManagedClusters selected by this placement. + + + If a ManagedCluster is selected and added into the PlacementDecisions, other components may + apply workload on it; once it is removed from the PlacementDecisions, the workload applied on + this ManagedCluster should be evicted accordingly. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -59,12 +74,11 @@ spec: description: Spec defines the attributes of Placement. properties: clusterSets: - description: ClusterSets represent the ManagedClusterSets from which - the ManagedClusters are selected. If the slice is empty, ManagedClusters - will be selected from the ManagedClusterSets bound to the placement - namespace, otherwise ManagedClusters will be selected from the intersection - of this slice and the ManagedClusterSets bound to the placement - namespace. + description: |- + ClusterSets represent the ManagedClusterSets from which the ManagedClusters are selected. + If the slice is empty, ManagedClusters will be selected from the ManagedClusterSets bound to the placement + namespace, otherwise ManagedClusters will be selected from the intersection of this slice and the + ManagedClusterSets bound to the placement namespace. items: type: string type: array @@ -81,32 +95,28 @@ spec: - type: integer - type: string default: 100% - description: "ClustersPerDecisionGroup is a specific number - or percentage of the total selected clusters. The specific - number will divide the placementDecisions to decisionGroups - each group has max number of clusters equal to that specific - number. The percentage will divide the placementDecisions - to decisionGroups each group has max number of clusters - based on the total num of selected clusters and percentage. - ex; for a total 100 clusters selected, ClustersPerDecisionGroup - equal to 20% will divide the placement decision to 5 groups - each group should have 20 clusters. Default is having all - clusters in a single group. \n The predefined decisionGroups - is expected to be a subset of the selected clusters and - the number of items in each group SHOULD be less than ClustersPerDecisionGroup. - Once the number of items exceeds the ClustersPerDecisionGroup, - the decisionGroups will also be be divided into multiple - decisionGroups with same GroupName but different GroupIndex." + description: |- + ClustersPerDecisionGroup is a specific number or percentage of the total selected clusters. + The specific number will divide the placementDecisions to decisionGroups each group has max number of clusters + equal to that specific number. + The percentage will divide the placementDecisions to decisionGroups each group has max number of clusters based + on the total num of selected clusters and percentage. + ex; for a total 100 clusters selected, ClustersPerDecisionGroup equal to 20% will divide the placement decision + to 5 groups each group should have 20 clusters. + Default is having all clusters in a single group. + + + The predefined decisionGroups is expected to be a subset of the selected clusters and the number of items in each + group SHOULD be less than ClustersPerDecisionGroup. Once the number of items exceeds the ClustersPerDecisionGroup, + the decisionGroups will also be be divided into multiple decisionGroups with same GroupName but different GroupIndex. pattern: ^((100|[1-9][0-9]{0,1})%|[1-9][0-9]*)$ x-kubernetes-int-or-string: true decisionGroups: - description: DecisionGroups represents a list of predefined - groups to put decision results. Decision groups will be - constructed based on the DecisionGroups field at first. - The clusters not included in the DecisionGroups will be - divided to other decision groups afterwards. Each decision - group should not have the number of clusters larger than - the ClustersPerDecisionGroup. + description: |- + DecisionGroups represents a list of predefined groups to put decision results. + Decision groups will be constructed based on the DecisionGroups field at first. The clusters not included in the + DecisionGroups will be divided to other decision groups afterwards. Each decision group should not have the number + of clusters larger than the ClustersPerDecisionGroup. items: description: DecisionGroup define a subset of clusters that will be added to placementDecisions with groupName label. @@ -124,32 +134,29 @@ spec: claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -165,46 +172,42 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -223,18 +226,18 @@ spec: type: object type: object numberOfClusters: - description: NumberOfClusters represents the desired number of ManagedClusters - to be selected which meet the placement requirements. 1) If not - specified, all ManagedClusters which meet the placement requirements - (including ClusterSets, and Predicates) will be selected; 2) Otherwise - if the nubmer of ManagedClusters meet the placement requirements - is larger than NumberOfClusters, a random subset with desired number - of ManagedClusters will be selected; 3) If the nubmer of ManagedClusters - meet the placement requirements is equal to NumberOfClusters, all - of them will be selected; 4) If the nubmer of ManagedClusters meet - the placement requirements is less than NumberOfClusters, all of - them will be selected, and the status of condition `PlacementConditionSatisfied` - will be set to false; + description: |- + NumberOfClusters represents the desired number of ManagedClusters to be selected which meet the + placement requirements. + 1) If not specified, all ManagedClusters which meet the placement requirements (including ClusterSets, + and Predicates) will be selected; + 2) Otherwise if the nubmer of ManagedClusters meet the placement requirements is larger than + NumberOfClusters, a random subset with desired number of ManagedClusters will be selected; + 3) If the nubmer of ManagedClusters meet the placement requirements is equal to NumberOfClusters, + all of them will be selected; + 4) If the nubmer of ManagedClusters meet the placement requirements is less than NumberOfClusters, + all of them will be selected, and the status of condition `PlacementConditionSatisfied` will be + set to false; format: int32 type: integer predicates: @@ -244,16 +247,13 @@ spec: description: ClusterPredicate represents a predicate to select ManagedClusters. properties: requiredClusterSelector: - description: RequiredClusterSelector represents a selector of - ManagedClusters by label and claim. If specified, 1) Any ManagedCluster, - which does not match the selector, should not be selected - by this ClusterPredicate; 2) If a selected ManagedCluster - (of this ClusterPredicate) ceases to match the selector (e.g. - due to an update) of any ClusterPredicate, it will be eventually - removed from the placement decisions; 3) If a ManagedCluster - (not selected previously) starts to match the selector, it - will either be selected or at least has a chance to be selected - (when NumberOfClusters is specified); + description: |- + RequiredClusterSelector represents a selector of ManagedClusters by label and claim. If specified, + 1) Any ManagedCluster, which does not match the selector, should not be selected by this ClusterPredicate; + 2) If a selected ManagedCluster (of this ClusterPredicate) ceases to match the selector (e.g. due to + an update) of any ClusterPredicate, it will be eventually removed from the placement decisions; + 3) If a ManagedCluster (not selected previously) starts to match the selector, it will either + be selected or at least has a chance to be selected (when NumberOfClusters is specified); properties: claimSelector: description: ClaimSelector represents a selector of ManagedClusters @@ -263,8 +263,8 @@ spec: description: matchExpressions is a list of cluster claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -272,20 +272,20 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -300,8 +300,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -309,33 +309,33 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -343,10 +343,10 @@ spec: type: object type: array prioritizerPolicy: - description: PrioritizerPolicy defines the policy of the prioritizers. - If this field is unset, then default prioritizer mode and configurations - are used. Referring to PrioritizerPolicy to see more description - about Mode and Configurations. + description: |- + PrioritizerPolicy defines the policy of the prioritizers. + If this field is unset, then default prioritizer mode and configurations are used. + Referring to PrioritizerPolicy to see more description about Mode and Configurations. properties: configurations: items: @@ -362,37 +362,35 @@ spec: resource name and score name. properties: resourceName: - description: ResourceName defines the resource name - of the AddOnPlacementScore. The placement prioritizer - selects AddOnPlacementScore CR by this name. + description: |- + ResourceName defines the resource name of the AddOnPlacementScore. + The placement prioritizer selects AddOnPlacementScore CR by this name. type: string scoreName: - description: ScoreName defines the score name inside - AddOnPlacementScore. AddOnPlacementScore contains - a list of score name and score value, ScoreName - specify the score to be used by the prioritizer. + description: |- + ScoreName defines the score name inside AddOnPlacementScore. + AddOnPlacementScore contains a list of score name and score value, ScoreName specify the score to be used by + the prioritizer. type: string required: - resourceName - scoreName type: object builtIn: - description: 'BuiltIn defines the name of a BuiltIn - prioritizer. Below are the valid BuiltIn prioritizer - names. 1) Balance: balance the decisions among the - clusters. 2) Steady: ensure the existing decision - is stabilized. 3) ResourceAllocatableCPU & ResourceAllocatableMemory: - sort clusters based on the allocatable. 4) Spread: - spread the workload evenly to topologies.' + description: |- + BuiltIn defines the name of a BuiltIn prioritizer. Below are the valid BuiltIn prioritizer names. + 1) Balance: balance the decisions among the clusters. + 2) Steady: ensure the existing decision is stabilized. + 3) ResourceAllocatableCPU & ResourceAllocatableMemory: sort clusters based on the allocatable. + 4) Spread: spread the workload evenly to topologies. type: string type: default: BuiltIn - description: Type defines the type of the prioritizer - score. Type is either "BuiltIn", "AddOn" or "", where - "" is "BuiltIn" by default. When the type is "BuiltIn", - need to specify a BuiltIn prioritizer name in BuiltIn. - When the type is "AddOn", need to configure the score - source in AddOn. + description: |- + Type defines the type of the prioritizer score. + Type is either "BuiltIn", "AddOn" or "", where "" is "BuiltIn" by default. + When the type is "BuiltIn", need to specify a BuiltIn prioritizer name in BuiltIn. + When the type is "AddOn", need to configure the score source in AddOn. enum: - BuiltIn - AddOn @@ -402,14 +400,13 @@ spec: type: object weight: default: 1 - description: Weight defines the weight of the prioritizer - score. The value must be ranged in [-10,10]. Each prioritizer - will calculate an integer score of a cluster in the range - of [-100, 100]. The final score of a cluster will be sum(weight - * prioritizer_score). A higher weight indicates that the - prioritizer weights more in the cluster selection, while - 0 weight indicates that the prioritizer is disabled. A - negative weight indicates wants to select the last ones. + description: |- + Weight defines the weight of the prioritizer score. The value must be ranged in [-10,10]. + Each prioritizer will calculate an integer score of a cluster in the range of [-100, 100]. + The final score of a cluster will be sum(weight * prioritizer_score). + A higher weight indicates that the prioritizer weights more in the cluster selection, + while 0 weight indicates that the prioritizer is disabled. A negative weight indicates + wants to select the last ones. format: int32 maximum: 10 minimum: -10 @@ -420,43 +417,38 @@ spec: type: array mode: default: Additive - description: Mode is either Exact, Additive, "" where "" is Additive - by default. In Additive mode, any prioritizer not explicitly - enumerated is enabled in its default Configurations, in which - Steady and Balance prioritizers have the weight of 1 while other - prioritizers have the weight of 0. Additive doesn't require - configuring all prioritizers. The default Configurations may - change in the future, and additional prioritization will happen. - In Exact mode, any prioritizer not explicitly enumerated is - weighted as zero. Exact requires knowing the full set of prioritizers - you want, but avoids behavior changes between releases. + description: |- + Mode is either Exact, Additive, "" where "" is Additive by default. + In Additive mode, any prioritizer not explicitly enumerated is enabled in its default Configurations, + in which Steady and Balance prioritizers have the weight of 1 while other prioritizers have the weight of 0. + Additive doesn't require configuring all prioritizers. The default Configurations may change in the future, + and additional prioritization will happen. + In Exact mode, any prioritizer not explicitly enumerated is weighted as zero. + Exact requires knowing the full set of prioritizers you want, but avoids behavior changes between releases. type: string type: object spreadPolicy: - description: SpreadPolicy defines how placement decisions should be - distributed among a set of ManagedClusters. + description: |- + SpreadPolicy defines how placement decisions should be distributed among a + set of ManagedClusters. properties: spreadConstraints: - description: SpreadConstraints defines how the placement decision - should be distributed among a set of ManagedClusters. The importance - of the SpreadConstraintsTerms follows the natural order of their - index in the slice. The scheduler first consider SpreadConstraintsTerms - with smaller index then those with larger index to distribute - the placement decision. + description: |- + SpreadConstraints defines how the placement decision should be distributed among a set of ManagedClusters. + The importance of the SpreadConstraintsTerms follows the natural order of their index in the slice. + The scheduler first consider SpreadConstraintsTerms with smaller index then those with larger index + to distribute the placement decision. items: description: SpreadConstraintsTerm defines a terminology to spread placement decisions. properties: maxSkew: default: 1 - description: MaxSkew represents the degree to which the - workload may be unevenly distributed. Skew is the maximum - difference between the number of selected ManagedClusters - in a topology and the global minimum. The global minimum - is the minimum number of selected ManagedClusters for - the topologies within the same TopologyKey. The minimum - possible value of MaxSkew is 1, and the default value - is 1. + description: |- + MaxSkew represents the degree to which the workload may be unevenly distributed. + Skew is the maximum difference between the number of selected ManagedClusters in a topology and the global minimum. + The global minimum is the minimum number of selected ManagedClusters for the topologies within the same TopologyKey. + The minimum possible value of MaxSkew is 1, and the default value is 1. format: int32 minimum: 1 type: integer @@ -475,13 +467,11 @@ spec: type: string whenUnsatisfiable: default: ScheduleAnyway - description: WhenUnsatisfiable represents the action of - the scheduler when MaxSkew cannot be satisfied. It could - be DoNotSchedule or ScheduleAnyway. The default value - is ScheduleAnyway. DoNotSchedule instructs the scheduler - not to schedule more ManagedClusters when MaxSkew is not - satisfied. ScheduleAnyway instructs the scheduler to keep - scheduling even if MaxSkew is not satisfied. + description: |- + WhenUnsatisfiable represents the action of the scheduler when MaxSkew cannot be satisfied. + It could be DoNotSchedule or ScheduleAnyway. The default value is ScheduleAnyway. + DoNotSchedule instructs the scheduler not to schedule more ManagedClusters when MaxSkew is not satisfied. + ScheduleAnyway instructs the scheduler to keep scheduling even if MaxSkew is not satisfied. enum: - DoNotSchedule - ScheduleAnyway @@ -494,53 +484,52 @@ spec: type: array type: object tolerations: - description: Tolerations are applied to placements, and allow (but - do not require) the managed clusters with certain taints to be selected - by placements with matching tolerations. + description: |- + Tolerations are applied to placements, and allow (but do not require) the managed clusters with + certain taints to be selected by placements with matching tolerations. items: - description: Toleration represents the toleration object that can - be attached to a placement. The placement this Toleration is attached - to tolerates any taint that matches the triple - using the matching operator . + description: |- + Toleration represents the toleration object that can be attached to a placement. + The placement this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSelect, PreferNoSelect and NoSelectIfNew. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSelect, PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string operator: default: Equal - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a placement - can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a placement can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoSelect/PreferNoSelect, - otherwise this field is ignored) tolerates the taint. The - default value is nil, which indicates it tolerates the taint - forever. The start time of counting the TolerationSeconds - should be the TimeAdded in Taint, not the cluster scheduled - time or TolerationSeconds added time. + description: |- + TolerationSeconds represents the period of time the toleration (which must be of effect + NoSelect/PreferNoSelect, otherwise this field is ignored) tolerates the taint. + The default value is nil, which indicates it tolerates the taint forever. + The start time of counting the TolerationSeconds should be the TimeAdded in Taint, not the cluster + scheduled time or TolerationSeconds added time. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. maxLength: 1024 type: string type: object @@ -554,42 +543,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -603,11 +592,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-profile-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml b/charts/cluster-profile-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml index d861e242..40975a97 100644 --- a/charts/cluster-profile-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml +++ b/charts/cluster-profile-manager/crds/work.open-cluster-management.io_manifestworkreplicasets.yaml @@ -33,22 +33,26 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ManifestWorkReplicaSet is the Schema for the ManifestWorkReplicaSet - API. This custom resource is able to apply ManifestWork using Placement - for 0..n ManagedCluster(in their namespaces). It will also remove the ManifestWork - custom resources when deleted. Lastly the specific ManifestWork custom resources - created per ManagedCluster namespace will be adjusted based on PlacementDecision + description: |- + ManifestWorkReplicaSet is the Schema for the ManifestWorkReplicaSet API. This custom resource is able to apply + ManifestWork using Placement for 0..n ManagedCluster(in their namespaces). It will also remove the ManifestWork custom resources + when deleted. Lastly the specific ManifestWork custom resources created per ManagedCluster namespace will be adjusted based on PlacementDecision changes. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -61,21 +65,20 @@ spec: be used to generate a per-cluster ManifestWork properties: deleteOption: - description: DeleteOption represents deletion strategy when the - manifestwork is deleted. Foreground deletion strategy is applied - to all the resource in this manifestwork if it is not set. + description: |- + DeleteOption represents deletion strategy when the manifestwork is deleted. + Foreground deletion strategy is applied to all the resource in this manifestwork if it is not set. properties: propagationPolicy: default: Foreground - description: propagationPolicy can be Foreground, Orphan or - SelectivelyOrphan SelectivelyOrphan should be rarely used. It - is provided for cases where particular resources is transfering - ownership from one ManifestWork to another or another management - unit. Setting this value will allow a flow like 1. create - manifestwork/2 to manage foo 2. update manifestwork/1 to - selectively orphan foo 3. remove foo from manifestwork/1 - without impacting continuity because manifestwork/2 adopts - it. + description: |- + propagationPolicy can be Foreground, Orphan or SelectivelyOrphan + SelectivelyOrphan should be rarely used. It is provided for cases where particular resources is transfering + ownership from one ManifestWork to another or another management unit. + Setting this value will allow a flow like + 1. create manifestwork/2 to manage foo + 2. update manifestwork/1 to selectively orphan foo + 3. remove foo from manifestwork/1 without impacting continuity because manifestwork/2 adopts it. enum: - Foreground - Orphan @@ -86,26 +89,26 @@ spec: following orphan deletion stratecy properties: orphaningRules: - description: orphaningRules defines a slice of orphaningrule. - Each orphaningrule identifies a single resource included - in this manifestwork + description: |- + orphaningRules defines a slice of orphaningrule. + Each orphaningrule identifies a single resource included in this manifestwork items: description: OrphaningRule identifies a single resource included in this manifestwork to be orphaned properties: group: - description: Group is the API Group of the Kubernetes - resource, empty string indicates it is in core - group. + description: |- + Group is the API Group of the Kubernetes resource, + empty string indicates it is in core group. type: string name: description: Name is the name of the Kubernetes resource. type: string namespace: - description: Name is the namespace of the Kubernetes - resource, empty string indicates it is a cluster - scoped resource. + description: |- + Name is the namespace of the Kubernetes resource, empty string indicates + it is a cluster scoped resource. type: string resource: description: Resource is the resource name of the @@ -119,23 +122,22 @@ spec: type: object type: object executor: - description: Executor is the configuration that makes the work - agent to perform some pre-request processing/checking. e.g. - the executor identity tells the work agent to check the executor - has sufficient permission to write the workloads to the local - managed cluster. Note that nil executor is still supported for - backward-compatibility which indicates that the work agent will - not perform any additional actions before applying resources. + description: |- + Executor is the configuration that makes the work agent to perform some pre-request processing/checking. + e.g. the executor identity tells the work agent to check the executor has sufficient permission to write + the workloads to the local managed cluster. + Note that nil executor is still supported for backward-compatibility which indicates that the work agent + will not perform any additional actions before applying resources. properties: subject: - description: Subject is the subject identity which the work - agent uses to talk to the local cluster when applying the - resources. + description: |- + Subject is the subject identity which the work agent uses to talk to the + local cluster when applying the resources. properties: serviceAccount: - description: ServiceAccount is for identifying which service - account to use by the work agent. Only required if the - type is "ServiceAccount". + description: |- + ServiceAccount is for identifying which service account to use by the work agent. + Only required if the type is "ServiceAccount". properties: name: description: Name is the name of the service account. @@ -155,8 +157,9 @@ spec: - namespace type: object type: - description: 'Type is the type of the subject identity. - Supported types are: "ServiceAccount".' + description: |- + Type is the type of the subject identity. + Supported types are: "ServiceAccount". enum: - ServiceAccount type: string @@ -172,9 +175,9 @@ spec: of a manifest defined in workload field. properties: feedbackRules: - description: FeedbackRules defines what resource status - field should be returned. If it is not set or empty, no - feedback rules will be honored. + description: |- + FeedbackRules defines what resource status field should be returned. If it is not set or empty, + no feedback rules will be honored. items: properties: jsonPaths: @@ -187,22 +190,19 @@ spec: for this field type: string path: - description: Path represents the json path of - the field under status. The path must point - to a field with single value in the type of - integer, bool or string. If the path points - to a non-existing field, no value will be - returned. If the path points to a structure, - map or slice, no value will be returned and - the status conddition of StatusFeedBackSynced - will be set as false. Ref to https://kubernetes.io/docs/reference/kubectl/jsonpath/ - on how to write a jsonPath. + description: |- + Path represents the json path of the field under status. + The path must point to a field with single value in the type of integer, bool or string. + If the path points to a non-existing field, no value will be returned. + If the path points to a structure, map or slice, no value will be returned and the status conddition + of StatusFeedBackSynced will be set as false. + Ref to https://kubernetes.io/docs/reference/kubectl/jsonpath/ on how to write a jsonPath. type: string version: - description: Version is the version of the Kubernetes - resource. If it is not specified, the resource - with the semantically latest version is used - to resolve the path. + description: |- + Version is the version of the Kubernetes resource. + If it is not specified, the resource with the semantically latest version is + used to resolve the path. type: string required: - name @@ -210,14 +210,13 @@ spec: type: object type: array type: - description: Type defines the option of how status - can be returned. It can be jsonPaths or wellKnownStatus. - If the type is JSONPaths, user should specify the - jsonPaths field If the type is WellKnownStatus, - certain common fields of status defined by a rule - only for types in in k8s.io/api and open-cluster-management/api - will be reported, If these status fields do not - exist, no values will be reported. + description: |- + Type defines the option of how status can be returned. + It can be jsonPaths or wellKnownStatus. + If the type is JSONPaths, user should specify the jsonPaths field + If the type is WellKnownStatus, certain common fields of status defined by a rule only + for types in in k8s.io/api and open-cluster-management/api will be reported, + If these status fields do not exist, no values will be reported. enum: - WellKnownStatus - JSONPaths @@ -227,22 +226,22 @@ spec: type: object type: array resourceIdentifier: - description: ResourceIdentifier represents the group, resource, - name and namespace of a resoure. iff this refers to a - resource not created by this manifest work, the related - rules will not be executed. + description: |- + ResourceIdentifier represents the group, resource, name and namespace of a resoure. + iff this refers to a resource not created by this manifest work, the related rules will not be executed. properties: group: - description: Group is the API Group of the Kubernetes - resource, empty string indicates it is in core group. + description: |- + Group is the API Group of the Kubernetes resource, + empty string indicates it is in core group. type: string name: description: Name is the name of the Kubernetes resource. type: string namespace: - description: Name is the namespace of the Kubernetes - resource, empty string indicates it is a cluster scoped - resource. + description: |- + Name is the namespace of the Kubernetes resource, empty string indicates + it is a cluster scoped resource. type: string resource: description: Resource is the resource name of the Kubernetes @@ -253,19 +252,20 @@ spec: - resource type: object updateStrategy: - description: UpdateStrategy defines the strategy to update - this manifest. UpdateStrategy is Update if it is not set. + description: |- + UpdateStrategy defines the strategy to update this manifest. UpdateStrategy is Update + if it is not set. properties: serverSideApply: - description: serverSideApply defines the configuration - for server side apply. It is honored only when type - of updateStrategy is ServerSideApply + description: |- + serverSideApply defines the configuration for server side apply. It is honored only when + type of updateStrategy is ServerSideApply properties: fieldManager: default: work-agent - description: FieldManager is the manager to apply - the resource. It is work-agent by default, but - can be other name with work-agent as the prefix. + description: |- + FieldManager is the manager to apply the resource. It is work-agent by default, but can be other name with work-agent + as the prefix. pattern: ^work-agent type: string force: @@ -275,17 +275,15 @@ spec: type: object type: default: Update - description: type defines the strategy to update this - manifest, default value is Update. Update type means - to update resource by an update call. CreateOnly type - means do not update resource based on current manifest. - ServerSideApply type means to update resource using - server side apply with work-controller as the field - manager. If there is conflict, the related Applied - condition of manifest will be in the status of False - with the reason of ApplyConflict. ReadOnly type means - the agent will only check the existence of the resource - based on its metadata. + description: |- + type defines the strategy to update this manifest, default value is Update. + Update type means to update resource by an update call. + CreateOnly type means do not update resource based on current manifest. + ServerSideApply type means to update resource using server side apply with work-controller as the field manager. + If there is conflict, the related Applied condition of manifest will be in the status of False with the + reason of ApplyConflict. + ReadOnly type means the agent will only check the existence of the resource based on its metadata, + statusFeedBackRules can still be used to get feedbackResults. enum: - Update - CreateOnly @@ -316,8 +314,8 @@ spec: type: object type: object placementRefs: - description: PacementRefs is a list of the names of the Placement - resource, from which a PlacementDecision will be found and used + description: |- + PacementRefs is a list of the names of the Placement resource, from which a PlacementDecision will be found and used to distribute the ManifestWork. items: description: localPlacementReference is the name of a Placement @@ -344,49 +342,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number of - clusters in the current rollout that can fail before - proceeding to the next rollout. Fail means the cluster - has a failed status or timeout status (does not reach - successful status after ProgressDeadline). Once the - MaxFailures is breached, the rollout will stop. MaxFailures - is only considered for rollout types Progressive and - ProgressivePerGroup. For Progressive, this is considered - over the total number of clusters. For ProgressivePerGroup, - this is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no failures - are tolerated. + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status + (does not reach successful status after ProgressDeadline). + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In other - words, the minimum amount of time the workload applier - controller will wait from the start of each rollout - before proceeding (assuming a successful state has - been reached and MaxFailures wasn't breached). MinSuccessTime - is only considered for rollout types Progressive and - ProgressivePerGroup. The default value is 0 meaning - the workload applier proceeds immediately after a - successful state is reached. MinSuccessTime must be - defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h - , 90m , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload to reach - a successful state in the cluster. If the workload - does not reach a successful state after ProgressDeadline, - will stop waiting and workload will be treated as - "timeout" and be counted into MaxFailures. Once the - MaxFailures is breached, the rollout will stop. ProgressDeadline - default value is "None", meaning the workload applier - will wait for a successful state indefinitely. ProgressDeadline - must be defined in [0-9h]|[0-9m]|[0-9s] format examples; - 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -395,26 +385,26 @@ spec: type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or indexes - to apply the workload first and fail if workload did - not reach successful state. GroupName or GroupIndex - must match with the decisionGroups defined in the - placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label value - with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group should - match the placementDecisions label value with - label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -422,10 +412,10 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of clusters - to deploy workload concurrently. The default value - for MaxConcurrency is determined from the clustersPerDecisionGroup - defined in the placement->DecisionStrategy. + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the + placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true maxFailures: @@ -433,49 +423,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number of - clusters in the current rollout that can fail before - proceeding to the next rollout. Fail means the cluster - has a failed status or timeout status (does not reach - successful status after ProgressDeadline). Once the - MaxFailures is breached, the rollout will stop. MaxFailures - is only considered for rollout types Progressive and - ProgressivePerGroup. For Progressive, this is considered - over the total number of clusters. For ProgressivePerGroup, - this is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no failures - are tolerated. + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status + (does not reach successful status after ProgressDeadline). + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In other - words, the minimum amount of time the workload applier - controller will wait from the start of each rollout - before proceeding (assuming a successful state has - been reached and MaxFailures wasn't breached). MinSuccessTime - is only considered for rollout types Progressive and - ProgressivePerGroup. The default value is 0 meaning - the workload applier proceeds immediately after a - successful state is reached. MinSuccessTime must be - defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h - , 90m , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload to reach - a successful state in the cluster. If the workload - does not reach a successful state after ProgressDeadline, - will stop waiting and workload will be treated as - "timeout" and be counted into MaxFailures. Once the - MaxFailures is breached, the rollout will stop. ProgressDeadline - default value is "None", meaning the workload applier - will wait for a successful state indefinitely. ProgressDeadline - must be defined in [0-9h]|[0-9m]|[0-9s] format examples; - 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -484,26 +466,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or indexes - to apply the workload first and fail if workload did - not reach successful state. GroupName or GroupIndex - must match with the decisionGroups defined in the - placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label value - with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group should - match the placementDecisions label value with - label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -512,49 +494,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number of - clusters in the current rollout that can fail before - proceeding to the next rollout. Fail means the cluster - has a failed status or timeout status (does not reach - successful status after ProgressDeadline). Once the - MaxFailures is breached, the rollout will stop. MaxFailures - is only considered for rollout types Progressive and - ProgressivePerGroup. For Progressive, this is considered - over the total number of clusters. For ProgressivePerGroup, - this is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no failures - are tolerated. + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status + (does not reach successful status after ProgressDeadline). + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In other - words, the minimum amount of time the workload applier - controller will wait from the start of each rollout - before proceeding (assuming a successful state has - been reached and MaxFailures wasn't breached). MinSuccessTime - is only considered for rollout types Progressive and - ProgressivePerGroup. The default value is 0 meaning - the workload applier proceeds immediately after a - successful state is reached. MinSuccessTime must be - defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h - , 90m , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload to reach - a successful state in the cluster. If the workload - does not reach a successful state after ProgressDeadline, - will stop waiting and workload will be treated as - "timeout" and be counted into MaxFailures. Once the - MaxFailures is breached, the rollout will stop. ProgressDeadline - default value is "None", meaning the workload applier - will wait for a successful state indefinitely. ProgressDeadline - must be defined in [0-9h]|[0-9m]|[0-9s] format examples; - 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -579,48 +553,49 @@ spec: resources properties: conditions: - description: 'Conditions contains the different condition statuses - for distrbution of ManifestWork resources Valid condition types - are: 1. AppliedManifestWorks represents ManifestWorks have been - distributed as per placement All, Partial, None, Problem 2. PlacementRefValid' + description: |- + Conditions contains the different condition statuses for distrbution of ManifestWork resources + Valid condition types are: + 1. AppliedManifestWorks represents ManifestWorks have been distributed as per placement All, Partial, None, Problem + 2. PlacementRefValid items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -634,11 +609,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -657,9 +633,9 @@ spec: and clusterGroups selected by the placement refs. properties: availableDecisionGroups: - description: availableDecisionGroups shows number of decisionGroups - that have all clusters manifestWorks in available state regards - total number of decisionGroups. ex; 2/4 (2 out of 4) + description: |- + availableDecisionGroups shows number of decisionGroups that have all clusters manifestWorks in available state regards total number of decisionGroups. + ex; 2/4 (2 out of 4) type: string name: description: PlacementRef Name diff --git a/charts/cluster-proxy-manager/Chart.yaml b/charts/cluster-proxy-manager/Chart.yaml index 99888f5a..c72b277c 100644 --- a/charts/cluster-proxy-manager/Chart.yaml +++ b/charts/cluster-proxy-manager/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: cluster-proxy-manager description: A Helm chart for Cluster-Proxy OCM Addon type: application -version: v2024.7.10 -appVersion: v0.5.0 +version: v2024.12.26 +appVersion: v0.6.0 diff --git a/charts/cluster-proxy-manager/README.md b/charts/cluster-proxy-manager/README.md index be4a93c8..01ac41cc 100644 --- a/charts/cluster-proxy-manager/README.md +++ b/charts/cluster-proxy-manager/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/cluster-proxy-manager --version=v2024.7.10 -$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 +$ helm search repo appscode/cluster-proxy-manager --version=v2024.12.26 +$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a cluster-proxy-manager on a [Kubernetes](http://kubernetes.i To install/upgrade the chart with the release name `cluster-proxy-manager`: ```bash -$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 +$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` The command deploys a cluster-proxy-manager on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -64,12 +64,12 @@ The following table lists the configurable parameters of the `cluster-proxy-mana Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 --set registry=ghcr.io/kluster-manager +$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --set registry=ghcr.io/kluster-manager ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 --values values.yaml +$ helm upgrade -i cluster-proxy-manager appscode/cluster-proxy-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/cluster-proxy-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml b/charts/cluster-proxy-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml index 465dd73b..9d69e582 100644 --- a/charts/cluster-proxy-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml +++ b/charts/cluster-proxy-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml @@ -24,22 +24,27 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ClusterManagementAddOn represents the registration of an add-on - to the cluster manager. This resource allows you to discover which add-ons - are available for the cluster manager and provides metadata information - about the add-ons. The ClusterManagementAddOn name is used for the namespace-scoped - ManagedClusterAddOn resource. ClusterManagementAddOn is a cluster-scoped - resource. + description: |- + ClusterManagementAddOn represents the registration of an add-on to the cluster manager. + This resource allows you to discover which add-ons are available for the cluster manager + and provides metadata information about the add-ons. The ClusterManagementAddOn name is used + for the namespace-scoped ManagedClusterAddOn resource. + ClusterManagementAddOn is a cluster-scoped resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -48,22 +53,21 @@ spec: the cluster management add-on. properties: addOnConfiguration: - description: 'Deprecated: Use supportedConfigs filed instead addOnConfiguration - is a reference to configuration information for the add-on. In scenario - where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn - resources need to be created and reference the same AddOnConfiguration.' + description: |- + Deprecated: Use supportedConfigs filed instead + addOnConfiguration is a reference to configuration information for the add-on. + In scenario where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn + resources need to be created and reference the same AddOnConfiguration. properties: crName: - description: crName is the name of the CR used to configure instances - of the managed add-on. This field should be configured if add-on - CR have a consistent name across the all of the ManagedCluster - instaces. + description: |- + crName is the name of the CR used to configure instances of the managed add-on. + This field should be configured if add-on CR have a consistent name across the all of the ManagedCluster instaces. type: string crdName: - description: crdName is the name of the CRD used to configure - instances of the managed add-on. This field should be configured - if the add-on have a CRD that controls the configuration of - the add-on. + description: |- + crdName is the name of the CRD used to configure instances of the managed add-on. + This field should be configured if the add-on have a CRD that controls the configuration of the add-on. type: string lastObservedGeneration: description: lastObservedGeneration is the observed generation @@ -87,22 +91,22 @@ spec: installStrategy: default: type: Manual - description: InstallStrategy represents that related ManagedClusterAddOns - should be installed on certain clusters. + description: |- + InstallStrategy represents that related ManagedClusterAddOns should be installed + on certain clusters. properties: placements: - description: Placements is a list of placement references honored - when install strategy type is Placements. All clusters selected - by these placements will install the addon If one cluster belongs - to multiple placements, it will only apply the strategy defined - later in the order. That is to say, The latter strategy overrides - the previous one. + description: |- + Placements is a list of placement references honored when install strategy type is + Placements. All clusters selected by these placements will install the addon + If one cluster belongs to multiple placements, it will only apply the strategy defined + later in the order. That is to say, The latter strategy overrides the previous one. items: properties: configs: - description: Configs is the configuration of managedClusterAddon - during installation. User can override the configuration - by updating the managedClusterAddon directly. + description: |- + Configs is the configuration of managedClusterAddon during installation. + User can override the configuration by updating the managedClusterAddon directly. items: properties: group: @@ -114,9 +118,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string resource: description: resource of the add-on configuration. @@ -138,9 +142,9 @@ spec: rolloutStrategy: default: type: All - description: The rollout strategy to apply addon configurations - change. The rollout strategy only watches the addon configurations - defined in ClusterManagementAddOn. + description: |- + The rollout strategy to apply addon configurations change. + The rollout strategy only watches the addon configurations defined in ClusterManagementAddOn. properties: all: description: All defines required fields for RolloutStrategy @@ -151,52 +155,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -205,26 +198,26 @@ spec: RolloutStrategy type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -232,10 +225,9 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of - clusters to deploy workload concurrently. The - default value for MaxConcurrency is determined - from the clustersPerDecisionGroup defined in the + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true @@ -244,52 +236,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -298,26 +279,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -326,52 +307,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -394,35 +364,37 @@ spec: x-kubernetes-list-type: map type: default: Manual - description: 'Type is the type of the install strategy, it can - be: - Manual: no automatic install - Placements: install to - clusters selected by placements.' + description: |- + Type is the type of the install strategy, it can be: + - Manual: no automatic install + - Placements: install to clusters selected by placements. enum: - Manual - Placements type: string type: object supportedConfigs: - description: supportedConfigs is a list of configuration types supported - by add-on. An empty list means the add-on does not require configurations. + description: |- + supportedConfigs is a list of configuration types supported by add-on. + An empty list means the add-on does not require configurations. The default is an empty list items: description: ConfigMeta represents a collection of metadata information for add-on configuration. properties: defaultConfig: - description: defaultConfig represents the namespace and name - of the default add-on configuration. In scenario where all - add-ons have a same configuration. + description: |- + defaultConfig represents the namespace and name of the default add-on configuration. + In scenario where all add-ons have a same configuration. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string required: - name @@ -452,9 +424,9 @@ spec: description: defaultconfigReferences is a list of current add-on default configuration references. items: - description: DefaultConfigReference is a reference to the current - add-on configuration. This resource is used to record the configuration - resource for the current add-on. + description: |- + DefaultConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config spec hash. @@ -464,9 +436,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -496,46 +468,45 @@ spec: monitored components for the operator. items: description: "Condition contains details for one aspect of - the current state of this API Resource. --- This struct + the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path - .status.conditions. For example, \n type FooStatus struct{ - // Represents the observations of a foo's current state. - // Known .status.conditions.type are: \"Available\", \"Progressing\", - and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields - }" + .status.conditions. For example,\n\n\n\ttype FooStatus + struct{\n\t // Represents the observations of a foo's + current state.\n\t // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // + +listType=map\n\t // +listMapKey=type\n\t Conditions + []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" + patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should - be when the underlying condition changed. If that is - not known, then using the time when the API field changed - is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the - current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define expected - values and meanings for this field, and whether the - values are considered a guaranteed API. The value should - be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -549,12 +520,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across - resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability - to deconflict is important. The regex it matches is - (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -570,9 +541,9 @@ spec: description: configReferences is a list of current add-on configuration references. items: - description: InstallConfigReference is a reference to the - current add-on configuration. This resource is used to record - the configuration resource for the current add-on. + description: |- + InstallConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config name @@ -583,9 +554,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -598,18 +569,18 @@ spec: description: group of the add-on configuration. type: string lastAppliedConfig: - description: lastAppliedConfig records the config spec - hash when the all the corresponding ManagedClusterAddOn - are applied successfully. + description: |- + lastAppliedConfig records the config spec hash when the all the corresponding + ManagedClusterAddOn are applied successfully. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -618,22 +589,21 @@ spec: - name type: object lastKnownGoodConfig: - description: lastKnownGoodConfig records the last known - good config spec hash. For fresh install or rollout - with type UpdateAll or RollingUpdate, the lastKnownGoodConfig - is the same as lastAppliedConfig. For rollout with type - RollingUpdateWithCanary, the lastKnownGoodConfig is - the last successfully applied config spec hash of the - canary placement. + description: |- + lastKnownGoodConfig records the last known good config spec hash. + For fresh install or rollout with type UpdateAll or RollingUpdate, the + lastKnownGoodConfig is the same as lastAppliedConfig. + For rollout with type RollingUpdateWithCanary, the lastKnownGoodConfig + is the last successfully applied config spec hash of the canary placement. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. diff --git a/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml b/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml index 6e75601a..294939ea 100644 --- a/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml +++ b/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml @@ -17,22 +17,27 @@ spec: - name: v1beta2 schema: openAPIV3Schema: - description: ManagedClusterSetBinding projects a ManagedClusterSet into a - certain namespace. You can create a ManagedClusterSetBinding in a namespace - and bind it to a ManagedClusterSet if both have a RBAC rules to CREATE on - the virtual subresource of managedclustersets/bind. Workloads that you create - in the same namespace can only be distributed to ManagedClusters in ManagedClusterSets - that are bound in this namespace by higher-level controllers. + description: |- + ManagedClusterSetBinding projects a ManagedClusterSet into a certain namespace. + You can create a ManagedClusterSetBinding in a namespace and bind it to a + ManagedClusterSet if both have a RBAC rules to CREATE on the virtual subresource of managedclustersets/bind. + Workloads that you create in the same namespace can only be distributed to ManagedClusters + in ManagedClusterSets that are bound in this namespace by higher-level controllers. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -40,11 +45,11 @@ spec: description: Spec defines the attributes of ManagedClusterSetBinding. properties: clusterSet: - description: ClusterSet is the name of the ManagedClusterSet to bind. - It must match the instance name of the ManagedClusterSetBinding - and cannot change once created. User is allowed to set this field - if they have an RBAC rule to CREATE on the virtual subresource of - managedclustersets/bind. + description: |- + ClusterSet is the name of the ManagedClusterSet to bind. It must match the + instance name of the ManagedClusterSetBinding and cannot change once created. + User is allowed to set this field if they have an RBAC rule to CREATE on the + virtual subresource of managedclustersets/bind. minLength: 1 type: string type: object @@ -56,42 +61,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -105,11 +110,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_placements.yaml b/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_placements.yaml index dd4ac28c..fdb3729f 100644 --- a/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_placements.yaml +++ b/charts/cluster-proxy-manager/crds/cluster.open-cluster-management.io_placements.yaml @@ -24,34 +24,49 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: "Placement defines a rule to select a set of ManagedClusters - from the ManagedClusterSets bound to the placement namespace. \n Here is - how the placement policy combines with other selection methods to determine - a matching list of ManagedClusters: 1. Kubernetes clusters are registered - with hub as cluster-scoped ManagedClusters; 2. ManagedClusters are organized - into cluster-scoped ManagedClusterSets; 3. ManagedClusterSets are bound - to workload namespaces; 4. Namespace-scoped Placements specify a slice of - ManagedClusterSets which select a working set of potential ManagedClusters; - 5. Then Placements subselect from that working set using label/claim selection. - \n A ManagedCluster will not be selected if no ManagedClusterSet is bound - to the placement namespace. A user is able to bind a ManagedClusterSet to - a namespace by creating a ManagedClusterSetBinding in that namespace if - they have an RBAC rule to CREATE on the virtual subresource of `managedclustersets/bind`. - \n A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement - name} will be created to represent the ManagedClusters selected by this - placement. \n If a ManagedCluster is selected and added into the PlacementDecisions, - other components may apply workload on it; once it is removed from the PlacementDecisions, - the workload applied on this ManagedCluster should be evicted accordingly." + description: |- + Placement defines a rule to select a set of ManagedClusters from the ManagedClusterSets bound + to the placement namespace. + + + Here is how the placement policy combines with other selection methods to determine a matching + list of ManagedClusters: + 1. Kubernetes clusters are registered with hub as cluster-scoped ManagedClusters; + 2. ManagedClusters are organized into cluster-scoped ManagedClusterSets; + 3. ManagedClusterSets are bound to workload namespaces; + 4. Namespace-scoped Placements specify a slice of ManagedClusterSets which select a working set + of potential ManagedClusters; + 5. Then Placements subselect from that working set using label/claim selection. + + + A ManagedCluster will not be selected if no ManagedClusterSet is bound to the placement + namespace. A user is able to bind a ManagedClusterSet to a namespace by creating a + ManagedClusterSetBinding in that namespace if they have an RBAC rule to CREATE on the virtual + subresource of `managedclustersets/bind`. + + + A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement name} + will be created to represent the ManagedClusters selected by this placement. + + + If a ManagedCluster is selected and added into the PlacementDecisions, other components may + apply workload on it; once it is removed from the PlacementDecisions, the workload applied on + this ManagedCluster should be evicted accordingly. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -59,12 +74,11 @@ spec: description: Spec defines the attributes of Placement. properties: clusterSets: - description: ClusterSets represent the ManagedClusterSets from which - the ManagedClusters are selected. If the slice is empty, ManagedClusters - will be selected from the ManagedClusterSets bound to the placement - namespace, otherwise ManagedClusters will be selected from the intersection - of this slice and the ManagedClusterSets bound to the placement - namespace. + description: |- + ClusterSets represent the ManagedClusterSets from which the ManagedClusters are selected. + If the slice is empty, ManagedClusters will be selected from the ManagedClusterSets bound to the placement + namespace, otherwise ManagedClusters will be selected from the intersection of this slice and the + ManagedClusterSets bound to the placement namespace. items: type: string type: array @@ -81,32 +95,28 @@ spec: - type: integer - type: string default: 100% - description: "ClustersPerDecisionGroup is a specific number - or percentage of the total selected clusters. The specific - number will divide the placementDecisions to decisionGroups - each group has max number of clusters equal to that specific - number. The percentage will divide the placementDecisions - to decisionGroups each group has max number of clusters - based on the total num of selected clusters and percentage. - ex; for a total 100 clusters selected, ClustersPerDecisionGroup - equal to 20% will divide the placement decision to 5 groups - each group should have 20 clusters. Default is having all - clusters in a single group. \n The predefined decisionGroups - is expected to be a subset of the selected clusters and - the number of items in each group SHOULD be less than ClustersPerDecisionGroup. - Once the number of items exceeds the ClustersPerDecisionGroup, - the decisionGroups will also be be divided into multiple - decisionGroups with same GroupName but different GroupIndex." + description: |- + ClustersPerDecisionGroup is a specific number or percentage of the total selected clusters. + The specific number will divide the placementDecisions to decisionGroups each group has max number of clusters + equal to that specific number. + The percentage will divide the placementDecisions to decisionGroups each group has max number of clusters based + on the total num of selected clusters and percentage. + ex; for a total 100 clusters selected, ClustersPerDecisionGroup equal to 20% will divide the placement decision + to 5 groups each group should have 20 clusters. + Default is having all clusters in a single group. + + + The predefined decisionGroups is expected to be a subset of the selected clusters and the number of items in each + group SHOULD be less than ClustersPerDecisionGroup. Once the number of items exceeds the ClustersPerDecisionGroup, + the decisionGroups will also be be divided into multiple decisionGroups with same GroupName but different GroupIndex. pattern: ^((100|[1-9][0-9]{0,1})%|[1-9][0-9]*)$ x-kubernetes-int-or-string: true decisionGroups: - description: DecisionGroups represents a list of predefined - groups to put decision results. Decision groups will be - constructed based on the DecisionGroups field at first. - The clusters not included in the DecisionGroups will be - divided to other decision groups afterwards. Each decision - group should not have the number of clusters larger than - the ClustersPerDecisionGroup. + description: |- + DecisionGroups represents a list of predefined groups to put decision results. + Decision groups will be constructed based on the DecisionGroups field at first. The clusters not included in the + DecisionGroups will be divided to other decision groups afterwards. Each decision group should not have the number + of clusters larger than the ClustersPerDecisionGroup. items: description: DecisionGroup define a subset of clusters that will be added to placementDecisions with groupName label. @@ -124,32 +134,29 @@ spec: claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -165,46 +172,42 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -223,18 +226,18 @@ spec: type: object type: object numberOfClusters: - description: NumberOfClusters represents the desired number of ManagedClusters - to be selected which meet the placement requirements. 1) If not - specified, all ManagedClusters which meet the placement requirements - (including ClusterSets, and Predicates) will be selected; 2) Otherwise - if the nubmer of ManagedClusters meet the placement requirements - is larger than NumberOfClusters, a random subset with desired number - of ManagedClusters will be selected; 3) If the nubmer of ManagedClusters - meet the placement requirements is equal to NumberOfClusters, all - of them will be selected; 4) If the nubmer of ManagedClusters meet - the placement requirements is less than NumberOfClusters, all of - them will be selected, and the status of condition `PlacementConditionSatisfied` - will be set to false; + description: |- + NumberOfClusters represents the desired number of ManagedClusters to be selected which meet the + placement requirements. + 1) If not specified, all ManagedClusters which meet the placement requirements (including ClusterSets, + and Predicates) will be selected; + 2) Otherwise if the nubmer of ManagedClusters meet the placement requirements is larger than + NumberOfClusters, a random subset with desired number of ManagedClusters will be selected; + 3) If the nubmer of ManagedClusters meet the placement requirements is equal to NumberOfClusters, + all of them will be selected; + 4) If the nubmer of ManagedClusters meet the placement requirements is less than NumberOfClusters, + all of them will be selected, and the status of condition `PlacementConditionSatisfied` will be + set to false; format: int32 type: integer predicates: @@ -244,16 +247,13 @@ spec: description: ClusterPredicate represents a predicate to select ManagedClusters. properties: requiredClusterSelector: - description: RequiredClusterSelector represents a selector of - ManagedClusters by label and claim. If specified, 1) Any ManagedCluster, - which does not match the selector, should not be selected - by this ClusterPredicate; 2) If a selected ManagedCluster - (of this ClusterPredicate) ceases to match the selector (e.g. - due to an update) of any ClusterPredicate, it will be eventually - removed from the placement decisions; 3) If a ManagedCluster - (not selected previously) starts to match the selector, it - will either be selected or at least has a chance to be selected - (when NumberOfClusters is specified); + description: |- + RequiredClusterSelector represents a selector of ManagedClusters by label and claim. If specified, + 1) Any ManagedCluster, which does not match the selector, should not be selected by this ClusterPredicate; + 2) If a selected ManagedCluster (of this ClusterPredicate) ceases to match the selector (e.g. due to + an update) of any ClusterPredicate, it will be eventually removed from the placement decisions; + 3) If a ManagedCluster (not selected previously) starts to match the selector, it will either + be selected or at least has a chance to be selected (when NumberOfClusters is specified); properties: claimSelector: description: ClaimSelector represents a selector of ManagedClusters @@ -263,8 +263,8 @@ spec: description: matchExpressions is a list of cluster claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -272,20 +272,20 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -300,8 +300,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -309,33 +309,33 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -343,10 +343,10 @@ spec: type: object type: array prioritizerPolicy: - description: PrioritizerPolicy defines the policy of the prioritizers. - If this field is unset, then default prioritizer mode and configurations - are used. Referring to PrioritizerPolicy to see more description - about Mode and Configurations. + description: |- + PrioritizerPolicy defines the policy of the prioritizers. + If this field is unset, then default prioritizer mode and configurations are used. + Referring to PrioritizerPolicy to see more description about Mode and Configurations. properties: configurations: items: @@ -362,37 +362,35 @@ spec: resource name and score name. properties: resourceName: - description: ResourceName defines the resource name - of the AddOnPlacementScore. The placement prioritizer - selects AddOnPlacementScore CR by this name. + description: |- + ResourceName defines the resource name of the AddOnPlacementScore. + The placement prioritizer selects AddOnPlacementScore CR by this name. type: string scoreName: - description: ScoreName defines the score name inside - AddOnPlacementScore. AddOnPlacementScore contains - a list of score name and score value, ScoreName - specify the score to be used by the prioritizer. + description: |- + ScoreName defines the score name inside AddOnPlacementScore. + AddOnPlacementScore contains a list of score name and score value, ScoreName specify the score to be used by + the prioritizer. type: string required: - resourceName - scoreName type: object builtIn: - description: 'BuiltIn defines the name of a BuiltIn - prioritizer. Below are the valid BuiltIn prioritizer - names. 1) Balance: balance the decisions among the - clusters. 2) Steady: ensure the existing decision - is stabilized. 3) ResourceAllocatableCPU & ResourceAllocatableMemory: - sort clusters based on the allocatable. 4) Spread: - spread the workload evenly to topologies.' + description: |- + BuiltIn defines the name of a BuiltIn prioritizer. Below are the valid BuiltIn prioritizer names. + 1) Balance: balance the decisions among the clusters. + 2) Steady: ensure the existing decision is stabilized. + 3) ResourceAllocatableCPU & ResourceAllocatableMemory: sort clusters based on the allocatable. + 4) Spread: spread the workload evenly to topologies. type: string type: default: BuiltIn - description: Type defines the type of the prioritizer - score. Type is either "BuiltIn", "AddOn" or "", where - "" is "BuiltIn" by default. When the type is "BuiltIn", - need to specify a BuiltIn prioritizer name in BuiltIn. - When the type is "AddOn", need to configure the score - source in AddOn. + description: |- + Type defines the type of the prioritizer score. + Type is either "BuiltIn", "AddOn" or "", where "" is "BuiltIn" by default. + When the type is "BuiltIn", need to specify a BuiltIn prioritizer name in BuiltIn. + When the type is "AddOn", need to configure the score source in AddOn. enum: - BuiltIn - AddOn @@ -402,14 +400,13 @@ spec: type: object weight: default: 1 - description: Weight defines the weight of the prioritizer - score. The value must be ranged in [-10,10]. Each prioritizer - will calculate an integer score of a cluster in the range - of [-100, 100]. The final score of a cluster will be sum(weight - * prioritizer_score). A higher weight indicates that the - prioritizer weights more in the cluster selection, while - 0 weight indicates that the prioritizer is disabled. A - negative weight indicates wants to select the last ones. + description: |- + Weight defines the weight of the prioritizer score. The value must be ranged in [-10,10]. + Each prioritizer will calculate an integer score of a cluster in the range of [-100, 100]. + The final score of a cluster will be sum(weight * prioritizer_score). + A higher weight indicates that the prioritizer weights more in the cluster selection, + while 0 weight indicates that the prioritizer is disabled. A negative weight indicates + wants to select the last ones. format: int32 maximum: 10 minimum: -10 @@ -420,43 +417,38 @@ spec: type: array mode: default: Additive - description: Mode is either Exact, Additive, "" where "" is Additive - by default. In Additive mode, any prioritizer not explicitly - enumerated is enabled in its default Configurations, in which - Steady and Balance prioritizers have the weight of 1 while other - prioritizers have the weight of 0. Additive doesn't require - configuring all prioritizers. The default Configurations may - change in the future, and additional prioritization will happen. - In Exact mode, any prioritizer not explicitly enumerated is - weighted as zero. Exact requires knowing the full set of prioritizers - you want, but avoids behavior changes between releases. + description: |- + Mode is either Exact, Additive, "" where "" is Additive by default. + In Additive mode, any prioritizer not explicitly enumerated is enabled in its default Configurations, + in which Steady and Balance prioritizers have the weight of 1 while other prioritizers have the weight of 0. + Additive doesn't require configuring all prioritizers. The default Configurations may change in the future, + and additional prioritization will happen. + In Exact mode, any prioritizer not explicitly enumerated is weighted as zero. + Exact requires knowing the full set of prioritizers you want, but avoids behavior changes between releases. type: string type: object spreadPolicy: - description: SpreadPolicy defines how placement decisions should be - distributed among a set of ManagedClusters. + description: |- + SpreadPolicy defines how placement decisions should be distributed among a + set of ManagedClusters. properties: spreadConstraints: - description: SpreadConstraints defines how the placement decision - should be distributed among a set of ManagedClusters. The importance - of the SpreadConstraintsTerms follows the natural order of their - index in the slice. The scheduler first consider SpreadConstraintsTerms - with smaller index then those with larger index to distribute - the placement decision. + description: |- + SpreadConstraints defines how the placement decision should be distributed among a set of ManagedClusters. + The importance of the SpreadConstraintsTerms follows the natural order of their index in the slice. + The scheduler first consider SpreadConstraintsTerms with smaller index then those with larger index + to distribute the placement decision. items: description: SpreadConstraintsTerm defines a terminology to spread placement decisions. properties: maxSkew: default: 1 - description: MaxSkew represents the degree to which the - workload may be unevenly distributed. Skew is the maximum - difference between the number of selected ManagedClusters - in a topology and the global minimum. The global minimum - is the minimum number of selected ManagedClusters for - the topologies within the same TopologyKey. The minimum - possible value of MaxSkew is 1, and the default value - is 1. + description: |- + MaxSkew represents the degree to which the workload may be unevenly distributed. + Skew is the maximum difference between the number of selected ManagedClusters in a topology and the global minimum. + The global minimum is the minimum number of selected ManagedClusters for the topologies within the same TopologyKey. + The minimum possible value of MaxSkew is 1, and the default value is 1. format: int32 minimum: 1 type: integer @@ -475,13 +467,11 @@ spec: type: string whenUnsatisfiable: default: ScheduleAnyway - description: WhenUnsatisfiable represents the action of - the scheduler when MaxSkew cannot be satisfied. It could - be DoNotSchedule or ScheduleAnyway. The default value - is ScheduleAnyway. DoNotSchedule instructs the scheduler - not to schedule more ManagedClusters when MaxSkew is not - satisfied. ScheduleAnyway instructs the scheduler to keep - scheduling even if MaxSkew is not satisfied. + description: |- + WhenUnsatisfiable represents the action of the scheduler when MaxSkew cannot be satisfied. + It could be DoNotSchedule or ScheduleAnyway. The default value is ScheduleAnyway. + DoNotSchedule instructs the scheduler not to schedule more ManagedClusters when MaxSkew is not satisfied. + ScheduleAnyway instructs the scheduler to keep scheduling even if MaxSkew is not satisfied. enum: - DoNotSchedule - ScheduleAnyway @@ -494,53 +484,52 @@ spec: type: array type: object tolerations: - description: Tolerations are applied to placements, and allow (but - do not require) the managed clusters with certain taints to be selected - by placements with matching tolerations. + description: |- + Tolerations are applied to placements, and allow (but do not require) the managed clusters with + certain taints to be selected by placements with matching tolerations. items: - description: Toleration represents the toleration object that can - be attached to a placement. The placement this Toleration is attached - to tolerates any taint that matches the triple - using the matching operator . + description: |- + Toleration represents the toleration object that can be attached to a placement. + The placement this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSelect, PreferNoSelect and NoSelectIfNew. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSelect, PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string operator: default: Equal - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a placement - can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a placement can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoSelect/PreferNoSelect, - otherwise this field is ignored) tolerates the taint. The - default value is nil, which indicates it tolerates the taint - forever. The start time of counting the TolerationSeconds - should be the TimeAdded in Taint, not the cluster scheduled - time or TolerationSeconds added time. + description: |- + TolerationSeconds represents the period of time the toleration (which must be of effect + NoSelect/PreferNoSelect, otherwise this field is ignored) tolerates the taint. + The default value is nil, which indicates it tolerates the taint forever. + The start time of counting the TolerationSeconds should be the TimeAdded in Taint, not the cluster + scheduled time or TolerationSeconds added time. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. maxLength: 1024 type: string type: object @@ -554,42 +543,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -603,11 +592,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/fluxcd-manager/Chart.yaml b/charts/fluxcd-manager/Chart.yaml index 8985815b..8872b3a6 100644 --- a/charts/fluxcd-manager/Chart.yaml +++ b/charts/fluxcd-manager/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: fluxcd-manager description: Installs FluxCD in managed clusters type: application -version: v2024.7.10 -appVersion: v0.0.4 +version: v2024.12.26 +appVersion: v0.0.5 home: https://open-cluster-management.io sources: - https://github.com/kluster-manager/installer diff --git a/charts/fluxcd-manager/README.md b/charts/fluxcd-manager/README.md index 8dd46d62..70d47f02 100644 --- a/charts/fluxcd-manager/README.md +++ b/charts/fluxcd-manager/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/fluxcd-manager --version=v2024.7.10 -$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 +$ helm search repo appscode/fluxcd-manager --version=v2024.12.26 +$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a FluxCD Manager on a [Kubernetes](http://kubernetes.io) clus To install/upgrade the chart with the release name `fluxcd-manager`: ```bash -$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 +$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` The command deploys a FluxCD Manager on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -76,12 +76,12 @@ The following table lists the configurable parameters of the `fluxcd-manager` ch Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 --set image=ghcr.io/kluster-manager/fluxcd-addon +$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --set image=ghcr.io/kluster-manager/fluxcd-addon ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 --values values.yaml +$ helm upgrade -i fluxcd-manager appscode/fluxcd-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/fluxcd-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml b/charts/fluxcd-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml index 465dd73b..9d69e582 100644 --- a/charts/fluxcd-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml +++ b/charts/fluxcd-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml @@ -24,22 +24,27 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ClusterManagementAddOn represents the registration of an add-on - to the cluster manager. This resource allows you to discover which add-ons - are available for the cluster manager and provides metadata information - about the add-ons. The ClusterManagementAddOn name is used for the namespace-scoped - ManagedClusterAddOn resource. ClusterManagementAddOn is a cluster-scoped - resource. + description: |- + ClusterManagementAddOn represents the registration of an add-on to the cluster manager. + This resource allows you to discover which add-ons are available for the cluster manager + and provides metadata information about the add-ons. The ClusterManagementAddOn name is used + for the namespace-scoped ManagedClusterAddOn resource. + ClusterManagementAddOn is a cluster-scoped resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -48,22 +53,21 @@ spec: the cluster management add-on. properties: addOnConfiguration: - description: 'Deprecated: Use supportedConfigs filed instead addOnConfiguration - is a reference to configuration information for the add-on. In scenario - where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn - resources need to be created and reference the same AddOnConfiguration.' + description: |- + Deprecated: Use supportedConfigs filed instead + addOnConfiguration is a reference to configuration information for the add-on. + In scenario where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn + resources need to be created and reference the same AddOnConfiguration. properties: crName: - description: crName is the name of the CR used to configure instances - of the managed add-on. This field should be configured if add-on - CR have a consistent name across the all of the ManagedCluster - instaces. + description: |- + crName is the name of the CR used to configure instances of the managed add-on. + This field should be configured if add-on CR have a consistent name across the all of the ManagedCluster instaces. type: string crdName: - description: crdName is the name of the CRD used to configure - instances of the managed add-on. This field should be configured - if the add-on have a CRD that controls the configuration of - the add-on. + description: |- + crdName is the name of the CRD used to configure instances of the managed add-on. + This field should be configured if the add-on have a CRD that controls the configuration of the add-on. type: string lastObservedGeneration: description: lastObservedGeneration is the observed generation @@ -87,22 +91,22 @@ spec: installStrategy: default: type: Manual - description: InstallStrategy represents that related ManagedClusterAddOns - should be installed on certain clusters. + description: |- + InstallStrategy represents that related ManagedClusterAddOns should be installed + on certain clusters. properties: placements: - description: Placements is a list of placement references honored - when install strategy type is Placements. All clusters selected - by these placements will install the addon If one cluster belongs - to multiple placements, it will only apply the strategy defined - later in the order. That is to say, The latter strategy overrides - the previous one. + description: |- + Placements is a list of placement references honored when install strategy type is + Placements. All clusters selected by these placements will install the addon + If one cluster belongs to multiple placements, it will only apply the strategy defined + later in the order. That is to say, The latter strategy overrides the previous one. items: properties: configs: - description: Configs is the configuration of managedClusterAddon - during installation. User can override the configuration - by updating the managedClusterAddon directly. + description: |- + Configs is the configuration of managedClusterAddon during installation. + User can override the configuration by updating the managedClusterAddon directly. items: properties: group: @@ -114,9 +118,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string resource: description: resource of the add-on configuration. @@ -138,9 +142,9 @@ spec: rolloutStrategy: default: type: All - description: The rollout strategy to apply addon configurations - change. The rollout strategy only watches the addon configurations - defined in ClusterManagementAddOn. + description: |- + The rollout strategy to apply addon configurations change. + The rollout strategy only watches the addon configurations defined in ClusterManagementAddOn. properties: all: description: All defines required fields for RolloutStrategy @@ -151,52 +155,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -205,26 +198,26 @@ spec: RolloutStrategy type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -232,10 +225,9 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of - clusters to deploy workload concurrently. The - default value for MaxConcurrency is determined - from the clustersPerDecisionGroup defined in the + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true @@ -244,52 +236,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -298,26 +279,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -326,52 +307,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -394,35 +364,37 @@ spec: x-kubernetes-list-type: map type: default: Manual - description: 'Type is the type of the install strategy, it can - be: - Manual: no automatic install - Placements: install to - clusters selected by placements.' + description: |- + Type is the type of the install strategy, it can be: + - Manual: no automatic install + - Placements: install to clusters selected by placements. enum: - Manual - Placements type: string type: object supportedConfigs: - description: supportedConfigs is a list of configuration types supported - by add-on. An empty list means the add-on does not require configurations. + description: |- + supportedConfigs is a list of configuration types supported by add-on. + An empty list means the add-on does not require configurations. The default is an empty list items: description: ConfigMeta represents a collection of metadata information for add-on configuration. properties: defaultConfig: - description: defaultConfig represents the namespace and name - of the default add-on configuration. In scenario where all - add-ons have a same configuration. + description: |- + defaultConfig represents the namespace and name of the default add-on configuration. + In scenario where all add-ons have a same configuration. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string required: - name @@ -452,9 +424,9 @@ spec: description: defaultconfigReferences is a list of current add-on default configuration references. items: - description: DefaultConfigReference is a reference to the current - add-on configuration. This resource is used to record the configuration - resource for the current add-on. + description: |- + DefaultConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config spec hash. @@ -464,9 +436,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -496,46 +468,45 @@ spec: monitored components for the operator. items: description: "Condition contains details for one aspect of - the current state of this API Resource. --- This struct + the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path - .status.conditions. For example, \n type FooStatus struct{ - // Represents the observations of a foo's current state. - // Known .status.conditions.type are: \"Available\", \"Progressing\", - and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields - }" + .status.conditions. For example,\n\n\n\ttype FooStatus + struct{\n\t // Represents the observations of a foo's + current state.\n\t // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // + +listType=map\n\t // +listMapKey=type\n\t Conditions + []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" + patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should - be when the underlying condition changed. If that is - not known, then using the time when the API field changed - is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the - current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define expected - values and meanings for this field, and whether the - values are considered a guaranteed API. The value should - be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -549,12 +520,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across - resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability - to deconflict is important. The regex it matches is - (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -570,9 +541,9 @@ spec: description: configReferences is a list of current add-on configuration references. items: - description: InstallConfigReference is a reference to the - current add-on configuration. This resource is used to record - the configuration resource for the current add-on. + description: |- + InstallConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config name @@ -583,9 +554,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -598,18 +569,18 @@ spec: description: group of the add-on configuration. type: string lastAppliedConfig: - description: lastAppliedConfig records the config spec - hash when the all the corresponding ManagedClusterAddOn - are applied successfully. + description: |- + lastAppliedConfig records the config spec hash when the all the corresponding + ManagedClusterAddOn are applied successfully. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -618,22 +589,21 @@ spec: - name type: object lastKnownGoodConfig: - description: lastKnownGoodConfig records the last known - good config spec hash. For fresh install or rollout - with type UpdateAll or RollingUpdate, the lastKnownGoodConfig - is the same as lastAppliedConfig. For rollout with type - RollingUpdateWithCanary, the lastKnownGoodConfig is - the last successfully applied config spec hash of the - canary placement. + description: |- + lastKnownGoodConfig records the last known good config spec hash. + For fresh install or rollout with type UpdateAll or RollingUpdate, the + lastKnownGoodConfig is the same as lastAppliedConfig. + For rollout with type RollingUpdateWithCanary, the lastKnownGoodConfig + is the last successfully applied config spec hash of the canary placement. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. diff --git a/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml b/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml index 6e75601a..294939ea 100644 --- a/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml +++ b/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml @@ -17,22 +17,27 @@ spec: - name: v1beta2 schema: openAPIV3Schema: - description: ManagedClusterSetBinding projects a ManagedClusterSet into a - certain namespace. You can create a ManagedClusterSetBinding in a namespace - and bind it to a ManagedClusterSet if both have a RBAC rules to CREATE on - the virtual subresource of managedclustersets/bind. Workloads that you create - in the same namespace can only be distributed to ManagedClusters in ManagedClusterSets - that are bound in this namespace by higher-level controllers. + description: |- + ManagedClusterSetBinding projects a ManagedClusterSet into a certain namespace. + You can create a ManagedClusterSetBinding in a namespace and bind it to a + ManagedClusterSet if both have a RBAC rules to CREATE on the virtual subresource of managedclustersets/bind. + Workloads that you create in the same namespace can only be distributed to ManagedClusters + in ManagedClusterSets that are bound in this namespace by higher-level controllers. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -40,11 +45,11 @@ spec: description: Spec defines the attributes of ManagedClusterSetBinding. properties: clusterSet: - description: ClusterSet is the name of the ManagedClusterSet to bind. - It must match the instance name of the ManagedClusterSetBinding - and cannot change once created. User is allowed to set this field - if they have an RBAC rule to CREATE on the virtual subresource of - managedclustersets/bind. + description: |- + ClusterSet is the name of the ManagedClusterSet to bind. It must match the + instance name of the ManagedClusterSetBinding and cannot change once created. + User is allowed to set this field if they have an RBAC rule to CREATE on the + virtual subresource of managedclustersets/bind. minLength: 1 type: string type: object @@ -56,42 +61,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -105,11 +110,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_placements.yaml b/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_placements.yaml index dd4ac28c..fdb3729f 100644 --- a/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_placements.yaml +++ b/charts/fluxcd-manager/crds/cluster.open-cluster-management.io_placements.yaml @@ -24,34 +24,49 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: "Placement defines a rule to select a set of ManagedClusters - from the ManagedClusterSets bound to the placement namespace. \n Here is - how the placement policy combines with other selection methods to determine - a matching list of ManagedClusters: 1. Kubernetes clusters are registered - with hub as cluster-scoped ManagedClusters; 2. ManagedClusters are organized - into cluster-scoped ManagedClusterSets; 3. ManagedClusterSets are bound - to workload namespaces; 4. Namespace-scoped Placements specify a slice of - ManagedClusterSets which select a working set of potential ManagedClusters; - 5. Then Placements subselect from that working set using label/claim selection. - \n A ManagedCluster will not be selected if no ManagedClusterSet is bound - to the placement namespace. A user is able to bind a ManagedClusterSet to - a namespace by creating a ManagedClusterSetBinding in that namespace if - they have an RBAC rule to CREATE on the virtual subresource of `managedclustersets/bind`. - \n A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement - name} will be created to represent the ManagedClusters selected by this - placement. \n If a ManagedCluster is selected and added into the PlacementDecisions, - other components may apply workload on it; once it is removed from the PlacementDecisions, - the workload applied on this ManagedCluster should be evicted accordingly." + description: |- + Placement defines a rule to select a set of ManagedClusters from the ManagedClusterSets bound + to the placement namespace. + + + Here is how the placement policy combines with other selection methods to determine a matching + list of ManagedClusters: + 1. Kubernetes clusters are registered with hub as cluster-scoped ManagedClusters; + 2. ManagedClusters are organized into cluster-scoped ManagedClusterSets; + 3. ManagedClusterSets are bound to workload namespaces; + 4. Namespace-scoped Placements specify a slice of ManagedClusterSets which select a working set + of potential ManagedClusters; + 5. Then Placements subselect from that working set using label/claim selection. + + + A ManagedCluster will not be selected if no ManagedClusterSet is bound to the placement + namespace. A user is able to bind a ManagedClusterSet to a namespace by creating a + ManagedClusterSetBinding in that namespace if they have an RBAC rule to CREATE on the virtual + subresource of `managedclustersets/bind`. + + + A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement name} + will be created to represent the ManagedClusters selected by this placement. + + + If a ManagedCluster is selected and added into the PlacementDecisions, other components may + apply workload on it; once it is removed from the PlacementDecisions, the workload applied on + this ManagedCluster should be evicted accordingly. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -59,12 +74,11 @@ spec: description: Spec defines the attributes of Placement. properties: clusterSets: - description: ClusterSets represent the ManagedClusterSets from which - the ManagedClusters are selected. If the slice is empty, ManagedClusters - will be selected from the ManagedClusterSets bound to the placement - namespace, otherwise ManagedClusters will be selected from the intersection - of this slice and the ManagedClusterSets bound to the placement - namespace. + description: |- + ClusterSets represent the ManagedClusterSets from which the ManagedClusters are selected. + If the slice is empty, ManagedClusters will be selected from the ManagedClusterSets bound to the placement + namespace, otherwise ManagedClusters will be selected from the intersection of this slice and the + ManagedClusterSets bound to the placement namespace. items: type: string type: array @@ -81,32 +95,28 @@ spec: - type: integer - type: string default: 100% - description: "ClustersPerDecisionGroup is a specific number - or percentage of the total selected clusters. The specific - number will divide the placementDecisions to decisionGroups - each group has max number of clusters equal to that specific - number. The percentage will divide the placementDecisions - to decisionGroups each group has max number of clusters - based on the total num of selected clusters and percentage. - ex; for a total 100 clusters selected, ClustersPerDecisionGroup - equal to 20% will divide the placement decision to 5 groups - each group should have 20 clusters. Default is having all - clusters in a single group. \n The predefined decisionGroups - is expected to be a subset of the selected clusters and - the number of items in each group SHOULD be less than ClustersPerDecisionGroup. - Once the number of items exceeds the ClustersPerDecisionGroup, - the decisionGroups will also be be divided into multiple - decisionGroups with same GroupName but different GroupIndex." + description: |- + ClustersPerDecisionGroup is a specific number or percentage of the total selected clusters. + The specific number will divide the placementDecisions to decisionGroups each group has max number of clusters + equal to that specific number. + The percentage will divide the placementDecisions to decisionGroups each group has max number of clusters based + on the total num of selected clusters and percentage. + ex; for a total 100 clusters selected, ClustersPerDecisionGroup equal to 20% will divide the placement decision + to 5 groups each group should have 20 clusters. + Default is having all clusters in a single group. + + + The predefined decisionGroups is expected to be a subset of the selected clusters and the number of items in each + group SHOULD be less than ClustersPerDecisionGroup. Once the number of items exceeds the ClustersPerDecisionGroup, + the decisionGroups will also be be divided into multiple decisionGroups with same GroupName but different GroupIndex. pattern: ^((100|[1-9][0-9]{0,1})%|[1-9][0-9]*)$ x-kubernetes-int-or-string: true decisionGroups: - description: DecisionGroups represents a list of predefined - groups to put decision results. Decision groups will be - constructed based on the DecisionGroups field at first. - The clusters not included in the DecisionGroups will be - divided to other decision groups afterwards. Each decision - group should not have the number of clusters larger than - the ClustersPerDecisionGroup. + description: |- + DecisionGroups represents a list of predefined groups to put decision results. + Decision groups will be constructed based on the DecisionGroups field at first. The clusters not included in the + DecisionGroups will be divided to other decision groups afterwards. Each decision group should not have the number + of clusters larger than the ClustersPerDecisionGroup. items: description: DecisionGroup define a subset of clusters that will be added to placementDecisions with groupName label. @@ -124,32 +134,29 @@ spec: claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -165,46 +172,42 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -223,18 +226,18 @@ spec: type: object type: object numberOfClusters: - description: NumberOfClusters represents the desired number of ManagedClusters - to be selected which meet the placement requirements. 1) If not - specified, all ManagedClusters which meet the placement requirements - (including ClusterSets, and Predicates) will be selected; 2) Otherwise - if the nubmer of ManagedClusters meet the placement requirements - is larger than NumberOfClusters, a random subset with desired number - of ManagedClusters will be selected; 3) If the nubmer of ManagedClusters - meet the placement requirements is equal to NumberOfClusters, all - of them will be selected; 4) If the nubmer of ManagedClusters meet - the placement requirements is less than NumberOfClusters, all of - them will be selected, and the status of condition `PlacementConditionSatisfied` - will be set to false; + description: |- + NumberOfClusters represents the desired number of ManagedClusters to be selected which meet the + placement requirements. + 1) If not specified, all ManagedClusters which meet the placement requirements (including ClusterSets, + and Predicates) will be selected; + 2) Otherwise if the nubmer of ManagedClusters meet the placement requirements is larger than + NumberOfClusters, a random subset with desired number of ManagedClusters will be selected; + 3) If the nubmer of ManagedClusters meet the placement requirements is equal to NumberOfClusters, + all of them will be selected; + 4) If the nubmer of ManagedClusters meet the placement requirements is less than NumberOfClusters, + all of them will be selected, and the status of condition `PlacementConditionSatisfied` will be + set to false; format: int32 type: integer predicates: @@ -244,16 +247,13 @@ spec: description: ClusterPredicate represents a predicate to select ManagedClusters. properties: requiredClusterSelector: - description: RequiredClusterSelector represents a selector of - ManagedClusters by label and claim. If specified, 1) Any ManagedCluster, - which does not match the selector, should not be selected - by this ClusterPredicate; 2) If a selected ManagedCluster - (of this ClusterPredicate) ceases to match the selector (e.g. - due to an update) of any ClusterPredicate, it will be eventually - removed from the placement decisions; 3) If a ManagedCluster - (not selected previously) starts to match the selector, it - will either be selected or at least has a chance to be selected - (when NumberOfClusters is specified); + description: |- + RequiredClusterSelector represents a selector of ManagedClusters by label and claim. If specified, + 1) Any ManagedCluster, which does not match the selector, should not be selected by this ClusterPredicate; + 2) If a selected ManagedCluster (of this ClusterPredicate) ceases to match the selector (e.g. due to + an update) of any ClusterPredicate, it will be eventually removed from the placement decisions; + 3) If a ManagedCluster (not selected previously) starts to match the selector, it will either + be selected or at least has a chance to be selected (when NumberOfClusters is specified); properties: claimSelector: description: ClaimSelector represents a selector of ManagedClusters @@ -263,8 +263,8 @@ spec: description: matchExpressions is a list of cluster claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -272,20 +272,20 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -300,8 +300,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -309,33 +309,33 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -343,10 +343,10 @@ spec: type: object type: array prioritizerPolicy: - description: PrioritizerPolicy defines the policy of the prioritizers. - If this field is unset, then default prioritizer mode and configurations - are used. Referring to PrioritizerPolicy to see more description - about Mode and Configurations. + description: |- + PrioritizerPolicy defines the policy of the prioritizers. + If this field is unset, then default prioritizer mode and configurations are used. + Referring to PrioritizerPolicy to see more description about Mode and Configurations. properties: configurations: items: @@ -362,37 +362,35 @@ spec: resource name and score name. properties: resourceName: - description: ResourceName defines the resource name - of the AddOnPlacementScore. The placement prioritizer - selects AddOnPlacementScore CR by this name. + description: |- + ResourceName defines the resource name of the AddOnPlacementScore. + The placement prioritizer selects AddOnPlacementScore CR by this name. type: string scoreName: - description: ScoreName defines the score name inside - AddOnPlacementScore. AddOnPlacementScore contains - a list of score name and score value, ScoreName - specify the score to be used by the prioritizer. + description: |- + ScoreName defines the score name inside AddOnPlacementScore. + AddOnPlacementScore contains a list of score name and score value, ScoreName specify the score to be used by + the prioritizer. type: string required: - resourceName - scoreName type: object builtIn: - description: 'BuiltIn defines the name of a BuiltIn - prioritizer. Below are the valid BuiltIn prioritizer - names. 1) Balance: balance the decisions among the - clusters. 2) Steady: ensure the existing decision - is stabilized. 3) ResourceAllocatableCPU & ResourceAllocatableMemory: - sort clusters based on the allocatable. 4) Spread: - spread the workload evenly to topologies.' + description: |- + BuiltIn defines the name of a BuiltIn prioritizer. Below are the valid BuiltIn prioritizer names. + 1) Balance: balance the decisions among the clusters. + 2) Steady: ensure the existing decision is stabilized. + 3) ResourceAllocatableCPU & ResourceAllocatableMemory: sort clusters based on the allocatable. + 4) Spread: spread the workload evenly to topologies. type: string type: default: BuiltIn - description: Type defines the type of the prioritizer - score. Type is either "BuiltIn", "AddOn" or "", where - "" is "BuiltIn" by default. When the type is "BuiltIn", - need to specify a BuiltIn prioritizer name in BuiltIn. - When the type is "AddOn", need to configure the score - source in AddOn. + description: |- + Type defines the type of the prioritizer score. + Type is either "BuiltIn", "AddOn" or "", where "" is "BuiltIn" by default. + When the type is "BuiltIn", need to specify a BuiltIn prioritizer name in BuiltIn. + When the type is "AddOn", need to configure the score source in AddOn. enum: - BuiltIn - AddOn @@ -402,14 +400,13 @@ spec: type: object weight: default: 1 - description: Weight defines the weight of the prioritizer - score. The value must be ranged in [-10,10]. Each prioritizer - will calculate an integer score of a cluster in the range - of [-100, 100]. The final score of a cluster will be sum(weight - * prioritizer_score). A higher weight indicates that the - prioritizer weights more in the cluster selection, while - 0 weight indicates that the prioritizer is disabled. A - negative weight indicates wants to select the last ones. + description: |- + Weight defines the weight of the prioritizer score. The value must be ranged in [-10,10]. + Each prioritizer will calculate an integer score of a cluster in the range of [-100, 100]. + The final score of a cluster will be sum(weight * prioritizer_score). + A higher weight indicates that the prioritizer weights more in the cluster selection, + while 0 weight indicates that the prioritizer is disabled. A negative weight indicates + wants to select the last ones. format: int32 maximum: 10 minimum: -10 @@ -420,43 +417,38 @@ spec: type: array mode: default: Additive - description: Mode is either Exact, Additive, "" where "" is Additive - by default. In Additive mode, any prioritizer not explicitly - enumerated is enabled in its default Configurations, in which - Steady and Balance prioritizers have the weight of 1 while other - prioritizers have the weight of 0. Additive doesn't require - configuring all prioritizers. The default Configurations may - change in the future, and additional prioritization will happen. - In Exact mode, any prioritizer not explicitly enumerated is - weighted as zero. Exact requires knowing the full set of prioritizers - you want, but avoids behavior changes between releases. + description: |- + Mode is either Exact, Additive, "" where "" is Additive by default. + In Additive mode, any prioritizer not explicitly enumerated is enabled in its default Configurations, + in which Steady and Balance prioritizers have the weight of 1 while other prioritizers have the weight of 0. + Additive doesn't require configuring all prioritizers. The default Configurations may change in the future, + and additional prioritization will happen. + In Exact mode, any prioritizer not explicitly enumerated is weighted as zero. + Exact requires knowing the full set of prioritizers you want, but avoids behavior changes between releases. type: string type: object spreadPolicy: - description: SpreadPolicy defines how placement decisions should be - distributed among a set of ManagedClusters. + description: |- + SpreadPolicy defines how placement decisions should be distributed among a + set of ManagedClusters. properties: spreadConstraints: - description: SpreadConstraints defines how the placement decision - should be distributed among a set of ManagedClusters. The importance - of the SpreadConstraintsTerms follows the natural order of their - index in the slice. The scheduler first consider SpreadConstraintsTerms - with smaller index then those with larger index to distribute - the placement decision. + description: |- + SpreadConstraints defines how the placement decision should be distributed among a set of ManagedClusters. + The importance of the SpreadConstraintsTerms follows the natural order of their index in the slice. + The scheduler first consider SpreadConstraintsTerms with smaller index then those with larger index + to distribute the placement decision. items: description: SpreadConstraintsTerm defines a terminology to spread placement decisions. properties: maxSkew: default: 1 - description: MaxSkew represents the degree to which the - workload may be unevenly distributed. Skew is the maximum - difference between the number of selected ManagedClusters - in a topology and the global minimum. The global minimum - is the minimum number of selected ManagedClusters for - the topologies within the same TopologyKey. The minimum - possible value of MaxSkew is 1, and the default value - is 1. + description: |- + MaxSkew represents the degree to which the workload may be unevenly distributed. + Skew is the maximum difference between the number of selected ManagedClusters in a topology and the global minimum. + The global minimum is the minimum number of selected ManagedClusters for the topologies within the same TopologyKey. + The minimum possible value of MaxSkew is 1, and the default value is 1. format: int32 minimum: 1 type: integer @@ -475,13 +467,11 @@ spec: type: string whenUnsatisfiable: default: ScheduleAnyway - description: WhenUnsatisfiable represents the action of - the scheduler when MaxSkew cannot be satisfied. It could - be DoNotSchedule or ScheduleAnyway. The default value - is ScheduleAnyway. DoNotSchedule instructs the scheduler - not to schedule more ManagedClusters when MaxSkew is not - satisfied. ScheduleAnyway instructs the scheduler to keep - scheduling even if MaxSkew is not satisfied. + description: |- + WhenUnsatisfiable represents the action of the scheduler when MaxSkew cannot be satisfied. + It could be DoNotSchedule or ScheduleAnyway. The default value is ScheduleAnyway. + DoNotSchedule instructs the scheduler not to schedule more ManagedClusters when MaxSkew is not satisfied. + ScheduleAnyway instructs the scheduler to keep scheduling even if MaxSkew is not satisfied. enum: - DoNotSchedule - ScheduleAnyway @@ -494,53 +484,52 @@ spec: type: array type: object tolerations: - description: Tolerations are applied to placements, and allow (but - do not require) the managed clusters with certain taints to be selected - by placements with matching tolerations. + description: |- + Tolerations are applied to placements, and allow (but do not require) the managed clusters with + certain taints to be selected by placements with matching tolerations. items: - description: Toleration represents the toleration object that can - be attached to a placement. The placement this Toleration is attached - to tolerates any taint that matches the triple - using the matching operator . + description: |- + Toleration represents the toleration object that can be attached to a placement. + The placement this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSelect, PreferNoSelect and NoSelectIfNew. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSelect, PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string operator: default: Equal - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a placement - can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a placement can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoSelect/PreferNoSelect, - otherwise this field is ignored) tolerates the taint. The - default value is nil, which indicates it tolerates the taint - forever. The start time of counting the TolerationSeconds - should be the TimeAdded in Taint, not the cluster scheduled - time or TolerationSeconds added time. + description: |- + TolerationSeconds represents the period of time the toleration (which must be of effect + NoSelect/PreferNoSelect, otherwise this field is ignored) tolerates the taint. + The default value is nil, which indicates it tolerates the taint forever. + The start time of counting the TolerationSeconds should be the TimeAdded in Taint, not the cluster + scheduled time or TolerationSeconds added time. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. maxLength: 1024 type: string type: object @@ -554,42 +543,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -603,11 +592,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/managed-serviceaccount-manager/Chart.yaml b/charts/managed-serviceaccount-manager/Chart.yaml index 0add80bc..469a68a0 100644 --- a/charts/managed-serviceaccount-manager/Chart.yaml +++ b/charts/managed-serviceaccount-manager/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: managed-serviceaccount-manager description: A Helm chart for Managed ServiceAccount Addon Manager type: application -version: v2024.7.10 -appVersion: v0.6.0 +version: v2024.12.26 +appVersion: v0.7.0 diff --git a/charts/managed-serviceaccount-manager/README.md b/charts/managed-serviceaccount-manager/README.md index c1726aad..8a5c7cbc 100644 --- a/charts/managed-serviceaccount-manager/README.md +++ b/charts/managed-serviceaccount-manager/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/managed-serviceaccount-manager --version=v2024.7.10 -$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 +$ helm search repo appscode/managed-serviceaccount-manager --version=v2024.12.26 +$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a managed-serviceaccount addon manager on a [Kubernetes](http To install/upgrade the chart with the release name `managed-serviceaccount-manager`: ```bash -$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 +$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 ``` The command deploys a managed-serviceaccount addon manager on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -65,12 +65,12 @@ The following table lists the configurable parameters of the `managed-serviceacc Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 --set image=ghcr.io/kluster-manager/managed-serviceaccount +$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --set image=ghcr.io/kluster-manager/managed-serviceaccount ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.7.10 --values values.yaml +$ helm upgrade -i managed-serviceaccount-manager appscode/managed-serviceaccount-manager -n open-cluster-management-addon --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/charts/managed-serviceaccount-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml b/charts/managed-serviceaccount-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml index 465dd73b..9d69e582 100644 --- a/charts/managed-serviceaccount-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml +++ b/charts/managed-serviceaccount-manager/crds/addon.open-cluster-management.io_clustermanagementaddons.yaml @@ -24,22 +24,27 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: ClusterManagementAddOn represents the registration of an add-on - to the cluster manager. This resource allows you to discover which add-ons - are available for the cluster manager and provides metadata information - about the add-ons. The ClusterManagementAddOn name is used for the namespace-scoped - ManagedClusterAddOn resource. ClusterManagementAddOn is a cluster-scoped - resource. + description: |- + ClusterManagementAddOn represents the registration of an add-on to the cluster manager. + This resource allows you to discover which add-ons are available for the cluster manager + and provides metadata information about the add-ons. The ClusterManagementAddOn name is used + for the namespace-scoped ManagedClusterAddOn resource. + ClusterManagementAddOn is a cluster-scoped resource. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -48,22 +53,21 @@ spec: the cluster management add-on. properties: addOnConfiguration: - description: 'Deprecated: Use supportedConfigs filed instead addOnConfiguration - is a reference to configuration information for the add-on. In scenario - where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn - resources need to be created and reference the same AddOnConfiguration.' + description: |- + Deprecated: Use supportedConfigs filed instead + addOnConfiguration is a reference to configuration information for the add-on. + In scenario where a multiple add-ons share the same add-on CRD, multiple ClusterManagementAddOn + resources need to be created and reference the same AddOnConfiguration. properties: crName: - description: crName is the name of the CR used to configure instances - of the managed add-on. This field should be configured if add-on - CR have a consistent name across the all of the ManagedCluster - instaces. + description: |- + crName is the name of the CR used to configure instances of the managed add-on. + This field should be configured if add-on CR have a consistent name across the all of the ManagedCluster instaces. type: string crdName: - description: crdName is the name of the CRD used to configure - instances of the managed add-on. This field should be configured - if the add-on have a CRD that controls the configuration of - the add-on. + description: |- + crdName is the name of the CRD used to configure instances of the managed add-on. + This field should be configured if the add-on have a CRD that controls the configuration of the add-on. type: string lastObservedGeneration: description: lastObservedGeneration is the observed generation @@ -87,22 +91,22 @@ spec: installStrategy: default: type: Manual - description: InstallStrategy represents that related ManagedClusterAddOns - should be installed on certain clusters. + description: |- + InstallStrategy represents that related ManagedClusterAddOns should be installed + on certain clusters. properties: placements: - description: Placements is a list of placement references honored - when install strategy type is Placements. All clusters selected - by these placements will install the addon If one cluster belongs - to multiple placements, it will only apply the strategy defined - later in the order. That is to say, The latter strategy overrides - the previous one. + description: |- + Placements is a list of placement references honored when install strategy type is + Placements. All clusters selected by these placements will install the addon + If one cluster belongs to multiple placements, it will only apply the strategy defined + later in the order. That is to say, The latter strategy overrides the previous one. items: properties: configs: - description: Configs is the configuration of managedClusterAddon - during installation. User can override the configuration - by updating the managedClusterAddon directly. + description: |- + Configs is the configuration of managedClusterAddon during installation. + User can override the configuration by updating the managedClusterAddon directly. items: properties: group: @@ -114,9 +118,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string resource: description: resource of the add-on configuration. @@ -138,9 +142,9 @@ spec: rolloutStrategy: default: type: All - description: The rollout strategy to apply addon configurations - change. The rollout strategy only watches the addon configurations - defined in ClusterManagementAddOn. + description: |- + The rollout strategy to apply addon configurations change. + The rollout strategy only watches the addon configurations defined in ClusterManagementAddOn. properties: all: description: All defines required fields for RolloutStrategy @@ -151,52 +155,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -205,26 +198,26 @@ spec: RolloutStrategy type Progressive properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -232,10 +225,9 @@ spec: anyOf: - type: integer - type: string - description: MaxConcurrency is the max number of - clusters to deploy workload concurrently. The - default value for MaxConcurrency is determined - from the clustersPerDecisionGroup defined in the + description: |- + MaxConcurrency is the max number of clusters to deploy workload concurrently. The default value + for MaxConcurrency is determined from the clustersPerDecisionGroup defined in the placement->DecisionStrategy. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true @@ -244,52 +236,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -298,26 +279,26 @@ spec: for RolloutStrategy type ProgressivePerGroup properties: mandatoryDecisionGroups: - description: List of the decision groups names or - indexes to apply the workload first and fail if - workload did not reach successful state. GroupName - or GroupIndex must match with the decisionGroups - defined in the placement's decisionStrategy + description: |- + List of the decision groups names or indexes to apply the workload first and fail if workload + did not reach successful state. + GroupName or GroupIndex must match with the decisionGroups defined in the placement's + decisionStrategy items: - description: MandatoryDecisionGroup set the decision - group name or group index. GroupName is considered - first to select the decisionGroups then GroupIndex. + description: |- + MandatoryDecisionGroup set the decision group name or group index. + GroupName is considered first to select the decisionGroups then GroupIndex. properties: groupIndex: - description: GroupIndex of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-index + description: |- + GroupIndex of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-index format: int32 type: integer groupName: - description: GroupName of the decision group - should match the placementDecisions label - value with label key cluster.open-cluster-management.io/decision-group-name + description: |- + GroupName of the decision group should match the placementDecisions label value with label key + cluster.open-cluster-management.io/decision-group-name type: string type: object type: array @@ -326,52 +307,41 @@ spec: - type: integer - type: string default: 0 - description: MaxFailures is a percentage or number - of clusters in the current rollout that can fail - before proceeding to the next rollout. Fail means - the cluster has a failed status or timeout status + description: |- + MaxFailures is a percentage or number of clusters in the current rollout that can fail before + proceeding to the next rollout. Fail means the cluster has a failed status or timeout status (does not reach successful status after ProgressDeadline). - Once the MaxFailures is breached, the rollout - will stop. MaxFailures is only considered for - rollout types Progressive and ProgressivePerGroup. - For Progressive, this is considered over the total - number of clusters. For ProgressivePerGroup, this - is considered according to the size of the current - group. For both Progressive and ProgressivePerGroup, - the MaxFailures does not apply for MandatoryDecisionGroups, - which tolerate no failures. Default is that no - failures are tolerated. + Once the MaxFailures is breached, the rollout will stop. + MaxFailures is only considered for rollout types Progressive and ProgressivePerGroup. For + Progressive, this is considered over the total number of clusters. For ProgressivePerGroup, + this is considered according to the size of the current group. For both Progressive and + ProgressivePerGroup, the MaxFailures does not apply for MandatoryDecisionGroups, which tolerate + no failures. + Default is that no failures are tolerated. pattern: ^((100|[0-9]{1,2})%|[0-9]+)$ x-kubernetes-int-or-string: true minSuccessTime: default: "0" - description: MinSuccessTime is a "soak" time. In - other words, the minimum amount of time the workload - applier controller will wait from the start of - each rollout before proceeding (assuming a successful - state has been reached and MaxFailures wasn't - breached). MinSuccessTime is only considered for - rollout types Progressive and ProgressivePerGroup. - The default value is 0 meaning the workload applier - proceeds immediately after a successful state - is reached. MinSuccessTime must be defined in - [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m - , 360s + description: |- + MinSuccessTime is a "soak" time. In other words, the minimum amount of time the workload + applier controller will wait from the start of each rollout before proceeding (assuming a + successful state has been reached and MaxFailures wasn't breached). + MinSuccessTime is only considered for rollout types Progressive and ProgressivePerGroup. + The default value is 0 meaning the workload applier proceeds immediately after a successful + state is reached. + MinSuccessTime must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s type: string progressDeadline: default: None - description: ProgressDeadline defines how long workload - applier controller will wait for the workload - to reach a successful state in the cluster. If - the workload does not reach a successful state - after ProgressDeadline, will stop waiting and - workload will be treated as "timeout" and be counted - into MaxFailures. Once the MaxFailures is breached, - the rollout will stop. ProgressDeadline default - value is "None", meaning the workload applier - will wait for a successful state indefinitely. - ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] - format examples; 2h , 90m , 360s + description: |- + ProgressDeadline defines how long workload applier controller will wait for the workload to + reach a successful state in the cluster. + If the workload does not reach a successful state after ProgressDeadline, will stop waiting + and workload will be treated as "timeout" and be counted into MaxFailures. Once the MaxFailures + is breached, the rollout will stop. + ProgressDeadline default value is "None", meaning the workload applier will wait for a + successful state indefinitely. + ProgressDeadline must be defined in [0-9h]|[0-9m]|[0-9s] format examples; 2h , 90m , 360s pattern: ^(([0-9])+[h|m|s])|None$ type: string type: object @@ -394,35 +364,37 @@ spec: x-kubernetes-list-type: map type: default: Manual - description: 'Type is the type of the install strategy, it can - be: - Manual: no automatic install - Placements: install to - clusters selected by placements.' + description: |- + Type is the type of the install strategy, it can be: + - Manual: no automatic install + - Placements: install to clusters selected by placements. enum: - Manual - Placements type: string type: object supportedConfigs: - description: supportedConfigs is a list of configuration types supported - by add-on. An empty list means the add-on does not require configurations. + description: |- + supportedConfigs is a list of configuration types supported by add-on. + An empty list means the add-on does not require configurations. The default is an empty list items: description: ConfigMeta represents a collection of metadata information for add-on configuration. properties: defaultConfig: - description: defaultConfig represents the namespace and name - of the default add-on configuration. In scenario where all - add-ons have a same configuration. + description: |- + defaultConfig represents the namespace and name of the default add-on configuration. + In scenario where all add-ons have a same configuration. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string required: - name @@ -452,9 +424,9 @@ spec: description: defaultconfigReferences is a list of current add-on default configuration references. items: - description: DefaultConfigReference is a reference to the current - add-on configuration. This resource is used to record the configuration - resource for the current add-on. + description: |- + DefaultConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config spec hash. @@ -464,9 +436,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. If this - field is not set, the configuration is in the cluster - scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -496,46 +468,45 @@ spec: monitored components for the operator. items: description: "Condition contains details for one aspect of - the current state of this API Resource. --- This struct + the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path - .status.conditions. For example, \n type FooStatus struct{ - // Represents the observations of a foo's current state. - // Known .status.conditions.type are: \"Available\", \"Progressing\", - and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields - }" + .status.conditions. For example,\n\n\n\ttype FooStatus + struct{\n\t // Represents the observations of a foo's + current state.\n\t // Known .status.conditions.type are: + \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // + +listType=map\n\t // +listMapKey=type\n\t Conditions + []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" + patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should - be when the underlying condition changed. If that is - not known, then using the time when the API field changed - is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, - if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the - current state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier - indicating the reason for the condition's last transition. - Producers of specific condition types may define expected - values and meanings for this field, and whether the - values are considered a guaranteed API. The value should - be a CamelCase string. This field may not be empty. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. + This field may not be empty. maxLength: 1024 minLength: 1 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ @@ -549,12 +520,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across - resources like Available, but because arbitrary conditions - can be useful (see .node.status.conditions), the ability - to deconflict is important. The regex it matches is - (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string @@ -570,9 +541,9 @@ spec: description: configReferences is a list of current add-on configuration references. items: - description: InstallConfigReference is a reference to the - current add-on configuration. This resource is used to record - the configuration resource for the current add-on. + description: |- + InstallConfigReference is a reference to the current add-on configuration. + This resource is used to record the configuration resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config name @@ -583,9 +554,9 @@ spec: minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -598,18 +569,18 @@ spec: description: group of the add-on configuration. type: string lastAppliedConfig: - description: lastAppliedConfig records the config spec - hash when the all the corresponding ManagedClusterAddOn - are applied successfully. + description: |- + lastAppliedConfig records the config spec hash when the all the corresponding + ManagedClusterAddOn are applied successfully. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. @@ -618,22 +589,21 @@ spec: - name type: object lastKnownGoodConfig: - description: lastKnownGoodConfig records the last known - good config spec hash. For fresh install or rollout - with type UpdateAll or RollingUpdate, the lastKnownGoodConfig - is the same as lastAppliedConfig. For rollout with type - RollingUpdateWithCanary, the lastKnownGoodConfig is - the last successfully applied config spec hash of the - canary placement. + description: |- + lastKnownGoodConfig records the last known good config spec hash. + For fresh install or rollout with type UpdateAll or RollingUpdate, the + lastKnownGoodConfig is the same as lastAppliedConfig. + For rollout with type RollingUpdateWithCanary, the lastKnownGoodConfig + is the last successfully applied config spec hash of the canary placement. properties: name: description: name of the add-on configuration. minLength: 1 type: string namespace: - description: namespace of the add-on configuration. - If this field is not set, the configuration is in - the cluster scope. + description: |- + namespace of the add-on configuration. + If this field is not set, the configuration is in the cluster scope. type: string specHash: description: spec hash for an add-on configuration. diff --git a/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml b/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml index 6e75601a..294939ea 100644 --- a/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml +++ b/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_managedclustersetbindings.yaml @@ -17,22 +17,27 @@ spec: - name: v1beta2 schema: openAPIV3Schema: - description: ManagedClusterSetBinding projects a ManagedClusterSet into a - certain namespace. You can create a ManagedClusterSetBinding in a namespace - and bind it to a ManagedClusterSet if both have a RBAC rules to CREATE on - the virtual subresource of managedclustersets/bind. Workloads that you create - in the same namespace can only be distributed to ManagedClusters in ManagedClusterSets - that are bound in this namespace by higher-level controllers. + description: |- + ManagedClusterSetBinding projects a ManagedClusterSet into a certain namespace. + You can create a ManagedClusterSetBinding in a namespace and bind it to a + ManagedClusterSet if both have a RBAC rules to CREATE on the virtual subresource of managedclustersets/bind. + Workloads that you create in the same namespace can only be distributed to ManagedClusters + in ManagedClusterSets that are bound in this namespace by higher-level controllers. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -40,11 +45,11 @@ spec: description: Spec defines the attributes of ManagedClusterSetBinding. properties: clusterSet: - description: ClusterSet is the name of the ManagedClusterSet to bind. - It must match the instance name of the ManagedClusterSetBinding - and cannot change once created. User is allowed to set this field - if they have an RBAC rule to CREATE on the virtual subresource of - managedclustersets/bind. + description: |- + ClusterSet is the name of the ManagedClusterSet to bind. It must match the + instance name of the ManagedClusterSetBinding and cannot change once created. + User is allowed to set this field if they have an RBAC rule to CREATE on the + virtual subresource of managedclustersets/bind. minLength: 1 type: string type: object @@ -56,42 +61,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -105,11 +110,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_placements.yaml b/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_placements.yaml index dd4ac28c..fdb3729f 100644 --- a/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_placements.yaml +++ b/charts/managed-serviceaccount-manager/crds/cluster.open-cluster-management.io_placements.yaml @@ -24,34 +24,49 @@ spec: name: v1beta1 schema: openAPIV3Schema: - description: "Placement defines a rule to select a set of ManagedClusters - from the ManagedClusterSets bound to the placement namespace. \n Here is - how the placement policy combines with other selection methods to determine - a matching list of ManagedClusters: 1. Kubernetes clusters are registered - with hub as cluster-scoped ManagedClusters; 2. ManagedClusters are organized - into cluster-scoped ManagedClusterSets; 3. ManagedClusterSets are bound - to workload namespaces; 4. Namespace-scoped Placements specify a slice of - ManagedClusterSets which select a working set of potential ManagedClusters; - 5. Then Placements subselect from that working set using label/claim selection. - \n A ManagedCluster will not be selected if no ManagedClusterSet is bound - to the placement namespace. A user is able to bind a ManagedClusterSet to - a namespace by creating a ManagedClusterSetBinding in that namespace if - they have an RBAC rule to CREATE on the virtual subresource of `managedclustersets/bind`. - \n A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement - name} will be created to represent the ManagedClusters selected by this - placement. \n If a ManagedCluster is selected and added into the PlacementDecisions, - other components may apply workload on it; once it is removed from the PlacementDecisions, - the workload applied on this ManagedCluster should be evicted accordingly." + description: |- + Placement defines a rule to select a set of ManagedClusters from the ManagedClusterSets bound + to the placement namespace. + + + Here is how the placement policy combines with other selection methods to determine a matching + list of ManagedClusters: + 1. Kubernetes clusters are registered with hub as cluster-scoped ManagedClusters; + 2. ManagedClusters are organized into cluster-scoped ManagedClusterSets; + 3. ManagedClusterSets are bound to workload namespaces; + 4. Namespace-scoped Placements specify a slice of ManagedClusterSets which select a working set + of potential ManagedClusters; + 5. Then Placements subselect from that working set using label/claim selection. + + + A ManagedCluster will not be selected if no ManagedClusterSet is bound to the placement + namespace. A user is able to bind a ManagedClusterSet to a namespace by creating a + ManagedClusterSetBinding in that namespace if they have an RBAC rule to CREATE on the virtual + subresource of `managedclustersets/bind`. + + + A slice of PlacementDecisions with the label cluster.open-cluster-management.io/placement={placement name} + will be created to represent the ManagedClusters selected by this placement. + + + If a ManagedCluster is selected and added into the PlacementDecisions, other components may + apply workload on it; once it is removed from the PlacementDecisions, the workload applied on + this ManagedCluster should be evicted accordingly. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object @@ -59,12 +74,11 @@ spec: description: Spec defines the attributes of Placement. properties: clusterSets: - description: ClusterSets represent the ManagedClusterSets from which - the ManagedClusters are selected. If the slice is empty, ManagedClusters - will be selected from the ManagedClusterSets bound to the placement - namespace, otherwise ManagedClusters will be selected from the intersection - of this slice and the ManagedClusterSets bound to the placement - namespace. + description: |- + ClusterSets represent the ManagedClusterSets from which the ManagedClusters are selected. + If the slice is empty, ManagedClusters will be selected from the ManagedClusterSets bound to the placement + namespace, otherwise ManagedClusters will be selected from the intersection of this slice and the + ManagedClusterSets bound to the placement namespace. items: type: string type: array @@ -81,32 +95,28 @@ spec: - type: integer - type: string default: 100% - description: "ClustersPerDecisionGroup is a specific number - or percentage of the total selected clusters. The specific - number will divide the placementDecisions to decisionGroups - each group has max number of clusters equal to that specific - number. The percentage will divide the placementDecisions - to decisionGroups each group has max number of clusters - based on the total num of selected clusters and percentage. - ex; for a total 100 clusters selected, ClustersPerDecisionGroup - equal to 20% will divide the placement decision to 5 groups - each group should have 20 clusters. Default is having all - clusters in a single group. \n The predefined decisionGroups - is expected to be a subset of the selected clusters and - the number of items in each group SHOULD be less than ClustersPerDecisionGroup. - Once the number of items exceeds the ClustersPerDecisionGroup, - the decisionGroups will also be be divided into multiple - decisionGroups with same GroupName but different GroupIndex." + description: |- + ClustersPerDecisionGroup is a specific number or percentage of the total selected clusters. + The specific number will divide the placementDecisions to decisionGroups each group has max number of clusters + equal to that specific number. + The percentage will divide the placementDecisions to decisionGroups each group has max number of clusters based + on the total num of selected clusters and percentage. + ex; for a total 100 clusters selected, ClustersPerDecisionGroup equal to 20% will divide the placement decision + to 5 groups each group should have 20 clusters. + Default is having all clusters in a single group. + + + The predefined decisionGroups is expected to be a subset of the selected clusters and the number of items in each + group SHOULD be less than ClustersPerDecisionGroup. Once the number of items exceeds the ClustersPerDecisionGroup, + the decisionGroups will also be be divided into multiple decisionGroups with same GroupName but different GroupIndex. pattern: ^((100|[1-9][0-9]{0,1})%|[1-9][0-9]*)$ x-kubernetes-int-or-string: true decisionGroups: - description: DecisionGroups represents a list of predefined - groups to put decision results. Decision groups will be - constructed based on the DecisionGroups field at first. - The clusters not included in the DecisionGroups will be - divided to other decision groups afterwards. Each decision - group should not have the number of clusters larger than - the ClustersPerDecisionGroup. + description: |- + DecisionGroups represents a list of predefined groups to put decision results. + Decision groups will be constructed based on the DecisionGroups field at first. The clusters not included in the + DecisionGroups will be divided to other decision groups afterwards. Each decision group should not have the number + of clusters larger than the ClustersPerDecisionGroup. items: description: DecisionGroup define a subset of clusters that will be added to placementDecisions with groupName label. @@ -124,32 +134,29 @@ spec: claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -165,46 +172,42 @@ spec: selector requirements. The requirements are ANDed. items: - description: A label selector requirement - is a selector that contains values, a key, - and an operator that relates the key and - values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's - relationship to a set of values. Valid - operators are In, NotIn, Exists and - DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string - values. If the operator is In or NotIn, - the values array must be non-empty. - If the operator is Exists or DoesNotExist, - the values array must be empty. This - array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} - pairs. A single {key,value} in the matchLabels - map is equivalent to an element of matchExpressions, - whose key field is "key", the operator is - "In", and the values array contains only "value". - The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -223,18 +226,18 @@ spec: type: object type: object numberOfClusters: - description: NumberOfClusters represents the desired number of ManagedClusters - to be selected which meet the placement requirements. 1) If not - specified, all ManagedClusters which meet the placement requirements - (including ClusterSets, and Predicates) will be selected; 2) Otherwise - if the nubmer of ManagedClusters meet the placement requirements - is larger than NumberOfClusters, a random subset with desired number - of ManagedClusters will be selected; 3) If the nubmer of ManagedClusters - meet the placement requirements is equal to NumberOfClusters, all - of them will be selected; 4) If the nubmer of ManagedClusters meet - the placement requirements is less than NumberOfClusters, all of - them will be selected, and the status of condition `PlacementConditionSatisfied` - will be set to false; + description: |- + NumberOfClusters represents the desired number of ManagedClusters to be selected which meet the + placement requirements. + 1) If not specified, all ManagedClusters which meet the placement requirements (including ClusterSets, + and Predicates) will be selected; + 2) Otherwise if the nubmer of ManagedClusters meet the placement requirements is larger than + NumberOfClusters, a random subset with desired number of ManagedClusters will be selected; + 3) If the nubmer of ManagedClusters meet the placement requirements is equal to NumberOfClusters, + all of them will be selected; + 4) If the nubmer of ManagedClusters meet the placement requirements is less than NumberOfClusters, + all of them will be selected, and the status of condition `PlacementConditionSatisfied` will be + set to false; format: int32 type: integer predicates: @@ -244,16 +247,13 @@ spec: description: ClusterPredicate represents a predicate to select ManagedClusters. properties: requiredClusterSelector: - description: RequiredClusterSelector represents a selector of - ManagedClusters by label and claim. If specified, 1) Any ManagedCluster, - which does not match the selector, should not be selected - by this ClusterPredicate; 2) If a selected ManagedCluster - (of this ClusterPredicate) ceases to match the selector (e.g. - due to an update) of any ClusterPredicate, it will be eventually - removed from the placement decisions; 3) If a ManagedCluster - (not selected previously) starts to match the selector, it - will either be selected or at least has a chance to be selected - (when NumberOfClusters is specified); + description: |- + RequiredClusterSelector represents a selector of ManagedClusters by label and claim. If specified, + 1) Any ManagedCluster, which does not match the selector, should not be selected by this ClusterPredicate; + 2) If a selected ManagedCluster (of this ClusterPredicate) ceases to match the selector (e.g. due to + an update) of any ClusterPredicate, it will be eventually removed from the placement decisions; + 3) If a ManagedCluster (not selected previously) starts to match the selector, it will either + be selected or at least has a chance to be selected (when NumberOfClusters is specified); properties: claimSelector: description: ClaimSelector represents a selector of ManagedClusters @@ -263,8 +263,8 @@ spec: description: matchExpressions is a list of cluster claim selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -272,20 +272,20 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator @@ -300,8 +300,8 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector - that contains values, a key, and an operator that + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. properties: key: @@ -309,33 +309,33 @@ spec: applies to. type: string operator: - description: operator represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. - If the operator is In or NotIn, the values array - must be non-empty. If the operator is Exists - or DoesNotExist, the values array must be empty. - This array is replaced during a strategic merge - patch. + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic + merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. - A single {key,value} in the matchLabels map is equivalent - to an element of matchExpressions, whose key field - is "key", the operator is "In", and the values array - contains only "value". The requirements are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -343,10 +343,10 @@ spec: type: object type: array prioritizerPolicy: - description: PrioritizerPolicy defines the policy of the prioritizers. - If this field is unset, then default prioritizer mode and configurations - are used. Referring to PrioritizerPolicy to see more description - about Mode and Configurations. + description: |- + PrioritizerPolicy defines the policy of the prioritizers. + If this field is unset, then default prioritizer mode and configurations are used. + Referring to PrioritizerPolicy to see more description about Mode and Configurations. properties: configurations: items: @@ -362,37 +362,35 @@ spec: resource name and score name. properties: resourceName: - description: ResourceName defines the resource name - of the AddOnPlacementScore. The placement prioritizer - selects AddOnPlacementScore CR by this name. + description: |- + ResourceName defines the resource name of the AddOnPlacementScore. + The placement prioritizer selects AddOnPlacementScore CR by this name. type: string scoreName: - description: ScoreName defines the score name inside - AddOnPlacementScore. AddOnPlacementScore contains - a list of score name and score value, ScoreName - specify the score to be used by the prioritizer. + description: |- + ScoreName defines the score name inside AddOnPlacementScore. + AddOnPlacementScore contains a list of score name and score value, ScoreName specify the score to be used by + the prioritizer. type: string required: - resourceName - scoreName type: object builtIn: - description: 'BuiltIn defines the name of a BuiltIn - prioritizer. Below are the valid BuiltIn prioritizer - names. 1) Balance: balance the decisions among the - clusters. 2) Steady: ensure the existing decision - is stabilized. 3) ResourceAllocatableCPU & ResourceAllocatableMemory: - sort clusters based on the allocatable. 4) Spread: - spread the workload evenly to topologies.' + description: |- + BuiltIn defines the name of a BuiltIn prioritizer. Below are the valid BuiltIn prioritizer names. + 1) Balance: balance the decisions among the clusters. + 2) Steady: ensure the existing decision is stabilized. + 3) ResourceAllocatableCPU & ResourceAllocatableMemory: sort clusters based on the allocatable. + 4) Spread: spread the workload evenly to topologies. type: string type: default: BuiltIn - description: Type defines the type of the prioritizer - score. Type is either "BuiltIn", "AddOn" or "", where - "" is "BuiltIn" by default. When the type is "BuiltIn", - need to specify a BuiltIn prioritizer name in BuiltIn. - When the type is "AddOn", need to configure the score - source in AddOn. + description: |- + Type defines the type of the prioritizer score. + Type is either "BuiltIn", "AddOn" or "", where "" is "BuiltIn" by default. + When the type is "BuiltIn", need to specify a BuiltIn prioritizer name in BuiltIn. + When the type is "AddOn", need to configure the score source in AddOn. enum: - BuiltIn - AddOn @@ -402,14 +400,13 @@ spec: type: object weight: default: 1 - description: Weight defines the weight of the prioritizer - score. The value must be ranged in [-10,10]. Each prioritizer - will calculate an integer score of a cluster in the range - of [-100, 100]. The final score of a cluster will be sum(weight - * prioritizer_score). A higher weight indicates that the - prioritizer weights more in the cluster selection, while - 0 weight indicates that the prioritizer is disabled. A - negative weight indicates wants to select the last ones. + description: |- + Weight defines the weight of the prioritizer score. The value must be ranged in [-10,10]. + Each prioritizer will calculate an integer score of a cluster in the range of [-100, 100]. + The final score of a cluster will be sum(weight * prioritizer_score). + A higher weight indicates that the prioritizer weights more in the cluster selection, + while 0 weight indicates that the prioritizer is disabled. A negative weight indicates + wants to select the last ones. format: int32 maximum: 10 minimum: -10 @@ -420,43 +417,38 @@ spec: type: array mode: default: Additive - description: Mode is either Exact, Additive, "" where "" is Additive - by default. In Additive mode, any prioritizer not explicitly - enumerated is enabled in its default Configurations, in which - Steady and Balance prioritizers have the weight of 1 while other - prioritizers have the weight of 0. Additive doesn't require - configuring all prioritizers. The default Configurations may - change in the future, and additional prioritization will happen. - In Exact mode, any prioritizer not explicitly enumerated is - weighted as zero. Exact requires knowing the full set of prioritizers - you want, but avoids behavior changes between releases. + description: |- + Mode is either Exact, Additive, "" where "" is Additive by default. + In Additive mode, any prioritizer not explicitly enumerated is enabled in its default Configurations, + in which Steady and Balance prioritizers have the weight of 1 while other prioritizers have the weight of 0. + Additive doesn't require configuring all prioritizers. The default Configurations may change in the future, + and additional prioritization will happen. + In Exact mode, any prioritizer not explicitly enumerated is weighted as zero. + Exact requires knowing the full set of prioritizers you want, but avoids behavior changes between releases. type: string type: object spreadPolicy: - description: SpreadPolicy defines how placement decisions should be - distributed among a set of ManagedClusters. + description: |- + SpreadPolicy defines how placement decisions should be distributed among a + set of ManagedClusters. properties: spreadConstraints: - description: SpreadConstraints defines how the placement decision - should be distributed among a set of ManagedClusters. The importance - of the SpreadConstraintsTerms follows the natural order of their - index in the slice. The scheduler first consider SpreadConstraintsTerms - with smaller index then those with larger index to distribute - the placement decision. + description: |- + SpreadConstraints defines how the placement decision should be distributed among a set of ManagedClusters. + The importance of the SpreadConstraintsTerms follows the natural order of their index in the slice. + The scheduler first consider SpreadConstraintsTerms with smaller index then those with larger index + to distribute the placement decision. items: description: SpreadConstraintsTerm defines a terminology to spread placement decisions. properties: maxSkew: default: 1 - description: MaxSkew represents the degree to which the - workload may be unevenly distributed. Skew is the maximum - difference between the number of selected ManagedClusters - in a topology and the global minimum. The global minimum - is the minimum number of selected ManagedClusters for - the topologies within the same TopologyKey. The minimum - possible value of MaxSkew is 1, and the default value - is 1. + description: |- + MaxSkew represents the degree to which the workload may be unevenly distributed. + Skew is the maximum difference between the number of selected ManagedClusters in a topology and the global minimum. + The global minimum is the minimum number of selected ManagedClusters for the topologies within the same TopologyKey. + The minimum possible value of MaxSkew is 1, and the default value is 1. format: int32 minimum: 1 type: integer @@ -475,13 +467,11 @@ spec: type: string whenUnsatisfiable: default: ScheduleAnyway - description: WhenUnsatisfiable represents the action of - the scheduler when MaxSkew cannot be satisfied. It could - be DoNotSchedule or ScheduleAnyway. The default value - is ScheduleAnyway. DoNotSchedule instructs the scheduler - not to schedule more ManagedClusters when MaxSkew is not - satisfied. ScheduleAnyway instructs the scheduler to keep - scheduling even if MaxSkew is not satisfied. + description: |- + WhenUnsatisfiable represents the action of the scheduler when MaxSkew cannot be satisfied. + It could be DoNotSchedule or ScheduleAnyway. The default value is ScheduleAnyway. + DoNotSchedule instructs the scheduler not to schedule more ManagedClusters when MaxSkew is not satisfied. + ScheduleAnyway instructs the scheduler to keep scheduling even if MaxSkew is not satisfied. enum: - DoNotSchedule - ScheduleAnyway @@ -494,53 +484,52 @@ spec: type: array type: object tolerations: - description: Tolerations are applied to placements, and allow (but - do not require) the managed clusters with certain taints to be selected - by placements with matching tolerations. + description: |- + Tolerations are applied to placements, and allow (but do not require) the managed clusters with + certain taints to be selected by placements with matching tolerations. items: - description: Toleration represents the toleration object that can - be attached to a placement. The placement this Toleration is attached - to tolerates any taint that matches the triple - using the matching operator . + description: |- + Toleration represents the toleration object that can be attached to a placement. + The placement this Toleration is attached to tolerates any taint that matches + the triple using the matching operator . properties: effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSelect, PreferNoSelect and NoSelectIfNew. + description: |- + Effect indicates the taint effect to match. Empty means match all taint effects. + When specified, allowed values are NoSelect, PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, - operator must be Exists; this combination means to match all - values and all keys. + description: |- + Key is the taint key that the toleration applies to. Empty means match all taint keys. + If the key is empty, operator must be Exists; this combination means to match all values and all keys. maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string operator: default: Equal - description: Operator represents a key's relationship to the - value. Valid operators are Exists and Equal. Defaults to Equal. - Exists is equivalent to wildcard for value, so that a placement - can tolerate all taints of a particular category. + description: |- + Operator represents a key's relationship to the value. + Valid operators are Exists and Equal. Defaults to Equal. + Exists is equivalent to wildcard for value, so that a placement can + tolerate all taints of a particular category. type: string tolerationSeconds: - description: TolerationSeconds represents the period of time - the toleration (which must be of effect NoSelect/PreferNoSelect, - otherwise this field is ignored) tolerates the taint. The - default value is nil, which indicates it tolerates the taint - forever. The start time of counting the TolerationSeconds - should be the TimeAdded in Taint, not the cluster scheduled - time or TolerationSeconds added time. + description: |- + TolerationSeconds represents the period of time the toleration (which must be of effect + NoSelect/PreferNoSelect, otherwise this field is ignored) tolerates the taint. + The default value is nil, which indicates it tolerates the taint forever. + The start time of counting the TolerationSeconds should be the TimeAdded in Taint, not the cluster + scheduled time or TolerationSeconds added time. format: int64 type: integer value: - description: Value is the taint value the toleration matches - to. If the operator is Exists, the value should be empty, - otherwise just a regular string. + description: |- + Value is the taint value the toleration matches to. + If the operator is Exists, the value should be empty, otherwise just a regular string. maxLength: 1024 type: string type: object @@ -554,42 +543,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of the current - state of this API Resource. --- This struct is intended for direct - use as an array at the field path .status.conditions. For example, - \n type FooStatus struct{ // Represents the observations of a - foo's current state. // Known .status.conditions.type are: \"Available\", - \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge - // +listType=map // +listMapKey=type Conditions []metav1.Condition - `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" - protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" + state of this API Resource.\n---\nThis struct is intended for + direct use as an array at the field path .status.conditions. For + example,\n\n\n\ttype FooStatus struct{\n\t // Represents the + observations of a foo's current state.\n\t // Known .status.conditions.type + are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // + +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t + \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" + patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t + \ // other fields\n\t}" properties: lastTransitionTime: - description: lastTransitionTime is the last time the condition - transitioned from one status to another. This should be when - the underlying condition changed. If that is not known, then - using the time when the API field changed is acceptable. + description: |- + lastTransitionTime is the last time the condition transitioned from one status to another. + This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. format: date-time type: string message: - description: message is a human readable message indicating - details about the transition. This may be an empty string. + description: |- + message is a human readable message indicating details about the transition. + This may be an empty string. maxLength: 32768 type: string observedGeneration: - description: observedGeneration represents the .metadata.generation - that the condition was set based upon. For instance, if .metadata.generation - is currently 12, but the .status.conditions[x].observedGeneration - is 9, the condition is out of date with respect to the current - state of the instance. + description: |- + observedGeneration represents the .metadata.generation that the condition was set based upon. + For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date + with respect to the current state of the instance. format: int64 minimum: 0 type: integer reason: - description: reason contains a programmatic identifier indicating - the reason for the condition's last transition. Producers - of specific condition types may define expected values and - meanings for this field, and whether the values are considered - a guaranteed API. The value should be a CamelCase string. + description: |- + reason contains a programmatic identifier indicating the reason for the condition's last transition. + Producers of specific condition types may define expected values and meanings for this field, + and whether the values are considered a guaranteed API. + The value should be a CamelCase string. This field may not be empty. maxLength: 1024 minLength: 1 @@ -603,11 +592,12 @@ spec: - Unknown type: string type: - description: type of condition in CamelCase or in foo.example.com/CamelCase. - --- Many .condition.type values are consistent across resources - like Available, but because arbitrary conditions can be useful - (see .node.status.conditions), the ability to deconflict is - important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: |- + type of condition in CamelCase or in foo.example.com/CamelCase. + --- + Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be + useful (see .node.status.conditions), the ability to deconflict is important. + The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) maxLength: 316 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ type: string diff --git a/charts/managed-serviceaccount-manager/templates/deployment.yaml b/charts/managed-serviceaccount-manager/templates/deployment.yaml index 16e336f7..1fe3ed26 100644 --- a/charts/managed-serviceaccount-manager/templates/deployment.yaml +++ b/charts/managed-serviceaccount-manager/templates/deployment.yaml @@ -26,7 +26,8 @@ spec: image: {{ .Values.image }}:{{ default .Chart.AppVersion .Values.tag }} imagePullPolicy: Always command: - - /manager + - /msa + - manager args: {{- if gt (int .Values.replicas) 1 }} - --leader-elect=true diff --git a/charts/multicluster-controlplane/Chart.yaml b/charts/multicluster-controlplane/Chart.yaml index f6a44644..cbe0a9db 100644 --- a/charts/multicluster-controlplane/Chart.yaml +++ b/charts/multicluster-controlplane/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: multicluster-controlplane description: A Helm chart for multicluster-controlplane type: application -version: v2024.7.10 -appVersion: v0.5.0 +version: v2024.12.26 +appVersion: v0.6.0 diff --git a/charts/multicluster-controlplane/README.md b/charts/multicluster-controlplane/README.md index 2a9a8df6..b1c6b6ad 100644 --- a/charts/multicluster-controlplane/README.md +++ b/charts/multicluster-controlplane/README.md @@ -7,8 +7,8 @@ ```bash $ helm repo add appscode https://charts.appscode.com/stable $ helm repo update -$ helm search repo appscode/multicluster-controlplane --version=v2024.7.10 -$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.7.10 +$ helm search repo appscode/multicluster-controlplane --version=v2024.12.26 +$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.12.26 ``` ## Introduction @@ -24,7 +24,7 @@ This chart deploys a multicluster controlplane on a [Kubernetes](http://kubernet To install/upgrade the chart with the release name `multicluster-controlplane`: ```bash -$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.7.10 +$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.12.26 ``` The command deploys a multicluster controlplane on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. @@ -84,12 +84,12 @@ The following table lists the configurable parameters of the `multicluster-contr Specify each parameter using the `--set key=value[,key=value]` argument to `helm upgrade -i`. For example: ```bash -$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.7.10 --set image=quay.io/open-cluster-management/multicluster-controlplane:latest +$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.12.26 --set image=quay.io/open-cluster-management/multicluster-controlplane:latest ``` Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: ```bash -$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.7.10 --values values.yaml +$ helm upgrade -i multicluster-controlplane appscode/multicluster-controlplane -n multicluster-controlplane --create-namespace --version=v2024.12.26 --values values.yaml ``` diff --git a/hack/scripts/import-crds.sh b/hack/scripts/import-crds.sh index e85c3096..678d62a1 100755 --- a/hack/scripts/import-crds.sh +++ b/hack/scripts/import-crds.sh @@ -14,10 +14,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -KLUSTER_MANAGER_CLUSTER_AUTH_TAG=${KLUSTER_MANAGER_CLUSTER_AUTH_TAG:-v0.0.4} -KLUSTER_MANAGER_CLUSTER_PROFILE_TAG=${KLUSTER_MANAGER_CLUSTER_PROFILE_TAG:-v0.2.0} -KLUSTER_MANAGER_FLUXCD_ADDON_TAG=${KLUSTER_MANAGER_FLUXCD_ADDON_TAG:-v0.0.4} -OPEN_CLUSTER_MANAGEMENT_IO_API_TAG=${OPEN_CLUSTER_MANAGEMENT_IO_API_TAG:-v0.14.0} +KLUSTER_MANAGER_CLUSTER_AUTH_TAG=${KLUSTER_MANAGER_CLUSTER_AUTH_TAG:-v0.0.5} +KLUSTER_MANAGER_CLUSTER_PROFILE_TAG=${KLUSTER_MANAGER_CLUSTER_PROFILE_TAG:-v0.3.0} +KLUSTER_MANAGER_FLUXCD_ADDON_TAG=${KLUSTER_MANAGER_FLUXCD_ADDON_TAG:-v0.0.5} +OPEN_CLUSTER_MANAGEMENT_IO_API_TAG=${OPEN_CLUSTER_MANAGEMENT_IO_API_TAG:-v0.15.0} PROMETHEUS_OPERATOR_PROMETHEUS_OPERATOR=${PROMETHEUS_OPERATOR_PROMETHEUS_OPERATOR:-v0.75.1} crd-importer \