support for partitioning and update rook version to 1.6.0
[infra/stack/kubernetes.git] / apps / ceph / kubespray / playbooks / roles / install / templates / crds.yaml.j2
1 # ============LICENSE_START=======================================================
2 #  Copyright (C) 2021 The Nordix Foundation. All rights reserved.
3 # ================================================================================
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 #
16 # SPDX-License-Identifier: Apache-2.0
17 # ============LICENSE_END=========================================================
19 ##############################################################################
20 # Create the CRDs that are necessary before creating your Rook cluster.
21 # These resources *must* be created before the cluster.yaml or their variants.
22 ##############################################################################
23 ---
24 apiVersion:
25 kind: CustomResourceDefinition
26 metadata:
27   annotations:
28 v0.5.1-0.20210420220833-f284e2e8098c
29   creationTimestamp: null
30   name:
31 spec:
32   group:
33   names:
34     kind: CephBlockPool
35     listKind: CephBlockPoolList
36     plural: cephblockpools
37     singular: cephblockpool
38   scope: Namespaced
39   versions:
40     - name: v1
41       schema:
42         openAPIV3Schema:
43           description: CephBlockPool represents a Ceph Storage Pool
44           properties:
45             apiVersion:
46               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:'
47               type: string
48             kind:
49               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:'
50               type: string
51             metadata:
52               type: object
53             spec:
54               description: PoolSpec represents the spec of ceph pool
55               properties:
56                 compressionMode:
57                   default: none
58                   description: 'The inline compression mode in Bluestore OSD to set to (options are: none, passive, aggressive, force)'
59                   enum:
60                     - none
61                     - passive
62                     - aggressive
63                     - force
64                     - ""
65                   nullable: true
66                   type: string
67                 crushRoot:
68                   description: The root of the crush hierarchy utilized by the pool
69                   nullable: true
70                   type: string
71                 deviceClass:
72                   description: The device class the OSD should set to for use in the pool
73                   nullable: true
74                   type: string
75                 enableRBDStats:
76                   description: EnableRBDStats is used to enable gathering of statistics for all RBD images in the pool
77                   type: boolean
78                 erasureCoded:
79                   description: The erasure code settings
80                   properties:
81                     algorithm:
82                       description: The algorithm for erasure coding
83                       type: string
84                     codingChunks:
85                       description: Number of coding chunks per object in an erasure coded storage pool (required for erasure-coded pool type)
86                       maximum: 9
87                       minimum: 0
88                       type: integer
89                     dataChunks:
90                       description: Number of data chunks per object in an erasure coded storage pool (required for erasure-coded pool type)
91                       maximum: 9
92                       minimum: 0
93                       type: integer
94                   required:
95                     - codingChunks
96                     - dataChunks
97                   type: object
98                 failureDomain:
99                   description: 'The failure domain: osd/host/(region or zone if available) - technically also any type in the crush map'
100                   type: string
101                 mirroring:
102                   description: The mirroring settings
103                   properties:
104                     enabled:
105                       description: Enabled whether this pool is mirrored or not
106                       type: boolean
107                     mode:
108                       description: 'Mode is the mirroring mode: either pool or image'
109                       type: string
110                     snapshotSchedules:
111                       description: SnapshotSchedules is the scheduling of snapshot for mirrored images/pools
112                       items:
113                         description: SnapshotScheduleSpec represents the snapshot scheduling settings of a mirrored pool
114                         properties:
115                           interval:
116                             description: Interval represent the periodicity of the snapshot.
117                             type: string
118                           startTime:
119                             description: StartTime indicates when to start the snapshot
120                             type: string
121                         type: object
122                       type: array
123                   type: object
124                 parameters:
125                   additionalProperties:
126                     type: string
127                   description: Parameters is a list of properties to enable on a given pool
128                   nullable: true
129                   type: object
130                   x-kubernetes-preserve-unknown-fields: true
131                 quotas:
132                   description: The quota settings
133                   nullable: true
134                   properties:
135                     maxBytes:
136                       description: MaxBytes represents the quota in bytes Deprecated in favor of MaxSize
137                       format: int64
138                       type: integer
139                     maxObjects:
140                       description: MaxObjects represents the quota in objects
141                       format: int64
142                       type: integer
143                     maxSize:
144                       description: MaxSize represents the quota in bytes as a string
145                       pattern: ^[0-9]+[\.]?[0-9]*([KMGTPE]i|[kMGTPE])?$
146                       type: string
147                   type: object
148                 replicated:
149                   description: The replication settings
150                   properties:
151                     replicasPerFailureDomain:
152                       description: ReplicasPerFailureDomain the number of replica in the specified failure domain
153                       minimum: 1
154                       type: integer
155                     requireSafeReplicaSize:
156                       description: RequireSafeReplicaSize if false allows you to set replica 1
157                       type: boolean
158                     size:
159                       description: Size - Number of copies per object in a replicated storage pool, including the object itself (required for replicated pool type)
160                       minimum: 0
161                       type: integer
162                     subFailureDomain:
163                       description: SubFailureDomain the name of the sub-failure domain
164                       type: string
165                     targetSizeRatio:
166                       description: TargetSizeRatio gives a hint (%) to Ceph in terms of expected consumption of the total cluster capacity
167                       type: number
168                   required:
169                     - size
170                   type: object
171                 statusCheck:
172                   description: The mirroring statusCheck
173                   properties:
174                     mirror:
175                       description: HealthCheckSpec represents the health check of an object store bucket
176                       nullable: true
177                       properties:
178                         disabled:
179                           type: boolean
180                         interval:
181                           description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
182                           type: string
183                         timeout:
184                           type: string
185                       type: object
186                   type: object
187                   x-kubernetes-preserve-unknown-fields: true
188               type: object
189             status:
190               description: CephBlockPoolStatus represents the mirroring status of Ceph Storage Pool
191               properties:
192                 info:
193                   additionalProperties:
194                     type: string
195                   description: Use only info and put mirroringStatus in it?
196                   nullable: true
197                   type: object
198                 mirroringInfo:
199                   description: MirroringInfoSpec is the status of the pool mirroring
200                   properties:
201                     details:
202                       type: string
203                     lastChanged:
204                       type: string
205                     lastChecked:
206                       type: string
207                     mode:
208                       description: Mode is the mirroring mode
209                       type: string
210                     peers:
211                       description: Peers are the list of peer sites connected to that cluster
212                       items:
213                         description: PeersSpec contains peer details
214                         properties:
215                           client_name:
216                             description: ClientName is the CephX user used to connect to the peer
217                             type: string
218                           direction:
219                             description: Direction is the peer mirroring direction
220                             type: string
221                           mirror_uuid:
222                             description: MirrorUUID is the mirror UUID
223                             type: string
224                           site_name:
225                             description: SiteName is the current site name
226                             type: string
227                           uuid:
228                             description: UUID is the peer UUID
229                             type: string
230                         type: object
231                       type: array
232                     site_name:
233                       description: SiteName is the current site name
234                       type: string
235                   type: object
236                 mirroringStatus:
237                   description: MirroringStatusSpec is the status of the pool mirroring
238                   properties:
239                     details:
240                       description: Details contains potential status errors
241                       type: string
242                     lastChanged:
243                       description: LastChanged is the last time time the status last changed
244                       type: string
245                     lastChecked:
246                       description: LastChecked is the last time time the status was checked
247                       type: string
248                     summary:
249                       description: Summary is the mirroring status summary
250                       properties:
251                         daemon_health:
252                           description: DaemonHealth is the health of the mirroring daemon
253                           type: string
254                         health:
255                           description: Health is the mirroring health
256                           type: string
257                         image_health:
258                           description: ImageHealth is the health of the mirrored image
259                           type: string
260                         states:
261                           description: States is the various state for all mirrored images
262                           nullable: true
263                           properties:
264                             error:
265                               description: Error is when the mirroring state is errored
266                               type: integer
267                             replaying:
268                               description: Replaying is when the replay of the mirroring journal is on-going
269                               type: integer
270                             starting_replay:
271                               description: StartingReplay is when the replay of the mirroring journal starts
272                               type: integer
273                             stopped:
274                               description: Stopped is when the mirroring state is stopped
275                               type: integer
276                             stopping_replay:
277                               description: StopReplaying is when the replay of the mirroring journal stops
278                               type: integer
279                             syncing:
280                               description: Syncing is when the image is syncing
281                               type: integer
282                             unknown:
283                               description: Unknown is when the mirroring state is unknown
284                               type: integer
285                           type: object
286                       type: object
287                   type: object
288                 phase:
289                   description: ConditionType represent a resource's status
290                   type: string
291                 snapshotScheduleStatus:
292                   description: SnapshotScheduleStatusSpec is the status of the snapshot schedule
293                   properties:
294                     details:
295                       description: Details contains potential status errors
296                       type: string
297                     lastChanged:
298                       description: LastChanged is the last time time the status last changed
299                       type: string
300                     lastChecked:
301                       description: LastChecked is the last time time the status was checked
302                       type: string
303                     snapshotSchedules:
304                       description: SnapshotSchedules is the list of snapshots scheduled
305                       items:
306                         description: SnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool
307                         properties:
308                           image:
309                             description: Image is the mirrored image
310                             type: string
311                           items:
312                             description: Items is the list schedules times for a given snapshot
313                             items:
314                               description: SnapshotSchedule is a schedule
315                               properties:
316                                 interval:
317                                   description: Interval is the interval in which snapshots will be taken
318                                   type: string
319                                 start_time:
320                                   description: StartTime is the snapshot starting time
321                                   type: string
322                               type: object
323                             type: array
324                           namespace:
325                             description: Namespace is the RADOS namespace the image is part of
326                             type: string
327                           pool:
328                             description: Pool is the pool name
329                             type: string
330                         type: object
331                       nullable: true
332                       type: array
333                   type: object
334               type: object
335               x-kubernetes-preserve-unknown-fields: true
336           required:
337             - metadata
338             - spec
339           type: object
340       served: true
341       storage: true
342       subresources:
343         status: {}
344 status:
345   acceptedNames:
346     kind: ""
347     plural: ""
348   conditions: []
349   storedVersions: []
350 ---
351 apiVersion:
352 kind: CustomResourceDefinition
353 metadata:
354   annotations:
355 v0.5.1-0.20210420220833-f284e2e8098c
356   creationTimestamp: null
357   name:
358 spec:
359   group:
360   names:
361     kind: CephClient
362     listKind: CephClientList
363     plural: cephclients
364     singular: cephclient
365   scope: Namespaced
366   versions:
367     - name: v1
368       schema:
369         openAPIV3Schema:
370           description: CephClient represents a Ceph Client
371           properties:
372             apiVersion:
373               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:'
374               type: string
375             kind:
376               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:'
377               type: string
378             metadata:
379               type: object
380             spec:
381               description: Spec represents the specification of a Ceph Client
382               properties:
383                 caps:
384                   additionalProperties:
385                     type: string
386                   type: object
387                   x-kubernetes-preserve-unknown-fields: true
388                 name:
389                   type: string
390               required:
391                 - caps
392               type: object
393             status:
394               description: Status represents the status of a Ceph Client
395               properties:
396                 info:
397                   additionalProperties:
398                     type: string
399                   nullable: true
400                   type: object
401                 phase:
402                   description: ConditionType represent a resource's status
403                   type: string
404               type: object
405               x-kubernetes-preserve-unknown-fields: true
406           required:
407             - metadata
408             - spec
409           type: object
410       served: true
411       storage: true
412       subresources:
413         status: {}
414 status:
415   acceptedNames:
416     kind: ""
417     plural: ""
418   conditions: []
419   storedVersions: []
420 ---
421 apiVersion:
422 kind: CustomResourceDefinition
423 metadata:
424   annotations:
425 v0.5.1-0.20210420220833-f284e2e8098c
426   creationTimestamp: null
427   name:
428 spec:
429   group:
430   names:
431     kind: CephCluster
432     listKind: CephClusterList
433     plural: cephclusters
434     singular: cephcluster
435   scope: Namespaced
436   versions:
437     - additionalPrinterColumns:
438         - description: Directory used on the K8s nodes
439           jsonPath: .spec.dataDirHostPath
440           name: DataDirHostPath
441           type: string
442         - description: Number of MONs
443           jsonPath: .spec.mon.count
444           name: MonCount
445           type: string
446         - jsonPath: .metadata.creationTimestamp
447           name: Age
448           type: date
449         - description: Phase
450           jsonPath: .status.phase
451           name: Phase
452           type: string
453         - description: Message
454           jsonPath: .status.message
455           name: Message
456           type: string
457         - description: Ceph Health
458           jsonPath:
459           name: Health
460           type: string
461         - jsonPath: .spec.external.enable
462           name: External
463           type: boolean
464       name: v1
465       schema:
466         openAPIV3Schema:
467           description: CephCluster is a Ceph storage cluster
468           properties:
469             apiVersion:
470               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:'
471               type: string
472             kind:
473               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:'
474               type: string
475             metadata:
476               type: object
477             spec:
478               description: ClusterSpec represents the specification of Ceph Cluster
479               properties:
480                 annotations:
481                   additionalProperties:
482                     additionalProperties:
483                       type: string
484                     description: Annotations are annotations
485                     type: object
486                   description: The annotations-related configuration to add/set on each Pod related object.
487                   nullable: true
488                   type: object
489                   x-kubernetes-preserve-unknown-fields: true
490                 cephVersion:
491                   description: The version information that instructs Rook to orchestrate a particular version of Ceph.
492                   nullable: true
493                   properties:
494                     allowUnsupported:
495                       description: Whether to allow unsupported versions (do not set to true in production)
496                       type: boolean
497                     image:
498                       description: Image is the container image used to launch the ceph daemons, such as ceph/ceph:v16.2.4
499                       type: string
500                   type: object
501                 cleanupPolicy:
502                   description: Indicates user intent when deleting a cluster; blocks orchestration and should not be set if cluster deletion is not imminent.
503                   nullable: true
504                   properties:
505                     allowUninstallWithVolumes:
506                       description: AllowUninstallWithVolumes defines whether we can proceed with the uninstall if they are RBD images still present
507                       type: boolean
508                     confirmation:
509                       description: Confirmation represents the cleanup confirmation
510                       nullable: true
511                       pattern: ^$|^yes-really-destroy-data$
512                       type: string
513                     sanitizeDisks:
514                       description: SanitizeDisks represents way we sanitize disks
515                       nullable: true
516                       properties:
517                         dataSource:
518                           description: DataSource is the data source to use to sanitize the disk with
519                           enum:
520                             - zero
521                             - random
522                           type: string
523                         iteration:
524                           description: Iteration is the number of pass to apply the sanitizing
525                           format: int32
526                           type: integer
527                         method:
528                           description: Method is the method we use to sanitize disks
529                           enum:
530                             - complete
531                             - quick
532                           type: string
533                       type: object
534                   type: object
535                 continueUpgradeAfterChecksEvenIfNotHealthy:
536                   description: ContinueUpgradeAfterChecksEvenIfNotHealthy defines if an upgrade should continue even if PGs are not clean
537                   type: boolean
538                 crashCollector:
539                   description: A spec for the crash controller
540                   nullable: true
541                   properties:
542                     daysToRetain:
543                       description: DaysToRetain represents the number of days to retain crash until they get pruned
544                       type: integer
545                     disable:
546                       description: Disable determines whether we should enable the crash collector
547                       type: boolean
548                   type: object
549                 dashboard:
550                   description: Dashboard settings
551                   nullable: true
552                   properties:
553                     enabled:
554                       description: Enabled determines whether to enable the dashboard
555                       type: boolean
556                     port:
557                       description: Port is the dashboard webserver port
558                       maximum: 65535
559                       minimum: 0
560                       type: integer
561                     ssl:
562                       description: SSL determines whether SSL should be used
563                       type: boolean
564                     urlPrefix:
565                       description: URLPrefix is a prefix for all URLs to use the dashboard with a reverse proxy
566                       type: string
567                   type: object
568                 dataDirHostPath:
569                   description: The path on the host where config and data can be persisted
570                   pattern: ^/(\S+)
571                   type: string
572                 disruptionManagement:
573                   description: A spec for configuring disruption management.
574                   nullable: true
575                   properties:
576                     machineDisruptionBudgetNamespace:
577                       description: Namespace to look for MDBs by the machineDisruptionBudgetController
578                       type: string
579                     manageMachineDisruptionBudgets:
580                       description: This enables management of machinedisruptionbudgets
581                       type: boolean
582                     managePodBudgets:
583                       description: This enables management of poddisruptionbudgets
584                       type: boolean
585                     osdMaintenanceTimeout:
586                       description: OSDMaintenanceTimeout sets how many additional minutes the DOWN/OUT interval is for drained failure domains it only works if managePodBudgets is true. the default is 30 minutes
587                       format: int64
588                       type: integer
589                     pgHealthCheckTimeout:
590                       description: PGHealthCheckTimeout is the time (in minutes) that the operator will wait for the placement groups to become healthy (active+clean) after a drain was completed and OSDs came back up. Rook will continue with the next drain if the timeout exceeds. It only works if managePodBudgets is true. No values or 0 means that the operator will wait until the placement groups are healthy before unblocking the next drain.
591                       format: int64
592                       type: integer
593                   type: object
594                 external:
595                   description: Whether the Ceph Cluster is running external to this Kubernetes cluster mon, mgr, osd, mds, and discover daemons will not be created for external clusters.
596                   nullable: true
597                   properties:
598                     enable:
599                       description: Enable determines whether external mode is enabled or not
600                       type: boolean
601                   type: object
602                   x-kubernetes-preserve-unknown-fields: true
603                 healthCheck:
604                   description: Internal daemon healthchecks and liveness probe
605                   nullable: true
606                   properties:
607                     daemonHealth:
608                       description: DaemonHealth is the health check for a given daemon
609                       nullable: true
610                       properties:
611                         mon:
612                           description: Monitor represents the health check settings for the Ceph monitor
613                           nullable: true
614                           properties:
615                             disabled:
616                               type: boolean
617                             interval:
618                               description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
619                               type: string
620                             timeout:
621                               type: string
622                           type: object
623                         osd:
624                           description: ObjectStorageDaemon represents the health check settings for the Ceph OSDs
625                           nullable: true
626                           properties:
627                             disabled:
628                               type: boolean
629                             interval:
630                               description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
631                               type: string
632                             timeout:
633                               type: string
634                           type: object
635                         status:
636                           description: Status represents the health check settings for the Ceph health
637                           nullable: true
638                           properties:
639                             disabled:
640                               type: boolean
641                             interval:
642                               description: Interval is the internal in second or minute for the health check to run like 60s for 60 seconds
643                               type: string
644                             timeout:
645                               type: string
646                           type: object
647                       type: object
648                     livenessProbe:
649                       additionalProperties:
650                         description: ProbeSpec is a wrapper around Probe so it can be enabled or disabled for a Ceph daemon
651                         properties:
652                           disabled:
653                             description: Disabled determines whether probe is disable or not
654                             type: boolean
655                           probe:
656                             description: Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.
657                             properties:
658                               exec:
659                                 description: One and only one of the following should be specified. Exec specifies the action to take.
660                                 properties:
661                                   command:
662                                     description: Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.
663                                     items:
664                                       type: string
665                                     type: array
666                                 type: object
667                               failureThreshold:
668                                 description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.
669                                 format: int32
670                                 type: integer
671                               httpGet:
672                                 description: HTTPGet specifies the http request to perform.
673                                 properties:
674                                   host:
675                                     description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead.
676                                     type: string
677                                   httpHeaders:
678                                     description: Custom headers to set in the request. HTTP allows repeated headers.
679                                     items:
680                                       description: HTTPHeader describes a custom header to be used in HTTP probes
681                                       properties:
682                                         name:
683                                           description: The header field name
684                                           type: string
685                                         value:
686                                           description: The header field value
687                                           type: string
688                                       required:
689                                         - name
690                                         - value
691                                       type: object
692                                     type: array
693                                   path:
694                                     description: Path to access on the HTTP server.
695                                     type: string
696                                   port:
697                                     anyOf:
698                                       - type: integer
699                                       - type: string
700                                     description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
701                                     x-kubernetes-int-or-string: true
702                                   scheme:
703                                     description: Scheme to use for connecting to the host. Defaults to HTTP.
704                                     type: string
705                                 required:
706                                   - port
707                                 type: object
708                               initialDelaySeconds:
709                                 description: 'Number of seconds after the container has started before liveness probes are initiated. More info:'
710                                 format: int32
711                                 type: integer
712                               periodSeconds:
713                                 description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1.
714                                 format: int32
715                                 type: integer
716                               successThreshold:
717                                 description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1.
718                                 format: int32
719                                 type: integer
720                               tcpSocket:
721                                 description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook'
722                                 properties:
723                                   host:
724                                     description: 'Optional: Host name to connect to, defaults to the pod IP.'
725                                     type: string
726                                   port:
727                                     anyOf:
728                                       - type: integer
729                                       - type: string
730                                     description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
731                                     x-kubernetes-int-or-string: true
732                                 required:
733                                   - port
734                                 type: object
735                               terminationGracePeriodSeconds:
736                                 description: Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is an alpha field and requires enabling ProbeTerminationGracePeriod feature gate.
737                                 format: int64
738                                 type: integer
739                               timeoutSeconds:
740                                 description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info:'
741                                 format: int32
742                                 type: integer
743                             type: object
744                         type: object
745                       description: LivenessProbe allows to change the livenessprobe configuration for a given daemon
746                       type: object
747                   type: object
748                 labels:
749                   additionalProperties:
750                     additionalProperties:
751                       type: string
752                     description: Labels are label for a given daemons
753                     type: object
754                   description: The labels-related configuration to add/set on each Pod related object.
755                   nullable: true
756                   type: object
757                   x-kubernetes-preserve-unknown-fields: true
758                 logCollector:
759                   description: Logging represents loggings settings
760                   nullable: true
761                   properties:
762                     enabled:
763                       description: Enabled represents whether the log collector is enabled
764                       type: boolean
765                     periodicity:
766                       description: Periodicity is the periodicity of the log rotation
767                       type: string
768                   type: object
769                 mgr:
770                   description: A spec for mgr related options
771                   nullable: true
772                   properties:
773                     allowMultiplePerNode:
774                       description: AllowMultiplePerNode allows to run multiple managers on the same node (not recommended)
775                       type: boolean
776                     count:
777                       description: Count is the number of manager to run
778                       maximum: 2
779                       minimum: 0
780                       type: integer
781                     modules:
782                       description: Modules is the list of ceph manager modules to enable/disable
783                       items:
784                         description: Module represents mgr modules that the user wants to enable or disable
785                         properties:
786                           enabled:
787                             description: Enabled determines whether a module should be enabled or not
788                             type: boolean
789                           name:
790                             description: Name is the name of the ceph manager module
791                             type: string
792                         type: object
793                       nullable: true
794                       type: array
795                   type: object
796                 mon:
797                   description: A spec for mon related options
798                   nullable: true
799                   properties:
800                     allowMultiplePerNode:
801                       description: AllowMultiplePerNode determines if we can run multiple monitors on the same node (not recommended)
802                       type: boolean
803                     count:
804                       description: Count is the number of Ceph monitors
805                       minimum: 0
806                       type: integer
807                     stretchCluster:
808                       description: StretchCluster is the stretch cluster specification
809                       properties:
810                         failureDomainLabel:
811                           description: 'FailureDomainLabel the failure domain name (e,g: zone)'
812                           type: string
813                         subFailureDomain:
814                           description: SubFailureDomain is the failure domain within a zone
815                           type: string
816                         zones:
817                           description: Zones is the list of zones
818                           items:
819                             description: StretchClusterZoneSpec represents the specification of a stretched zone in a Ceph Cluster
820                             properties:
821                               arbiter:
822                                 description: Arbiter determines if the zone contains the arbiter
823                                 type: boolean
824                               name:
825                                 description: Name is the name of the zone
826                                 type: string
827                               volumeClaimTemplate:
828                                 description: VolumeClaimTemplate is the PVC template
829                                 properties:
830                                   apiVersion:
831                                     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:'
832                                     type: string
833                                   kind:
834                                     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:'
835                                     type: string
836                                   metadata:
837                                     description: 'Standard object''s metadata. More info:'
838                                     properties:
839                                       annotations:
840                                         additionalProperties:
841                                           type: string
842                                         type: object
843                                       finalizers:
844                                         items:
845                                           type: string
846                                         type: array
847                                       labels:
848                                         additionalProperties:
849                                           type: string
850                                         type: object
851                                       name:
852                                         type: string
853                                       namespace:
854                                         type: string
855                                     type: object
856                                   spec:
857                                     description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info:'
858                                     properties:
859                                       accessModes:
860                                         description: 'AccessModes contains the desired access modes the volume should have. More info:'
861                                         items:
862                                           type: string
863                                         type: array
864                                       dataSource:
865                                         description: 'This field can be used to specify either: * An existing VolumeSnapshot object ( * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.'
866                                         properties:
867                                           apiGroup:
868                                             description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
869                                             type: string
870                                           kind:
871                                             description: Kind is the type of resource being referenced
872                                             type: string
873                                           name:
874                                             description: Name is the name of resource being referenced
875                                             type: string
876                                         required:
877                                           - kind
878                                           - name
879                                         type: object
880                                       resources:
881                                         description: 'Resources represents the minimum resources the volume should have. More info:'
882                                         properties:
883                                           limits:
884                                             additionalProperties:
885                                               anyOf:
886                                                 - type: integer
887                                                 - type: string
888                                               pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
889                                               x-kubernetes-int-or-string: true
890                                             description: 'Limits describes the maximum amount of compute resources allowed. More info:'
891                                             type: object
892                                           requests:
893                                             additionalProperties:
894                                               anyOf:
895                                                 - type: integer
896                                                 - type: string
897                                               pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
898                                               x-kubernetes-int-or-string: true
899                                             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. More info:'
900                                             type: object
901                                         type: object
902                                       selector:
903                                         description: A label query over volumes to consider for binding.
904                                         properties:
905                                           matchExpressions:
906                                             description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
907                                             items:
908                                               description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
909                                               properties:
910                                                 key:
911                                                   description: key is the label key that the selector applies to.
912                                                   type: string
913                                                 operator:
914                                                   description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
915                                                   type: string
916                                                 values:
917                                                   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.
918                                                   items:
919                                                     type: string
920                                                   type: array
921                                               required:
922                                                 - key
923                                                 - operator
924                                               type: object
925                                             type: array
926                                           matchLabels:
927                                             additionalProperties:
928                                               type: string
929                                             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.
930                                             type: object
931                                         type: object
932                                       storageClassName:
933                                         description: 'Name of the StorageClass required by the claim. More info:'
934                                         type: string
935                                       volumeMode:
936                                         description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
937                                         type: string
938                                       volumeName:
939                                         description: VolumeName is the binding reference to the PersistentVolume backing this claim.
940                                         type: string
941                                     type: object
942                                   status:
943                                     description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info:'
944                                     properties:
945                                       accessModes:
946                                         description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info:'
947                                         items:
948                                           type: string
949                                         type: array
950                                       capacity:
951                                         additionalProperties:
952                                           anyOf:
953                                             - type: integer
954                                             - type: string
955                                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
956                                           x-kubernetes-int-or-string: true
957                                         description: Represents the actual resources of the underlying volume.
958                                         type: object
959                                       conditions:
960                                         description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.
961                                         items:
962                                           description: PersistentVolumeClaimCondition contails details about state of pvc
963                                           properties:
964                                             lastProbeTime:
965                                               description: Last time we probed the condition.
966                                               format: date-time
967                                               type: string
968                                             lastTransitionTime:
969                                               description: Last time the condition transitioned from one status to another.
970                                               format: date-time
971                                               type: string
972                                             message:
973                                               description: Human-readable message indicating details about last transition.
974                                               type: string
975                                             reason:
976                                               description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.
977                                               type: string
978                                             status:
979                                               type: string
980                                             type:
981                                               description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type
982                                               type: string
983                                           required:
984                                             - status
985                                             - type
986                                           type: object
987                                         type: array
988                                       phase:
989                                         description: Phase represents the current phase of PersistentVolumeClaim.
990                                         type: string
991                                     type: object
992                                 type: object
993                                 x-kubernetes-preserve-unknown-fields: true
994                             type: object
995                           nullable: true
996                           type: array
997                       type: object
998                     volumeClaimTemplate:
999                       description: VolumeClaimTemplate is the PVC definition
1000                       properties:
1001                         apiVersion:
1002                           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:'
1003                           type: string
1004                         kind:
1005                           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:'
1006                           type: string
1007                         metadata:
1008                           description: 'Standard object''s metadata. More info:'
1009                           properties:
1010                             annotations:
1011                               additionalProperties:
1012                                 type: string
1013                               type: object
1014                             finalizers:
1015                               items:
1016                                 type: string
1017                               type: array
1018                             labels:
1019                               additionalProperties:
1020                                 type: string
1021                               type: object
1022                             name:
1023                               type: string
1024                             namespace:
1025                               type: string
1026                           type: object
1027                         spec:
1028                           description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info:'
1029                           properties:
1030                             accessModes:
1031                               description: 'AccessModes contains the desired access modes the volume should have. More info:'
1032                               items:
1033                                 type: string
1034                               type: array
1035                             dataSource:
1036                               description: 'This field can be used to specify either: * An existing VolumeSnapshot object ( * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.'
1037                               properties:
1038                                 apiGroup:
1039                                   description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
1040                                   type: string
1041                                 kind:
1042                                   description: Kind is the type of resource being referenced
1043                                   type: string
1044                                 name:
1045                                   description: Name is the name of resource being referenced
1046                                   type: string
1047                               required:
1048                                 - kind
1049                                 - name
1050                               type: object
1051                             resources:
1052                               description: 'Resources represents the minimum resources the volume should have. More info:'
1053                               properties:
1054                                 limits:
1055                                   additionalProperties:
1056                                     anyOf:
1057                                       - type: integer
1058                                       - type: string
1059                                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1060                                     x-kubernetes-int-or-string: true
1061                                   description: 'Limits describes the maximum amount of compute resources allowed. More info:'
1062                                   type: object
1063                                 requests:
1064                                   additionalProperties:
1065                                     anyOf:
1066                                       - type: integer
1067                                       - type: string
1068                                     pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1069                                     x-kubernetes-int-or-string: true
1070                                   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. More info:'
1071                                   type: object
1072                               type: object
1073                             selector:
1074                               description: A label query over volumes to consider for binding.
1075                               properties:
1076                                 matchExpressions:
1077                                   description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1078                                   items:
1079                                     description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1080                                     properties:
1081                                       key:
1082                                         description: key is the label key that the selector applies to.
1083                                         type: string
1084                                       operator:
1085                                         description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1086                                         type: string
1087                                       values:
1088                                         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.
1089                                         items:
1090                                           type: string
1091                                         type: array
1092                                     required:
1093                                       - key
1094                                       - operator
1095                                     type: object
1096                                   type: array
1097                                 matchLabels:
1098                                   additionalProperties:
1099                                     type: string
1100                                   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.
1101                                   type: object
1102                               type: object
1103                             storageClassName:
1104                               description: 'Name of the StorageClass required by the claim. More info:'
1105                               type: string
1106                             volumeMode:
1107                               description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec.
1108                               type: string
1109                             volumeName:
1110                               description: VolumeName is the binding reference to the PersistentVolume backing this claim.
1111                               type: string
1112                           type: object
1113                         status:
1114                           description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info:'
1115                           properties:
1116                             accessModes:
1117                               description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info:'
1118                               items:
1119                                 type: string
1120                               type: array
1121                             capacity:
1122                               additionalProperties:
1123                                 anyOf:
1124                                   - type: integer
1125                                   - type: string
1126                                 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1127                                 x-kubernetes-int-or-string: true
1128                               description: Represents the actual resources of the underlying volume.
1129                               type: object
1130                             conditions:
1131                               description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'.
1132                               items:
1133                                 description: PersistentVolumeClaimCondition contails details about state of pvc
1134                                 properties:
1135                                   lastProbeTime:
1136                                     description: Last time we probed the condition.
1137                                     format: date-time
1138                                     type: string
1139                                   lastTransitionTime:
1140                                     description: Last time the condition transitioned from one status to another.
1141                                     format: date-time
1142                                     type: string
1143                                   message:
1144                                     description: Human-readable message indicating details about last transition.
1145                                     type: string
1146                                   reason:
1147                                     description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized.
1148                                     type: string
1149                                   status:
1150                                     type: string
1151                                   type:
1152                                     description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type
1153                                     type: string
1154                                 required:
1155                                   - status
1156                                   - type
1157                                 type: object
1158                               type: array
1159                             phase:
1160                               description: Phase represents the current phase of PersistentVolumeClaim.
1161                               type: string
1162                           type: object
1163                       type: object
1164                       x-kubernetes-preserve-unknown-fields: true
1165                   type: object
1166                 monitoring:
1167                   description: Prometheus based Monitoring settings
1168                   nullable: true
1169                   properties:
1170                     enabled:
1171                       description: Enabled determines whether to create the prometheus rules for the ceph cluster. If true, the prometheus types must exist or the creation will fail.
1172                       type: boolean
1173                     externalMgrEndpoints:
1174                       description: ExternalMgrEndpoints points to an existing Ceph prometheus exporter endpoint
1175                       items:
1176                         description: EndpointAddress is a tuple that describes single IP address.
1177                         properties:
1178                           hostname:
1179                             description: The Hostname of this endpoint
1180                             type: string
1181                           ip:
1182                             description: 'The IP of this endpoint. May not be loopback (, link-local (, or link-local multicast (( IPv6 is also accepted but not fully supported on all platforms. Also, certain kubernetes components, like kube-proxy, are not IPv6 ready. TODO: This should allow hostname or IP, See #4447.'
1183                             type: string
1184                           nodeName:
1185                             description: 'Optional: Node hosting this endpoint. This can be used to determine endpoints local to a node.'
1186                             type: string
1187                           targetRef:
1188                             description: Reference to object providing the endpoint.
1189                             properties:
1190                               apiVersion:
1191                                 description: API version of the referent.
1192                                 type: string
1193                               fieldPath:
1194                                 description: 'If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.'
1195                                 type: string
1196                               kind:
1197                                 description: 'Kind of the referent. More info:'
1198                                 type: string
1199                               name:
1200                                 description: 'Name of the referent. More info:'
1201                                 type: string
1202                               namespace:
1203                                 description: 'Namespace of the referent. More info:'
1204                                 type: string
1205                               resourceVersion:
1206                                 description: 'Specific resourceVersion to which this reference is made, if any. More info:'
1207                                 type: string
1208                               uid:
1209                                 description: 'UID of the referent. More info:'
1210                                 type: string
1211                             type: object
1212                         required:
1213                           - ip
1214                         type: object
1215                       nullable: true
1216                       type: array
1217                     externalMgrPrometheusPort:
1218                       description: ExternalMgrPrometheusPort Prometheus exporter port
1219                       maximum: 65535
1220                       minimum: 0
1221                       type: integer
1222                     rulesNamespace:
1223                       description: RulesNamespace is the namespace where the prometheus rules and alerts should be created. If empty, the same namespace as the cluster will be used.
1224                       type: string
1225                   type: object
1226                 network:
1227                   description: Network related configuration
1228                   nullable: true
1229                   properties:
1230                     dualStack:
1231                       description: DualStack determines whether Ceph daemons should listen on both IPv4 and IPv6
1232                       type: boolean
1233                     hostNetwork:
1234                       description: HostNetwork to enable host network
1235                       type: boolean
1236                     ipFamily:
1237                       default: IPv4
1238                       description: IPFamily is the single stack IPv6 or IPv4 protocol
1239                       enum:
1240                         - IPv4
1241                         - IPv6
1242                       nullable: true
1243                       type: string
1244                     provider:
1245                       description: Provider is what provides network connectivity to the cluster e.g. "host" or "multus"
1246                       nullable: true
1247                       type: string
1248                     selectors:
1249                       additionalProperties:
1250                         type: string
1251                       description: Selectors string values describe what networks will be used to connect the cluster. Meanwhile the keys describe each network respective responsibilities or any metadata storage provider decide.
1252                       nullable: true
1253                       type: object
1254                   type: object
1255                   x-kubernetes-preserve-unknown-fields: true
1256                 placement:
1257                   additionalProperties:
1258                     description: Placement is the placement for an object
1259                     properties:
1260                       nodeAffinity:
1261                         description: NodeAffinity is a group of node affinity scheduling rules
1262                         properties:
1263                           preferredDuringSchedulingIgnoredDuringExecution:
1264                             description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.
1265                             items:
1266                               description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).
1267                               properties:
1268                                 preference:
1269                                   description: A node selector term, associated with the corresponding weight.
1270                                   properties:
1271                                     matchExpressions:
1272                                       description: A list of node selector requirements by node's labels.
1273                                       items:
1274                                         description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1275                                         properties:
1276                                           key:
1277                                             description: The label key that the selector applies to.
1278                                             type: string
1279                                           operator:
1280                                             description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
1281                                             type: string
1282                                           values:
1283                                             description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
1284                                             items:
1285                                               type: string
1286                                             type: array
1287                                         required:
1288                                           - key
1289                                           - operator
1290                                         type: object
1291                                       type: array
1292                                     matchFields:
1293                                       description: A list of node selector requirements by node's fields.
1294                                       items:
1295                                         description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1296                                         properties:
1297                                           key:
1298                                             description: The label key that the selector applies to.
1299                                             type: string
1300                                           operator:
1301                                             description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
1302                                             type: string
1303                                           values:
1304                                             description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
1305                                             items:
1306                                               type: string
1307                                             type: array
1308                                         required:
1309                                           - key
1310                                           - operator
1311                                         type: object
1312                                       type: array
1313                                   type: object
1314                                 weight:
1315                                   description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
1316                                   format: int32
1317                                   type: integer
1318                               required:
1319                                 - preference
1320                                 - weight
1321                               type: object
1322                             type: array
1323                           requiredDuringSchedulingIgnoredDuringExecution:
1324                             description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.
1325                             properties:
1326                               nodeSelectorTerms:
1327                                 description: Required. A list of node selector terms. The terms are ORed.
1328                                 items:
1329                                   description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
1330                                   properties:
1331                                     matchExpressions:
1332                                       description: A list of node selector requirements by node's labels.
1333                                       items:
1334                                         description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1335                                         properties:
1336                                           key:
1337                                             description: The label key that the selector applies to.
1338                                             type: string
1339                                           operator:
1340                                             description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
1341                                             type: string
1342                                           values:
1343                                             description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
1344                                             items:
1345                                               type: string
1346                                             type: array
1347                                         required:
1348                                           - key
1349                                           - operator
1350                                         type: object
1351                                       type: array
1352                                     matchFields:
1353                                       description: A list of node selector requirements by node's fields.
1354                                       items:
1355                                         description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1356                                         properties:
1357                                           key:
1358                                             description: The label key that the selector applies to.
1359                                             type: string
1360                                           operator:
1361                                             description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
1362                                             type: string
1363                                           values:
1364                                             description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
1365                                             items:
1366                                               type: string
1367                                             type: array
1368                                         required:
1369                                           - key
1370                                           - operator
1371                                         type: object
1372                                       type: array
1373                                   type: object
1374                                 type: array
1375                             required:
1376                               - nodeSelectorTerms
1377                             type: object
1378                         type: object
1379                       podAffinity:
1380                         description: PodAffinity is a group of inter pod affinity scheduling rules
1381                         properties:
1382                           preferredDuringSchedulingIgnoredDuringExecution:
1383                             description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
1384                             items:
1385                               description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
1386                               properties:
1387                                 podAffinityTerm:
1388                                   description: Required. A pod affinity term, associated with the corresponding weight.
1389                                   properties:
1390                                     labelSelector:
1391                                       description: A label query over a set of resources, in this case pods.
1392                                       properties:
1393                                         matchExpressions:
1394                                           description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1395                                           items:
1396                                             description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1397                                             properties:
1398                                               key:
1399                                                 description: key is the label key that the selector applies to.
1400                                                 type: string
1401                                               operator:
1402                                                 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1403                                                 type: string
1404                                               values:
1405                                                 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.
1406                                                 items:
1407                                                   type: string
1408                                                 type: array
1409                                             required:
1410                                               - key
1411                                               - operator
1412                                             type: object
1413                                           type: array
1414                                         matchLabels:
1415                                           additionalProperties:
1416                                             type: string
1417                                           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.
1418                                           type: object
1419                                       type: object
1420                                     namespaceSelector:
1421                                       description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is alpha-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
1422                                       properties:
1423                                         matchExpressions:
1424                                           description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1425                                           items:
1426                                             description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1427                                             properties:
1428                                               key:
1429                                                 description: key is the label key that the selector applies to.
1430                                                 type: string
1431                                               operator:
1432                                                 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1433                                                 type: string
1434                                               values:
1435                                                 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.
1436                                                 items:
1437                                                   type: string
1438                                                 type: array
1439                                             required:
1440                                               - key
1441                                               - operator
1442                                             type: object
1443                                           type: array
1444                                         matchLabels:
1445                                           additionalProperties:
1446                                             type: string
1447                                           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.
1448                                           type: object
1449                                       type: object
1450                                     namespaces:
1451                                       description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
1452                                       items:
1453                                         type: string
1454                                       type: array
1455                                     topologyKey:
1456                                       description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
1457                                       type: string
1458                                   required:
1459                                     - topologyKey
1460                                   type: object
1461                                 weight:
1462                                   description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
1463                                   format: int32
1464                                   type: integer
1465                               required:
1466                                 - podAffinityTerm
1467                                 - weight
1468                               type: object
1469                             type: array
1470                           requiredDuringSchedulingIgnoredDuringExecution:
1471                             description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
1472                             items:
1473                               description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
1474                               properties:
1475                                 labelSelector:
1476                                   description: A label query over a set of resources, in this case pods.
1477                                   properties:
1478                                     matchExpressions:
1479                                       description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1480                                       items:
1481                                         description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1482                                         properties:
1483                                           key:
1484                                             description: key is the label key that the selector applies to.
1485                                             type: string
1486                                           operator:
1487                                             description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1488                                             type: string
1489                                           values:
1490                                             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.
1491                                             items:
1492                                               type: string
1493                                             type: array
1494                                         required:
1495                                           - key
1496                                           - operator
1497                                         type: object
1498                                       type: array
1499                                     matchLabels:
1500                                       additionalProperties:
1501                                         type: string
1502                                       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.
1503                                       type: object
1504                                   type: object
1505                                 namespaceSelector:
1506                                   description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is alpha-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
1507                                   properties:
1508                                     matchExpressions:
1509                                       description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1510                                       items:
1511                                         description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1512                                         properties:
1513                                           key:
1514                                             description: key is the label key that the selector applies to.
1515                                             type: string
1516                                           operator:
1517                                             description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1518                                             type: string
1519                                           values:
1520                                             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.
1521                                             items:
1522                                               type: string
1523                                             type: array
1524                                         required:
1525                                           - key
1526                                           - operator
1527                                         type: object
1528                                       type: array
1529                                     matchLabels:
1530                                       additionalProperties:
1531                                         type: string
1532                                       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.
1533                                       type: object
1534                                   type: object
1535                                 namespaces:
1536                                   description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
1537                                   items:
1538                                     type: string
1539                                   type: array
1540                                 topologyKey:
1541                                   description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
1542                                   type: string
1543                               required:
1544                                 - topologyKey
1545                               type: object
1546                             type: array
1547                         type: object
1548                       podAntiAffinity:
1549                         description: PodAntiAffinity is a group of inter pod anti affinity scheduling rules
1550                         properties:
1551                           preferredDuringSchedulingIgnoredDuringExecution:
1552                             description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred.
1553                             items:
1554                               description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)
1555                               properties:
1556                                 podAffinityTerm:
1557                                   description: Required. A pod affinity term, associated with the corresponding weight.
1558                                   properties:
1559                                     labelSelector:
1560                                       description: A label query over a set of resources, in this case pods.
1561                                       properties:
1562                                         matchExpressions:
1563                                           description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1564                                           items:
1565                                             description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1566                                             properties:
1567                                               key:
1568                                                 description: key is the label key that the selector applies to.
1569                                                 type: string
1570                                               operator:
1571                                                 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1572                                                 type: string
1573                                               values:
1574                                                 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.
1575                                                 items:
1576                                                   type: string
1577                                                 type: array
1578                                             required:
1579                                               - key
1580                                               - operator
1581                                             type: object
1582                                           type: array
1583                                         matchLabels:
1584                                           additionalProperties:
1585                                             type: string
1586                                           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.
1587                                           type: object
1588                                       type: object
1589                                     namespaceSelector:
1590                                       description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is alpha-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
1591                                       properties:
1592                                         matchExpressions:
1593                                           description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1594                                           items:
1595                                             description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1596                                             properties:
1597                                               key:
1598                                                 description: key is the label key that the selector applies to.
1599                                                 type: string
1600                                               operator:
1601                                                 description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1602                                                 type: string
1603                                               values:
1604                                                 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.
1605                                                 items:
1606                                                   type: string
1607                                                 type: array
1608                                             required:
1609                                               - key
1610                                               - operator
1611                                             type: object
1612                                           type: array
1613                                         matchLabels:
1614                                           additionalProperties:
1615                                             type: string
1616                                           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.
1617                                           type: object
1618                                       type: object
1619                                     namespaces:
1620                                       description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
1621                                       items:
1622                                         type: string
1623                                       type: array
1624                                     topologyKey:
1625                                       description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
1626                                       type: string
1627                                   required:
1628                                     - topologyKey
1629                                   type: object
1630                                 weight:
1631                                   description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100.
1632                                   format: int32
1633                                   type: integer
1634                               required:
1635                                 - podAffinityTerm
1636                                 - weight
1637                               type: object
1638                             type: array
1639                           requiredDuringSchedulingIgnoredDuringExecution:
1640                             description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied.
1641                             items:
1642                               description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running
1643                               properties:
1644                                 labelSelector:
1645                                   description: A label query over a set of resources, in this case pods.
1646                                   properties:
1647                                     matchExpressions:
1648                                       description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1649                                       items:
1650                                         description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1651                                         properties:
1652                                           key:
1653                                             description: key is the label key that the selector applies to.
1654                                             type: string
1655                                           operator:
1656                                             description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1657                                             type: string
1658                                           values:
1659                                             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.
1660                                             items:
1661                                               type: string
1662                                             type: array
1663                                         required:
1664                                           - key
1665                                           - operator
1666                                         type: object
1667                                       type: array
1668                                     matchLabels:
1669                                       additionalProperties:
1670                                         type: string
1671                                       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.
1672                                       type: object
1673                                   type: object
1674                                 namespaceSelector:
1675                                   description: A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. This field is alpha-level and is only honored when PodAffinityNamespaceSelector feature is enabled.
1676                                   properties:
1677                                     matchExpressions:
1678                                       description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1679                                       items:
1680                                         description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1681                                         properties:
1682                                           key:
1683                                             description: key is the label key that the selector applies to.
1684                                             type: string
1685                                           operator:
1686                                             description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1687                                             type: string
1688                                           values:
1689                                             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.
1690                                             items:
1691                                               type: string
1692                                             type: array
1693                                         required:
1694                                           - key
1695                                           - operator
1696                                         type: object
1697                                       type: array
1698                                     matchLabels:
1699                                       additionalProperties:
1700                                         type: string
1701                                       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.
1702                                       type: object
1703                                   type: object
1704                                 namespaces:
1705                                   description: namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace"
1706                                   items:
1707                                     type: string
1708                                   type: array
1709                                 topologyKey:
1710                                   description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed.
1711                                   type: string
1712                               required:
1713                                 - topologyKey
1714                               type: object
1715                             type: array
1716                         type: object
1717                       tolerations:
1718                         description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>
1719                         items:
1720                           description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
1721                           properties:
1722                             effect:
1723                               description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
1724                               type: string
1725                             key:
1726                               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.
1727                               type: string
1728                             operator:
1729                               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.
1730                               type: string
1731                             tolerationSeconds:
1732                               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.
1733                               format: int64
1734                               type: integer
1735                             value:
1736                               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.
1737                               type: string
1738                           type: object
1739                         type: array
1740                       topologySpreadConstraints:
1741                         description: TopologySpreadConstraint specifies how to spread matching pods among the given topology
1742                         items:
1743                           description: TopologySpreadConstraint specifies how to spread matching pods among the given topology.
1744                           properties:
1745                             labelSelector:
1746                               description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain.
1747                               properties:
1748                                 matchExpressions:
1749                                   description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
1750                                   items:
1751                                     description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
1752                                     properties:
1753                                       key:
1754                                         description: key is the label key that the selector applies to.
1755                                         type: string
1756                                       operator:
1757                                         description: operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
1758                                         type: string
1759                                       values:
1760                                         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.
1761                                         items:
1762                                           type: string
1763                                         type: array
1764                                     required:
1765                                       - key
1766                                       - operator
1767                                     type: object
1768                                   type: array
1769                                 matchLabels:
1770                                   additionalProperties:
1771                                     type: string
1772                                   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.
1773                                   type: object
1774                               type: object
1775                             maxSkew:
1776                               description: 'MaxSkew describes the degree to which pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, it is the maximum permitted difference between the number of matching pods in the target topology and the global minimum. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | |   P   |   P   |       | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. When `whenUnsatisfiable=ScheduleAnyway`, it is used to give higher precedence to topologies that satisfy it. It''s a required field. Default value is 1 and 0 is not allowed.'
1777                               format: int32
1778                               type: integer
1779                             topologyKey:
1780                               description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each <key, value> as a "bucket", and try to put balanced number of pods into each bucket. It's a required field.
1781                               type: string
1782                             whenUnsatisfiable:
1783                               description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it. - ScheduleAnyway tells the scheduler to schedule the pod in any location,   but giving higher precedence to topologies that would help reduce the   skew. A constraint is considered "Unsatisfiable" for an incoming pod if and only if every possible node assigment for that pod would violate "MaxSkew" on some topology. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P |   P   |   P   | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.'
1784                               type: string
1785                           required:
1786                             - maxSkew
1787                             - topologyKey
1788                             - whenUnsatisfiable
1789                           type: object
1790                         type: array
1791                     type: object
1792                   description: The placement-related configuration to pass to kubernetes (affinity, node selector, tolerations).
1793                   nullable: true
1794                   type: object
1795                   x-kubernetes-preserve-unknown-fields: true
1796                 priorityClassNames:
1797                   additionalProperties:
1798                     type: string
1799                   description: PriorityClassNames sets priority classes on components
1800                   nullable: true
1801                   type: object
1802                   x-kubernetes-preserve-unknown-fields: true
1803                 removeOSDsIfOutAndSafeToRemove:
1804                   description: Remove the OSD that is out and safe to remove only if this option is true
1805                   type: boolean
1806                 resources:
1807                   additionalProperties:
1808                     description: ResourceRequirements describes the compute resource requirements.
1809                     properties:
1810                       limits:
1811                         additionalProperties:
1812                           anyOf:
1813                             - type: integer
1814                             - type: string
1815                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1816                           x-kubernetes-int-or-string: true
1817                         description: 'Limits describes the maximum amount of compute resources allowed. More info:'
1818                         type: object
1819                       requests:
1820                         additionalProperties:
1821                           anyOf:
1822                             - type: integer
1823                             - type: string
1824                           pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1825                           x-kubernetes-int-or-string: true
1826                         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. More info:'
1827                         type: object
1828                     type: object
1829                   description: Resources set resource requests and limits
1830                   nullable: true
1831                   type: object
1832                   x-kubernetes-preserve-unknown-fields: true
1833                 security:
1834                   description: Security represents security settings
1835                   nullable: true
1836                   properties:
1837                     kms:
1838                       description: KeyManagementService is the main Key Management option
1839                       nullable: true
1840                       properties:
1841                         connectionDetails:
1842                           additionalProperties:
1843                             type: string
1844                           description: ConnectionDetails contains the KMS connection details (address, port etc)
1845                           nullable: true
1846                           type: object
1847                           x-kubernetes-preserve-unknown-fields: true
1848                         tokenSecretName:
1849                           description: TokenSecretName is the kubernetes secret containing the KMS token
1850                           type: string
1851                       type: object
1852                   type: object
1853                 skipUpgradeChecks:
1854                   description: SkipUpgradeChecks defines if an upgrade should be forced even if one of the check fails
1855                   type: boolean
1856                 storage:
1857                   description: A spec for available storage in the cluster and how it should be used
1858                   nullable: true
1859                   properties:
1860                     config:
1861                       additionalProperties:
1862                         type: string
1863                       nullable: true
1864                       type: object
1865                       x-kubernetes-preserve-unknown-fields: true
1866                     deviceFilter:
1867                       description: A regular expression to allow more fine-grained selection of devices on nodes across the cluster
1868                       type: string
1869                     devicePathFilter:
1870                       description: A regular expression to allow more fine-grained selection of devices with path names
1871                       type: string
1872                     devices:
1873                       description: List of devices to use as storage devices
1874                       items:
1875                         description: Device represents a disk to use in the cluster
1876                         properties:
1877                           config:
1878                             additionalProperties:
1879                               type: string
1880                             nullable: true
1881                             type: object
1882                             x-kubernetes-preserve-unknown-fields: true
1883                           fullpath:
1884                             type: string
1885                           name:
1886                             type: string
1887                         type: object
1888                       nullable: true
1889                       type: array
1890                       x-kubernetes-preserve-unknown-fields: true
1891                     nodes:
1892                       items:
1893                         description: Node is a storage nodes
1894                         properties:
1895                           config:
1896                             additionalProperties:
1897                               type: string
1898                             nullable: true
1899                             type: object
1900                             x-kubernetes-preserve-unknown-fields: true
1901                           deviceFilter:
1902                             description: A regular expression to allow more fine-grained selection of devices on nodes across the cluster
1903                             type: string
1904                           devicePathFilter:
1905                             description: A regular expression to allow more fine-grained selection of devices with path names
1906                             type: string
1907                           devices:
1908                             description: List of devices to use as storage devices
1909                             items:
1910                               description: Device represents a disk to use in the cluster
1911                               properties:
1912                                 config:
1913                                   additionalProperties:
1914                                     type: string
1915                                   nullable: true
1916                                   type: object
1917                                   x-kubernetes-preserve-unknown-fields: true
1918                                 fullpath:
1919                                   type: string
1920                                 name:
1921                                   type: string
1922                               type: object
1923                             nullable: true
1924                             type: array
1925                             x-kubernetes-preserve-unknown-fields: true
1926                           name:
1927                             type: string
1928                           resources:
1929                             description: ResourceRequirements describes the compute resource requirements.
1930                             nullable: true
1931                             properties:
1932                               limits:
1933                                 additionalProperties:
1934                                   anyOf:
1935                                     - type: integer
1936                                     - type: string
1937                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1938                                   x-kubernetes-int-or-string: true
1939                                 description: 'Limits describes the maximum amount of compute resources allowed. More info:'
1940                                 type: object
1941                               requests:
1942                                 additionalProperties:
1943                                   anyOf:
1944                                     - type: integer
1945                                     - type: string
1946                                   pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
1947                                   x-kubernetes-int-or-string: true
1948                                 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. More info:'
1949                                 type: object
1950                             type: object
1951                             x-kubernetes-preserve-unknown-fields: true
1952                           useAllDevices:
1953                             description: Whether to consume all the storage devices found on a machine
1954                             type: boolean
1955                           volumeClaimTemplates:
1956                             description: PersistentVolumeClaims to use as storage
1957                             items:
1958                               description: PersistentVolumeClaim is a user's request for and claim to a persistent volume
1959                               properties:
1960                                 apiVersion:
1961                                   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:'
1962                                   type: string
1963                                 kind:
1964                                   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:'
1965                                   type: string
1966                                 metadata:
1967                                   description: 'Standard object''s metadata. More info:'
1968                                   properties:
1969                                     annotations:
1970                                       additionalProperties:
1971                                         type: string
1972                                       type: object
1973                                     finalizers:
1974                                       items:
1975                                         type: string
1976                                       type: array
1977                                     labels:
1978                                       additionalProperties:
1979                                         type: string
1980                                       type: object
1981                                     name:
1982                                       type: string
1983                                     namespace:
1984                                       type: string
1985                                   type: object
1986                                 spec:
1987                                   description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info:'
1988                                   properties:
1989                                     accessModes:
1990                                       description: 'AccessModes contains the desired access modes the volume should have. More info:'
1991                                       items:
1992                                         type: string
1993                                       type: array
1994                                     dataSource:
1995                                       description: 'This field can be used to specify either: * An existing VolumeSnapshot object ( * An existing PVC (PersistentVolumeClaim) * An existing custom resource that implements data population (Alpha) In order to use custom resource types that implement data population, the AnyVolumeDataSource feature gate must be enabled. If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source.'
1996                                       properties:
1997                                         apiGroup:
1998                                           description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
1999                                           type: string
2000                                         kind:
2001                                           description: Kind is the type of resource being referenced
2002                                           type: string
2003                                         name:
2004                                           description: Name is the name of resource being referenced
2005                                           type: string
2006                                       required:
2007                                         - kind
2008                                         - name
2009                                       type: object
2010                                     resources:
2011                                       description: 'Resources represents the minimum resources the volume should have. More info:'
2012                                       properties:
2013                                         limits:
2014                                           additionalProperties:
2015                                             anyOf:
2016                                               - type: integer
2017                                               - type: string
2018                                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2019                                             x-kubernetes-int-or-string: true
2020                                           description: 'Limits describes the maximum amount of compute resources allowed. More info:'
2021                                           type: object
2022                                         requests:
2023                                           additionalProperties:
2024                                             anyOf:
2025                                               - type: integer
2026                                               - type: string
2027                                             pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
2028                                             x-kubernetes-int-or-string: true
2029                                           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. More info:'
2030                                           type: object
2031                                       type: object
2032                                     selector:
2033                                       description: A label query over volumes to consider for binding.
2034                                       properties:
2035                                         matchExpressions:
2036                                           description: matchExpressions is a list of label selector requirements. The requirements are ANDed.
2037                                           items:
2038                                             description: A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
2039                                             properties:
2040                                               key:
2041                                                 description: key is the label key that the selector applies to.
2042                                                 type: string