diff --git a/addon/v1alpha1/0000_00_addon.open-cluster-management.io_clustermanagementaddons.crd.yaml b/addon/v1alpha1/0000_00_addon.open-cluster-management.io_clustermanagementaddons.crd.yaml index ab1fe1552..66ca8e609 100644 --- a/addon/v1alpha1/0000_00_addon.open-cluster-management.io_clustermanagementaddons.crd.yaml +++ b/addon/v1alpha1/0000_00_addon.open-cluster-management.io_clustermanagementaddons.crd.yaml @@ -25,27 +25,22 @@ 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 @@ -54,21 +49,22 @@ 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 @@ -92,22 +88,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: @@ -119,9 +115,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. @@ -143,9 +139,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 @@ -156,41 +152,52 @@ 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 @@ -199,26 +206,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 @@ -226,9 +233,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 + 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 @@ -237,41 +245,52 @@ 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 @@ -280,26 +299,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 @@ -308,41 +327,52 @@ 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 @@ -365,37 +395,35 @@ 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 @@ -425,9 +453,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. @@ -437,9 +465,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. @@ -469,45 +497,46 @@ spec: monitored components for the operator. items: description: "Condition contains details for one aspect of - the current state of this API Resource.\n---\nThis struct + 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\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}" + .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 + }" 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_])?$ @@ -521,12 +550,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 @@ -542,9 +571,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 @@ -555,9 +584,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. @@ -570,18 +599,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. @@ -590,21 +619,22 @@ 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/addon/v1alpha1/0000_01_addon.open-cluster-management.io_managedclusteraddons.crd.yaml b/addon/v1alpha1/0000_01_addon.open-cluster-management.io_managedclusteraddons.crd.yaml index 1fe2ab5be..5276acd65 100644 --- a/addon/v1alpha1/0000_01_addon.open-cluster-management.io_managedclusteraddons.crd.yaml +++ b/addon/v1alpha1/0000_01_addon.open-cluster-management.io_managedclusteraddons.crd.yaml @@ -28,25 +28,20 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: |- - ManagedClusterAddOn is the Custom Resource object which holds the current state - of an add-on. This object is used by add-on operators to convey their state. - This resource should be created in the ManagedCluster namespace. + description: ManagedClusterAddOn is the Custom Resource object which holds + the current state of an add-on. This object is used by add-on operators + to convey their state. This resource should be created in the ManagedCluster + namespace. 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 @@ -54,11 +49,10 @@ spec: description: spec holds configuration that could apply to any operator. properties: configs: - description: |- - configs is a list of add-on configurations. - In scenario where the current add-on has its own configurations. - An empty list means there are no default configurations for add-on. - The default is an empty list + description: configs is a list of add-on configurations. In scenario + where the current add-on has its own configurations. An empty list + means there are no default configurations for add-on. The default + is an empty list items: properties: group: @@ -70,9 +64,8 @@ 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. @@ -85,33 +78,33 @@ spec: type: array installNamespace: default: open-cluster-management-agent-addon - description: |- - installNamespace is the namespace on the managed cluster to install the addon agent. - If it is not set, open-cluster-management-agent-addon namespace is used to install the addon agent. + description: installNamespace is the namespace on the managed cluster + to install the addon agent. If it is not set, open-cluster-management-agent-addon + namespace is used to install the addon agent. maxLength: 63 pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string type: object status: - description: |- - status holds the information about the state of an operator. It is consistent with status information across - the Kubernetes ecosystem. + description: status holds the information about the state of an operator. It + is consistent with status information across the Kubernetes ecosystem. properties: addOnConfiguration: - description: |- - Deprecated: Use configReferences instead. - addOnConfiguration is a reference to configuration information for the add-on. - This resource is used to locate the configuration resource for the add-on. + description: 'Deprecated: Use configReferences instead. addOnConfiguration + is a reference to configuration information for the add-on. This + resource is used to locate the configuration resource for the add-on.' 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 @@ -120,9 +113,9 @@ spec: type: integer type: object addOnMeta: - description: |- - addOnMeta is a reference to the metadata information for the add-on. - This should be same as the addOnMeta for the corresponding ClusterManagementAddOn resource. + description: addOnMeta is a reference to the metadata information + for the add-on. This should be same as the addOnMeta for the corresponding + ClusterManagementAddOn resource. properties: description: description: description represents the detailed description of @@ -138,42 +131,42 @@ spec: components for the operator. items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -187,12 +180,11 @@ 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 @@ -205,13 +197,13 @@ spec: type: object type: array configReferences: - description: |- - configReferences is a list of current add-on configuration references. - This will be overridden by the clustermanagementaddon configuration references. + description: configReferences is a list of current add-on configuration + references. This will be overridden by the clustermanagementaddon + configuration references. items: - description: |- - ConfigReference is a reference to the current add-on configuration. - This resource is used to locate the configuration resource for the current add-on. + description: ConfigReference is a reference to the current add-on + configuration. This resource is used to locate the configuration + resource for the current add-on. properties: desiredConfig: description: desiredConfig record the desired config spec hash. @@ -221,9 +213,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. @@ -244,9 +236,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. @@ -255,9 +247,8 @@ spec: - name type: object lastObservedGeneration: - description: |- - Deprecated: Use LastAppliedConfig instead - lastObservedGeneration is the observed generation of the add-on configuration. + description: 'Deprecated: Use LastAppliedConfig instead lastObservedGeneration + is the observed generation of the add-on configuration.' format: int64 type: integer name: @@ -265,9 +256,8 @@ 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. @@ -279,9 +269,9 @@ spec: type: object type: array healthCheck: - description: |- - healthCheck indicates how to check the healthiness status of the current addon. It should be - set by each addon implementation, by default, the lease mode will be used. + description: healthCheck indicates how to check the healthiness status + of the current addon. It should be set by each addon implementation, + by default, the lease mode will be used. properties: mode: default: Lease @@ -293,25 +283,31 @@ spec: type: string type: object namespace: - description: |- - namespace is the namespace on the managedcluster to put registration secret or lease for the addon. It is - required when registration is set or healthcheck mode is Lease. + description: namespace is the namespace on the managedcluster to put + registration secret or lease for the addon. It is required when + registration is set or healthcheck mode is Lease. type: string registrations: - description: |- - registrations is the configurations for the addon agent to register to hub. It should be set by each addon controller - on hub to define how the addon agent on managedcluster is registered. With the registration defined, - The addon agent can access to kube apiserver with kube style API or other endpoints on hub cluster with client - certificate authentication. A csr will be created per registration configuration. If more than one - registrationConfig is defined, a csr will be created for each registration configuration. It is not allowed that - multiple registrationConfigs have the same signer name. After the csr is approved on the hub cluster, the klusterlet - agent will create a secret in the installNamespace for the registrationConfig. If the signerName is - "kubernetes.io/kube-apiserver-client", the secret name will be "{addon name}-hub-kubeconfig" whose contents includes - key/cert and kubeconfig. Otherwise, the secret name will be "{addon name}-{signer name}-client-cert" whose contents includes key/cert. + description: registrations is the configurations for the addon agent + to register to hub. It should be set by each addon controller on + hub to define how the addon agent on managedcluster is registered. + With the registration defined, The addon agent can access to kube + apiserver with kube style API or other endpoints on hub cluster + with client certificate authentication. A csr will be created per + registration configuration. If more than one registrationConfig + is defined, a csr will be created for each registration configuration. + It is not allowed that multiple registrationConfigs have the same + signer name. After the csr is approved on the hub cluster, the klusterlet + agent will create a secret in the installNamespace for the registrationConfig. + If the signerName is "kubernetes.io/kube-apiserver-client", the + secret name will be "{addon name}-hub-kubeconfig" whose contents + includes key/cert and kubeconfig. Otherwise, the secret name will + be "{addon name}-{signer name}-client-cert" whose contents includes + key/cert. items: - description: |- - RegistrationConfig defines the configuration of the addon agent to register to hub. The Klusterlet agent will - create a csr for the addon agent with the registrationConfig. + description: RegistrationConfig defines the configuration of the + addon agent to register to hub. The Klusterlet agent will create + a csr for the addon agent with the registrationConfig. properties: signerName: description: signerName is the name of signer that addon agent @@ -321,14 +317,12 @@ spec: pattern: ^([a-z0-9][a-z0-9-]*[a-z0-9]\.)+[a-z]+\/[a-z0-9-\.]+$ type: string subject: - description: |- - subject is the user subject of the addon agent to be registered to the hub. - If it is not set, the addon agent will have the default subject - "subject": { - "user": "system:open-cluster-management:cluster:{clusterName}:addon:{addonName}:agent:{agentName}", - "groups: ["system:open-cluster-management:cluster:{clusterName}:addon:{addonName}", - "system:open-cluster-management:addon:{addonName}", "system:authenticated"] - } + description: 'subject is the user subject of the addon agent + to be registered to the hub. If it is not set, the addon agent + will have the default subject "subject": { "user": "system:open-cluster-management:cluster:{clusterName}:addon:{addonName}:agent:{agentName}", + "groups: ["system:open-cluster-management:cluster:{clusterName}:addon:{addonName}", + "system:open-cluster-management:addon:{addonName}", "system:authenticated"] + }' properties: groups: description: groups is the user group of the addon agent. @@ -347,12 +341,10 @@ spec: type: object type: array relatedObjects: - description: |- - relatedObjects is a list of objects that are "interesting" or related to this operator. Common uses are: - 1. the detailed resource driving the operator - 2. operator namespaces - 3. operand namespaces - 4. related ClusterManagementAddon resource + description: 'relatedObjects is a list of objects that are "interesting" + or related to this operator. Common uses are: 1. the detailed resource + driving the operator 2. operator namespaces 3. operand namespaces + 4. related ClusterManagementAddon resource' items: description: ObjectReference contains enough information to let you inspect or modify the referred object. @@ -376,10 +368,10 @@ spec: type: object type: array supportedConfigs: - description: |- - SupportedConfigs is a list of configuration types that are allowed to override the add-on configurations defined - in ClusterManagementAddOn spec. - The default is an empty list, which means the add-on configurations can not be overridden. + description: SupportedConfigs is a list of configuration types that + are allowed to override the add-on configurations defined in ClusterManagementAddOn + spec. The default is an empty list, which means the add-on configurations + can not be overridden. items: description: ConfigGroupResource represents the GroupResource of the add-on configuration diff --git a/addon/v1alpha1/0000_02_addon.open-cluster-management.io_addondeploymentconfigs.crd.yaml b/addon/v1alpha1/0000_02_addon.open-cluster-management.io_addondeploymentconfigs.crd.yaml index f2c023bd4..ee8f797a8 100644 --- a/addon/v1alpha1/0000_02_addon.open-cluster-management.io_addondeploymentconfigs.crd.yaml +++ b/addon/v1alpha1/0000_02_addon.open-cluster-management.io_addondeploymentconfigs.crd.yaml @@ -15,24 +15,19 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: |- - AddOnDeploymentConfig represents a configuration to customize the deployments of an add-on. - For example, you can specify the NodePlacement to control the scheduling of the add-on agents. + description: AddOnDeploymentConfig represents a configuration to customize + the deployments of an add-on. For example, you can specify the NodePlacement + to control the scheduling of the add-on agents. 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 @@ -47,10 +42,10 @@ spec: pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ type: string customizedVariables: - description: |- - CustomizedVariables is a list of name-value variables for the current add-on deployment. - The add-on implementation can use these variables to render its add-on deployment. - The default is an empty list. + description: CustomizedVariables is a list of name-value variables + for the current add-on deployment. The add-on implementation can + use these variables to render its add-on deployment. The default + is an empty list. items: description: CustomizedVariable represents a customized variable for add-on deployment. @@ -72,74 +67,73 @@ spec: - name x-kubernetes-list-type: map nodePlacement: - description: |- - NodePlacement enables explicit control over the scheduling of the add-on agents on the - managed cluster. - All add-on agent pods are expected to comply with this node placement. - If the placement is nil, the placement is not specified, it will be omitted. - If the placement is an empty object, the placement will match all nodes and tolerate nothing. + description: NodePlacement enables explicit control over the scheduling + of the add-on agents on the managed cluster. All add-on agent pods + are expected to comply with this node placement. If the placement + is nil, the placement is not specified, it will be omitted. If the + placement is an empty object, the placement will match all nodes + and tolerate nothing. properties: nodeSelector: additionalProperties: type: string - description: |- - NodeSelector defines which Nodes the Pods are scheduled on. - If the selector is an empty list, it will match all nodes. + description: NodeSelector defines which Nodes the Pods are scheduled + on. If the selector is an empty list, it will match all nodes. The default is an empty list. type: object tolerations: - description: |- - Tolerations is attached by pods to tolerate any taint that matches - the triple using the matching operator . - If the tolerations is an empty list, it will tolerate nothing. - The default is an empty list. + description: Tolerations is attached by pods to tolerate any taint + that matches the triple using the matching + operator . If the tolerations is an empty list, it + will tolerate nothing. 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 proxyConfig: - description: |- - ProxyConfig holds proxy settings for add-on agent on the managed cluster. - Empty means no proxy settings is available. + description: ProxyConfig holds proxy settings for add-on agent on + the managed cluster. Empty means no proxy settings is available. properties: caBundle: - description: |- - CABundle is a CA certificate bundle to verify the proxy server. - And it's only useful when HTTPSProxy is set and a HTTPS proxy server is specified. + description: CABundle is a CA certificate bundle to verify the + proxy server. And it's only useful when HTTPSProxy is set and + a HTTPS proxy server is specified. format: byte type: string httpProxy: @@ -149,21 +143,16 @@ spec: description: HTTPSProxy is the URL of the proxy for HTTPS requests type: string noProxy: - description: |- - NoProxy is a comma-separated list of hostnames and/or CIDRs and/or IPs for which the proxy - should not be used. + description: NoProxy is a comma-separated list of hostnames and/or + CIDRs and/or IPs for which the proxy should not be used. type: string type: object registries: - description: |- - Registries describes how to override images used by the addon agent on the managed cluster. - the following example will override image "quay.io/open-cluster-management/addon-agent" to - "quay.io/ocm/addon-agent" when deploying the addon agent - - - registries: - - source: quay.io/open-cluster-management/addon-agent - mirror: quay.io/ocm/addon-agent + description: "Registries describes how to override images used by + the addon agent on the managed cluster. the following example will + override image \"quay.io/open-cluster-management/addon-agent\" to + \"quay.io/ocm/addon-agent\" when deploying the addon agent \n registries: + - source: quay.io/open-cluster-management/addon-agent mirror: quay.io/ocm/addon-agent" items: description: ImageMirror describes how to mirror images from a source properties: diff --git a/addon/v1alpha1/0000_03_addon.open-cluster-management.io_addontemplates.crd.yaml b/addon/v1alpha1/0000_03_addon.open-cluster-management.io_addontemplates.crd.yaml index 64d46da06..484b3b0f4 100644 --- a/addon/v1alpha1/0000_03_addon.open-cluster-management.io_addontemplates.crd.yaml +++ b/addon/v1alpha1/0000_03_addon.open-cluster-management.io_addontemplates.crd.yaml @@ -20,35 +20,25 @@ spec: name: v1alpha1 schema: openAPIV3Schema: - description: |- - AddOnTemplate is the Custom Resource object, it is used to describe - how to deploy the addon agent and how to register the addon. - - - AddOnTemplate is a cluster-scoped resource, and will only be used - on the hub cluster. + description: "AddOnTemplate is the Custom Resource object, it is used to describe + how to deploy the addon agent and how to register the addon. \n AddOnTemplate + is a cluster-scoped resource, and will only be used on the hub cluster." 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 spec: - description: |- - spec holds the registration configuration for the addon and the - addon agent resources yaml description. + description: spec holds the registration configuration for the addon and + the addon agent resources yaml description. properties: addonName: description: AddonName represents the name of the addon which the @@ -59,20 +49,21 @@ spec: of the addon agent to be deployed on a managed cluster. 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 @@ -83,26 +74,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 @@ -116,22 +107,23 @@ 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. @@ -151,9 +143,8 @@ 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 @@ -169,9 +160,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: @@ -184,33 +175,40 @@ 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 - path type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map 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 @@ -219,23 +217,26 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map 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 @@ -246,20 +247,19 @@ 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: @@ -269,15 +269,18 @@ 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, - statusFeedBackRules can still be used to get feedbackResults. + 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 @@ -311,22 +314,23 @@ spec: description: Registration holds the registration configuration for the addon items: - description: |- - RegistrationSpec describes how to register an addon agent to the hub cluster. - With the registration defined, The addon agent can access to kube apiserver with kube style API - or other endpoints on hub cluster with client certificate authentication. During the addon - registration process, a csr will be created for each Registration on the hub cluster. The - CSR will be approved automatically, After the csr is approved on the hub cluster, the klusterlet - agent will create a secret in the installNamespace for the addon agent. - If the RegistrationType type is KubeClient, the secret name will be "{addon name}-hub-kubeconfig" - whose content includes key/cert and kubeconfig. Otherwise, If the RegistrationType type is - CustomSigner the secret name will be "{addon name}-{signer name}-client-cert" whose content - includes key/cert. + description: RegistrationSpec describes how to register an addon + agent to the hub cluster. With the registration defined, The addon + agent can access to kube apiserver with kube style API or other + endpoints on hub cluster with client certificate authentication. + During the addon registration process, a csr will be created for + each Registration on the hub cluster. The CSR will be approved + automatically, After the csr is approved on the hub cluster, the + klusterlet agent will create a secret in the installNamespace + for the addon agent. If the RegistrationType type is KubeClient, + the secret name will be "{addon name}-hub-kubeconfig" whose content + includes key/cert and kubeconfig. Otherwise, If the RegistrationType + type is CustomSigner the secret name will be "{addon name}-{signer + name}-client-cert" whose content includes key/cert. properties: customSigner: - description: |- - CustomSigner holds the configuration of the CustomSigner type registration - required when the Type is CustomSigner + description: CustomSigner holds the configuration of the CustomSigner + type registration required when the Type is CustomSigner properties: signerName: description: signerName is the name of signer that addon @@ -336,13 +340,14 @@ spec: pattern: ^([a-z0-9][a-z0-9-]*[a-z0-9]\.)+[a-z]+\/[a-z0-9-\.]+$ type: string signingCA: - description: |- - SigningCA represents the reference of the secret on the hub cluster to sign the CSR - the secret must be in the namespace where the addon-manager is located, and the secret - type must be "kubernetes.io/tls" - Note: The addon manager will not have permission to access the secret by default, so - the user must grant the permission to the addon manager(by creating rolebinding for - the addon-manager serviceaccount "addon-manager-controller-sa"). + description: 'SigningCA represents the reference of the + secret on the hub cluster to sign the CSR the secret must + be in the namespace where the addon-manager is located, + and the secret type must be "kubernetes.io/tls" Note: + The addon manager will not have permission to access the + secret by default, so the user must grant the permission + to the addon manager(by creating rolebinding for the addon-manager + serviceaccount "addon-manager-controller-sa").' properties: name: description: Name of the signing CA secret @@ -351,14 +356,13 @@ spec: - name type: object subject: - description: |- - Subject is the user subject of the addon agent to be registered to the hub. - If it is not set, the addon agent will have the default subject - "subject": { - "user": "system:open-cluster-management:cluster:{clusterName}:addon:{addonName}:agent:{agentName}", - "groups: ["system:open-cluster-management:cluster:{clusterName}:addon:{addonName}", - "system:open-cluster-management:addon:{addonName}", "system:authenticated"] - } + description: 'Subject is the user subject of the addon agent + to be registered to the hub. If it is not set, the addon + agent will have the default subject "subject": { "user": + "system:open-cluster-management:cluster:{clusterName}:addon:{addonName}:agent:{agentName}", + "groups: ["system:open-cluster-management:cluster:{clusterName}:addon:{addonName}", + "system:open-cluster-management:addon:{addonName}", "system:authenticated"] + }' properties: groups: description: groups is the user group of the addon agent. @@ -386,40 +390,43 @@ spec: description: HubPermissions represent the permission configurations of the addon agent to access the hub cluster items: - description: |- - HubPermissionConfig configures the permission of the addon agent to access the hub cluster. - Will create a RoleBinding in the same namespace as the managedClusterAddon to bind the user - provided ClusterRole/Role to the "system:open-cluster-management:cluster::addon:" + description: HubPermissionConfig configures the permission + of the addon agent to access the hub cluster. Will create + a RoleBinding in the same namespace as the managedClusterAddon + to bind the user provided ClusterRole/Role to the "system:open-cluster-management:cluster::addon:" Group. properties: currentCluster: - description: |- - CurrentCluster contains the configuration of CurrentCluster type binding. - It is required when the type is CurrentCluster. + description: CurrentCluster contains the configuration + of CurrentCluster type binding. It is required when + the type is CurrentCluster. properties: clusterRoleName: - description: |- - ClusterRoleName is the name of the clusterrole the addon agent is bound. A rolebinding - will be created referring to this cluster role in each cluster namespace. - The user must make sure the clusterrole exists on the hub cluster. + description: ClusterRoleName is the name of the + clusterrole the addon agent is bound. A rolebinding + will be created referring to this cluster role + in each cluster namespace. The user must make + sure the clusterrole exists on the hub cluster. type: string required: - clusterRoleName type: object singleNamespace: - description: |- - SingleNamespace contains the configuration of SingleNamespace type binding. - It is required when the type is SingleNamespace + description: SingleNamespace contains the configuration + of SingleNamespace type binding. It is required + when the type is SingleNamespace properties: namespace: - description: |- - Namespace is the namespace the addon agent has permissions to bind to. A rolebinding - will be created in this namespace referring to the RoleRef. + description: Namespace is the namespace the addon + agent has permissions to bind to. A rolebinding + will be created in this namespace referring + to the RoleRef. type: string roleRef: - description: |- - RoleRef is an reference to the permission resource. it could be a role or a cluster role, - the user must make sure it exist on the hub cluster. + description: RoleRef is an reference to the permission + resource. it could be a role or a cluster role, + the user must make sure it exist on the hub + cluster. properties: apiGroup: description: APIGroup is the group for the @@ -444,10 +451,12 @@ spec: - roleRef type: object type: - description: |- - Type of the permissions setting. It defines how to bind the roleRef on the hub cluster. It can be: - - CurrentCluster: Bind the roleRef to the namespace with the same name as the managedCluster. - - SingleNamespace: Bind the roleRef to the namespace specified by SingleNamespaceBindingConfig. + description: 'Type of the permissions setting. It + defines how to bind the roleRef on the hub cluster. + It can be: - CurrentCluster: Bind the roleRef to + the namespace with the same name as the managedCluster. + - SingleNamespace: Bind the roleRef to the namespace + specified by SingleNamespaceBindingConfig.' enum: - CurrentCluster - SingleNamespace @@ -458,15 +467,16 @@ spec: type: array type: object type: - description: |- - Type of the registration configuration, it supports: - - KubeClient: the addon agent can access the hub kube apiserver with kube style API. - the signer name should be "kubernetes.io/kube-apiserver-client". When this type is - used, the KubeClientRegistrationConfig can be used to define the permission of the - addon agent to access the hub cluster - - CustomSigner: the addon agent can access the hub cluster through user-defined endpoints. - When this type is used, the CustomSignerRegistrationConfig can be used to define how - to issue the client certificate for the addon agent. + description: 'Type of the registration configuration, it supports: + - KubeClient: the addon agent can access the hub kube apiserver + with kube style API. the signer name should be "kubernetes.io/kube-apiserver-client". + When this type is used, the KubeClientRegistrationConfig can + be used to define the permission of the addon agent to access + the hub cluster - CustomSigner: the addon agent can access + the hub cluster through user-defined endpoints. When this + type is used, the CustomSignerRegistrationConfig can be used + to define how to issue the client certificate for the addon + agent.' enum: - KubeClient - CustomSigner diff --git a/cluster/v1/0000_00_clusters.open-cluster-management.io_managedclusters.crd.yaml b/cluster/v1/0000_00_clusters.open-cluster-management.io_managedclusters.crd.yaml index 1b8766eb4..9bd0cb68b 100644 --- a/cluster/v1/0000_00_clusters.open-cluster-management.io_managedclusters.crd.yaml +++ b/cluster/v1/0000_00_clusters.open-cluster-management.io_managedclusters.crd.yaml @@ -34,39 +34,29 @@ spec: name: v1 schema: openAPIV3Schema: - description: |- - ManagedCluster represents the desired state and current status + description: "ManagedCluster represents the desired state and current status of a managed cluster. ManagedCluster is a cluster-scoped resource. The name - is the cluster UID. - - - The cluster join process is a double opt-in process. See the following join process steps: - - - 1. The agent on the managed cluster creates a CSR on the hub with the cluster UID and agent name. - 2. The agent on the managed cluster creates a ManagedCluster on the hub. - 3. The cluster admin on the hub cluster approves the CSR for the UID and agent name of the ManagedCluster. - 4. The cluster admin sets the spec.acceptClient of the ManagedCluster to true. - 5. The cluster admin on the managed cluster creates a credential of the kubeconfig for the hub cluster. - - - After the hub cluster creates the cluster namespace, the klusterlet agent on the ManagedCluster pushes - the credential to the hub cluster to use against the kube-apiserver of the ManagedCluster. + is the cluster UID. \n The cluster join process is a double opt-in process. + See the following join process steps: \n 1. The agent on the managed cluster + creates a CSR on the hub with the cluster UID and agent name. 2. The agent + on the managed cluster creates a ManagedCluster on the hub. 3. The cluster + admin on the hub cluster approves the CSR for the UID and agent name of + the ManagedCluster. 4. The cluster admin sets the spec.acceptClient of the + ManagedCluster to true. 5. The cluster admin on the managed cluster creates + a credential of the kubeconfig for the hub cluster. \n After the hub cluster + creates the cluster namespace, the klusterlet agent on the ManagedCluster + pushes the credential to the hub cluster to use against the kube-apiserver + of the ManagedCluster." 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 @@ -75,37 +65,38 @@ spec: the managed cluster. properties: hubAcceptsClient: - description: |- - hubAcceptsClient represents that hub accepts the joining of Klusterlet agent on - the managed cluster with the hub. The default value is false, and can only be set - true when the user on hub has an RBAC rule to UPDATE on the virtual subresource - of managedclusters/accept. - When the value is set true, a namespace whose name is the same as the name of ManagedCluster - is created on the hub. This namespace represents the managed cluster, also role/rolebinding is created on - the namespace to grant the permision of access from the agent on the managed cluster. - When the value is set to false, the namespace representing the managed cluster is - deleted. + description: hubAcceptsClient represents that hub accepts the joining + of Klusterlet agent on the managed cluster with the hub. The default + value is false, and can only be set true when the user on hub has + an RBAC rule to UPDATE on the virtual subresource of managedclusters/accept. + When the value is set true, a namespace whose name is the same as + the name of ManagedCluster is created on the hub. This namespace + represents the managed cluster, also role/rolebinding is created + on the namespace to grant the permision of access from the agent + on the managed cluster. When the value is set to false, the namespace + representing the managed cluster is deleted. type: boolean leaseDurationSeconds: default: 60 - description: |- - LeaseDurationSeconds is used to coordinate the lease update time of Klusterlet agents on the managed cluster. - If its value is zero, the Klusterlet agent will update its lease every 60 seconds by default + description: LeaseDurationSeconds is used to coordinate the lease + update time of Klusterlet agents on the managed cluster. If its + value is zero, the Klusterlet agent will update its lease every + 60 seconds by default format: int32 type: integer managedClusterClientConfigs: - description: |- - ManagedClusterClientConfigs represents a list of the apiserver address of the managed cluster. - If it is empty, the managed cluster has no accessible address for the hub to connect with it. + description: ManagedClusterClientConfigs represents a list of the + apiserver address of the managed cluster. If it is empty, the managed + cluster has no accessible address for the hub to connect with it. items: - description: |- - ClientConfig represents the apiserver address of the managed cluster. - TODO include credential to connect to managed cluster kube-apiserver + description: ClientConfig represents the apiserver address of the + managed cluster. TODO include credential to connect to managed + cluster kube-apiserver 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: @@ -115,28 +106,27 @@ spec: type: object type: array taints: - description: |- - Taints is a property of managed cluster that allow the cluster to be repelled when scheduling. - Taints, including 'ManagedClusterUnavailable' and 'ManagedClusterUnreachable', can not be added/removed by agent - running on the managed cluster; while it's fine to add/remove other taints from either hub cluser or managed cluster. + description: Taints is a property of managed cluster that allow the + cluster to be repelled when scheduling. Taints, including 'ManagedClusterUnavailable' + and 'ManagedClusterUnreachable', can not be added/removed by agent + running on the managed cluster; while it's fine to add/remove other + taints from either hub cluser or managed cluster. items: - description: |- - The managed cluster this Taint is attached to has the "effect" on - any placement that does not tolerate the Taint. + description: The managed cluster this Taint is attached to has the + "effect" on any placement that does not tolerate the Taint. properties: effect: - description: |- - Effect indicates the effect of the taint on placements that do not tolerate the taint. - Valid effects are NoSelect, PreferNoSelect and NoSelectIfNew. + description: Effect indicates the effect of the taint on placements + that do not tolerate the taint. Valid effects are NoSelect, + PreferNoSelect and NoSelectIfNew. enum: - NoSelect - PreferNoSelect - NoSelectIfNew type: string key: - description: |- - Key is the taint key applied to a cluster. e.g. bar or foo.example.com/bar. - The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) + description: Key is the taint key applied to a cluster. e.g. + bar or foo.example.com/bar. 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 @@ -177,25 +167,24 @@ 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: |- - Capacity represents the total resource capacity from all nodeStatuses - on the managed cluster. + description: Capacity represents the total resource capacity from + all nodeStatuses on the managed cluster. type: object clusterClaims: - description: |- - ClusterClaims represents cluster information that a managed cluster claims, - for example a unique cluster identifier (id.k8s.io) and kubernetes version - (kubeversion.open-cluster-management.io). They are written from the managed - cluster. The set of claims is not uniform across a fleet, some claims can be - vendor or version specific and may not be included from all managed clusters. + description: ClusterClaims represents cluster information that a managed + cluster claims, for example a unique cluster identifier (id.k8s.io) + and kubernetes version (kubeversion.open-cluster-management.io). + They are written from the managed cluster. The set of claims is + not uniform across a fleet, some claims can be vendor or version + specific and may not be included from all managed clusters. items: description: ManagedClusterClaim represents a ClusterClaim collected from a managed cluster. properties: name: - description: |- - Name is the name of a ClusterClaim resource on managed cluster. It's a well known - or customized name to identify the claim. + description: Name is the name of a ClusterClaim resource on + managed cluster. It's a well known or customized name to identify + the claim. maxLength: 253 minLength: 1 type: string @@ -211,42 +200,42 @@ spec: for this managed cluster. items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -260,12 +249,11 @@ 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/cluster/v1alpha1/0000_02_clusters.open-cluster-management.io_clusterclaims.crd.yaml b/cluster/v1alpha1/0000_02_clusters.open-cluster-management.io_clusterclaims.crd.yaml index 4359dcadb..5355bb16d 100644 --- a/cluster/v1alpha1/0000_02_clusters.open-cluster-management.io_clusterclaims.crd.yaml +++ b/cluster/v1alpha1/0000_02_clusters.open-cluster-management.io_clusterclaims.crd.yaml @@ -15,31 +15,22 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: |- - ClusterClaim represents cluster information that a managed cluster claims - ClusterClaims with well known names include, - 1. id.k8s.io, it contains a unique identifier for the cluster. - 2. clusterset.k8s.io, it contains an identifier that relates the cluster - to the ClusterSet in which it belongs. - - - ClusterClaims created on a managed cluster will be collected and saved into - the status of the corresponding ManagedCluster on hub. + description: "ClusterClaim represents cluster information that a managed cluster + claims ClusterClaims with well known names include, 1. id.k8s.io, it contains + a unique identifier for the cluster. 2. clusterset.k8s.io, it contains an + identifier that relates the cluster to the ClusterSet in which it belongs. + \n ClusterClaims created on a managed cluster will be collected and saved + into the status of the corresponding ManagedCluster on hub." 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 diff --git a/cluster/v1alpha1/0000_05_clusters.open-cluster-management.io_addonplacementscores.crd.yaml b/cluster/v1alpha1/0000_05_clusters.open-cluster-management.io_addonplacementscores.crd.yaml index 24d2d6c01..1cfba5564 100644 --- a/cluster/v1alpha1/0000_05_clusters.open-cluster-management.io_addonplacementscores.crd.yaml +++ b/cluster/v1alpha1/0000_05_clusters.open-cluster-management.io_addonplacementscores.crd.yaml @@ -15,24 +15,19 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: |- - AddOnPlacementScore represents a bundle of scores of one managed cluster, which could be used by placement. - AddOnPlacementScore is a namespace scoped resource. The namespace of the resource is the cluster namespace. + description: AddOnPlacementScore represents a bundle of scores of one managed + cluster, which could be used by placement. AddOnPlacementScore is a namespace + scoped resource. The namespace of the resource is the cluster namespace. 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,42 +39,42 @@ spec: this AddOnPlacementScore. items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -93,12 +88,11 @@ 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 @@ -139,10 +133,10 @@ spec: - name x-kubernetes-list-type: map validUntil: - description: |- - ValidUntil defines the valid time of the scores. - After this time, the scores are considered to be invalid by placement. nil means never expire. - The controller owning this resource should keep the scores up-to-date. + description: ValidUntil defines the valid time of the scores. After + this time, the scores are considered to be invalid by placement. + nil means never expire. The controller owning this resource should + keep the scores up-to-date. format: date-time type: string type: object diff --git a/cluster/v1beta1/0000_02_clusters.open-cluster-management.io_placements.crd.yaml b/cluster/v1beta1/0000_02_clusters.open-cluster-management.io_placements.crd.yaml index e2289658e..c824e63ab 100644 --- a/cluster/v1beta1/0000_02_clusters.open-cluster-management.io_placements.crd.yaml +++ b/cluster/v1beta1/0000_02_clusters.open-cluster-management.io_placements.crd.yaml @@ -25,49 +25,34 @@ spec: name: v1beta1 schema: openAPIV3Schema: - 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. + 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." 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 @@ -75,11 +60,12 @@ 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 @@ -96,28 +82,32 @@ 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. - - - 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. \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." 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. @@ -135,24 +125,28 @@ 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 @@ -173,24 +167,28 @@ 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 @@ -205,10 +203,12 @@ spec: 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 @@ -227,18 +227,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: @@ -248,13 +248,16 @@ 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 @@ -264,8 +267,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: @@ -273,16 +276,17 @@ 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 @@ -301,8 +305,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: @@ -310,16 +314,17 @@ 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 @@ -333,10 +338,11 @@ spec: 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 @@ -344,10 +350,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: @@ -363,35 +369,37 @@ 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 @@ -401,13 +409,14 @@ 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 @@ -418,38 +427,43 @@ 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 @@ -468,11 +482,13 @@ 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 @@ -485,52 +501,53 @@ 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 @@ -544,42 +561,42 @@ spec: this Placement. items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -593,12 +610,11 @@ 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/cluster/v1beta1/0000_03_clusters.open-cluster-management.io_placementdecisions.crd.yaml b/cluster/v1beta1/0000_03_clusters.open-cluster-management.io_placementdecisions.crd.yaml index 01d539845..f5bcc831d 100644 --- a/cluster/v1beta1/0000_03_clusters.open-cluster-management.io_placementdecisions.crd.yaml +++ b/cluster/v1beta1/0000_03_clusters.open-cluster-management.io_placementdecisions.crd.yaml @@ -15,33 +15,24 @@ spec: - name: v1beta1 schema: openAPIV3Schema: - description: |- - PlacementDecision indicates a decision from a placement. - PlacementDecision must have a cluster.open-cluster-management.io/placement={placement name} label to reference a certain placement. - - - If a placement has spec.numberOfClusters specified, the total number of decisions contained in - the status.decisions of PlacementDecisions must be the same as NumberOfClusters. Otherwise, the + description: "PlacementDecision indicates a decision from a placement. PlacementDecision + must have a cluster.open-cluster-management.io/placement={placement name} + label to reference a certain placement. \n If a placement has spec.numberOfClusters + specified, the total number of decisions contained in the status.decisions + of PlacementDecisions must be the same as NumberOfClusters. Otherwise, the total number of decisions must equal the number of ManagedClusters that - match the placement requirements. - - - Some of the decisions might be empty when there are not enough ManagedClusters to meet the placement requirements. + match the placement requirements. \n Some of the decisions might be empty + when there are not enough ManagedClusters to meet the placement requirements." 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 @@ -49,18 +40,16 @@ spec: description: Status represents the current status of the PlacementDecision properties: decisions: - description: |- - Decisions is a slice of decisions according to a placement + description: Decisions is a slice of decisions according to a placement The number of decisions should not be larger than 100 items: - description: |- - ClusterDecision represents a decision from a placement + description: ClusterDecision represents a decision from a placement An empty ClusterDecision indicates it is not scheduled yet. properties: clusterName: - description: |- - ClusterName is the name of the ManagedCluster. If it is not empty, its value should be unique cross all - placement decisions for the Placement. + description: ClusterName is the name of the ManagedCluster. + If it is not empty, its value should be unique cross all placement + decisions for the Placement. type: string reason: description: Reason represents the reason why the ManagedCluster diff --git a/cluster/v1beta2/0000_00_clusters.open-cluster-management.io_managedclustersets.crd.yaml b/cluster/v1beta2/0000_00_clusters.open-cluster-management.io_managedclustersets.crd.yaml index 4aa45aa18..74418c3b2 100644 --- a/cluster/v1beta2/0000_00_clusters.open-cluster-management.io_managedclustersets.crd.yaml +++ b/cluster/v1beta2/0000_00_clusters.open-cluster-management.io_managedclustersets.crd.yaml @@ -25,35 +25,28 @@ spec: name: v1beta2 schema: openAPIV3Schema: - description: |- - ManagedClusterSet defines a group of ManagedClusters that you can run - workloads on. You can define a workload to be deployed on a ManagedClusterSet. See the following options for the workload: - - The workload can run on any ManagedCluster in the ManagedClusterSet - - The workload cannot run on any ManagedCluster outside the ManagedClusterSet - - The service exposed by the workload can be shared in any ManagedCluster in the ManagedClusterSet - - - To assign a ManagedCluster to a certain ManagedClusterSet, add a label with the name cluster.open-cluster-management.io/clusterset - on the ManagedCluster to refer to the ManagedClusterSet. You are not - allowed to add or remove this label on a ManagedCluster unless you have an - RBAC rule to CREATE on a virtual subresource of managedclustersets/join. - To update this label, you must have the permission on both - the old and new ManagedClusterSet. + description: "ManagedClusterSet defines a group of ManagedClusters that you + can run workloads on. You can define a workload to be deployed on a ManagedClusterSet. + See the following options for the workload: - The workload can run on any + ManagedCluster in the ManagedClusterSet - The workload cannot run on any + ManagedCluster outside the ManagedClusterSet - The service exposed by the + workload can be shared in any ManagedCluster in the ManagedClusterSet \n + To assign a ManagedCluster to a certain ManagedClusterSet, add a label with + the name cluster.open-cluster-management.io/clusterset on the ManagedCluster + to refer to the ManagedClusterSet. You are not allowed to add or remove + this label on a ManagedCluster unless you have an RBAC rule to CREATE on + a virtual subresource of managedclustersets/join. To update this label, + you must have the permission on both the old and new ManagedClusterSet." 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 @@ -76,25 +69,25 @@ 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 - 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 - 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 @@ -108,19 +101,21 @@ spec: 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 selectorType: default: ExclusiveClusterSetLabel - description: |- - SelectorType could only be "ExclusiveClusterSetLabel" or "LabelSelector" - "ExclusiveClusterSetLabel" means to use label "cluster.open-cluster-management.io/clusterset:"" to select target clusters. - "LabelSelector" means use labelSelector to select target managedClusters + description: SelectorType could only be "ExclusiveClusterSetLabel" + or "LabelSelector" "ExclusiveClusterSetLabel" means to use label + "cluster.open-cluster-management.io/clusterset:"" to select target clusters. "LabelSelector" means use + labelSelector to select target managedClusters enum: - ExclusiveClusterSetLabel - LabelSelector @@ -135,42 +130,42 @@ spec: for this ManagedClusterSet. items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -184,12 +179,11 @@ 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/cluster/v1beta2/0000_01_clusters.open-cluster-management.io_managedclustersetbindings.crd.yaml b/cluster/v1beta2/0000_01_clusters.open-cluster-management.io_managedclustersetbindings.crd.yaml index 54e62463c..cc5dfdffc 100644 --- a/cluster/v1beta2/0000_01_clusters.open-cluster-management.io_managedclustersetbindings.crd.yaml +++ b/cluster/v1beta2/0000_01_clusters.open-cluster-management.io_managedclustersetbindings.crd.yaml @@ -18,27 +18,22 @@ 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 @@ -46,11 +41,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 @@ -62,42 +57,42 @@ spec: for this ManagedClusterSetBinding. items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -111,12 +106,11 @@ 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/operator/v1/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml b/operator/v1/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml index d5e0e0ef7..7bb0eff26 100644 --- a/operator/v1/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml +++ b/operator/v1/0000_00_operator.open-cluster-management.io_klusterlets.crd.yaml @@ -15,27 +15,22 @@ 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 @@ -44,9 +39,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 @@ -54,29 +49,32 @@ 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: @@ -86,9 +84,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. @@ -103,20 +101,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 @@ -131,81 +129,82 @@ 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. - - - 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. + 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." 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 @@ -223,39 +222,41 @@ 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\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." + 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.' items: properties: feature: @@ -263,10 +264,11 @@ 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 @@ -277,16 +279,16 @@ 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: @@ -303,59 +305,56 @@ spec: - 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. + 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. + 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. + 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. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - 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. + \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." 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 @@ -371,9 +370,8 @@ 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: @@ -382,11 +380,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: @@ -401,23 +399,24 @@ 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\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." + 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.' items: properties: feature: @@ -425,10 +424,11 @@ 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 @@ -439,75 +439,74 @@ 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.\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}" + 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 }" 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 @@ -521,12 +520,11 @@ 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 @@ -542,9 +540,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/operator/v1/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml b/operator/v1/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml index 8e92beeb7..8abdb8e37 100644 --- a/operator/v1/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml +++ b/operator/v1/0000_01_operator.open-cluster-management.io_clustermanagers.crd.yaml @@ -15,25 +15,21 @@ 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 @@ -49,16 +45,16 @@ spec: of addon manager properties: featureGates: - 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." + 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.' items: properties: feature: @@ -66,10 +62,11 @@ 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 @@ -87,8 +84,7 @@ 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: @@ -100,10 +96,9 @@ 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: @@ -121,10 +116,9 @@ 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: @@ -140,13 +134,14 @@ 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 @@ -165,44 +160,45 @@ 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 @@ -217,25 +213,26 @@ 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\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." + 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.' items: properties: feature: @@ -243,10 +240,11 @@ 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 @@ -262,33 +260,28 @@ 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. - - - This is an alpha field and requires enabling the - DynamicResourceAllocation feature gate. - - - 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. + \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." 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 @@ -304,9 +297,8 @@ 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: @@ -315,11 +307,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: @@ -336,16 +328,16 @@ spec: description: WorkConfiguration contains the configuration of work properties: featureGates: - 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." + 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.' items: properties: feature: @@ -353,10 +345,11 @@ 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 @@ -367,17 +360,15 @@ 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: | - - - - 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: | + \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" enum: - kube - mqtt @@ -395,52 +386,50 @@ 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.\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}" + 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 }" 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 @@ -454,12 +443,11 @@ 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 @@ -475,9 +463,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/work/v1/0000_00_work.open-cluster-management.io_manifestworks.crd.yaml b/work/v1/0000_00_work.open-cluster-management.io_manifestworks.crd.yaml index efb889f9d..bbec6012d 100644 --- a/work/v1/0000_00_work.open-cluster-management.io_manifestworks.crd.yaml +++ b/work/v1/0000_00_work.open-cluster-management.io_manifestworks.crd.yaml @@ -15,27 +15,21 @@ spec: - name: v1 schema: openAPIV3Schema: - description: |- - ManifestWork represents a manifests workload that hub wants to deploy on the managed cluster. - A manifest workload is defined as a set of Kubernetes resources. - ManifestWork must be created in the cluster namespace on the hub, so that agent on the - corresponding managed cluster can access this resource and deploy on the managed - cluster. + description: ManifestWork represents a manifests workload that hub wants to + deploy on the managed cluster. A manifest workload is defined as a set of + Kubernetes resources. ManifestWork must be created in the cluster namespace + on the hub, so that agent on the corresponding managed cluster can access + this resource and deploy on the managed cluster. 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,20 +38,20 @@ spec: on the managed cluster. 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 @@ -68,25 +62,24 @@ 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 Kubernetes @@ -100,22 +93,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. @@ -135,9 +128,8 @@ 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 @@ -153,9 +145,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: @@ -168,33 +160,40 @@ spec: 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 - path type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map 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 @@ -203,23 +202,25 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map 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, + 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 @@ -230,20 +231,19 @@ 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: @@ -252,15 +252,17 @@ 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, - statusFeedBackRules can still be used to get feedbackResults. + 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 @@ -294,52 +296,52 @@ spec: description: Status represents the current status of work. properties: conditions: - description: |- - Conditions contains the different condition statuses for this work. - Valid condition types are: - 1. Applied represents workload in ManifestWork is applied successfully on managed cluster. - 2. Progressing represents workload in ManifestWork is being applied on managed cluster. - 3. Available represents workload in ManifestWork exists on the managed cluster. - 4. Degraded represents the current state of workload does not match the desired - state for a certain period. + description: 'Conditions contains the different condition statuses + for this work. Valid condition types are: 1. Applied represents + workload in ManifestWork is applied successfully on managed cluster. + 2. Progressing represents workload in ManifestWork is being applied + on managed cluster. 3. Available represents workload in ManifestWork + exists on the managed cluster. 4. Degraded represents the current + state of workload does not match the desired state for a certain + period.' items: description: "Condition contains details for one aspect of 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\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}" + 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 }" 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 @@ -353,12 +355,11 @@ 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 @@ -371,68 +372,71 @@ spec: type: object type: array resourceStatus: - description: |- - ResourceStatus represents the status of each resource in manifestwork deployed on a - managed cluster. The Klusterlet agent on managed cluster syncs the condition from the managed cluster to the hub. + description: ResourceStatus represents the status of each resource + in manifestwork deployed on a managed cluster. The Klusterlet agent + on managed cluster syncs the condition from the managed cluster + to the hub. properties: manifests: - description: |- - Manifests represents the condition of manifests deployed on managed cluster. - Valid condition types are: - 1. Progressing represents the resource is being applied on managed cluster. - 2. Applied represents the resource is applied successfully on managed cluster. - 3. Available represents the resource exists on the managed cluster. - 4. Degraded represents the current state of resource does not match the desired - state for a certain period. + description: 'Manifests represents the condition of manifests + deployed on managed cluster. Valid condition types are: 1. Progressing + represents the resource is being applied on managed cluster. + 2. Applied represents the resource is applied successfully on + managed cluster. 3. Available represents the resource exists + on the managed cluster. 4. Degraded represents the current state + of resource does not match the desired state for a certain period.' items: - description: |- - ManifestCondition represents the conditions of the resources deployed on a - managed cluster. + description: ManifestCondition represents the conditions of + the resources deployed on a managed cluster. properties: conditions: description: Conditions represents the conditions of this resource on a managed cluster. items: description: "Condition contains details for one aspect - of the current state of this API Resource.\n---\nThis + 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\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}" + 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 }" 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_])?$ @@ -446,12 +450,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 @@ -505,9 +509,9 @@ spec: items: properties: fieldValue: - description: |- - Value is the value of the status field. - The value of the status field can only be integer, string or boolean. + description: Value is the value of the status + field. The value of the status field can only + be integer, string or boolean. properties: boolean: description: Boolean is bool value when type @@ -540,8 +544,8 @@ spec: - type type: object name: - description: |- - Name represents the alias name for this field. It is the same as what is specified + description: Name represents the alias name for + this field. It is the same as what is specified in StatuFeedbackRule in the spec. type: string required: diff --git a/work/v1/0000_01_work.open-cluster-management.io_appliedmanifestworks.crd.yaml b/work/v1/0000_01_work.open-cluster-management.io_appliedmanifestworks.crd.yaml index bd1e27810..99ef00b4b 100644 --- a/work/v1/0000_01_work.open-cluster-management.io_appliedmanifestworks.crd.yaml +++ b/work/v1/0000_01_work.open-cluster-management.io_appliedmanifestworks.crd.yaml @@ -15,29 +15,23 @@ spec: - name: v1 schema: openAPIV3Schema: - description: |- - AppliedManifestWork represents an applied manifestwork on managed cluster that is placed - on a managed cluster. An AppliedManifestWork links to a manifestwork on a hub recording resources - deployed in the managed cluster. - When the agent is removed from managed cluster, cluster-admin on managed cluster - can delete appliedmanifestwork to remove resources deployed by the agent. - The name of the appliedmanifestwork must be in the format of - {hash of hub's first kube-apiserver url}-{manifestwork name} + description: AppliedManifestWork represents an applied manifestwork on managed + cluster that is placed on a managed cluster. An AppliedManifestWork links + to a manifestwork on a hub recording resources deployed in the managed cluster. + When the agent is removed from managed cluster, cluster-admin on managed + cluster can delete appliedmanifestwork to remove resources deployed by the + agent. The name of the appliedmanifestwork must be in the format of {hash + of hub's first kube-apiserver url}-{manifestwork name} 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 @@ -49,9 +43,8 @@ spec: handle this AppliedManifestWork. type: string hubHash: - description: |- - HubHash represents the hash of the first hub kube apiserver to identify which hub - this AppliedManifestWork links to. + description: HubHash represents the hash of the first hub kube apiserver + to identify which hub this AppliedManifestWork links to. type: string manifestWorkName: description: ManifestWorkName represents the name of the related manifestwork @@ -62,40 +55,41 @@ spec: description: Status represents the current status of AppliedManifestWork. properties: appliedResources: - description: |- - AppliedResources represents a list of resources defined within the manifestwork that are applied. - Only resources with valid GroupVersionResource, namespace, and name are suitable. - An item in this slice is deleted when there is no mapped manifest in manifestwork.Spec or by finalizer. - The resource relating to the item will also be removed from managed cluster. - The deleted resource may still be present until the finalizers for that resource are finished. - However, the resource will not be undeleted, so it can be removed from this list and eventual consistency is preserved. + description: AppliedResources represents a list of resources defined + within the manifestwork that are applied. Only resources with valid + GroupVersionResource, namespace, and name are suitable. An item + in this slice is deleted when there is no mapped manifest in manifestwork.Spec + or by finalizer. The resource relating to the item will also be + removed from managed cluster. The deleted resource may still be + present until the finalizers for that resource are finished. However, + the resource will not be undeleted, so it can be removed from this + list and eventual consistency is preserved. items: - description: |- - AppliedManifestResourceMeta represents the group, version, resource, name and namespace of a resource. - Since these resources have been created, they must have valid group, version, resource, namespace, and name. + description: AppliedManifestResourceMeta represents the group, version, + resource, name and namespace of a resource. Since these resources + have been created, they must have valid group, version, resource, + namespace, and name. properties: group: - description: |- - Group is the API Group of the Kubernetes resource, + 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 resource. type: string uid: - description: |- - UID is set on successful deletion of the Kubernetes resource by controller. The - resource might be still visible on the managed cluster after this field is set. - It is not directly settable by a client. + description: UID is set on successful deletion of the Kubernetes + resource by controller. The resource might be still visible + on the managed cluster after this field is set. It is not + directly settable by a client. type: string version: description: Version is the version of the Kubernetes resource. @@ -107,11 +101,12 @@ spec: type: object type: array evictionStartTime: - description: |- - EvictionStartTime represents the current appliedmanifestwork will be evicted after a grace period. - An appliedmanifestwork will be evicted from the managed cluster in the following two scenarios: - - the manifestwork of the current appliedmanifestwork is missing on the hub, or - - the appliedmanifestwork hub hash does not match the current hub hash of the work agent. + description: 'EvictionStartTime represents the current appliedmanifestwork + will be evicted after a grace period. An appliedmanifestwork will + be evicted from the managed cluster in the following two scenarios: + - the manifestwork of the current appliedmanifestwork is missing + on the hub, or - the appliedmanifestwork hub hash does not match + the current hub hash of the work agent.' format: date-time type: string type: object diff --git a/work/v1alpha1/0000_00_work.open-cluster-management.io_manifestworkreplicasets.crd.yaml b/work/v1alpha1/0000_00_work.open-cluster-management.io_manifestworkreplicasets.crd.yaml index 6acb6340f..c86c2d5fd 100644 --- a/work/v1alpha1/0000_00_work.open-cluster-management.io_manifestworkreplicasets.crd.yaml +++ b/work/v1alpha1/0000_00_work.open-cluster-management.io_manifestworkreplicasets.crd.yaml @@ -34,26 +34,22 @@ 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 @@ -66,20 +62,21 @@ 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 @@ -90,26 +87,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 @@ -123,22 +120,23 @@ 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. @@ -158,9 +156,8 @@ 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 @@ -176,9 +173,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: @@ -191,33 +188,40 @@ 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 - path type: object type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map 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 @@ -226,23 +230,26 @@ spec: - type type: object type: array + x-kubernetes-list-map-keys: + - type + x-kubernetes-list-type: map 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,20 +260,19 @@ 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: @@ -276,15 +282,18 @@ 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, - statusFeedBackRules can still be used to get feedbackResults. + 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 @@ -315,8 +324,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 @@ -343,41 +352,49 @@ 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 @@ -386,26 +403,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 @@ -413,10 +430,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: @@ -424,41 +441,49 @@ 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 @@ -467,26 +492,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 @@ -495,41 +520,49 @@ 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 @@ -554,49 +587,48 @@ 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.\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}" + 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 }" 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 @@ -610,12 +642,11 @@ 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 @@ -634,9 +665,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