sigs.k8s.io/cluster-api@v1.7.1/config/crd/bases/cluster.x-k8s.io_clusterclasses.yaml (about) 1 --- 2 apiVersion: apiextensions.k8s.io/v1 3 kind: CustomResourceDefinition 4 metadata: 5 annotations: 6 controller-gen.kubebuilder.io/version: v0.14.0 7 name: clusterclasses.cluster.x-k8s.io 8 spec: 9 group: cluster.x-k8s.io 10 names: 11 categories: 12 - cluster-api 13 kind: ClusterClass 14 listKind: ClusterClassList 15 plural: clusterclasses 16 shortNames: 17 - cc 18 singular: clusterclass 19 scope: Namespaced 20 versions: 21 - additionalPrinterColumns: 22 - description: Time duration since creation of ClusterClass 23 jsonPath: .metadata.creationTimestamp 24 name: Age 25 type: date 26 deprecated: true 27 name: v1alpha4 28 schema: 29 openAPIV3Schema: 30 description: |- 31 ClusterClass is a template which can be used to create managed topologies. 32 33 34 Deprecated: This type will be removed in one of the next releases. 35 properties: 36 apiVersion: 37 description: |- 38 APIVersion defines the versioned schema of this representation of an object. 39 Servers should convert recognized schemas to the latest internal value, and 40 may reject unrecognized values. 41 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources 42 type: string 43 kind: 44 description: |- 45 Kind is a string value representing the REST resource this object represents. 46 Servers may infer this from the endpoint the client submits requests to. 47 Cannot be updated. 48 In CamelCase. 49 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 50 type: string 51 metadata: 52 type: object 53 spec: 54 description: ClusterClassSpec describes the desired state of the ClusterClass. 55 properties: 56 controlPlane: 57 description: |- 58 ControlPlane is a reference to a local struct that holds the details 59 for provisioning the Control Plane for the Cluster. 60 properties: 61 machineInfrastructure: 62 description: |- 63 MachineTemplate defines the metadata and infrastructure information 64 for control plane machines. 65 66 67 This field is supported if and only if the control plane provider template 68 referenced above is Machine based and supports setting replicas. 69 properties: 70 ref: 71 description: |- 72 Ref is a required reference to a custom resource 73 offered by a provider. 74 properties: 75 apiVersion: 76 description: API version of the referent. 77 type: string 78 fieldPath: 79 description: |- 80 If referring to a piece of an object instead of an entire object, this string 81 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 82 For example, if the object reference is to a container within a pod, this would take on a value like: 83 "spec.containers{name}" (where "name" refers to the name of the container that triggered 84 the event) or if no container name is specified "spec.containers[2]" (container with 85 index 2 in this pod). This syntax is chosen only to have some well-defined way of 86 referencing a part of an object. 87 TODO: this design is not final and this field is subject to change in the future. 88 type: string 89 kind: 90 description: |- 91 Kind of the referent. 92 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 93 type: string 94 name: 95 description: |- 96 Name of the referent. 97 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 98 type: string 99 namespace: 100 description: |- 101 Namespace of the referent. 102 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 103 type: string 104 resourceVersion: 105 description: |- 106 Specific resourceVersion to which this reference is made, if any. 107 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 108 type: string 109 uid: 110 description: |- 111 UID of the referent. 112 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 113 type: string 114 type: object 115 x-kubernetes-map-type: atomic 116 required: 117 - ref 118 type: object 119 metadata: 120 description: |- 121 Metadata is the metadata applied to the machines of the ControlPlane. 122 At runtime this metadata is merged with the corresponding metadata from the topology. 123 124 125 This field is supported if and only if the control plane provider template 126 referenced is Machine based. 127 properties: 128 annotations: 129 additionalProperties: 130 type: string 131 description: |- 132 Annotations is an unstructured key value map stored with a resource that may be 133 set by external tools to store and retrieve arbitrary metadata. They are not 134 queryable and should be preserved when modifying objects. 135 More info: http://kubernetes.io/docs/user-guide/annotations 136 type: object 137 labels: 138 additionalProperties: 139 type: string 140 description: |- 141 Map of string keys and values that can be used to organize and categorize 142 (scope and select) objects. May match selectors of replication controllers 143 and services. 144 More info: http://kubernetes.io/docs/user-guide/labels 145 type: object 146 type: object 147 ref: 148 description: |- 149 Ref is a required reference to a custom resource 150 offered by a provider. 151 properties: 152 apiVersion: 153 description: API version of the referent. 154 type: string 155 fieldPath: 156 description: |- 157 If referring to a piece of an object instead of an entire object, this string 158 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 159 For example, if the object reference is to a container within a pod, this would take on a value like: 160 "spec.containers{name}" (where "name" refers to the name of the container that triggered 161 the event) or if no container name is specified "spec.containers[2]" (container with 162 index 2 in this pod). This syntax is chosen only to have some well-defined way of 163 referencing a part of an object. 164 TODO: this design is not final and this field is subject to change in the future. 165 type: string 166 kind: 167 description: |- 168 Kind of the referent. 169 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 170 type: string 171 name: 172 description: |- 173 Name of the referent. 174 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 175 type: string 176 namespace: 177 description: |- 178 Namespace of the referent. 179 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 180 type: string 181 resourceVersion: 182 description: |- 183 Specific resourceVersion to which this reference is made, if any. 184 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 185 type: string 186 uid: 187 description: |- 188 UID of the referent. 189 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 190 type: string 191 type: object 192 x-kubernetes-map-type: atomic 193 required: 194 - ref 195 type: object 196 infrastructure: 197 description: |- 198 Infrastructure is a reference to a provider-specific template that holds 199 the details for provisioning infrastructure specific cluster 200 for the underlying provider. 201 The underlying provider is responsible for the implementation 202 of the template to an infrastructure cluster. 203 properties: 204 ref: 205 description: |- 206 Ref is a required reference to a custom resource 207 offered by a provider. 208 properties: 209 apiVersion: 210 description: API version of the referent. 211 type: string 212 fieldPath: 213 description: |- 214 If referring to a piece of an object instead of an entire object, this string 215 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 216 For example, if the object reference is to a container within a pod, this would take on a value like: 217 "spec.containers{name}" (where "name" refers to the name of the container that triggered 218 the event) or if no container name is specified "spec.containers[2]" (container with 219 index 2 in this pod). This syntax is chosen only to have some well-defined way of 220 referencing a part of an object. 221 TODO: this design is not final and this field is subject to change in the future. 222 type: string 223 kind: 224 description: |- 225 Kind of the referent. 226 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 227 type: string 228 name: 229 description: |- 230 Name of the referent. 231 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 232 type: string 233 namespace: 234 description: |- 235 Namespace of the referent. 236 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 237 type: string 238 resourceVersion: 239 description: |- 240 Specific resourceVersion to which this reference is made, if any. 241 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 242 type: string 243 uid: 244 description: |- 245 UID of the referent. 246 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 247 type: string 248 type: object 249 x-kubernetes-map-type: atomic 250 required: 251 - ref 252 type: object 253 workers: 254 description: |- 255 Workers describes the worker nodes for the cluster. 256 It is a collection of node types which can be used to create 257 the worker nodes of the cluster. 258 properties: 259 machineDeployments: 260 description: |- 261 MachineDeployments is a list of machine deployment classes that can be used to create 262 a set of worker nodes. 263 items: 264 description: |- 265 MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster 266 provisioned using the `ClusterClass`. 267 properties: 268 class: 269 description: |- 270 Class denotes a type of worker node present in the cluster, 271 this name MUST be unique within a ClusterClass and can be referenced 272 in the Cluster to create a managed MachineDeployment. 273 type: string 274 template: 275 description: |- 276 Template is a local struct containing a collection of templates for creation of 277 MachineDeployment objects representing a set of worker nodes. 278 properties: 279 bootstrap: 280 description: |- 281 Bootstrap contains the bootstrap template reference to be used 282 for the creation of worker Machines. 283 properties: 284 ref: 285 description: |- 286 Ref is a required reference to a custom resource 287 offered by a provider. 288 properties: 289 apiVersion: 290 description: API version of the referent. 291 type: string 292 fieldPath: 293 description: |- 294 If referring to a piece of an object instead of an entire object, this string 295 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 296 For example, if the object reference is to a container within a pod, this would take on a value like: 297 "spec.containers{name}" (where "name" refers to the name of the container that triggered 298 the event) or if no container name is specified "spec.containers[2]" (container with 299 index 2 in this pod). This syntax is chosen only to have some well-defined way of 300 referencing a part of an object. 301 TODO: this design is not final and this field is subject to change in the future. 302 type: string 303 kind: 304 description: |- 305 Kind of the referent. 306 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 307 type: string 308 name: 309 description: |- 310 Name of the referent. 311 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 312 type: string 313 namespace: 314 description: |- 315 Namespace of the referent. 316 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 317 type: string 318 resourceVersion: 319 description: |- 320 Specific resourceVersion to which this reference is made, if any. 321 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 322 type: string 323 uid: 324 description: |- 325 UID of the referent. 326 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 327 type: string 328 type: object 329 x-kubernetes-map-type: atomic 330 required: 331 - ref 332 type: object 333 infrastructure: 334 description: |- 335 Infrastructure contains the infrastructure template reference to be used 336 for the creation of worker Machines. 337 properties: 338 ref: 339 description: |- 340 Ref is a required reference to a custom resource 341 offered by a provider. 342 properties: 343 apiVersion: 344 description: API version of the referent. 345 type: string 346 fieldPath: 347 description: |- 348 If referring to a piece of an object instead of an entire object, this string 349 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 350 For example, if the object reference is to a container within a pod, this would take on a value like: 351 "spec.containers{name}" (where "name" refers to the name of the container that triggered 352 the event) or if no container name is specified "spec.containers[2]" (container with 353 index 2 in this pod). This syntax is chosen only to have some well-defined way of 354 referencing a part of an object. 355 TODO: this design is not final and this field is subject to change in the future. 356 type: string 357 kind: 358 description: |- 359 Kind of the referent. 360 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 361 type: string 362 name: 363 description: |- 364 Name of the referent. 365 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 366 type: string 367 namespace: 368 description: |- 369 Namespace of the referent. 370 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 371 type: string 372 resourceVersion: 373 description: |- 374 Specific resourceVersion to which this reference is made, if any. 375 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 376 type: string 377 uid: 378 description: |- 379 UID of the referent. 380 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 381 type: string 382 type: object 383 x-kubernetes-map-type: atomic 384 required: 385 - ref 386 type: object 387 metadata: 388 description: |- 389 Metadata is the metadata applied to the machines of the MachineDeployment. 390 At runtime this metadata is merged with the corresponding metadata from the topology. 391 properties: 392 annotations: 393 additionalProperties: 394 type: string 395 description: |- 396 Annotations is an unstructured key value map stored with a resource that may be 397 set by external tools to store and retrieve arbitrary metadata. They are not 398 queryable and should be preserved when modifying objects. 399 More info: http://kubernetes.io/docs/user-guide/annotations 400 type: object 401 labels: 402 additionalProperties: 403 type: string 404 description: |- 405 Map of string keys and values that can be used to organize and categorize 406 (scope and select) objects. May match selectors of replication controllers 407 and services. 408 More info: http://kubernetes.io/docs/user-guide/labels 409 type: object 410 type: object 411 required: 412 - bootstrap 413 - infrastructure 414 type: object 415 required: 416 - class 417 - template 418 type: object 419 type: array 420 type: object 421 type: object 422 type: object 423 served: false 424 storage: false 425 subresources: {} 426 - additionalPrinterColumns: 427 - description: Time duration since creation of ClusterClass 428 jsonPath: .metadata.creationTimestamp 429 name: Age 430 type: date 431 name: v1beta1 432 schema: 433 openAPIV3Schema: 434 description: ClusterClass is a template which can be used to create managed 435 topologies. 436 properties: 437 apiVersion: 438 description: |- 439 APIVersion defines the versioned schema of this representation of an object. 440 Servers should convert recognized schemas to the latest internal value, and 441 may reject unrecognized values. 442 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources 443 type: string 444 kind: 445 description: |- 446 Kind is a string value representing the REST resource this object represents. 447 Servers may infer this from the endpoint the client submits requests to. 448 Cannot be updated. 449 In CamelCase. 450 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 451 type: string 452 metadata: 453 type: object 454 spec: 455 description: ClusterClassSpec describes the desired state of the ClusterClass. 456 properties: 457 controlPlane: 458 description: |- 459 ControlPlane is a reference to a local struct that holds the details 460 for provisioning the Control Plane for the Cluster. 461 properties: 462 machineHealthCheck: 463 description: |- 464 MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass. 465 This field is supported if and only if the ControlPlane provider template 466 referenced above is Machine based and supports setting replicas. 467 properties: 468 maxUnhealthy: 469 anyOf: 470 - type: integer 471 - type: string 472 description: |- 473 Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by 474 "selector" are not healthy. 475 x-kubernetes-int-or-string: true 476 nodeStartupTimeout: 477 description: |- 478 Machines older than this duration without a node will be considered to have 479 failed and will be remediated. 480 If you wish to disable this feature, set the value explicitly to 0. 481 type: string 482 remediationTemplate: 483 description: |- 484 RemediationTemplate is a reference to a remediation template 485 provided by an infrastructure provider. 486 487 488 This field is completely optional, when filled, the MachineHealthCheck controller 489 creates a new object from the template referenced and hands off remediation of the machine to 490 a controller that lives outside of Cluster API. 491 properties: 492 apiVersion: 493 description: API version of the referent. 494 type: string 495 fieldPath: 496 description: |- 497 If referring to a piece of an object instead of an entire object, this string 498 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 499 For example, if the object reference is to a container within a pod, this would take on a value like: 500 "spec.containers{name}" (where "name" refers to the name of the container that triggered 501 the event) or if no container name is specified "spec.containers[2]" (container with 502 index 2 in this pod). This syntax is chosen only to have some well-defined way of 503 referencing a part of an object. 504 TODO: this design is not final and this field is subject to change in the future. 505 type: string 506 kind: 507 description: |- 508 Kind of the referent. 509 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 510 type: string 511 name: 512 description: |- 513 Name of the referent. 514 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 515 type: string 516 namespace: 517 description: |- 518 Namespace of the referent. 519 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 520 type: string 521 resourceVersion: 522 description: |- 523 Specific resourceVersion to which this reference is made, if any. 524 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 525 type: string 526 uid: 527 description: |- 528 UID of the referent. 529 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 530 type: string 531 type: object 532 x-kubernetes-map-type: atomic 533 unhealthyConditions: 534 description: |- 535 UnhealthyConditions contains a list of the conditions that determine 536 whether a node is considered unhealthy. The conditions are combined in a 537 logical OR, i.e. if any of the conditions is met, the node is unhealthy. 538 items: 539 description: |- 540 UnhealthyCondition represents a Node condition type and value with a timeout 541 specified as a duration. When the named condition has been in the given 542 status for at least the timeout value, a node is considered unhealthy. 543 properties: 544 status: 545 minLength: 1 546 type: string 547 timeout: 548 type: string 549 type: 550 minLength: 1 551 type: string 552 required: 553 - status 554 - timeout 555 - type 556 type: object 557 type: array 558 unhealthyRange: 559 description: |- 560 Any further remediation is only allowed if the number of machines selected by "selector" as not healthy 561 is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy. 562 Eg. "[3-5]" - This means that remediation will be allowed only when: 563 (a) there are at least 3 unhealthy machines (and) 564 (b) there are at most 5 unhealthy machines 565 pattern: ^\[[0-9]+-[0-9]+\]$ 566 type: string 567 type: object 568 machineInfrastructure: 569 description: |- 570 MachineInfrastructure defines the metadata and infrastructure information 571 for control plane machines. 572 573 574 This field is supported if and only if the control plane provider template 575 referenced above is Machine based and supports setting replicas. 576 properties: 577 ref: 578 description: |- 579 Ref is a required reference to a custom resource 580 offered by a provider. 581 properties: 582 apiVersion: 583 description: API version of the referent. 584 type: string 585 fieldPath: 586 description: |- 587 If referring to a piece of an object instead of an entire object, this string 588 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 589 For example, if the object reference is to a container within a pod, this would take on a value like: 590 "spec.containers{name}" (where "name" refers to the name of the container that triggered 591 the event) or if no container name is specified "spec.containers[2]" (container with 592 index 2 in this pod). This syntax is chosen only to have some well-defined way of 593 referencing a part of an object. 594 TODO: this design is not final and this field is subject to change in the future. 595 type: string 596 kind: 597 description: |- 598 Kind of the referent. 599 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 600 type: string 601 name: 602 description: |- 603 Name of the referent. 604 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 605 type: string 606 namespace: 607 description: |- 608 Namespace of the referent. 609 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 610 type: string 611 resourceVersion: 612 description: |- 613 Specific resourceVersion to which this reference is made, if any. 614 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 615 type: string 616 uid: 617 description: |- 618 UID of the referent. 619 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 620 type: string 621 type: object 622 x-kubernetes-map-type: atomic 623 required: 624 - ref 625 type: object 626 metadata: 627 description: |- 628 Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane 629 if the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the 630 ControlPlane. 631 At runtime this metadata is merged with the corresponding metadata from the topology. 632 633 634 This field is supported if and only if the control plane provider template 635 referenced is Machine based. 636 properties: 637 annotations: 638 additionalProperties: 639 type: string 640 description: |- 641 Annotations is an unstructured key value map stored with a resource that may be 642 set by external tools to store and retrieve arbitrary metadata. They are not 643 queryable and should be preserved when modifying objects. 644 More info: http://kubernetes.io/docs/user-guide/annotations 645 type: object 646 labels: 647 additionalProperties: 648 type: string 649 description: |- 650 Map of string keys and values that can be used to organize and categorize 651 (scope and select) objects. May match selectors of replication controllers 652 and services. 653 More info: http://kubernetes.io/docs/user-guide/labels 654 type: object 655 type: object 656 namingStrategy: 657 description: NamingStrategy allows changing the naming pattern 658 used when creating the control plane provider object. 659 properties: 660 template: 661 description: |- 662 Template defines the template to use for generating the name of the ControlPlane object. 663 If not defined, it will fallback to `{{ .cluster.name }}-{{ .random }}`. 664 If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will 665 get concatenated with a random suffix of length 5. 666 The templating mechanism provides the following arguments: 667 * `.cluster.name`: The name of the cluster object. 668 * `.random`: A random alphanumeric string, without vowels, of length 5. 669 type: string 670 type: object 671 nodeDeletionTimeout: 672 description: |- 673 NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine 674 hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. 675 Defaults to 10 seconds. 676 NOTE: This value can be overridden while defining a Cluster.Topology. 677 type: string 678 nodeDrainTimeout: 679 description: |- 680 NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. 681 The default value is 0, meaning that the node can be drained without any time limitations. 682 NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` 683 NOTE: This value can be overridden while defining a Cluster.Topology. 684 type: string 685 nodeVolumeDetachTimeout: 686 description: |- 687 NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes 688 to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. 689 NOTE: This value can be overridden while defining a Cluster.Topology. 690 type: string 691 ref: 692 description: |- 693 Ref is a required reference to a custom resource 694 offered by a provider. 695 properties: 696 apiVersion: 697 description: API version of the referent. 698 type: string 699 fieldPath: 700 description: |- 701 If referring to a piece of an object instead of an entire object, this string 702 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 703 For example, if the object reference is to a container within a pod, this would take on a value like: 704 "spec.containers{name}" (where "name" refers to the name of the container that triggered 705 the event) or if no container name is specified "spec.containers[2]" (container with 706 index 2 in this pod). This syntax is chosen only to have some well-defined way of 707 referencing a part of an object. 708 TODO: this design is not final and this field is subject to change in the future. 709 type: string 710 kind: 711 description: |- 712 Kind of the referent. 713 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 714 type: string 715 name: 716 description: |- 717 Name of the referent. 718 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 719 type: string 720 namespace: 721 description: |- 722 Namespace of the referent. 723 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 724 type: string 725 resourceVersion: 726 description: |- 727 Specific resourceVersion to which this reference is made, if any. 728 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 729 type: string 730 uid: 731 description: |- 732 UID of the referent. 733 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 734 type: string 735 type: object 736 x-kubernetes-map-type: atomic 737 required: 738 - ref 739 type: object 740 infrastructure: 741 description: |- 742 Infrastructure is a reference to a provider-specific template that holds 743 the details for provisioning infrastructure specific cluster 744 for the underlying provider. 745 The underlying provider is responsible for the implementation 746 of the template to an infrastructure cluster. 747 properties: 748 ref: 749 description: |- 750 Ref is a required reference to a custom resource 751 offered by a provider. 752 properties: 753 apiVersion: 754 description: API version of the referent. 755 type: string 756 fieldPath: 757 description: |- 758 If referring to a piece of an object instead of an entire object, this string 759 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 760 For example, if the object reference is to a container within a pod, this would take on a value like: 761 "spec.containers{name}" (where "name" refers to the name of the container that triggered 762 the event) or if no container name is specified "spec.containers[2]" (container with 763 index 2 in this pod). This syntax is chosen only to have some well-defined way of 764 referencing a part of an object. 765 TODO: this design is not final and this field is subject to change in the future. 766 type: string 767 kind: 768 description: |- 769 Kind of the referent. 770 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 771 type: string 772 name: 773 description: |- 774 Name of the referent. 775 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 776 type: string 777 namespace: 778 description: |- 779 Namespace of the referent. 780 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 781 type: string 782 resourceVersion: 783 description: |- 784 Specific resourceVersion to which this reference is made, if any. 785 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 786 type: string 787 uid: 788 description: |- 789 UID of the referent. 790 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 791 type: string 792 type: object 793 x-kubernetes-map-type: atomic 794 required: 795 - ref 796 type: object 797 patches: 798 description: |- 799 Patches defines the patches which are applied to customize 800 referenced templates of a ClusterClass. 801 Note: Patches will be applied in the order of the array. 802 items: 803 description: ClusterClassPatch defines a patch which is applied 804 to customize the referenced templates. 805 properties: 806 definitions: 807 description: |- 808 Definitions define inline patches. 809 Note: Patches will be applied in the order of the array. 810 Note: Exactly one of Definitions or External must be set. 811 items: 812 description: PatchDefinition defines a patch which is applied 813 to customize the referenced templates. 814 properties: 815 jsonPatches: 816 description: |- 817 JSONPatches defines the patches which should be applied on the templates 818 matching the selector. 819 Note: Patches will be applied in the order of the array. 820 items: 821 description: JSONPatch defines a JSON patch. 822 properties: 823 op: 824 description: |- 825 Op defines the operation of the patch. 826 Note: Only `add`, `replace` and `remove` are supported. 827 type: string 828 path: 829 description: |- 830 Path defines the path of the patch. 831 Note: Only the spec of a template can be patched, thus the path has to start with /spec/. 832 Note: For now the only allowed array modifications are `append` and `prepend`, i.e.: 833 * for op: `add`: only index 0 (prepend) and - (append) are allowed 834 * for op: `replace` or `remove`: no indexes are allowed 835 type: string 836 value: 837 description: |- 838 Value defines the value of the patch. 839 Note: Either Value or ValueFrom is required for add and replace 840 operations. Only one of them is allowed to be set at the same time. 841 Note: We have to use apiextensionsv1.JSON instead of our JSON type, 842 because controller-tools has a hard-coded schema for apiextensionsv1.JSON 843 which cannot be produced by another type (unset type field). 844 Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 845 x-kubernetes-preserve-unknown-fields: true 846 valueFrom: 847 description: |- 848 ValueFrom defines the value of the patch. 849 Note: Either Value or ValueFrom is required for add and replace 850 operations. Only one of them is allowed to be set at the same time. 851 properties: 852 template: 853 description: |- 854 Template is the Go template to be used to calculate the value. 855 A template can reference variables defined in .spec.variables and builtin variables. 856 Note: The template must evaluate to a valid YAML or JSON value. 857 type: string 858 variable: 859 description: |- 860 Variable is the variable to be used as value. 861 Variable can be one of the variables defined in .spec.variables or a builtin variable. 862 type: string 863 type: object 864 required: 865 - op 866 - path 867 type: object 868 type: array 869 selector: 870 description: Selector defines on which templates the patch 871 should be applied. 872 properties: 873 apiVersion: 874 description: APIVersion filters templates by apiVersion. 875 type: string 876 kind: 877 description: Kind filters templates by kind. 878 type: string 879 matchResources: 880 description: MatchResources selects templates based 881 on where they are referenced. 882 properties: 883 controlPlane: 884 description: |- 885 ControlPlane selects templates referenced in .spec.ControlPlane. 886 Note: this will match the controlPlane and also the controlPlane 887 machineInfrastructure (depending on the kind and apiVersion). 888 type: boolean 889 infrastructureCluster: 890 description: InfrastructureCluster selects templates 891 referenced in .spec.infrastructure. 892 type: boolean 893 machineDeploymentClass: 894 description: |- 895 MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in 896 .spec.workers.machineDeployments. 897 properties: 898 names: 899 description: Names selects templates by class 900 names. 901 items: 902 type: string 903 type: array 904 type: object 905 machinePoolClass: 906 description: |- 907 MachinePoolClass selects templates referenced in specific MachinePoolClasses in 908 .spec.workers.machinePools. 909 properties: 910 names: 911 description: Names selects templates by class 912 names. 913 items: 914 type: string 915 type: array 916 type: object 917 type: object 918 required: 919 - apiVersion 920 - kind 921 - matchResources 922 type: object 923 required: 924 - jsonPatches 925 - selector 926 type: object 927 type: array 928 description: 929 description: Description is a human-readable description of 930 this patch. 931 type: string 932 enabledIf: 933 description: |- 934 EnabledIf is a Go template to be used to calculate if a patch should be enabled. 935 It can reference variables defined in .spec.variables and builtin variables. 936 The patch will be enabled if the template evaluates to `true`, otherwise it will 937 be disabled. 938 If EnabledIf is not set, the patch will be enabled per default. 939 type: string 940 external: 941 description: |- 942 External defines an external patch. 943 Note: Exactly one of Definitions or External must be set. 944 properties: 945 discoverVariablesExtension: 946 description: DiscoverVariablesExtension references an extension 947 which is called to discover variables. 948 type: string 949 generateExtension: 950 description: GenerateExtension references an extension which 951 is called to generate patches. 952 type: string 953 settings: 954 additionalProperties: 955 type: string 956 description: |- 957 Settings defines key value pairs to be passed to the extensions. 958 Values defined here take precedence over the values defined in the 959 corresponding ExtensionConfig. 960 type: object 961 validateExtension: 962 description: ValidateExtension references an extension which 963 is called to validate the topology. 964 type: string 965 type: object 966 name: 967 description: Name of the patch. 968 type: string 969 required: 970 - name 971 type: object 972 type: array 973 variables: 974 description: |- 975 Variables defines the variables which can be configured 976 in the Cluster topology and are then used in patches. 977 items: 978 description: |- 979 ClusterClassVariable defines a variable which can 980 be configured in the Cluster topology and used in patches. 981 properties: 982 metadata: 983 description: |- 984 Metadata is the metadata of a variable. 985 It can be used to add additional data for higher level tools to 986 a ClusterClassVariable. 987 properties: 988 annotations: 989 additionalProperties: 990 type: string 991 description: |- 992 Annotations is an unstructured key value map that can be used to store and 993 retrieve arbitrary metadata. 994 They are not queryable. 995 type: object 996 labels: 997 additionalProperties: 998 type: string 999 description: |- 1000 Map of string keys and values that can be used to organize and categorize 1001 (scope and select) variables. 1002 type: object 1003 type: object 1004 name: 1005 description: Name of the variable. 1006 type: string 1007 required: 1008 description: |- 1009 Required specifies if the variable is required. 1010 Note: this applies to the variable as a whole and thus the 1011 top-level object defined in the schema. If nested fields are 1012 required, this will be specified inside the schema. 1013 type: boolean 1014 schema: 1015 description: Schema defines the schema of the variable. 1016 properties: 1017 openAPIV3Schema: 1018 description: |- 1019 OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 1020 schema. The schema is a subset of the schema used in 1021 Kubernetes CRDs. 1022 properties: 1023 additionalProperties: 1024 description: |- 1025 AdditionalProperties specifies the schema of values in a map (keys are always strings). 1026 NOTE: Can only be set if type is object. 1027 NOTE: AdditionalProperties is mutually exclusive with Properties. 1028 NOTE: This field uses PreserveUnknownFields and Schemaless, 1029 because recursive validation is not possible. 1030 x-kubernetes-preserve-unknown-fields: true 1031 default: 1032 description: |- 1033 Default is the default value of the variable. 1034 NOTE: Can be set for all types. 1035 x-kubernetes-preserve-unknown-fields: true 1036 description: 1037 description: Description is a human-readable description 1038 of this variable. 1039 type: string 1040 enum: 1041 description: |- 1042 Enum is the list of valid values of the variable. 1043 NOTE: Can be set for all types. 1044 items: 1045 x-kubernetes-preserve-unknown-fields: true 1046 type: array 1047 example: 1048 description: Example is an example for this variable. 1049 x-kubernetes-preserve-unknown-fields: true 1050 exclusiveMaximum: 1051 description: |- 1052 ExclusiveMaximum specifies if the Maximum is exclusive. 1053 NOTE: Can only be set if type is integer or number. 1054 type: boolean 1055 exclusiveMinimum: 1056 description: |- 1057 ExclusiveMinimum specifies if the Minimum is exclusive. 1058 NOTE: Can only be set if type is integer or number. 1059 type: boolean 1060 format: 1061 description: |- 1062 Format is an OpenAPI v3 format string. Unknown formats are ignored. 1063 For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using) 1064 https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go 1065 NOTE: Can only be set if type is string. 1066 type: string 1067 items: 1068 description: |- 1069 Items specifies fields of an array. 1070 NOTE: Can only be set if type is array. 1071 NOTE: This field uses PreserveUnknownFields and Schemaless, 1072 because recursive validation is not possible. 1073 x-kubernetes-preserve-unknown-fields: true 1074 maxItems: 1075 description: |- 1076 MaxItems is the max length of an array variable. 1077 NOTE: Can only be set if type is array. 1078 format: int64 1079 type: integer 1080 maxLength: 1081 description: |- 1082 MaxLength is the max length of a string variable. 1083 NOTE: Can only be set if type is string. 1084 format: int64 1085 type: integer 1086 maximum: 1087 description: |- 1088 Maximum is the maximum of an integer or number variable. 1089 If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum. 1090 If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum. 1091 NOTE: Can only be set if type is integer or number. 1092 format: int64 1093 type: integer 1094 minItems: 1095 description: |- 1096 MinItems is the min length of an array variable. 1097 NOTE: Can only be set if type is array. 1098 format: int64 1099 type: integer 1100 minLength: 1101 description: |- 1102 MinLength is the min length of a string variable. 1103 NOTE: Can only be set if type is string. 1104 format: int64 1105 type: integer 1106 minimum: 1107 description: |- 1108 Minimum is the minimum of an integer or number variable. 1109 If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum. 1110 If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum. 1111 NOTE: Can only be set if type is integer or number. 1112 format: int64 1113 type: integer 1114 pattern: 1115 description: |- 1116 Pattern is the regex which a string variable must match. 1117 NOTE: Can only be set if type is string. 1118 type: string 1119 properties: 1120 description: |- 1121 Properties specifies fields of an object. 1122 NOTE: Can only be set if type is object. 1123 NOTE: Properties is mutually exclusive with AdditionalProperties. 1124 NOTE: This field uses PreserveUnknownFields and Schemaless, 1125 because recursive validation is not possible. 1126 x-kubernetes-preserve-unknown-fields: true 1127 required: 1128 description: |- 1129 Required specifies which fields of an object are required. 1130 NOTE: Can only be set if type is object. 1131 items: 1132 type: string 1133 type: array 1134 type: 1135 description: |- 1136 Type is the type of the variable. 1137 Valid values are: object, array, string, integer, number or boolean. 1138 type: string 1139 uniqueItems: 1140 description: |- 1141 UniqueItems specifies if items in an array must be unique. 1142 NOTE: Can only be set if type is array. 1143 type: boolean 1144 x-kubernetes-preserve-unknown-fields: 1145 description: |- 1146 XPreserveUnknownFields allows setting fields in a variable object 1147 which are not defined in the variable schema. This affects fields recursively, 1148 except if nested properties or additionalProperties are specified in the schema. 1149 type: boolean 1150 required: 1151 - type 1152 type: object 1153 required: 1154 - openAPIV3Schema 1155 type: object 1156 required: 1157 - name 1158 - required 1159 - schema 1160 type: object 1161 type: array 1162 workers: 1163 description: |- 1164 Workers describes the worker nodes for the cluster. 1165 It is a collection of node types which can be used to create 1166 the worker nodes of the cluster. 1167 properties: 1168 machineDeployments: 1169 description: |- 1170 MachineDeployments is a list of machine deployment classes that can be used to create 1171 a set of worker nodes. 1172 items: 1173 description: |- 1174 MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster 1175 provisioned using the `ClusterClass`. 1176 properties: 1177 class: 1178 description: |- 1179 Class denotes a type of worker node present in the cluster, 1180 this name MUST be unique within a ClusterClass and can be referenced 1181 in the Cluster to create a managed MachineDeployment. 1182 type: string 1183 failureDomain: 1184 description: |- 1185 FailureDomain is the failure domain the machines will be created in. 1186 Must match a key in the FailureDomains map stored on the cluster object. 1187 NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. 1188 type: string 1189 machineHealthCheck: 1190 description: MachineHealthCheck defines a MachineHealthCheck 1191 for this MachineDeploymentClass. 1192 properties: 1193 maxUnhealthy: 1194 anyOf: 1195 - type: integer 1196 - type: string 1197 description: |- 1198 Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by 1199 "selector" are not healthy. 1200 x-kubernetes-int-or-string: true 1201 nodeStartupTimeout: 1202 description: |- 1203 Machines older than this duration without a node will be considered to have 1204 failed and will be remediated. 1205 If you wish to disable this feature, set the value explicitly to 0. 1206 type: string 1207 remediationTemplate: 1208 description: |- 1209 RemediationTemplate is a reference to a remediation template 1210 provided by an infrastructure provider. 1211 1212 1213 This field is completely optional, when filled, the MachineHealthCheck controller 1214 creates a new object from the template referenced and hands off remediation of the machine to 1215 a controller that lives outside of Cluster API. 1216 properties: 1217 apiVersion: 1218 description: API version of the referent. 1219 type: string 1220 fieldPath: 1221 description: |- 1222 If referring to a piece of an object instead of an entire object, this string 1223 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1224 For example, if the object reference is to a container within a pod, this would take on a value like: 1225 "spec.containers{name}" (where "name" refers to the name of the container that triggered 1226 the event) or if no container name is specified "spec.containers[2]" (container with 1227 index 2 in this pod). This syntax is chosen only to have some well-defined way of 1228 referencing a part of an object. 1229 TODO: this design is not final and this field is subject to change in the future. 1230 type: string 1231 kind: 1232 description: |- 1233 Kind of the referent. 1234 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 1235 type: string 1236 name: 1237 description: |- 1238 Name of the referent. 1239 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 1240 type: string 1241 namespace: 1242 description: |- 1243 Namespace of the referent. 1244 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 1245 type: string 1246 resourceVersion: 1247 description: |- 1248 Specific resourceVersion to which this reference is made, if any. 1249 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 1250 type: string 1251 uid: 1252 description: |- 1253 UID of the referent. 1254 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 1255 type: string 1256 type: object 1257 x-kubernetes-map-type: atomic 1258 unhealthyConditions: 1259 description: |- 1260 UnhealthyConditions contains a list of the conditions that determine 1261 whether a node is considered unhealthy. The conditions are combined in a 1262 logical OR, i.e. if any of the conditions is met, the node is unhealthy. 1263 items: 1264 description: |- 1265 UnhealthyCondition represents a Node condition type and value with a timeout 1266 specified as a duration. When the named condition has been in the given 1267 status for at least the timeout value, a node is considered unhealthy. 1268 properties: 1269 status: 1270 minLength: 1 1271 type: string 1272 timeout: 1273 type: string 1274 type: 1275 minLength: 1 1276 type: string 1277 required: 1278 - status 1279 - timeout 1280 - type 1281 type: object 1282 type: array 1283 unhealthyRange: 1284 description: |- 1285 Any further remediation is only allowed if the number of machines selected by "selector" as not healthy 1286 is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy. 1287 Eg. "[3-5]" - This means that remediation will be allowed only when: 1288 (a) there are at least 3 unhealthy machines (and) 1289 (b) there are at most 5 unhealthy machines 1290 pattern: ^\[[0-9]+-[0-9]+\]$ 1291 type: string 1292 type: object 1293 minReadySeconds: 1294 description: |- 1295 Minimum number of seconds for which a newly created machine should 1296 be ready. 1297 Defaults to 0 (machine will be considered available as soon as it 1298 is ready) 1299 NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. 1300 format: int32 1301 type: integer 1302 namingStrategy: 1303 description: NamingStrategy allows changing the naming pattern 1304 used when creating the MachineDeployment. 1305 properties: 1306 template: 1307 description: |- 1308 Template defines the template to use for generating the name of the MachineDeployment object. 1309 If not defined, it will fallback to `{{ .cluster.name }}-{{ .machineDeployment.topologyName }}-{{ .random }}`. 1310 If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will 1311 get concatenated with a random suffix of length 5. 1312 The templating mechanism provides the following arguments: 1313 * `.cluster.name`: The name of the cluster object. 1314 * `.random`: A random alphanumeric string, without vowels, of length 5. 1315 * `.machineDeployment.topologyName`: The name of the MachineDeployment topology (Cluster.spec.topology.workers.machineDeployments[].name). 1316 type: string 1317 type: object 1318 nodeDeletionTimeout: 1319 description: |- 1320 NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine 1321 hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. 1322 Defaults to 10 seconds. 1323 NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. 1324 type: string 1325 nodeDrainTimeout: 1326 description: |- 1327 NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. 1328 The default value is 0, meaning that the node can be drained without any time limitations. 1329 NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` 1330 NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. 1331 type: string 1332 nodeVolumeDetachTimeout: 1333 description: |- 1334 NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes 1335 to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. 1336 NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. 1337 type: string 1338 strategy: 1339 description: |- 1340 The deployment strategy to use to replace existing machines with 1341 new ones. 1342 NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. 1343 properties: 1344 rollingUpdate: 1345 description: |- 1346 Rolling update config params. Present only if 1347 MachineDeploymentStrategyType = RollingUpdate. 1348 properties: 1349 deletePolicy: 1350 description: |- 1351 DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. 1352 Valid values are "Random, "Newest", "Oldest" 1353 When no value is supplied, the default DeletePolicy of MachineSet is used 1354 enum: 1355 - Random 1356 - Newest 1357 - Oldest 1358 type: string 1359 maxSurge: 1360 anyOf: 1361 - type: integer 1362 - type: string 1363 description: |- 1364 The maximum number of machines that can be scheduled above the 1365 desired number of machines. 1366 Value can be an absolute number (ex: 5) or a percentage of 1367 desired machines (ex: 10%). 1368 This can not be 0 if MaxUnavailable is 0. 1369 Absolute number is calculated from percentage by rounding up. 1370 Defaults to 1. 1371 Example: when this is set to 30%, the new MachineSet can be scaled 1372 up immediately when the rolling update starts, such that the total 1373 number of old and new machines do not exceed 130% of desired 1374 machines. Once old machines have been killed, new MachineSet can 1375 be scaled up further, ensuring that total number of machines running 1376 at any time during the update is at most 130% of desired machines. 1377 x-kubernetes-int-or-string: true 1378 maxUnavailable: 1379 anyOf: 1380 - type: integer 1381 - type: string 1382 description: |- 1383 The maximum number of machines that can be unavailable during the update. 1384 Value can be an absolute number (ex: 5) or a percentage of desired 1385 machines (ex: 10%). 1386 Absolute number is calculated from percentage by rounding down. 1387 This can not be 0 if MaxSurge is 0. 1388 Defaults to 0. 1389 Example: when this is set to 30%, the old MachineSet can be scaled 1390 down to 70% of desired machines immediately when the rolling update 1391 starts. Once new machines are ready, old MachineSet can be scaled 1392 down further, followed by scaling up the new MachineSet, ensuring 1393 that the total number of machines available at all times 1394 during the update is at least 70% of desired machines. 1395 x-kubernetes-int-or-string: true 1396 type: object 1397 type: 1398 description: |- 1399 Type of deployment. Allowed values are RollingUpdate and OnDelete. 1400 The default is RollingUpdate. 1401 enum: 1402 - RollingUpdate 1403 - OnDelete 1404 type: string 1405 type: object 1406 template: 1407 description: |- 1408 Template is a local struct containing a collection of templates for creation of 1409 MachineDeployment objects representing a set of worker nodes. 1410 properties: 1411 bootstrap: 1412 description: |- 1413 Bootstrap contains the bootstrap template reference to be used 1414 for the creation of worker Machines. 1415 properties: 1416 ref: 1417 description: |- 1418 Ref is a required reference to a custom resource 1419 offered by a provider. 1420 properties: 1421 apiVersion: 1422 description: API version of the referent. 1423 type: string 1424 fieldPath: 1425 description: |- 1426 If referring to a piece of an object instead of an entire object, this string 1427 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1428 For example, if the object reference is to a container within a pod, this would take on a value like: 1429 "spec.containers{name}" (where "name" refers to the name of the container that triggered 1430 the event) or if no container name is specified "spec.containers[2]" (container with 1431 index 2 in this pod). This syntax is chosen only to have some well-defined way of 1432 referencing a part of an object. 1433 TODO: this design is not final and this field is subject to change in the future. 1434 type: string 1435 kind: 1436 description: |- 1437 Kind of the referent. 1438 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 1439 type: string 1440 name: 1441 description: |- 1442 Name of the referent. 1443 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 1444 type: string 1445 namespace: 1446 description: |- 1447 Namespace of the referent. 1448 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 1449 type: string 1450 resourceVersion: 1451 description: |- 1452 Specific resourceVersion to which this reference is made, if any. 1453 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 1454 type: string 1455 uid: 1456 description: |- 1457 UID of the referent. 1458 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 1459 type: string 1460 type: object 1461 x-kubernetes-map-type: atomic 1462 required: 1463 - ref 1464 type: object 1465 infrastructure: 1466 description: |- 1467 Infrastructure contains the infrastructure template reference to be used 1468 for the creation of worker Machines. 1469 properties: 1470 ref: 1471 description: |- 1472 Ref is a required reference to a custom resource 1473 offered by a provider. 1474 properties: 1475 apiVersion: 1476 description: API version of the referent. 1477 type: string 1478 fieldPath: 1479 description: |- 1480 If referring to a piece of an object instead of an entire object, this string 1481 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1482 For example, if the object reference is to a container within a pod, this would take on a value like: 1483 "spec.containers{name}" (where "name" refers to the name of the container that triggered 1484 the event) or if no container name is specified "spec.containers[2]" (container with 1485 index 2 in this pod). This syntax is chosen only to have some well-defined way of 1486 referencing a part of an object. 1487 TODO: this design is not final and this field is subject to change in the future. 1488 type: string 1489 kind: 1490 description: |- 1491 Kind of the referent. 1492 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 1493 type: string 1494 name: 1495 description: |- 1496 Name of the referent. 1497 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 1498 type: string 1499 namespace: 1500 description: |- 1501 Namespace of the referent. 1502 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 1503 type: string 1504 resourceVersion: 1505 description: |- 1506 Specific resourceVersion to which this reference is made, if any. 1507 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 1508 type: string 1509 uid: 1510 description: |- 1511 UID of the referent. 1512 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 1513 type: string 1514 type: object 1515 x-kubernetes-map-type: atomic 1516 required: 1517 - ref 1518 type: object 1519 metadata: 1520 description: |- 1521 Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. 1522 At runtime this metadata is merged with the corresponding metadata from the topology. 1523 properties: 1524 annotations: 1525 additionalProperties: 1526 type: string 1527 description: |- 1528 Annotations is an unstructured key value map stored with a resource that may be 1529 set by external tools to store and retrieve arbitrary metadata. They are not 1530 queryable and should be preserved when modifying objects. 1531 More info: http://kubernetes.io/docs/user-guide/annotations 1532 type: object 1533 labels: 1534 additionalProperties: 1535 type: string 1536 description: |- 1537 Map of string keys and values that can be used to organize and categorize 1538 (scope and select) objects. May match selectors of replication controllers 1539 and services. 1540 More info: http://kubernetes.io/docs/user-guide/labels 1541 type: object 1542 type: object 1543 required: 1544 - bootstrap 1545 - infrastructure 1546 type: object 1547 required: 1548 - class 1549 - template 1550 type: object 1551 type: array 1552 machinePools: 1553 description: |- 1554 MachinePools is a list of machine pool classes that can be used to create 1555 a set of worker nodes. 1556 items: 1557 description: |- 1558 MachinePoolClass serves as a template to define a pool of worker nodes of the cluster 1559 provisioned using `ClusterClass`. 1560 properties: 1561 class: 1562 description: |- 1563 Class denotes a type of machine pool present in the cluster, 1564 this name MUST be unique within a ClusterClass and can be referenced 1565 in the Cluster to create a managed MachinePool. 1566 type: string 1567 failureDomains: 1568 description: |- 1569 FailureDomains is the list of failure domains the MachinePool should be attached to. 1570 Must match a key in the FailureDomains map stored on the cluster object. 1571 NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. 1572 items: 1573 type: string 1574 type: array 1575 minReadySeconds: 1576 description: |- 1577 Minimum number of seconds for which a newly created machine pool should 1578 be ready. 1579 Defaults to 0 (machine will be considered available as soon as it 1580 is ready) 1581 NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. 1582 format: int32 1583 type: integer 1584 namingStrategy: 1585 description: NamingStrategy allows changing the naming pattern 1586 used when creating the MachinePool. 1587 properties: 1588 template: 1589 description: |- 1590 Template defines the template to use for generating the name of the MachinePool object. 1591 If not defined, it will fallback to `{{ .cluster.name }}-{{ .machinePool.topologyName }}-{{ .random }}`. 1592 If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will 1593 get concatenated with a random suffix of length 5. 1594 The templating mechanism provides the following arguments: 1595 * `.cluster.name`: The name of the cluster object. 1596 * `.random`: A random alphanumeric string, without vowels, of length 5. 1597 * `.machinePool.topologyName`: The name of the MachinePool topology (Cluster.spec.topology.workers.machinePools[].name). 1598 type: string 1599 type: object 1600 nodeDeletionTimeout: 1601 description: |- 1602 NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine 1603 hosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely. 1604 Defaults to 10 seconds. 1605 NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. 1606 type: string 1607 nodeDrainTimeout: 1608 description: |- 1609 NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. 1610 The default value is 0, meaning that the node can be drained without any time limitations. 1611 NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` 1612 NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. 1613 type: string 1614 nodeVolumeDetachTimeout: 1615 description: |- 1616 NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes 1617 to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. 1618 NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. 1619 type: string 1620 template: 1621 description: |- 1622 Template is a local struct containing a collection of templates for creation of 1623 MachinePools objects representing a pool of worker nodes. 1624 properties: 1625 bootstrap: 1626 description: |- 1627 Bootstrap contains the bootstrap template reference to be used 1628 for the creation of the Machines in the MachinePool. 1629 properties: 1630 ref: 1631 description: |- 1632 Ref is a required reference to a custom resource 1633 offered by a provider. 1634 properties: 1635 apiVersion: 1636 description: API version of the referent. 1637 type: string 1638 fieldPath: 1639 description: |- 1640 If referring to a piece of an object instead of an entire object, this string 1641 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1642 For example, if the object reference is to a container within a pod, this would take on a value like: 1643 "spec.containers{name}" (where "name" refers to the name of the container that triggered 1644 the event) or if no container name is specified "spec.containers[2]" (container with 1645 index 2 in this pod). This syntax is chosen only to have some well-defined way of 1646 referencing a part of an object. 1647 TODO: this design is not final and this field is subject to change in the future. 1648 type: string 1649 kind: 1650 description: |- 1651 Kind of the referent. 1652 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 1653 type: string 1654 name: 1655 description: |- 1656 Name of the referent. 1657 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 1658 type: string 1659 namespace: 1660 description: |- 1661 Namespace of the referent. 1662 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 1663 type: string 1664 resourceVersion: 1665 description: |- 1666 Specific resourceVersion to which this reference is made, if any. 1667 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 1668 type: string 1669 uid: 1670 description: |- 1671 UID of the referent. 1672 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 1673 type: string 1674 type: object 1675 x-kubernetes-map-type: atomic 1676 required: 1677 - ref 1678 type: object 1679 infrastructure: 1680 description: |- 1681 Infrastructure contains the infrastructure template reference to be used 1682 for the creation of the MachinePool. 1683 properties: 1684 ref: 1685 description: |- 1686 Ref is a required reference to a custom resource 1687 offered by a provider. 1688 properties: 1689 apiVersion: 1690 description: API version of the referent. 1691 type: string 1692 fieldPath: 1693 description: |- 1694 If referring to a piece of an object instead of an entire object, this string 1695 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1696 For example, if the object reference is to a container within a pod, this would take on a value like: 1697 "spec.containers{name}" (where "name" refers to the name of the container that triggered 1698 the event) or if no container name is specified "spec.containers[2]" (container with 1699 index 2 in this pod). This syntax is chosen only to have some well-defined way of 1700 referencing a part of an object. 1701 TODO: this design is not final and this field is subject to change in the future. 1702 type: string 1703 kind: 1704 description: |- 1705 Kind of the referent. 1706 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 1707 type: string 1708 name: 1709 description: |- 1710 Name of the referent. 1711 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 1712 type: string 1713 namespace: 1714 description: |- 1715 Namespace of the referent. 1716 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 1717 type: string 1718 resourceVersion: 1719 description: |- 1720 Specific resourceVersion to which this reference is made, if any. 1721 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 1722 type: string 1723 uid: 1724 description: |- 1725 UID of the referent. 1726 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 1727 type: string 1728 type: object 1729 x-kubernetes-map-type: atomic 1730 required: 1731 - ref 1732 type: object 1733 metadata: 1734 description: |- 1735 Metadata is the metadata applied to the MachinePool. 1736 At runtime this metadata is merged with the corresponding metadata from the topology. 1737 properties: 1738 annotations: 1739 additionalProperties: 1740 type: string 1741 description: |- 1742 Annotations is an unstructured key value map stored with a resource that may be 1743 set by external tools to store and retrieve arbitrary metadata. They are not 1744 queryable and should be preserved when modifying objects. 1745 More info: http://kubernetes.io/docs/user-guide/annotations 1746 type: object 1747 labels: 1748 additionalProperties: 1749 type: string 1750 description: |- 1751 Map of string keys and values that can be used to organize and categorize 1752 (scope and select) objects. May match selectors of replication controllers 1753 and services. 1754 More info: http://kubernetes.io/docs/user-guide/labels 1755 type: object 1756 type: object 1757 required: 1758 - bootstrap 1759 - infrastructure 1760 type: object 1761 required: 1762 - class 1763 - template 1764 type: object 1765 type: array 1766 type: object 1767 type: object 1768 status: 1769 description: ClusterClassStatus defines the observed state of the ClusterClass. 1770 properties: 1771 conditions: 1772 description: Conditions defines current observed state of the ClusterClass. 1773 items: 1774 description: Condition defines an observation of a Cluster API resource 1775 operational state. 1776 properties: 1777 lastTransitionTime: 1778 description: |- 1779 Last time the condition transitioned from one status to another. 1780 This should be when the underlying condition changed. If that is not known, then using the time when 1781 the API field changed is acceptable. 1782 format: date-time 1783 type: string 1784 message: 1785 description: |- 1786 A human readable message indicating details about the transition. 1787 This field may be empty. 1788 type: string 1789 reason: 1790 description: |- 1791 The reason for the condition's last transition in CamelCase. 1792 The specific API may choose whether or not this field is considered a guaranteed API. 1793 This field may not be empty. 1794 type: string 1795 severity: 1796 description: |- 1797 Severity provides an explicit classification of Reason code, so the users or machines can immediately 1798 understand the current situation and act accordingly. 1799 The Severity field MUST be set only when Status=False. 1800 type: string 1801 status: 1802 description: Status of the condition, one of True, False, Unknown. 1803 type: string 1804 type: 1805 description: |- 1806 Type of condition in CamelCase or in foo.example.com/CamelCase. 1807 Many .condition.type values are consistent across resources like Available, but because arbitrary conditions 1808 can be useful (see .node.status.conditions), the ability to deconflict is important. 1809 type: string 1810 required: 1811 - lastTransitionTime 1812 - status 1813 - type 1814 type: object 1815 type: array 1816 observedGeneration: 1817 description: ObservedGeneration is the latest generation observed 1818 by the controller. 1819 format: int64 1820 type: integer 1821 variables: 1822 description: Variables is a list of ClusterClassStatusVariable that 1823 are defined for the ClusterClass. 1824 items: 1825 description: ClusterClassStatusVariable defines a variable which 1826 appears in the status of a ClusterClass. 1827 properties: 1828 definitions: 1829 description: Definitions is a list of definitions for a variable. 1830 items: 1831 description: ClusterClassStatusVariableDefinition defines 1832 a variable which appears in the status of a ClusterClass. 1833 properties: 1834 from: 1835 description: |- 1836 From specifies the origin of the variable definition. 1837 This will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass 1838 for variables discovered from a DiscoverVariables runtime extensions. 1839 type: string 1840 metadata: 1841 description: |- 1842 Metadata is the metadata of a variable. 1843 It can be used to add additional data for higher level tools to 1844 a ClusterClassVariable. 1845 properties: 1846 annotations: 1847 additionalProperties: 1848 type: string 1849 description: |- 1850 Annotations is an unstructured key value map that can be used to store and 1851 retrieve arbitrary metadata. 1852 They are not queryable. 1853 type: object 1854 labels: 1855 additionalProperties: 1856 type: string 1857 description: |- 1858 Map of string keys and values that can be used to organize and categorize 1859 (scope and select) variables. 1860 type: object 1861 type: object 1862 required: 1863 description: |- 1864 Required specifies if the variable is required. 1865 Note: this applies to the variable as a whole and thus the 1866 top-level object defined in the schema. If nested fields are 1867 required, this will be specified inside the schema. 1868 type: boolean 1869 schema: 1870 description: Schema defines the schema of the variable. 1871 properties: 1872 openAPIV3Schema: 1873 description: |- 1874 OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 1875 schema. The schema is a subset of the schema used in 1876 Kubernetes CRDs. 1877 properties: 1878 additionalProperties: 1879 description: |- 1880 AdditionalProperties specifies the schema of values in a map (keys are always strings). 1881 NOTE: Can only be set if type is object. 1882 NOTE: AdditionalProperties is mutually exclusive with Properties. 1883 NOTE: This field uses PreserveUnknownFields and Schemaless, 1884 because recursive validation is not possible. 1885 x-kubernetes-preserve-unknown-fields: true 1886 default: 1887 description: |- 1888 Default is the default value of the variable. 1889 NOTE: Can be set for all types. 1890 x-kubernetes-preserve-unknown-fields: true 1891 description: 1892 description: Description is a human-readable description 1893 of this variable. 1894 type: string 1895 enum: 1896 description: |- 1897 Enum is the list of valid values of the variable. 1898 NOTE: Can be set for all types. 1899 items: 1900 x-kubernetes-preserve-unknown-fields: true 1901 type: array 1902 example: 1903 description: Example is an example for this variable. 1904 x-kubernetes-preserve-unknown-fields: true 1905 exclusiveMaximum: 1906 description: |- 1907 ExclusiveMaximum specifies if the Maximum is exclusive. 1908 NOTE: Can only be set if type is integer or number. 1909 type: boolean 1910 exclusiveMinimum: 1911 description: |- 1912 ExclusiveMinimum specifies if the Minimum is exclusive. 1913 NOTE: Can only be set if type is integer or number. 1914 type: boolean 1915 format: 1916 description: |- 1917 Format is an OpenAPI v3 format string. Unknown formats are ignored. 1918 For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using) 1919 https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go 1920 NOTE: Can only be set if type is string. 1921 type: string 1922 items: 1923 description: |- 1924 Items specifies fields of an array. 1925 NOTE: Can only be set if type is array. 1926 NOTE: This field uses PreserveUnknownFields and Schemaless, 1927 because recursive validation is not possible. 1928 x-kubernetes-preserve-unknown-fields: true 1929 maxItems: 1930 description: |- 1931 MaxItems is the max length of an array variable. 1932 NOTE: Can only be set if type is array. 1933 format: int64 1934 type: integer 1935 maxLength: 1936 description: |- 1937 MaxLength is the max length of a string variable. 1938 NOTE: Can only be set if type is string. 1939 format: int64 1940 type: integer 1941 maximum: 1942 description: |- 1943 Maximum is the maximum of an integer or number variable. 1944 If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum. 1945 If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum. 1946 NOTE: Can only be set if type is integer or number. 1947 format: int64 1948 type: integer 1949 minItems: 1950 description: |- 1951 MinItems is the min length of an array variable. 1952 NOTE: Can only be set if type is array. 1953 format: int64 1954 type: integer 1955 minLength: 1956 description: |- 1957 MinLength is the min length of a string variable. 1958 NOTE: Can only be set if type is string. 1959 format: int64 1960 type: integer 1961 minimum: 1962 description: |- 1963 Minimum is the minimum of an integer or number variable. 1964 If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum. 1965 If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum. 1966 NOTE: Can only be set if type is integer or number. 1967 format: int64 1968 type: integer 1969 pattern: 1970 description: |- 1971 Pattern is the regex which a string variable must match. 1972 NOTE: Can only be set if type is string. 1973 type: string 1974 properties: 1975 description: |- 1976 Properties specifies fields of an object. 1977 NOTE: Can only be set if type is object. 1978 NOTE: Properties is mutually exclusive with AdditionalProperties. 1979 NOTE: This field uses PreserveUnknownFields and Schemaless, 1980 because recursive validation is not possible. 1981 x-kubernetes-preserve-unknown-fields: true 1982 required: 1983 description: |- 1984 Required specifies which fields of an object are required. 1985 NOTE: Can only be set if type is object. 1986 items: 1987 type: string 1988 type: array 1989 type: 1990 description: |- 1991 Type is the type of the variable. 1992 Valid values are: object, array, string, integer, number or boolean. 1993 type: string 1994 uniqueItems: 1995 description: |- 1996 UniqueItems specifies if items in an array must be unique. 1997 NOTE: Can only be set if type is array. 1998 type: boolean 1999 x-kubernetes-preserve-unknown-fields: 2000 description: |- 2001 XPreserveUnknownFields allows setting fields in a variable object 2002 which are not defined in the variable schema. This affects fields recursively, 2003 except if nested properties or additionalProperties are specified in the schema. 2004 type: boolean 2005 required: 2006 - type 2007 type: object 2008 required: 2009 - openAPIV3Schema 2010 type: object 2011 required: 2012 - from 2013 - required 2014 - schema 2015 type: object 2016 type: array 2017 definitionsConflict: 2018 description: DefinitionsConflict specifies whether or not there 2019 are conflicting definitions for a single variable name. 2020 type: boolean 2021 name: 2022 description: Name is the name of the variable. 2023 type: string 2024 required: 2025 - definitions 2026 - name 2027 type: object 2028 type: array 2029 type: object 2030 type: object 2031 served: true 2032 storage: true 2033 subresources: 2034 status: {}