sigs.k8s.io/cluster-api@v1.7.1/config/crd/bases/cluster.x-k8s.io_clusters.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: clusters.cluster.x-k8s.io 8 spec: 9 group: cluster.x-k8s.io 10 names: 11 categories: 12 - cluster-api 13 kind: Cluster 14 listKind: ClusterList 15 plural: clusters 16 shortNames: 17 - cl 18 singular: cluster 19 scope: Namespaced 20 versions: 21 - additionalPrinterColumns: 22 - description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed 23 jsonPath: .status.phase 24 name: Phase 25 type: string 26 deprecated: true 27 name: v1alpha3 28 schema: 29 openAPIV3Schema: 30 description: Cluster is the Schema for the clusters API. 31 properties: 32 apiVersion: 33 description: |- 34 APIVersion defines the versioned schema of this representation of an object. 35 Servers should convert recognized schemas to the latest internal value, and 36 may reject unrecognized values. 37 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources 38 type: string 39 kind: 40 description: |- 41 Kind is a string value representing the REST resource this object represents. 42 Servers may infer this from the endpoint the client submits requests to. 43 Cannot be updated. 44 In CamelCase. 45 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 46 type: string 47 metadata: 48 type: object 49 spec: 50 description: ClusterSpec defines the desired state of Cluster. 51 properties: 52 clusterNetwork: 53 description: Cluster network configuration. 54 properties: 55 apiServerPort: 56 description: |- 57 APIServerPort specifies the port the API Server should bind to. 58 Defaults to 6443. 59 format: int32 60 type: integer 61 pods: 62 description: The network ranges from which Pod networks are allocated. 63 properties: 64 cidrBlocks: 65 items: 66 type: string 67 type: array 68 required: 69 - cidrBlocks 70 type: object 71 serviceDomain: 72 description: Domain name for services. 73 type: string 74 services: 75 description: The network ranges from which service VIPs are allocated. 76 properties: 77 cidrBlocks: 78 items: 79 type: string 80 type: array 81 required: 82 - cidrBlocks 83 type: object 84 type: object 85 controlPlaneEndpoint: 86 description: ControlPlaneEndpoint represents the endpoint used to 87 communicate with the control plane. 88 properties: 89 host: 90 description: The hostname on which the API server is serving. 91 type: string 92 port: 93 description: The port on which the API server is serving. 94 format: int32 95 type: integer 96 required: 97 - host 98 - port 99 type: object 100 controlPlaneRef: 101 description: |- 102 ControlPlaneRef is an optional reference to a provider-specific resource that holds 103 the details for provisioning the Control Plane for a Cluster. 104 properties: 105 apiVersion: 106 description: API version of the referent. 107 type: string 108 fieldPath: 109 description: |- 110 If referring to a piece of an object instead of an entire object, this string 111 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 112 For example, if the object reference is to a container within a pod, this would take on a value like: 113 "spec.containers{name}" (where "name" refers to the name of the container that triggered 114 the event) or if no container name is specified "spec.containers[2]" (container with 115 index 2 in this pod). This syntax is chosen only to have some well-defined way of 116 referencing a part of an object. 117 TODO: this design is not final and this field is subject to change in the future. 118 type: string 119 kind: 120 description: |- 121 Kind of the referent. 122 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 123 type: string 124 name: 125 description: |- 126 Name of the referent. 127 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 128 type: string 129 namespace: 130 description: |- 131 Namespace of the referent. 132 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 133 type: string 134 resourceVersion: 135 description: |- 136 Specific resourceVersion to which this reference is made, if any. 137 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 138 type: string 139 uid: 140 description: |- 141 UID of the referent. 142 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 143 type: string 144 type: object 145 x-kubernetes-map-type: atomic 146 infrastructureRef: 147 description: |- 148 InfrastructureRef is a reference to a provider-specific resource that holds the details 149 for provisioning infrastructure for a cluster in said provider. 150 properties: 151 apiVersion: 152 description: API version of the referent. 153 type: string 154 fieldPath: 155 description: |- 156 If referring to a piece of an object instead of an entire object, this string 157 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 158 For example, if the object reference is to a container within a pod, this would take on a value like: 159 "spec.containers{name}" (where "name" refers to the name of the container that triggered 160 the event) or if no container name is specified "spec.containers[2]" (container with 161 index 2 in this pod). This syntax is chosen only to have some well-defined way of 162 referencing a part of an object. 163 TODO: this design is not final and this field is subject to change in the future. 164 type: string 165 kind: 166 description: |- 167 Kind of the referent. 168 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 169 type: string 170 name: 171 description: |- 172 Name of the referent. 173 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 174 type: string 175 namespace: 176 description: |- 177 Namespace of the referent. 178 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 179 type: string 180 resourceVersion: 181 description: |- 182 Specific resourceVersion to which this reference is made, if any. 183 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 184 type: string 185 uid: 186 description: |- 187 UID of the referent. 188 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 189 type: string 190 type: object 191 x-kubernetes-map-type: atomic 192 paused: 193 description: Paused can be used to prevent controllers from processing 194 the Cluster and all its associated objects. 195 type: boolean 196 type: object 197 status: 198 description: ClusterStatus defines the observed state of Cluster. 199 properties: 200 conditions: 201 description: Conditions defines current service state of the cluster. 202 items: 203 description: Condition defines an observation of a Cluster API resource 204 operational state. 205 properties: 206 lastTransitionTime: 207 description: |- 208 Last time the condition transitioned from one status to another. 209 This should be when the underlying condition changed. If that is not known, then using the time when 210 the API field changed is acceptable. 211 format: date-time 212 type: string 213 message: 214 description: |- 215 A human readable message indicating details about the transition. 216 This field may be empty. 217 type: string 218 reason: 219 description: |- 220 The reason for the condition's last transition in CamelCase. 221 The specific API may choose whether or not this field is considered a guaranteed API. 222 This field may not be empty. 223 type: string 224 severity: 225 description: |- 226 Severity provides an explicit classification of Reason code, so the users or machines can immediately 227 understand the current situation and act accordingly. 228 The Severity field MUST be set only when Status=False. 229 type: string 230 status: 231 description: Status of the condition, one of True, False, Unknown. 232 type: string 233 type: 234 description: |- 235 Type of condition in CamelCase or in foo.example.com/CamelCase. 236 Many .condition.type values are consistent across resources like Available, but because arbitrary conditions 237 can be useful (see .node.status.conditions), the ability to deconflict is important. 238 type: string 239 required: 240 - status 241 - type 242 type: object 243 type: array 244 controlPlaneInitialized: 245 description: ControlPlaneInitialized defines if the control plane 246 has been initialized. 247 type: boolean 248 controlPlaneReady: 249 description: ControlPlaneReady defines if the control plane is ready. 250 type: boolean 251 failureDomains: 252 additionalProperties: 253 description: |- 254 FailureDomainSpec is the Schema for Cluster API failure domains. 255 It allows controllers to understand how many failure domains a cluster can optionally span across. 256 properties: 257 attributes: 258 additionalProperties: 259 type: string 260 description: Attributes is a free form map of attributes an 261 infrastructure provider might use or require. 262 type: object 263 controlPlane: 264 description: ControlPlane determines if this failure domain 265 is suitable for use by control plane machines. 266 type: boolean 267 type: object 268 description: FailureDomains is a slice of failure domain objects synced 269 from the infrastructure provider. 270 type: object 271 failureMessage: 272 description: |- 273 FailureMessage indicates that there is a fatal problem reconciling the 274 state, and will be set to a descriptive error message. 275 type: string 276 failureReason: 277 description: |- 278 FailureReason indicates that there is a fatal problem reconciling the 279 state, and will be set to a token value suitable for 280 programmatic interpretation. 281 type: string 282 infrastructureReady: 283 description: InfrastructureReady is the state of the infrastructure 284 provider. 285 type: boolean 286 observedGeneration: 287 description: ObservedGeneration is the latest generation observed 288 by the controller. 289 format: int64 290 type: integer 291 phase: 292 description: |- 293 Phase represents the current phase of cluster actuation. 294 E.g. Pending, Running, Terminating, Failed etc. 295 type: string 296 type: object 297 type: object 298 served: false 299 storage: false 300 subresources: 301 status: {} 302 - additionalPrinterColumns: 303 - description: Time duration since creation of Cluster 304 jsonPath: .metadata.creationTimestamp 305 name: Age 306 type: date 307 - description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed 308 jsonPath: .status.phase 309 name: Phase 310 type: string 311 deprecated: true 312 name: v1alpha4 313 schema: 314 openAPIV3Schema: 315 description: |- 316 Cluster is the Schema for the clusters API. 317 318 319 Deprecated: This type will be removed in one of the next releases. 320 properties: 321 apiVersion: 322 description: |- 323 APIVersion defines the versioned schema of this representation of an object. 324 Servers should convert recognized schemas to the latest internal value, and 325 may reject unrecognized values. 326 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources 327 type: string 328 kind: 329 description: |- 330 Kind is a string value representing the REST resource this object represents. 331 Servers may infer this from the endpoint the client submits requests to. 332 Cannot be updated. 333 In CamelCase. 334 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 335 type: string 336 metadata: 337 type: object 338 spec: 339 description: ClusterSpec defines the desired state of Cluster. 340 properties: 341 clusterNetwork: 342 description: Cluster network configuration. 343 properties: 344 apiServerPort: 345 description: |- 346 APIServerPort specifies the port the API Server should bind to. 347 Defaults to 6443. 348 format: int32 349 type: integer 350 pods: 351 description: The network ranges from which Pod networks are allocated. 352 properties: 353 cidrBlocks: 354 items: 355 type: string 356 type: array 357 required: 358 - cidrBlocks 359 type: object 360 serviceDomain: 361 description: Domain name for services. 362 type: string 363 services: 364 description: The network ranges from which service VIPs are allocated. 365 properties: 366 cidrBlocks: 367 items: 368 type: string 369 type: array 370 required: 371 - cidrBlocks 372 type: object 373 type: object 374 controlPlaneEndpoint: 375 description: ControlPlaneEndpoint represents the endpoint used to 376 communicate with the control plane. 377 properties: 378 host: 379 description: The hostname on which the API server is serving. 380 type: string 381 port: 382 description: The port on which the API server is serving. 383 format: int32 384 type: integer 385 required: 386 - host 387 - port 388 type: object 389 controlPlaneRef: 390 description: |- 391 ControlPlaneRef is an optional reference to a provider-specific resource that holds 392 the details for provisioning the Control Plane for a Cluster. 393 properties: 394 apiVersion: 395 description: API version of the referent. 396 type: string 397 fieldPath: 398 description: |- 399 If referring to a piece of an object instead of an entire object, this string 400 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 401 For example, if the object reference is to a container within a pod, this would take on a value like: 402 "spec.containers{name}" (where "name" refers to the name of the container that triggered 403 the event) or if no container name is specified "spec.containers[2]" (container with 404 index 2 in this pod). This syntax is chosen only to have some well-defined way of 405 referencing a part of an object. 406 TODO: this design is not final and this field is subject to change in the future. 407 type: string 408 kind: 409 description: |- 410 Kind of the referent. 411 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 412 type: string 413 name: 414 description: |- 415 Name of the referent. 416 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 417 type: string 418 namespace: 419 description: |- 420 Namespace of the referent. 421 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 422 type: string 423 resourceVersion: 424 description: |- 425 Specific resourceVersion to which this reference is made, if any. 426 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 427 type: string 428 uid: 429 description: |- 430 UID of the referent. 431 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 432 type: string 433 type: object 434 x-kubernetes-map-type: atomic 435 infrastructureRef: 436 description: |- 437 InfrastructureRef is a reference to a provider-specific resource that holds the details 438 for provisioning infrastructure for a cluster in said provider. 439 properties: 440 apiVersion: 441 description: API version of the referent. 442 type: string 443 fieldPath: 444 description: |- 445 If referring to a piece of an object instead of an entire object, this string 446 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 447 For example, if the object reference is to a container within a pod, this would take on a value like: 448 "spec.containers{name}" (where "name" refers to the name of the container that triggered 449 the event) or if no container name is specified "spec.containers[2]" (container with 450 index 2 in this pod). This syntax is chosen only to have some well-defined way of 451 referencing a part of an object. 452 TODO: this design is not final and this field is subject to change in the future. 453 type: string 454 kind: 455 description: |- 456 Kind of the referent. 457 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 458 type: string 459 name: 460 description: |- 461 Name of the referent. 462 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 463 type: string 464 namespace: 465 description: |- 466 Namespace of the referent. 467 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 468 type: string 469 resourceVersion: 470 description: |- 471 Specific resourceVersion to which this reference is made, if any. 472 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 473 type: string 474 uid: 475 description: |- 476 UID of the referent. 477 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 478 type: string 479 type: object 480 x-kubernetes-map-type: atomic 481 paused: 482 description: Paused can be used to prevent controllers from processing 483 the Cluster and all its associated objects. 484 type: boolean 485 topology: 486 description: |- 487 This encapsulates the topology for the cluster. 488 NOTE: It is required to enable the ClusterTopology 489 feature gate flag to activate managed topologies support; 490 this feature is highly experimental, and parts of it might still be not implemented. 491 properties: 492 class: 493 description: The name of the ClusterClass object to create the 494 topology. 495 type: string 496 controlPlane: 497 description: ControlPlane describes the cluster control plane. 498 properties: 499 metadata: 500 description: |- 501 Metadata is the metadata applied to the machines of the ControlPlane. 502 At runtime this metadata is merged with the corresponding metadata from the ClusterClass. 503 504 505 This field is supported if and only if the control plane provider template 506 referenced in the ClusterClass is Machine based. 507 properties: 508 annotations: 509 additionalProperties: 510 type: string 511 description: |- 512 Annotations is an unstructured key value map stored with a resource that may be 513 set by external tools to store and retrieve arbitrary metadata. They are not 514 queryable and should be preserved when modifying objects. 515 More info: http://kubernetes.io/docs/user-guide/annotations 516 type: object 517 labels: 518 additionalProperties: 519 type: string 520 description: |- 521 Map of string keys and values that can be used to organize and categorize 522 (scope and select) objects. May match selectors of replication controllers 523 and services. 524 More info: http://kubernetes.io/docs/user-guide/labels 525 type: object 526 type: object 527 replicas: 528 description: |- 529 Replicas is the number of control plane nodes. 530 If the value is nil, the ControlPlane object is created without the number of Replicas 531 and it's assumed that the control plane controller does not implement support for this field. 532 When specified against a control plane provider that lacks support for this field, this value will be ignored. 533 format: int32 534 type: integer 535 type: object 536 rolloutAfter: 537 description: |- 538 RolloutAfter performs a rollout of the entire cluster one component at a time, 539 control plane first and then machine deployments. 540 format: date-time 541 type: string 542 version: 543 description: The Kubernetes version of the cluster. 544 type: string 545 workers: 546 description: |- 547 Workers encapsulates the different constructs that form the worker nodes 548 for the cluster. 549 properties: 550 machineDeployments: 551 description: MachineDeployments is a list of machine deployments 552 in the cluster. 553 items: 554 description: |- 555 MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology. 556 This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller. 557 properties: 558 class: 559 description: |- 560 Class is the name of the MachineDeploymentClass used to create the set of worker nodes. 561 This should match one of the deployment classes defined in the ClusterClass object 562 mentioned in the `Cluster.Spec.Class` field. 563 type: string 564 metadata: 565 description: |- 566 Metadata is the metadata applied to the machines of the MachineDeployment. 567 At runtime this metadata is merged with the corresponding metadata from the ClusterClass. 568 properties: 569 annotations: 570 additionalProperties: 571 type: string 572 description: |- 573 Annotations is an unstructured key value map stored with a resource that may be 574 set by external tools to store and retrieve arbitrary metadata. They are not 575 queryable and should be preserved when modifying objects. 576 More info: http://kubernetes.io/docs/user-guide/annotations 577 type: object 578 labels: 579 additionalProperties: 580 type: string 581 description: |- 582 Map of string keys and values that can be used to organize and categorize 583 (scope and select) objects. May match selectors of replication controllers 584 and services. 585 More info: http://kubernetes.io/docs/user-guide/labels 586 type: object 587 type: object 588 name: 589 description: |- 590 Name is the unique identifier for this MachineDeploymentTopology. 591 The value is used with other unique identifiers to create a MachineDeployment's Name 592 (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, 593 the values are hashed together. 594 type: string 595 replicas: 596 description: |- 597 Replicas is the number of worker nodes belonging to this set. 598 If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to zero) 599 and it's assumed that an external entity (like cluster autoscaler) is responsible for the management 600 of this value. 601 format: int32 602 type: integer 603 required: 604 - class 605 - name 606 type: object 607 type: array 608 type: object 609 required: 610 - class 611 - version 612 type: object 613 type: object 614 status: 615 description: ClusterStatus defines the observed state of Cluster. 616 properties: 617 conditions: 618 description: Conditions defines current service state of the cluster. 619 items: 620 description: Condition defines an observation of a Cluster API resource 621 operational state. 622 properties: 623 lastTransitionTime: 624 description: |- 625 Last time the condition transitioned from one status to another. 626 This should be when the underlying condition changed. If that is not known, then using the time when 627 the API field changed is acceptable. 628 format: date-time 629 type: string 630 message: 631 description: |- 632 A human readable message indicating details about the transition. 633 This field may be empty. 634 type: string 635 reason: 636 description: |- 637 The reason for the condition's last transition in CamelCase. 638 The specific API may choose whether or not this field is considered a guaranteed API. 639 This field may not be empty. 640 type: string 641 severity: 642 description: |- 643 Severity provides an explicit classification of Reason code, so the users or machines can immediately 644 understand the current situation and act accordingly. 645 The Severity field MUST be set only when Status=False. 646 type: string 647 status: 648 description: Status of the condition, one of True, False, Unknown. 649 type: string 650 type: 651 description: |- 652 Type of condition in CamelCase or in foo.example.com/CamelCase. 653 Many .condition.type values are consistent across resources like Available, but because arbitrary conditions 654 can be useful (see .node.status.conditions), the ability to deconflict is important. 655 type: string 656 required: 657 - status 658 - type 659 type: object 660 type: array 661 controlPlaneReady: 662 description: ControlPlaneReady defines if the control plane is ready. 663 type: boolean 664 failureDomains: 665 additionalProperties: 666 description: |- 667 FailureDomainSpec is the Schema for Cluster API failure domains. 668 It allows controllers to understand how many failure domains a cluster can optionally span across. 669 properties: 670 attributes: 671 additionalProperties: 672 type: string 673 description: Attributes is a free form map of attributes an 674 infrastructure provider might use or require. 675 type: object 676 controlPlane: 677 description: ControlPlane determines if this failure domain 678 is suitable for use by control plane machines. 679 type: boolean 680 type: object 681 description: FailureDomains is a slice of failure domain objects synced 682 from the infrastructure provider. 683 type: object 684 failureMessage: 685 description: |- 686 FailureMessage indicates that there is a fatal problem reconciling the 687 state, and will be set to a descriptive error message. 688 type: string 689 failureReason: 690 description: |- 691 FailureReason indicates that there is a fatal problem reconciling the 692 state, and will be set to a token value suitable for 693 programmatic interpretation. 694 type: string 695 infrastructureReady: 696 description: InfrastructureReady is the state of the infrastructure 697 provider. 698 type: boolean 699 observedGeneration: 700 description: ObservedGeneration is the latest generation observed 701 by the controller. 702 format: int64 703 type: integer 704 phase: 705 description: |- 706 Phase represents the current phase of cluster actuation. 707 E.g. Pending, Running, Terminating, Failed etc. 708 type: string 709 type: object 710 type: object 711 served: false 712 storage: false 713 subresources: 714 status: {} 715 - additionalPrinterColumns: 716 - description: ClusterClass of this Cluster, empty if the Cluster is not using 717 a ClusterClass 718 jsonPath: .spec.topology.class 719 name: ClusterClass 720 type: string 721 - description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed 722 jsonPath: .status.phase 723 name: Phase 724 type: string 725 - description: Time duration since creation of Cluster 726 jsonPath: .metadata.creationTimestamp 727 name: Age 728 type: date 729 - description: Kubernetes version associated with this Cluster 730 jsonPath: .spec.topology.version 731 name: Version 732 type: string 733 name: v1beta1 734 schema: 735 openAPIV3Schema: 736 description: Cluster is the Schema for the clusters API. 737 properties: 738 apiVersion: 739 description: |- 740 APIVersion defines the versioned schema of this representation of an object. 741 Servers should convert recognized schemas to the latest internal value, and 742 may reject unrecognized values. 743 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources 744 type: string 745 kind: 746 description: |- 747 Kind is a string value representing the REST resource this object represents. 748 Servers may infer this from the endpoint the client submits requests to. 749 Cannot be updated. 750 In CamelCase. 751 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 752 type: string 753 metadata: 754 type: object 755 spec: 756 description: ClusterSpec defines the desired state of Cluster. 757 properties: 758 clusterNetwork: 759 description: Cluster network configuration. 760 properties: 761 apiServerPort: 762 description: |- 763 APIServerPort specifies the port the API Server should bind to. 764 Defaults to 6443. 765 format: int32 766 type: integer 767 pods: 768 description: The network ranges from which Pod networks are allocated. 769 properties: 770 cidrBlocks: 771 items: 772 type: string 773 type: array 774 required: 775 - cidrBlocks 776 type: object 777 serviceDomain: 778 description: Domain name for services. 779 type: string 780 services: 781 description: The network ranges from which service VIPs are allocated. 782 properties: 783 cidrBlocks: 784 items: 785 type: string 786 type: array 787 required: 788 - cidrBlocks 789 type: object 790 type: object 791 controlPlaneEndpoint: 792 description: ControlPlaneEndpoint represents the endpoint used to 793 communicate with the control plane. 794 properties: 795 host: 796 description: The hostname on which the API server is serving. 797 type: string 798 port: 799 description: The port on which the API server is serving. 800 format: int32 801 type: integer 802 required: 803 - host 804 - port 805 type: object 806 controlPlaneRef: 807 description: |- 808 ControlPlaneRef is an optional reference to a provider-specific resource that holds 809 the details for provisioning the Control Plane for a Cluster. 810 properties: 811 apiVersion: 812 description: API version of the referent. 813 type: string 814 fieldPath: 815 description: |- 816 If referring to a piece of an object instead of an entire object, this string 817 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 818 For example, if the object reference is to a container within a pod, this would take on a value like: 819 "spec.containers{name}" (where "name" refers to the name of the container that triggered 820 the event) or if no container name is specified "spec.containers[2]" (container with 821 index 2 in this pod). This syntax is chosen only to have some well-defined way of 822 referencing a part of an object. 823 TODO: this design is not final and this field is subject to change in the future. 824 type: string 825 kind: 826 description: |- 827 Kind of the referent. 828 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 829 type: string 830 name: 831 description: |- 832 Name of the referent. 833 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 834 type: string 835 namespace: 836 description: |- 837 Namespace of the referent. 838 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 839 type: string 840 resourceVersion: 841 description: |- 842 Specific resourceVersion to which this reference is made, if any. 843 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 844 type: string 845 uid: 846 description: |- 847 UID of the referent. 848 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 849 type: string 850 type: object 851 x-kubernetes-map-type: atomic 852 infrastructureRef: 853 description: |- 854 InfrastructureRef is a reference to a provider-specific resource that holds the details 855 for provisioning infrastructure for a cluster in said provider. 856 properties: 857 apiVersion: 858 description: API version of the referent. 859 type: string 860 fieldPath: 861 description: |- 862 If referring to a piece of an object instead of an entire object, this string 863 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 864 For example, if the object reference is to a container within a pod, this would take on a value like: 865 "spec.containers{name}" (where "name" refers to the name of the container that triggered 866 the event) or if no container name is specified "spec.containers[2]" (container with 867 index 2 in this pod). This syntax is chosen only to have some well-defined way of 868 referencing a part of an object. 869 TODO: this design is not final and this field is subject to change in the future. 870 type: string 871 kind: 872 description: |- 873 Kind of the referent. 874 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 875 type: string 876 name: 877 description: |- 878 Name of the referent. 879 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 880 type: string 881 namespace: 882 description: |- 883 Namespace of the referent. 884 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 885 type: string 886 resourceVersion: 887 description: |- 888 Specific resourceVersion to which this reference is made, if any. 889 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 890 type: string 891 uid: 892 description: |- 893 UID of the referent. 894 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 895 type: string 896 type: object 897 x-kubernetes-map-type: atomic 898 paused: 899 description: Paused can be used to prevent controllers from processing 900 the Cluster and all its associated objects. 901 type: boolean 902 topology: 903 description: |- 904 This encapsulates the topology for the cluster. 905 NOTE: It is required to enable the ClusterTopology 906 feature gate flag to activate managed topologies support; 907 this feature is highly experimental, and parts of it might still be not implemented. 908 properties: 909 class: 910 description: The name of the ClusterClass object to create the 911 topology. 912 type: string 913 controlPlane: 914 description: ControlPlane describes the cluster control plane. 915 properties: 916 machineHealthCheck: 917 description: |- 918 MachineHealthCheck allows to enable, disable and override 919 the MachineHealthCheck configuration in the ClusterClass for this control plane. 920 properties: 921 enable: 922 description: |- 923 Enable controls if a MachineHealthCheck should be created for the target machines. 924 925 926 If false: No MachineHealthCheck will be created. 927 928 929 If not set(default): A MachineHealthCheck will be created if it is defined here or 930 in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created. 931 932 933 If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will 934 block if `enable` is true and no MachineHealthCheck definition is available. 935 type: boolean 936 maxUnhealthy: 937 anyOf: 938 - type: integer 939 - type: string 940 description: |- 941 Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by 942 "selector" are not healthy. 943 x-kubernetes-int-or-string: true 944 nodeStartupTimeout: 945 description: |- 946 Machines older than this duration without a node will be considered to have 947 failed and will be remediated. 948 If you wish to disable this feature, set the value explicitly to 0. 949 type: string 950 remediationTemplate: 951 description: |- 952 RemediationTemplate is a reference to a remediation template 953 provided by an infrastructure provider. 954 955 956 This field is completely optional, when filled, the MachineHealthCheck controller 957 creates a new object from the template referenced and hands off remediation of the machine to 958 a controller that lives outside of Cluster API. 959 properties: 960 apiVersion: 961 description: API version of the referent. 962 type: string 963 fieldPath: 964 description: |- 965 If referring to a piece of an object instead of an entire object, this string 966 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 967 For example, if the object reference is to a container within a pod, this would take on a value like: 968 "spec.containers{name}" (where "name" refers to the name of the container that triggered 969 the event) or if no container name is specified "spec.containers[2]" (container with 970 index 2 in this pod). This syntax is chosen only to have some well-defined way of 971 referencing a part of an object. 972 TODO: this design is not final and this field is subject to change in the future. 973 type: string 974 kind: 975 description: |- 976 Kind of the referent. 977 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 978 type: string 979 name: 980 description: |- 981 Name of the referent. 982 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 983 type: string 984 namespace: 985 description: |- 986 Namespace of the referent. 987 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 988 type: string 989 resourceVersion: 990 description: |- 991 Specific resourceVersion to which this reference is made, if any. 992 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 993 type: string 994 uid: 995 description: |- 996 UID of the referent. 997 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 998 type: string 999 type: object 1000 x-kubernetes-map-type: atomic 1001 unhealthyConditions: 1002 description: |- 1003 UnhealthyConditions contains a list of the conditions that determine 1004 whether a node is considered unhealthy. The conditions are combined in a 1005 logical OR, i.e. if any of the conditions is met, the node is unhealthy. 1006 items: 1007 description: |- 1008 UnhealthyCondition represents a Node condition type and value with a timeout 1009 specified as a duration. When the named condition has been in the given 1010 status for at least the timeout value, a node is considered unhealthy. 1011 properties: 1012 status: 1013 minLength: 1 1014 type: string 1015 timeout: 1016 type: string 1017 type: 1018 minLength: 1 1019 type: string 1020 required: 1021 - status 1022 - timeout 1023 - type 1024 type: object 1025 type: array 1026 unhealthyRange: 1027 description: |- 1028 Any further remediation is only allowed if the number of machines selected by "selector" as not healthy 1029 is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy. 1030 Eg. "[3-5]" - This means that remediation will be allowed only when: 1031 (a) there are at least 3 unhealthy machines (and) 1032 (b) there are at most 5 unhealthy machines 1033 pattern: ^\[[0-9]+-[0-9]+\]$ 1034 type: string 1035 type: object 1036 metadata: 1037 description: |- 1038 Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane 1039 if the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it 1040 is applied only to the ControlPlane. 1041 At runtime this metadata is merged with the corresponding metadata from the ClusterClass. 1042 properties: 1043 annotations: 1044 additionalProperties: 1045 type: string 1046 description: |- 1047 Annotations is an unstructured key value map stored with a resource that may be 1048 set by external tools to store and retrieve arbitrary metadata. They are not 1049 queryable and should be preserved when modifying objects. 1050 More info: http://kubernetes.io/docs/user-guide/annotations 1051 type: object 1052 labels: 1053 additionalProperties: 1054 type: string 1055 description: |- 1056 Map of string keys and values that can be used to organize and categorize 1057 (scope and select) objects. May match selectors of replication controllers 1058 and services. 1059 More info: http://kubernetes.io/docs/user-guide/labels 1060 type: object 1061 type: object 1062 nodeDeletionTimeout: 1063 description: |- 1064 NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine 1065 hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. 1066 Defaults to 10 seconds. 1067 type: string 1068 nodeDrainTimeout: 1069 description: |- 1070 NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. 1071 The default value is 0, meaning that the node can be drained without any time limitations. 1072 NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` 1073 type: string 1074 nodeVolumeDetachTimeout: 1075 description: |- 1076 NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes 1077 to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. 1078 type: string 1079 replicas: 1080 description: |- 1081 Replicas is the number of control plane nodes. 1082 If the value is nil, the ControlPlane object is created without the number of Replicas 1083 and it's assumed that the control plane controller does not implement support for this field. 1084 When specified against a control plane provider that lacks support for this field, this value will be ignored. 1085 format: int32 1086 type: integer 1087 type: object 1088 rolloutAfter: 1089 description: |- 1090 RolloutAfter performs a rollout of the entire cluster one component at a time, 1091 control plane first and then machine deployments. 1092 1093 1094 Deprecated: This field has no function and is going to be removed in the next apiVersion. 1095 format: date-time 1096 type: string 1097 variables: 1098 description: |- 1099 Variables can be used to customize the Cluster through 1100 patches. They must comply to the corresponding 1101 VariableClasses defined in the ClusterClass. 1102 items: 1103 description: |- 1104 ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a 1105 Variable definition in the ClusterClass `status` variables. 1106 properties: 1107 definitionFrom: 1108 description: |- 1109 DefinitionFrom specifies where the definition of this Variable is from. DefinitionFrom is `inline` when the 1110 definition is from the ClusterClass `.spec.variables` or the name of a patch defined in the ClusterClass 1111 `.spec.patches` where the patch is external and provides external variables. 1112 This field is mandatory if the variable has `DefinitionsConflict: true` in ClusterClass `status.variables[]` 1113 type: string 1114 name: 1115 description: Name of the variable. 1116 type: string 1117 value: 1118 description: |- 1119 Value of the variable. 1120 Note: the value will be validated against the schema of the corresponding ClusterClassVariable 1121 from the ClusterClass. 1122 Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a 1123 hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools, 1124 i.e. it is not possible to have no type field. 1125 Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 1126 x-kubernetes-preserve-unknown-fields: true 1127 required: 1128 - name 1129 - value 1130 type: object 1131 type: array 1132 version: 1133 description: The Kubernetes version of the cluster. 1134 type: string 1135 workers: 1136 description: |- 1137 Workers encapsulates the different constructs that form the worker nodes 1138 for the cluster. 1139 properties: 1140 machineDeployments: 1141 description: MachineDeployments is a list of machine deployments 1142 in the cluster. 1143 items: 1144 description: |- 1145 MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology. 1146 This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller. 1147 properties: 1148 class: 1149 description: |- 1150 Class is the name of the MachineDeploymentClass used to create the set of worker nodes. 1151 This should match one of the deployment classes defined in the ClusterClass object 1152 mentioned in the `Cluster.Spec.Class` field. 1153 type: string 1154 failureDomain: 1155 description: |- 1156 FailureDomain is the failure domain the machines will be created in. 1157 Must match a key in the FailureDomains map stored on the cluster object. 1158 type: string 1159 machineHealthCheck: 1160 description: |- 1161 MachineHealthCheck allows to enable, disable and override 1162 the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment. 1163 properties: 1164 enable: 1165 description: |- 1166 Enable controls if a MachineHealthCheck should be created for the target machines. 1167 1168 1169 If false: No MachineHealthCheck will be created. 1170 1171 1172 If not set(default): A MachineHealthCheck will be created if it is defined here or 1173 in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created. 1174 1175 1176 If true: A MachineHealthCheck is guaranteed to be created. Cluster validation will 1177 block if `enable` is true and no MachineHealthCheck definition is available. 1178 type: boolean 1179 maxUnhealthy: 1180 anyOf: 1181 - type: integer 1182 - type: string 1183 description: |- 1184 Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by 1185 "selector" are not healthy. 1186 x-kubernetes-int-or-string: true 1187 nodeStartupTimeout: 1188 description: |- 1189 Machines older than this duration without a node will be considered to have 1190 failed and will be remediated. 1191 If you wish to disable this feature, set the value explicitly to 0. 1192 type: string 1193 remediationTemplate: 1194 description: |- 1195 RemediationTemplate is a reference to a remediation template 1196 provided by an infrastructure provider. 1197 1198 1199 This field is completely optional, when filled, the MachineHealthCheck controller 1200 creates a new object from the template referenced and hands off remediation of the machine to 1201 a controller that lives outside of Cluster API. 1202 properties: 1203 apiVersion: 1204 description: API version of the referent. 1205 type: string 1206 fieldPath: 1207 description: |- 1208 If referring to a piece of an object instead of an entire object, this string 1209 should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. 1210 For example, if the object reference is to a container within a pod, this would take on a value like: 1211 "spec.containers{name}" (where "name" refers to the name of the container that triggered 1212 the event) or if no container name is specified "spec.containers[2]" (container with 1213 index 2 in this pod). This syntax is chosen only to have some well-defined way of 1214 referencing a part of an object. 1215 TODO: this design is not final and this field is subject to change in the future. 1216 type: string 1217 kind: 1218 description: |- 1219 Kind of the referent. 1220 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds 1221 type: string 1222 name: 1223 description: |- 1224 Name of the referent. 1225 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 1226 type: string 1227 namespace: 1228 description: |- 1229 Namespace of the referent. 1230 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ 1231 type: string 1232 resourceVersion: 1233 description: |- 1234 Specific resourceVersion to which this reference is made, if any. 1235 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency 1236 type: string 1237 uid: 1238 description: |- 1239 UID of the referent. 1240 More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids 1241 type: string 1242 type: object 1243 x-kubernetes-map-type: atomic 1244 unhealthyConditions: 1245 description: |- 1246 UnhealthyConditions contains a list of the conditions that determine 1247 whether a node is considered unhealthy. The conditions are combined in a 1248 logical OR, i.e. if any of the conditions is met, the node is unhealthy. 1249 items: 1250 description: |- 1251 UnhealthyCondition represents a Node condition type and value with a timeout 1252 specified as a duration. When the named condition has been in the given 1253 status for at least the timeout value, a node is considered unhealthy. 1254 properties: 1255 status: 1256 minLength: 1 1257 type: string 1258 timeout: 1259 type: string 1260 type: 1261 minLength: 1 1262 type: string 1263 required: 1264 - status 1265 - timeout 1266 - type 1267 type: object 1268 type: array 1269 unhealthyRange: 1270 description: |- 1271 Any further remediation is only allowed if the number of machines selected by "selector" as not healthy 1272 is within the range of "UnhealthyRange". Takes precedence over MaxUnhealthy. 1273 Eg. "[3-5]" - This means that remediation will be allowed only when: 1274 (a) there are at least 3 unhealthy machines (and) 1275 (b) there are at most 5 unhealthy machines 1276 pattern: ^\[[0-9]+-[0-9]+\]$ 1277 type: string 1278 type: object 1279 metadata: 1280 description: |- 1281 Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. 1282 At runtime this metadata is merged with the corresponding metadata from the ClusterClass. 1283 properties: 1284 annotations: 1285 additionalProperties: 1286 type: string 1287 description: |- 1288 Annotations is an unstructured key value map stored with a resource that may be 1289 set by external tools to store and retrieve arbitrary metadata. They are not 1290 queryable and should be preserved when modifying objects. 1291 More info: http://kubernetes.io/docs/user-guide/annotations 1292 type: object 1293 labels: 1294 additionalProperties: 1295 type: string 1296 description: |- 1297 Map of string keys and values that can be used to organize and categorize 1298 (scope and select) objects. May match selectors of replication controllers 1299 and services. 1300 More info: http://kubernetes.io/docs/user-guide/labels 1301 type: object 1302 type: object 1303 minReadySeconds: 1304 description: |- 1305 Minimum number of seconds for which a newly created machine should 1306 be ready. 1307 Defaults to 0 (machine will be considered available as soon as it 1308 is ready) 1309 format: int32 1310 type: integer 1311 name: 1312 description: |- 1313 Name is the unique identifier for this MachineDeploymentTopology. 1314 The value is used with other unique identifiers to create a MachineDeployment's Name 1315 (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, 1316 the values are hashed together. 1317 type: string 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 type: string 1324 nodeDrainTimeout: 1325 description: |- 1326 NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. 1327 The default value is 0, meaning that the node can be drained without any time limitations. 1328 NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` 1329 type: string 1330 nodeVolumeDetachTimeout: 1331 description: |- 1332 NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes 1333 to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. 1334 type: string 1335 replicas: 1336 description: |- 1337 Replicas is the number of worker nodes belonging to this set. 1338 If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1) 1339 and it's assumed that an external entity (like cluster autoscaler) is responsible for the management 1340 of this value. 1341 format: int32 1342 type: integer 1343 strategy: 1344 description: |- 1345 The deployment strategy to use to replace existing machines with 1346 new ones. 1347 properties: 1348 rollingUpdate: 1349 description: |- 1350 Rolling update config params. Present only if 1351 MachineDeploymentStrategyType = RollingUpdate. 1352 properties: 1353 deletePolicy: 1354 description: |- 1355 DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. 1356 Valid values are "Random, "Newest", "Oldest" 1357 When no value is supplied, the default DeletePolicy of MachineSet is used 1358 enum: 1359 - Random 1360 - Newest 1361 - Oldest 1362 type: string 1363 maxSurge: 1364 anyOf: 1365 - type: integer 1366 - type: string 1367 description: |- 1368 The maximum number of machines that can be scheduled above the 1369 desired number of machines. 1370 Value can be an absolute number (ex: 5) or a percentage of 1371 desired machines (ex: 10%). 1372 This can not be 0 if MaxUnavailable is 0. 1373 Absolute number is calculated from percentage by rounding up. 1374 Defaults to 1. 1375 Example: when this is set to 30%, the new MachineSet can be scaled 1376 up immediately when the rolling update starts, such that the total 1377 number of old and new machines do not exceed 130% of desired 1378 machines. Once old machines have been killed, new MachineSet can 1379 be scaled up further, ensuring that total number of machines running 1380 at any time during the update is at most 130% of desired machines. 1381 x-kubernetes-int-or-string: true 1382 maxUnavailable: 1383 anyOf: 1384 - type: integer 1385 - type: string 1386 description: |- 1387 The maximum number of machines that can be unavailable during the update. 1388 Value can be an absolute number (ex: 5) or a percentage of desired 1389 machines (ex: 10%). 1390 Absolute number is calculated from percentage by rounding down. 1391 This can not be 0 if MaxSurge is 0. 1392 Defaults to 0. 1393 Example: when this is set to 30%, the old MachineSet can be scaled 1394 down to 70% of desired machines immediately when the rolling update 1395 starts. Once new machines are ready, old MachineSet can be scaled 1396 down further, followed by scaling up the new MachineSet, ensuring 1397 that the total number of machines available at all times 1398 during the update is at least 70% of desired machines. 1399 x-kubernetes-int-or-string: true 1400 type: object 1401 type: 1402 description: |- 1403 Type of deployment. Allowed values are RollingUpdate and OnDelete. 1404 The default is RollingUpdate. 1405 enum: 1406 - RollingUpdate 1407 - OnDelete 1408 type: string 1409 type: object 1410 variables: 1411 description: Variables can be used to customize the 1412 MachineDeployment through patches. 1413 properties: 1414 overrides: 1415 description: Overrides can be used to override Cluster 1416 level variables. 1417 items: 1418 description: |- 1419 ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a 1420 Variable definition in the ClusterClass `status` variables. 1421 properties: 1422 definitionFrom: 1423 description: |- 1424 DefinitionFrom specifies where the definition of this Variable is from. DefinitionFrom is `inline` when the 1425 definition is from the ClusterClass `.spec.variables` or the name of a patch defined in the ClusterClass 1426 `.spec.patches` where the patch is external and provides external variables. 1427 This field is mandatory if the variable has `DefinitionsConflict: true` in ClusterClass `status.variables[]` 1428 type: string 1429 name: 1430 description: Name of the variable. 1431 type: string 1432 value: 1433 description: |- 1434 Value of the variable. 1435 Note: the value will be validated against the schema of the corresponding ClusterClassVariable 1436 from the ClusterClass. 1437 Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a 1438 hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools, 1439 i.e. it is not possible to have no type field. 1440 Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 1441 x-kubernetes-preserve-unknown-fields: true 1442 required: 1443 - name 1444 - value 1445 type: object 1446 type: array 1447 type: object 1448 required: 1449 - class 1450 - name 1451 type: object 1452 type: array 1453 machinePools: 1454 description: MachinePools is a list of machine pools in the 1455 cluster. 1456 items: 1457 description: |- 1458 MachinePoolTopology specifies the different parameters for a pool of worker nodes in the topology. 1459 This pool of nodes is managed by a MachinePool object whose lifecycle is managed by the Cluster controller. 1460 properties: 1461 class: 1462 description: |- 1463 Class is the name of the MachinePoolClass used to create the pool of worker nodes. 1464 This should match one of the deployment classes defined in the ClusterClass object 1465 mentioned in the `Cluster.Spec.Class` field. 1466 type: string 1467 failureDomains: 1468 description: |- 1469 FailureDomains is the list of failure domains the machine pool will be created in. 1470 Must match a key in the FailureDomains map stored on the cluster object. 1471 items: 1472 type: string 1473 type: array 1474 metadata: 1475 description: |- 1476 Metadata is the metadata applied to the MachinePool. 1477 At runtime this metadata is merged with the corresponding metadata from the ClusterClass. 1478 properties: 1479 annotations: 1480 additionalProperties: 1481 type: string 1482 description: |- 1483 Annotations is an unstructured key value map stored with a resource that may be 1484 set by external tools to store and retrieve arbitrary metadata. They are not 1485 queryable and should be preserved when modifying objects. 1486 More info: http://kubernetes.io/docs/user-guide/annotations 1487 type: object 1488 labels: 1489 additionalProperties: 1490 type: string 1491 description: |- 1492 Map of string keys and values that can be used to organize and categorize 1493 (scope and select) objects. May match selectors of replication controllers 1494 and services. 1495 More info: http://kubernetes.io/docs/user-guide/labels 1496 type: object 1497 type: object 1498 minReadySeconds: 1499 description: |- 1500 Minimum number of seconds for which a newly created machine pool should 1501 be ready. 1502 Defaults to 0 (machine will be considered available as soon as it 1503 is ready) 1504 format: int32 1505 type: integer 1506 name: 1507 description: |- 1508 Name is the unique identifier for this MachinePoolTopology. 1509 The value is used with other unique identifiers to create a MachinePool's Name 1510 (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, 1511 the values are hashed together. 1512 type: string 1513 nodeDeletionTimeout: 1514 description: |- 1515 NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the MachinePool 1516 hosts after the MachinePool is marked for deletion. A duration of 0 will retry deletion indefinitely. 1517 Defaults to 10 seconds. 1518 type: string 1519 nodeDrainTimeout: 1520 description: |- 1521 NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. 1522 The default value is 0, meaning that the node can be drained without any time limitations. 1523 NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` 1524 type: string 1525 nodeVolumeDetachTimeout: 1526 description: |- 1527 NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes 1528 to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. 1529 type: string 1530 replicas: 1531 description: |- 1532 Replicas is the number of nodes belonging to this pool. 1533 If the value is nil, the MachinePool is created without the number of Replicas (defaulting to 1) 1534 and it's assumed that an external entity (like cluster autoscaler) is responsible for the management 1535 of this value. 1536 format: int32 1537 type: integer 1538 variables: 1539 description: Variables can be used to customize the 1540 MachinePool through patches. 1541 properties: 1542 overrides: 1543 description: Overrides can be used to override Cluster 1544 level variables. 1545 items: 1546 description: |- 1547 ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a 1548 Variable definition in the ClusterClass `status` variables. 1549 properties: 1550 definitionFrom: 1551 description: |- 1552 DefinitionFrom specifies where the definition of this Variable is from. DefinitionFrom is `inline` when the 1553 definition is from the ClusterClass `.spec.variables` or the name of a patch defined in the ClusterClass 1554 `.spec.patches` where the patch is external and provides external variables. 1555 This field is mandatory if the variable has `DefinitionsConflict: true` in ClusterClass `status.variables[]` 1556 type: string 1557 name: 1558 description: Name of the variable. 1559 type: string 1560 value: 1561 description: |- 1562 Value of the variable. 1563 Note: the value will be validated against the schema of the corresponding ClusterClassVariable 1564 from the ClusterClass. 1565 Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a 1566 hard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools, 1567 i.e. it is not possible to have no type field. 1568 Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 1569 x-kubernetes-preserve-unknown-fields: true 1570 required: 1571 - name 1572 - value 1573 type: object 1574 type: array 1575 type: object 1576 required: 1577 - class 1578 - name 1579 type: object 1580 type: array 1581 type: object 1582 required: 1583 - class 1584 - version 1585 type: object 1586 type: object 1587 status: 1588 description: ClusterStatus defines the observed state of Cluster. 1589 properties: 1590 conditions: 1591 description: Conditions defines current service state of the cluster. 1592 items: 1593 description: Condition defines an observation of a Cluster API resource 1594 operational state. 1595 properties: 1596 lastTransitionTime: 1597 description: |- 1598 Last time the condition transitioned from one status to another. 1599 This should be when the underlying condition changed. If that is not known, then using the time when 1600 the API field changed is acceptable. 1601 format: date-time 1602 type: string 1603 message: 1604 description: |- 1605 A human readable message indicating details about the transition. 1606 This field may be empty. 1607 type: string 1608 reason: 1609 description: |- 1610 The reason for the condition's last transition in CamelCase. 1611 The specific API may choose whether or not this field is considered a guaranteed API. 1612 This field may not be empty. 1613 type: string 1614 severity: 1615 description: |- 1616 Severity provides an explicit classification of Reason code, so the users or machines can immediately 1617 understand the current situation and act accordingly. 1618 The Severity field MUST be set only when Status=False. 1619 type: string 1620 status: 1621 description: Status of the condition, one of True, False, Unknown. 1622 type: string 1623 type: 1624 description: |- 1625 Type of condition in CamelCase or in foo.example.com/CamelCase. 1626 Many .condition.type values are consistent across resources like Available, but because arbitrary conditions 1627 can be useful (see .node.status.conditions), the ability to deconflict is important. 1628 type: string 1629 required: 1630 - lastTransitionTime 1631 - status 1632 - type 1633 type: object 1634 type: array 1635 controlPlaneReady: 1636 description: ControlPlaneReady defines if the control plane is ready. 1637 type: boolean 1638 failureDomains: 1639 additionalProperties: 1640 description: |- 1641 FailureDomainSpec is the Schema for Cluster API failure domains. 1642 It allows controllers to understand how many failure domains a cluster can optionally span across. 1643 properties: 1644 attributes: 1645 additionalProperties: 1646 type: string 1647 description: Attributes is a free form map of attributes an 1648 infrastructure provider might use or require. 1649 type: object 1650 controlPlane: 1651 description: ControlPlane determines if this failure domain 1652 is suitable for use by control plane machines. 1653 type: boolean 1654 type: object 1655 description: FailureDomains is a slice of failure domain objects synced 1656 from the infrastructure provider. 1657 type: object 1658 failureMessage: 1659 description: |- 1660 FailureMessage indicates that there is a fatal problem reconciling the 1661 state, and will be set to a descriptive error message. 1662 type: string 1663 failureReason: 1664 description: |- 1665 FailureReason indicates that there is a fatal problem reconciling the 1666 state, and will be set to a token value suitable for 1667 programmatic interpretation. 1668 type: string 1669 infrastructureReady: 1670 description: InfrastructureReady is the state of the infrastructure 1671 provider. 1672 type: boolean 1673 observedGeneration: 1674 description: ObservedGeneration is the latest generation observed 1675 by the controller. 1676 format: int64 1677 type: integer 1678 phase: 1679 description: |- 1680 Phase represents the current phase of cluster actuation. 1681 E.g. Pending, Running, Terminating, Failed etc. 1682 type: string 1683 type: object 1684 type: object 1685 served: true 1686 storage: true 1687 subresources: 1688 status: {}