@@ -4,7 +4,6 @@ kind: CustomResourceDefinition
44metadata :
55 annotations :
66 controller-gen.kubebuilder.io/version : v0.16.1
7- helm.sh/resource-policy : keep
87 name : multikubernetesclusterplacements.orchestra.multicluster.x-k8s.io
98spec :
109 group : orchestra.multicluster.x-k8s.io
@@ -42,41 +41,182 @@ spec:
4241 description : MultiKubernetesClusterPlacementSpec defines the desired state
4342 of MultiKubernetesClusterPlacement
4443 properties :
45- clusterSelectorRules :
44+ affinity :
4645 description : |-
47- ClusterSelectorRules defines a pipeline of rules which consume an ordered list
48- of clusters and output an ordered list of clusters to generate the list of
49- current target clusters.
50- items :
51- description : |-
52- PlacementClusterSelectorRule defines a rule which takes an ordered list of
53- clusters and returns a list of clusters based on the rule type and arguments.
54- properties :
55- arguments :
56- additionalProperties :
57- type : string
58- description : |-
59- Arguments are specific to each rule type:
60- - cluster-list:
61- clusters: "cluster-inventory-ns/cluster1,cluster-inventory-ns/cluster2,cluster-inventory-ns/cluster3"
62- - cluster-name-regex
63- regex: "cluster-inventory-ns/cluster\d+"
64- type : object
65- type :
66- description : |-
67- Type specifies the rule type and may be one of:
68- - all-clusters: all clusters defined by the ClusterProfiles present
69- - cluster-list: a user-provided ordered list of clusters
70- - cluster-name-regex: a user-provided regular expression to match cluster names against
71- enum :
72- - all-clusters
73- - cluster-list
74- - cluster-name-regex
75- type : string
76- required :
77- - type
78- type : object
79- type : array
46+ Affinity defines cluster affinity scheduling eligibility rules.
47+ If Affinity is nil, the workload will be eligible to be scheduled on all available clusters.
48+ properties :
49+ clusterAffinity :
50+ description : ClusterAffinity is a group of cluster affinity scheduling
51+ rules.
52+ properties :
53+ requiredDuringSchedulingIgnoredDuringExecution :
54+ description : |-
55+ RequiredDuringSchedulingIgnoredDuringExecution defines cluster selector terms that must be met for a cluster to be selected.
56+ Existing workloads will not be removed from clusters that no longer meet these requirements.
57+ properties :
58+ clusterSelectorTerms :
59+ description : |-
60+ A list of cluster selector terms. The terms are ORed (the workload can be
61+ scheduled onto any cluster that fulfills the requirements of at least one
62+ term).
63+ items :
64+ description : A cluster selector term defines a set of
65+ requirements for a cluster to be selected.
66+ properties :
67+ matchExpressions :
68+ description : |-
69+ A list of selector requirements. The requirements are ANDed (all
70+ requirements must be met).
71+ items :
72+ description : |-
73+ A cluster selector expression which contains a selector for either a label or a field.
74+ If both are present, they are ANDed (i.e. both must be met).
75+ properties :
76+ fieldSelector :
77+ description : A field selector requirement.
78+ properties :
79+ field :
80+ description : |-
81+ Field is the ClusterProfile field that the selector applies to. Supported
82+ fields are metadata.name and metadata.namespace.
83+ type : string
84+ operator :
85+ description : |-
86+ Operator represents a field's relationship to a set of values.
87+ Valid operators are In, NotIn, Exists and DoesNotExist.
88+ type : string
89+ values :
90+ description : |-
91+ Values is an array of string values. If the operator is In or NotIn,
92+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
93+ the values array must be empty.
94+ items :
95+ type : string
96+ type : array
97+ required :
98+ - field
99+ - operator
100+ type : object
101+ labelSelector :
102+ description : A label selector requirement.
103+ properties :
104+ key :
105+ description : Key is the label key that
106+ the selector applies to.
107+ type : string
108+ operator :
109+ description : |-
110+ Operator represents a key's relationship to a set of values.
111+ Valid operators are In, NotIn, Exists and DoesNotExist.
112+ type : string
113+ values :
114+ description : |-
115+ Values is an array of string values. If the operator is In or NotIn,
116+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
117+ the values array must be empty.
118+ items :
119+ type : string
120+ type : array
121+ required :
122+ - key
123+ - operator
124+ type : object
125+ type : object
126+ type : array
127+ type : object
128+ type : array
129+ required :
130+ - clusterSelectorTerms
131+ type : object
132+ requiredDuringSchedulingRequiredDuringExecution :
133+ description : |-
134+ RequiredDuringSchedulingRequiredDuringExecution defines cluster selector terms that must be met for a cluster to be selected.
135+ Workloads will be removed from clusters that no longer meet these requirements.
136+ properties :
137+ clusterSelectorTerms :
138+ description : |-
139+ A list of cluster selector terms. The terms are ORed (the workload can be
140+ scheduled onto any cluster that fulfills the requirements of at least one
141+ term).
142+ items :
143+ description : A cluster selector term defines a set of
144+ requirements for a cluster to be selected.
145+ properties :
146+ matchExpressions :
147+ description : |-
148+ A list of selector requirements. The requirements are ANDed (all
149+ requirements must be met).
150+ items :
151+ description : |-
152+ A cluster selector expression which contains a selector for either a label or a field.
153+ If both are present, they are ANDed (i.e. both must be met).
154+ properties :
155+ fieldSelector :
156+ description : A field selector requirement.
157+ properties :
158+ field :
159+ description : |-
160+ Field is the ClusterProfile field that the selector applies to. Supported
161+ fields are metadata.name and metadata.namespace.
162+ type : string
163+ operator :
164+ description : |-
165+ Operator represents a field's relationship to a set of values.
166+ Valid operators are In, NotIn, Exists and DoesNotExist.
167+ type : string
168+ values :
169+ description : |-
170+ Values is an array of string values. If the operator is In or NotIn,
171+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
172+ the values array must be empty.
173+ items :
174+ type : string
175+ type : array
176+ required :
177+ - field
178+ - operator
179+ type : object
180+ labelSelector :
181+ description : A label selector requirement.
182+ properties :
183+ key :
184+ description : Key is the label key that
185+ the selector applies to.
186+ type : string
187+ operator :
188+ description : |-
189+ Operator represents a key's relationship to a set of values.
190+ Valid operators are In, NotIn, Exists and DoesNotExist.
191+ type : string
192+ values :
193+ description : |-
194+ Values is an array of string values. If the operator is In or NotIn,
195+ the values array must be non-empty. If the operator is Exists or DoesNotExist,
196+ the values array must be empty.
197+ items :
198+ type : string
199+ type : array
200+ required :
201+ - key
202+ - operator
203+ type : object
204+ type : object
205+ type : array
206+ type : object
207+ type : array
208+ required :
209+ - clusterSelectorTerms
210+ type : object
211+ type : object
212+ x-kubernetes-validations :
213+ - message : Only one of requiredDuringSchedulingRequiredDuringExecution
214+ or requiredDuringSchedulingIgnoredDuringExecution may be set
215+ rule : (has(self.requiredDuringSchedulingRequiredDuringExecution)
216+ && !has(self.requiredDuringSchedulingIgnoredDuringExecution))
217+ || (!has(self.requiredDuringSchedulingRequiredDuringExecution)
218+ && has(self.requiredDuringSchedulingIgnoredDuringExecution))
219+ type : object
80220 scaling :
81221 description : |-
82222 Scaling defines the scaling configuration of the placement. If not specified,
@@ -128,8 +268,6 @@ spec:
128268 - minClustersBelowCapacityCeiling
129269 type : object
130270 type : object
131- required :
132- - clusterSelectorRules
133271 type : object
134272 status :
135273 description : MultiKubernetesClusterPlacementStatus defines the observed
@@ -141,7 +279,7 @@ spec:
141279 items :
142280 description : |-
143281 PlacementCluster describes a cluster on which the workload should be placed.
144- This is consumed by workload delilvery systems.
282+ This is consumed by workload delivery systems.
145283 properties :
146284 atCapacityCeiling :
147285 description : ' Whether the cluster is currently at its capacity
@@ -155,16 +293,15 @@ spec:
155293 TODO: remove this'
156294 type : integer
157295 desiredMaxReplicas :
158- description : Desired maximum replicas for a draining cluster.
159- The drainer plugin should reconcile the HPA's max replicas
160- field to this value.
296+ description : |-
297+ Desired maximum replicas for a draining cluster. The drainer plugin should
298+ reconcile the HPA's max replicas field to this value.
161299 type : integer
162300 lastReplicaCountDecrease :
163301 description : The last time DesiredMaxReplicas was decreased.
164302 format : date-time
165303 type : string
166304 required :
167- - currentReplicaCount
168305 - desiredMaxReplicas
169306 - lastReplicaCountDecrease
170307 type : object
0 commit comments