github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/helm/crds/dataprotection.kubeblocks.io_restores.yaml (about) 1 apiVersion: apiextensions.k8s.io/v1 2 kind: CustomResourceDefinition 3 metadata: 4 annotations: 5 controller-gen.kubebuilder.io/version: v0.12.1 6 labels: 7 app.kubernetes.io/name: kubeblocks 8 name: restores.dataprotection.kubeblocks.io 9 spec: 10 group: dataprotection.kubeblocks.io 11 names: 12 categories: 13 - kubeblocks 14 - all 15 kind: Restore 16 listKind: RestoreList 17 plural: restores 18 singular: restore 19 scope: Namespaced 20 versions: 21 - additionalPrinterColumns: 22 - jsonPath: .spec.backup.name 23 name: BACKUP 24 type: string 25 - description: Point in time for restoring 26 jsonPath: .spec.restoreTime 27 name: RESTORE-TIME 28 type: string 29 - description: Restore Status. 30 jsonPath: .status.phase 31 name: STATUS 32 type: string 33 - jsonPath: .status.duration 34 name: DURATION 35 type: string 36 - jsonPath: .metadata.creationTimestamp 37 name: CREATION-TIME 38 type: string 39 - jsonPath: .status.completionTimestamp 40 name: COMPLETION-TIME 41 type: string 42 name: v1alpha1 43 schema: 44 openAPIV3Schema: 45 description: Restore is the Schema for the restores API 46 properties: 47 apiVersion: 48 description: 'APIVersion defines the versioned schema of this representation 49 of an object. Servers should convert recognized schemas to the latest 50 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 51 type: string 52 kind: 53 description: 'Kind is a string value representing the REST resource this 54 object represents. Servers may infer this from the endpoint the client 55 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 56 type: string 57 metadata: 58 type: object 59 spec: 60 description: RestoreSpec defines the desired state of Restore 61 properties: 62 backup: 63 description: 'backup to be restored. The restore behavior based on 64 the backup type: 1. Full: will be restored the full backup directly. 65 2. Incremental: will be restored sequentially from the most recent 66 full backup of this incremental backup. 3. Differential: will be 67 restored sequentially from the parent backup of the differential 68 backup. 4. Continuous: will find the most recent full backup at 69 this time point and the continuous backups after it to restore.' 70 properties: 71 name: 72 description: backup name 73 type: string 74 namespace: 75 description: backup namespace 76 type: string 77 required: 78 - name 79 - namespace 80 type: object 81 x-kubernetes-validations: 82 - message: forbidden to update spec.backupName 83 rule: self == oldSelf 84 containerResources: 85 description: specified the required resources of restore job's container. 86 properties: 87 claims: 88 description: "Claims lists the names of resources, defined in 89 spec.resourceClaims, that are used by this container. \n This 90 is an alpha field and requires enabling the DynamicResourceAllocation 91 feature gate. \n This field is immutable. It can only be set 92 for containers." 93 items: 94 description: ResourceClaim references one entry in PodSpec.ResourceClaims. 95 properties: 96 name: 97 description: Name must match the name of one entry in pod.spec.resourceClaims 98 of the Pod where this field is used. It makes that resource 99 available inside a container. 100 type: string 101 required: 102 - name 103 type: object 104 type: array 105 x-kubernetes-list-map-keys: 106 - name 107 x-kubernetes-list-type: map 108 limits: 109 additionalProperties: 110 anyOf: 111 - type: integer 112 - type: string 113 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 114 x-kubernetes-int-or-string: true 115 description: 'Limits describes the maximum amount of compute resources 116 allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 117 type: object 118 requests: 119 additionalProperties: 120 anyOf: 121 - type: integer 122 - type: string 123 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 124 x-kubernetes-int-or-string: true 125 description: 'Requests describes the minimum amount of compute 126 resources required. If Requests is omitted for a container, 127 it defaults to Limits if that is explicitly specified, otherwise 128 to an implementation-defined value. Requests cannot exceed Limits. 129 More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 130 type: object 131 type: object 132 env: 133 description: 'list of environment variables to set in the container 134 for restore and will be merged with the env of Backup and ActionSet. 135 The priority of merging is as follows: Restore env > Backup env 136 > ActionSet env.' 137 items: 138 description: EnvVar represents an environment variable present in 139 a Container. 140 properties: 141 name: 142 description: Name of the environment variable. Must be a C_IDENTIFIER. 143 type: string 144 value: 145 description: 'Variable references $(VAR_NAME) are expanded using 146 the previously defined environment variables in the container 147 and any service environment variables. If a variable cannot 148 be resolved, the reference in the input string will be unchanged. 149 Double $$ are reduced to a single $, which allows for escaping 150 the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the 151 string literal "$(VAR_NAME)". Escaped references will never 152 be expanded, regardless of whether the variable exists or 153 not. Defaults to "".' 154 type: string 155 valueFrom: 156 description: Source for the environment variable's value. Cannot 157 be used if value is not empty. 158 properties: 159 configMapKeyRef: 160 description: Selects a key of a ConfigMap. 161 properties: 162 key: 163 description: The key to select. 164 type: string 165 name: 166 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 167 TODO: Add other useful fields. apiVersion, kind, uid?' 168 type: string 169 optional: 170 description: Specify whether the ConfigMap or its key 171 must be defined 172 type: boolean 173 required: 174 - key 175 type: object 176 x-kubernetes-map-type: atomic 177 fieldRef: 178 description: 'Selects a field of the pod: supports metadata.name, 179 metadata.namespace, `metadata.labels[''<KEY>'']`, `metadata.annotations[''<KEY>'']`, 180 spec.nodeName, spec.serviceAccountName, status.hostIP, 181 status.podIP, status.podIPs.' 182 properties: 183 apiVersion: 184 description: Version of the schema the FieldPath is 185 written in terms of, defaults to "v1". 186 type: string 187 fieldPath: 188 description: Path of the field to select in the specified 189 API version. 190 type: string 191 required: 192 - fieldPath 193 type: object 194 x-kubernetes-map-type: atomic 195 resourceFieldRef: 196 description: 'Selects a resource of the container: only 197 resources limits and requests (limits.cpu, limits.memory, 198 limits.ephemeral-storage, requests.cpu, requests.memory 199 and requests.ephemeral-storage) are currently supported.' 200 properties: 201 containerName: 202 description: 'Container name: required for volumes, 203 optional for env vars' 204 type: string 205 divisor: 206 anyOf: 207 - type: integer 208 - type: string 209 description: Specifies the output format of the exposed 210 resources, defaults to "1" 211 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 212 x-kubernetes-int-or-string: true 213 resource: 214 description: 'Required: resource to select' 215 type: string 216 required: 217 - resource 218 type: object 219 x-kubernetes-map-type: atomic 220 secretKeyRef: 221 description: Selects a key of a secret in the pod's namespace 222 properties: 223 key: 224 description: The key of the secret to select from. Must 225 be a valid secret key. 226 type: string 227 name: 228 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 229 TODO: Add other useful fields. apiVersion, kind, uid?' 230 type: string 231 optional: 232 description: Specify whether the Secret or its key must 233 be defined 234 type: boolean 235 required: 236 - key 237 type: object 238 x-kubernetes-map-type: atomic 239 type: object 240 required: 241 - name 242 type: object 243 type: array 244 x-kubernetes-preserve-unknown-fields: true 245 prepareDataConfig: 246 description: configuration for the action of "prepareData" phase, 247 including the persistent volume claims that need to be restored 248 and scheduling strategy of temporary recovery pod. 249 properties: 250 dataSourceRef: 251 description: dataSourceRef describes the configuration when using 252 `persistentVolumeClaim.spec.dataSourceRef` method for restoring. 253 it describes the source volume of the backup targetVolumes and 254 how to mount path in the restoring container. 255 properties: 256 mountPath: 257 description: mountPath path within the restoring container 258 at which the volume should be mounted. 259 type: string 260 volumeSource: 261 description: volumeSource describes the volume will be restored 262 from the specified volume of the backup targetVolumes. required 263 if the backup uses volume snapshot. 264 type: string 265 type: object 266 x-kubernetes-validations: 267 - message: at least one exists for volumeSource and mountPath. 268 rule: self.volumeSource != '' || self.mountPath !='' 269 - message: forbidden to update spec.prepareDataConfig.dataSourceRef 270 rule: self == oldSelf 271 schedulingSpec: 272 description: scheduling spec for restoring pod. 273 properties: 274 affinity: 275 description: affinity is a group of affinity scheduling rules. 276 refer to https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ 277 properties: 278 nodeAffinity: 279 description: Describes node affinity scheduling rules 280 for the pod. 281 properties: 282 preferredDuringSchedulingIgnoredDuringExecution: 283 description: The scheduler will prefer to schedule 284 pods to nodes that satisfy the affinity expressions 285 specified by this field, but it may choose a node 286 that violates one or more of the expressions. The 287 node that is most preferred is the one with the 288 greatest sum of weights, i.e. for each node that 289 meets all of the scheduling requirements (resource 290 request, requiredDuringScheduling affinity expressions, 291 etc.), compute a sum by iterating through the elements 292 of this field and adding "weight" to the sum if 293 the node matches the corresponding matchExpressions; 294 the node(s) with the highest sum are the most preferred. 295 items: 296 description: An empty preferred scheduling term 297 matches all objects with implicit weight 0 (i.e. 298 it's a no-op). A null preferred scheduling term 299 matches no objects (i.e. is also a no-op). 300 properties: 301 preference: 302 description: A node selector term, associated 303 with the corresponding weight. 304 properties: 305 matchExpressions: 306 description: A list of node selector requirements 307 by node's labels. 308 items: 309 description: A node selector requirement 310 is a selector that contains values, 311 a key, and an operator that relates 312 the key and values. 313 properties: 314 key: 315 description: The label key that the 316 selector applies to. 317 type: string 318 operator: 319 description: Represents a key's relationship 320 to a set of values. Valid operators 321 are In, NotIn, Exists, DoesNotExist. 322 Gt, and Lt. 323 type: string 324 values: 325 description: An array of string values. 326 If the operator is In or NotIn, 327 the values array must be non-empty. 328 If the operator is Exists or DoesNotExist, 329 the values array must be empty. 330 If the operator is Gt or Lt, the 331 values array must have a single 332 element, which will be interpreted 333 as an integer. This array is replaced 334 during a strategic merge patch. 335 items: 336 type: string 337 type: array 338 required: 339 - key 340 - operator 341 type: object 342 type: array 343 matchFields: 344 description: A list of node selector requirements 345 by node's fields. 346 items: 347 description: A node selector requirement 348 is a selector that contains values, 349 a key, and an operator that relates 350 the key and values. 351 properties: 352 key: 353 description: The label key that the 354 selector applies to. 355 type: string 356 operator: 357 description: Represents a key's relationship 358 to a set of values. Valid operators 359 are In, NotIn, Exists, DoesNotExist. 360 Gt, and Lt. 361 type: string 362 values: 363 description: An array of string values. 364 If the operator is In or NotIn, 365 the values array must be non-empty. 366 If the operator is Exists or DoesNotExist, 367 the values array must be empty. 368 If the operator is Gt or Lt, the 369 values array must have a single 370 element, which will be interpreted 371 as an integer. This array is replaced 372 during a strategic merge patch. 373 items: 374 type: string 375 type: array 376 required: 377 - key 378 - operator 379 type: object 380 type: array 381 type: object 382 x-kubernetes-map-type: atomic 383 weight: 384 description: Weight associated with matching 385 the corresponding nodeSelectorTerm, in the 386 range 1-100. 387 format: int32 388 type: integer 389 required: 390 - preference 391 - weight 392 type: object 393 type: array 394 requiredDuringSchedulingIgnoredDuringExecution: 395 description: If the affinity requirements specified 396 by this field are not met at scheduling time, the 397 pod will not be scheduled onto the node. If the 398 affinity requirements specified by this field cease 399 to be met at some point during pod execution (e.g. 400 due to an update), the system may or may not try 401 to eventually evict the pod from its node. 402 properties: 403 nodeSelectorTerms: 404 description: Required. A list of node selector 405 terms. The terms are ORed. 406 items: 407 description: A null or empty node selector term 408 matches no objects. The requirements of them 409 are ANDed. The TopologySelectorTerm type implements 410 a subset of the NodeSelectorTerm. 411 properties: 412 matchExpressions: 413 description: A list of node selector requirements 414 by node's labels. 415 items: 416 description: A node selector requirement 417 is a selector that contains values, 418 a key, and an operator that relates 419 the key and values. 420 properties: 421 key: 422 description: The label key that the 423 selector applies to. 424 type: string 425 operator: 426 description: Represents a key's relationship 427 to a set of values. Valid operators 428 are In, NotIn, Exists, DoesNotExist. 429 Gt, and Lt. 430 type: string 431 values: 432 description: An array of string values. 433 If the operator is In or NotIn, 434 the values array must be non-empty. 435 If the operator is Exists or DoesNotExist, 436 the values array must be empty. 437 If the operator is Gt or Lt, the 438 values array must have a single 439 element, which will be interpreted 440 as an integer. This array is replaced 441 during a strategic merge patch. 442 items: 443 type: string 444 type: array 445 required: 446 - key 447 - operator 448 type: object 449 type: array 450 matchFields: 451 description: A list of node selector requirements 452 by node's fields. 453 items: 454 description: A node selector requirement 455 is a selector that contains values, 456 a key, and an operator that relates 457 the key and values. 458 properties: 459 key: 460 description: The label key that the 461 selector applies to. 462 type: string 463 operator: 464 description: Represents a key's relationship 465 to a set of values. Valid operators 466 are In, NotIn, Exists, DoesNotExist. 467 Gt, and Lt. 468 type: string 469 values: 470 description: An array of string values. 471 If the operator is In or NotIn, 472 the values array must be non-empty. 473 If the operator is Exists or DoesNotExist, 474 the values array must be empty. 475 If the operator is Gt or Lt, the 476 values array must have a single 477 element, which will be interpreted 478 as an integer. This array is replaced 479 during a strategic merge patch. 480 items: 481 type: string 482 type: array 483 required: 484 - key 485 - operator 486 type: object 487 type: array 488 type: object 489 x-kubernetes-map-type: atomic 490 type: array 491 required: 492 - nodeSelectorTerms 493 type: object 494 x-kubernetes-map-type: atomic 495 type: object 496 podAffinity: 497 description: Describes pod affinity scheduling rules (e.g. 498 co-locate this pod in the same node, zone, etc. as some 499 other pod(s)). 500 properties: 501 preferredDuringSchedulingIgnoredDuringExecution: 502 description: The scheduler will prefer to schedule 503 pods to nodes that satisfy the affinity expressions 504 specified by this field, but it may choose a node 505 that violates one or more of the expressions. The 506 node that is most preferred is the one with the 507 greatest sum of weights, i.e. for each node that 508 meets all of the scheduling requirements (resource 509 request, requiredDuringScheduling affinity expressions, 510 etc.), compute a sum by iterating through the elements 511 of this field and adding "weight" to the sum if 512 the node has pods which matches the corresponding 513 podAffinityTerm; the node(s) with the highest sum 514 are the most preferred. 515 items: 516 description: The weights of all of the matched WeightedPodAffinityTerm 517 fields are added per-node to find the most preferred 518 node(s) 519 properties: 520 podAffinityTerm: 521 description: Required. A pod affinity term, 522 associated with the corresponding weight. 523 properties: 524 labelSelector: 525 description: A label query over a set of 526 resources, in this case pods. 527 properties: 528 matchExpressions: 529 description: matchExpressions is a list 530 of label selector requirements. The 531 requirements are ANDed. 532 items: 533 description: A label selector requirement 534 is a selector that contains values, 535 a key, and an operator that relates 536 the key and values. 537 properties: 538 key: 539 description: key is the label 540 key that the selector applies 541 to. 542 type: string 543 operator: 544 description: operator represents 545 a key's relationship to a set 546 of values. Valid operators are 547 In, NotIn, Exists and DoesNotExist. 548 type: string 549 values: 550 description: values is an array 551 of string values. If the operator 552 is In or NotIn, the values array 553 must be non-empty. If the operator 554 is Exists or DoesNotExist, the 555 values array must be empty. 556 This array is replaced during 557 a strategic merge patch. 558 items: 559 type: string 560 type: array 561 required: 562 - key 563 - operator 564 type: object 565 type: array 566 matchLabels: 567 additionalProperties: 568 type: string 569 description: matchLabels is a map of 570 {key,value} pairs. A single {key,value} 571 in the matchLabels map is equivalent 572 to an element of matchExpressions, 573 whose key field is "key", the operator 574 is "In", and the values array contains 575 only "value". The requirements are 576 ANDed. 577 type: object 578 type: object 579 x-kubernetes-map-type: atomic 580 namespaceSelector: 581 description: A label query over the set 582 of namespaces that the term applies to. 583 The term is applied to the union of the 584 namespaces selected by this field and 585 the ones listed in the namespaces field. 586 null selector and null or empty namespaces 587 list means "this pod's namespace". An 588 empty selector ({}) matches all namespaces. 589 properties: 590 matchExpressions: 591 description: matchExpressions is a list 592 of label selector requirements. The 593 requirements are ANDed. 594 items: 595 description: A label selector requirement 596 is a selector that contains values, 597 a key, and an operator that relates 598 the key and values. 599 properties: 600 key: 601 description: key is the label 602 key that the selector applies 603 to. 604 type: string 605 operator: 606 description: operator represents 607 a key's relationship to a set 608 of values. Valid operators are 609 In, NotIn, Exists and DoesNotExist. 610 type: string 611 values: 612 description: values is an array 613 of string values. If the operator 614 is In or NotIn, the values array 615 must be non-empty. If the operator 616 is Exists or DoesNotExist, the 617 values array must be empty. 618 This array is replaced during 619 a strategic merge patch. 620 items: 621 type: string 622 type: array 623 required: 624 - key 625 - operator 626 type: object 627 type: array 628 matchLabels: 629 additionalProperties: 630 type: string 631 description: matchLabels is a map of 632 {key,value} pairs. A single {key,value} 633 in the matchLabels map is equivalent 634 to an element of matchExpressions, 635 whose key field is "key", the operator 636 is "In", and the values array contains 637 only "value". The requirements are 638 ANDed. 639 type: object 640 type: object 641 x-kubernetes-map-type: atomic 642 namespaces: 643 description: namespaces specifies a static 644 list of namespace names that the term 645 applies to. The term is applied to the 646 union of the namespaces listed in this 647 field and the ones selected by namespaceSelector. 648 null or empty namespaces list and null 649 namespaceSelector means "this pod's namespace". 650 items: 651 type: string 652 type: array 653 topologyKey: 654 description: This pod should be co-located 655 (affinity) or not co-located (anti-affinity) 656 with the pods matching the labelSelector 657 in the specified namespaces, where co-located 658 is defined as running on a node whose 659 value of the label with key topologyKey 660 matches that of any node on which any 661 of the selected pods is running. Empty 662 topologyKey is not allowed. 663 type: string 664 required: 665 - topologyKey 666 type: object 667 weight: 668 description: weight associated with matching 669 the corresponding podAffinityTerm, in the 670 range 1-100. 671 format: int32 672 type: integer 673 required: 674 - podAffinityTerm 675 - weight 676 type: object 677 type: array 678 requiredDuringSchedulingIgnoredDuringExecution: 679 description: If the affinity requirements specified 680 by this field are not met at scheduling time, the 681 pod will not be scheduled onto the node. If the 682 affinity requirements specified by this field cease 683 to be met at some point during pod execution (e.g. 684 due to a pod label update), the system may or may 685 not try to eventually evict the pod from its node. 686 When there are multiple elements, the lists of nodes 687 corresponding to each podAffinityTerm are intersected, 688 i.e. all terms must be satisfied. 689 items: 690 description: Defines a set of pods (namely those 691 matching the labelSelector relative to the given 692 namespace(s)) that this pod should be co-located 693 (affinity) or not co-located (anti-affinity) with, 694 where co-located is defined as running on a node 695 whose value of the label with key <topologyKey> 696 matches that of any node on which a pod of the 697 set of pods is running 698 properties: 699 labelSelector: 700 description: A label query over a set of resources, 701 in this case pods. 702 properties: 703 matchExpressions: 704 description: matchExpressions is a list 705 of label selector requirements. The requirements 706 are ANDed. 707 items: 708 description: A label selector requirement 709 is a selector that contains values, 710 a key, and an operator that relates 711 the key and values. 712 properties: 713 key: 714 description: key is the label key 715 that the selector applies to. 716 type: string 717 operator: 718 description: operator represents a 719 key's relationship to a set of values. 720 Valid operators are In, NotIn, Exists 721 and DoesNotExist. 722 type: string 723 values: 724 description: values is an array of 725 string values. If the operator is 726 In or NotIn, the values array must 727 be non-empty. If the operator is 728 Exists or DoesNotExist, the values 729 array must be empty. This array 730 is replaced during a strategic merge 731 patch. 732 items: 733 type: string 734 type: array 735 required: 736 - key 737 - operator 738 type: object 739 type: array 740 matchLabels: 741 additionalProperties: 742 type: string 743 description: matchLabels is a map of {key,value} 744 pairs. A single {key,value} in the matchLabels 745 map is equivalent to an element of matchExpressions, 746 whose key field is "key", the operator 747 is "In", and the values array contains 748 only "value". The requirements are ANDed. 749 type: object 750 type: object 751 x-kubernetes-map-type: atomic 752 namespaceSelector: 753 description: A label query over the set of namespaces 754 that the term applies to. The term is applied 755 to the union of the namespaces selected by 756 this field and the ones listed in the namespaces 757 field. null selector and null or empty namespaces 758 list means "this pod's namespace". An empty 759 selector ({}) matches all namespaces. 760 properties: 761 matchExpressions: 762 description: matchExpressions is a list 763 of label selector requirements. The requirements 764 are ANDed. 765 items: 766 description: A label selector requirement 767 is a selector that contains values, 768 a key, and an operator that relates 769 the key and values. 770 properties: 771 key: 772 description: key is the label key 773 that the selector applies to. 774 type: string 775 operator: 776 description: operator represents a 777 key's relationship to a set of values. 778 Valid operators are In, NotIn, Exists 779 and DoesNotExist. 780 type: string 781 values: 782 description: values is an array of 783 string values. If the operator is 784 In or NotIn, the values array must 785 be non-empty. If the operator is 786 Exists or DoesNotExist, the values 787 array must be empty. This array 788 is replaced during a strategic merge 789 patch. 790 items: 791 type: string 792 type: array 793 required: 794 - key 795 - operator 796 type: object 797 type: array 798 matchLabels: 799 additionalProperties: 800 type: string 801 description: matchLabels is a map of {key,value} 802 pairs. A single {key,value} in the matchLabels 803 map is equivalent to an element of matchExpressions, 804 whose key field is "key", the operator 805 is "In", and the values array contains 806 only "value". The requirements are ANDed. 807 type: object 808 type: object 809 x-kubernetes-map-type: atomic 810 namespaces: 811 description: namespaces specifies a static list 812 of namespace names that the term applies to. 813 The term is applied to the union of the namespaces 814 listed in this field and the ones selected 815 by namespaceSelector. null or empty namespaces 816 list and null namespaceSelector means "this 817 pod's namespace". 818 items: 819 type: string 820 type: array 821 topologyKey: 822 description: This pod should be co-located (affinity) 823 or not co-located (anti-affinity) with the 824 pods matching the labelSelector in the specified 825 namespaces, where co-located is defined as 826 running on a node whose value of the label 827 with key topologyKey matches that of any node 828 on which any of the selected pods is running. 829 Empty topologyKey is not allowed. 830 type: string 831 required: 832 - topologyKey 833 type: object 834 type: array 835 type: object 836 podAntiAffinity: 837 description: Describes pod anti-affinity scheduling rules 838 (e.g. avoid putting this pod in the same node, zone, 839 etc. as some other pod(s)). 840 properties: 841 preferredDuringSchedulingIgnoredDuringExecution: 842 description: The scheduler will prefer to schedule 843 pods to nodes that satisfy the anti-affinity expressions 844 specified by this field, but it may choose a node 845 that violates one or more of the expressions. The 846 node that is most preferred is the one with the 847 greatest sum of weights, i.e. for each node that 848 meets all of the scheduling requirements (resource 849 request, requiredDuringScheduling anti-affinity 850 expressions, etc.), compute a sum by iterating through 851 the elements of this field and adding "weight" to 852 the sum if the node has pods which matches the corresponding 853 podAffinityTerm; the node(s) with the highest sum 854 are the most preferred. 855 items: 856 description: The weights of all of the matched WeightedPodAffinityTerm 857 fields are added per-node to find the most preferred 858 node(s) 859 properties: 860 podAffinityTerm: 861 description: Required. A pod affinity term, 862 associated with the corresponding weight. 863 properties: 864 labelSelector: 865 description: A label query over a set of 866 resources, in this case pods. 867 properties: 868 matchExpressions: 869 description: matchExpressions is a list 870 of label selector requirements. The 871 requirements are ANDed. 872 items: 873 description: A label selector requirement 874 is a selector that contains values, 875 a key, and an operator that relates 876 the key and values. 877 properties: 878 key: 879 description: key is the label 880 key that the selector applies 881 to. 882 type: string 883 operator: 884 description: operator represents 885 a key's relationship to a set 886 of values. Valid operators are 887 In, NotIn, Exists and DoesNotExist. 888 type: string 889 values: 890 description: values is an array 891 of string values. If the operator 892 is In or NotIn, the values array 893 must be non-empty. If the operator 894 is Exists or DoesNotExist, the 895 values array must be empty. 896 This array is replaced during 897 a strategic merge patch. 898 items: 899 type: string 900 type: array 901 required: 902 - key 903 - operator 904 type: object 905 type: array 906 matchLabels: 907 additionalProperties: 908 type: string 909 description: matchLabels is a map of 910 {key,value} pairs. A single {key,value} 911 in the matchLabels map is equivalent 912 to an element of matchExpressions, 913 whose key field is "key", the operator 914 is "In", and the values array contains 915 only "value". The requirements are 916 ANDed. 917 type: object 918 type: object 919 x-kubernetes-map-type: atomic 920 namespaceSelector: 921 description: A label query over the set 922 of namespaces that the term applies to. 923 The term is applied to the union of the 924 namespaces selected by this field and 925 the ones listed in the namespaces field. 926 null selector and null or empty namespaces 927 list means "this pod's namespace". An 928 empty selector ({}) matches all namespaces. 929 properties: 930 matchExpressions: 931 description: matchExpressions is a list 932 of label selector requirements. The 933 requirements are ANDed. 934 items: 935 description: A label selector requirement 936 is a selector that contains values, 937 a key, and an operator that relates 938 the key and values. 939 properties: 940 key: 941 description: key is the label 942 key that the selector applies 943 to. 944 type: string 945 operator: 946 description: operator represents 947 a key's relationship to a set 948 of values. Valid operators are 949 In, NotIn, Exists and DoesNotExist. 950 type: string 951 values: 952 description: values is an array 953 of string values. If the operator 954 is In or NotIn, the values array 955 must be non-empty. If the operator 956 is Exists or DoesNotExist, the 957 values array must be empty. 958 This array is replaced during 959 a strategic merge patch. 960 items: 961 type: string 962 type: array 963 required: 964 - key 965 - operator 966 type: object 967 type: array 968 matchLabels: 969 additionalProperties: 970 type: string 971 description: matchLabels is a map of 972 {key,value} pairs. A single {key,value} 973 in the matchLabels map is equivalent 974 to an element of matchExpressions, 975 whose key field is "key", the operator 976 is "In", and the values array contains 977 only "value". The requirements are 978 ANDed. 979 type: object 980 type: object 981 x-kubernetes-map-type: atomic 982 namespaces: 983 description: namespaces specifies a static 984 list of namespace names that the term 985 applies to. The term is applied to the 986 union of the namespaces listed in this 987 field and the ones selected by namespaceSelector. 988 null or empty namespaces list and null 989 namespaceSelector means "this pod's namespace". 990 items: 991 type: string 992 type: array 993 topologyKey: 994 description: This pod should be co-located 995 (affinity) or not co-located (anti-affinity) 996 with the pods matching the labelSelector 997 in the specified namespaces, where co-located 998 is defined as running on a node whose 999 value of the label with key topologyKey 1000 matches that of any node on which any 1001 of the selected pods is running. Empty 1002 topologyKey is not allowed. 1003 type: string 1004 required: 1005 - topologyKey 1006 type: object 1007 weight: 1008 description: weight associated with matching 1009 the corresponding podAffinityTerm, in the 1010 range 1-100. 1011 format: int32 1012 type: integer 1013 required: 1014 - podAffinityTerm 1015 - weight 1016 type: object 1017 type: array 1018 requiredDuringSchedulingIgnoredDuringExecution: 1019 description: If the anti-affinity requirements specified 1020 by this field are not met at scheduling time, the 1021 pod will not be scheduled onto the node. If the 1022 anti-affinity requirements specified by this field 1023 cease to be met at some point during pod execution 1024 (e.g. due to a pod label update), the system may 1025 or may not try to eventually evict the pod from 1026 its node. When there are multiple elements, the 1027 lists of nodes corresponding to each podAffinityTerm 1028 are intersected, i.e. all terms must be satisfied. 1029 items: 1030 description: Defines a set of pods (namely those 1031 matching the labelSelector relative to the given 1032 namespace(s)) that this pod should be co-located 1033 (affinity) or not co-located (anti-affinity) with, 1034 where co-located is defined as running on a node 1035 whose value of the label with key <topologyKey> 1036 matches that of any node on which a pod of the 1037 set of pods is running 1038 properties: 1039 labelSelector: 1040 description: A label query over a set of resources, 1041 in this case pods. 1042 properties: 1043 matchExpressions: 1044 description: matchExpressions is a list 1045 of label selector requirements. The requirements 1046 are ANDed. 1047 items: 1048 description: A label selector requirement 1049 is a selector that contains values, 1050 a key, and an operator that relates 1051 the key and values. 1052 properties: 1053 key: 1054 description: key is the label key 1055 that the selector applies to. 1056 type: string 1057 operator: 1058 description: operator represents a 1059 key's relationship to a set of values. 1060 Valid operators are In, NotIn, Exists 1061 and DoesNotExist. 1062 type: string 1063 values: 1064 description: values is an array of 1065 string values. If the operator is 1066 In or NotIn, the values array must 1067 be non-empty. If the operator is 1068 Exists or DoesNotExist, the values 1069 array must be empty. This array 1070 is replaced during a strategic merge 1071 patch. 1072 items: 1073 type: string 1074 type: array 1075 required: 1076 - key 1077 - operator 1078 type: object 1079 type: array 1080 matchLabels: 1081 additionalProperties: 1082 type: string 1083 description: matchLabels is a map of {key,value} 1084 pairs. A single {key,value} in the matchLabels 1085 map is equivalent to an element of matchExpressions, 1086 whose key field is "key", the operator 1087 is "In", and the values array contains 1088 only "value". The requirements are ANDed. 1089 type: object 1090 type: object 1091 x-kubernetes-map-type: atomic 1092 namespaceSelector: 1093 description: A label query over the set of namespaces 1094 that the term applies to. The term is applied 1095 to the union of the namespaces selected by 1096 this field and the ones listed in the namespaces 1097 field. null selector and null or empty namespaces 1098 list means "this pod's namespace". An empty 1099 selector ({}) matches all namespaces. 1100 properties: 1101 matchExpressions: 1102 description: matchExpressions is a list 1103 of label selector requirements. The requirements 1104 are ANDed. 1105 items: 1106 description: A label selector requirement 1107 is a selector that contains values, 1108 a key, and an operator that relates 1109 the key and values. 1110 properties: 1111 key: 1112 description: key is the label key 1113 that the selector applies to. 1114 type: string 1115 operator: 1116 description: operator represents a 1117 key's relationship to a set of values. 1118 Valid operators are In, NotIn, Exists 1119 and DoesNotExist. 1120 type: string 1121 values: 1122 description: values is an array of 1123 string values. If the operator is 1124 In or NotIn, the values array must 1125 be non-empty. If the operator is 1126 Exists or DoesNotExist, the values 1127 array must be empty. This array 1128 is replaced during a strategic merge 1129 patch. 1130 items: 1131 type: string 1132 type: array 1133 required: 1134 - key 1135 - operator 1136 type: object 1137 type: array 1138 matchLabels: 1139 additionalProperties: 1140 type: string 1141 description: matchLabels is a map of {key,value} 1142 pairs. A single {key,value} in the matchLabels 1143 map is equivalent to an element of matchExpressions, 1144 whose key field is "key", the operator 1145 is "In", and the values array contains 1146 only "value". The requirements are ANDed. 1147 type: object 1148 type: object 1149 x-kubernetes-map-type: atomic 1150 namespaces: 1151 description: namespaces specifies a static list 1152 of namespace names that the term applies to. 1153 The term is applied to the union of the namespaces 1154 listed in this field and the ones selected 1155 by namespaceSelector. null or empty namespaces 1156 list and null namespaceSelector means "this 1157 pod's namespace". 1158 items: 1159 type: string 1160 type: array 1161 topologyKey: 1162 description: This pod should be co-located (affinity) 1163 or not co-located (anti-affinity) with the 1164 pods matching the labelSelector in the specified 1165 namespaces, where co-located is defined as 1166 running on a node whose value of the label 1167 with key topologyKey matches that of any node 1168 on which any of the selected pods is running. 1169 Empty topologyKey is not allowed. 1170 type: string 1171 required: 1172 - topologyKey 1173 type: object 1174 type: array 1175 type: object 1176 type: object 1177 nodeName: 1178 description: nodeName is a request to schedule this pod onto 1179 a specific node. If it is non-empty, the scheduler simply 1180 schedules this pod onto that node, assuming that it fits 1181 resource requirements. 1182 type: string 1183 nodeSelector: 1184 additionalProperties: 1185 type: string 1186 description: 'nodeSelector is a selector which must be true 1187 for the pod to fit on a node. Selector which must match 1188 a node''s labels for the pod to be scheduled on that node. 1189 More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/' 1190 type: object 1191 x-kubernetes-map-type: atomic 1192 schedulerName: 1193 description: If specified, the pod will be dispatched by specified 1194 scheduler. If not specified, the pod will be dispatched 1195 by default scheduler. 1196 type: string 1197 tolerations: 1198 description: the restoring pod's tolerations. 1199 items: 1200 description: The pod this Toleration is attached to tolerates 1201 any taint that matches the triple <key,value,effect> using 1202 the matching operator <operator>. 1203 properties: 1204 effect: 1205 description: Effect indicates the taint effect to match. 1206 Empty means match all taint effects. When specified, 1207 allowed values are NoSchedule, PreferNoSchedule and 1208 NoExecute. 1209 type: string 1210 key: 1211 description: Key is the taint key that the toleration 1212 applies to. Empty means match all taint keys. If the 1213 key is empty, operator must be Exists; this combination 1214 means to match all values and all keys. 1215 type: string 1216 operator: 1217 description: Operator represents a key's relationship 1218 to the value. Valid operators are Exists and Equal. 1219 Defaults to Equal. Exists is equivalent to wildcard 1220 for value, so that a pod can tolerate all taints of 1221 a particular category. 1222 type: string 1223 tolerationSeconds: 1224 description: TolerationSeconds represents the period 1225 of time the toleration (which must be of effect NoExecute, 1226 otherwise this field is ignored) tolerates the taint. 1227 By default, it is not set, which means tolerate the 1228 taint forever (do not evict). Zero and negative values 1229 will be treated as 0 (evict immediately) by the system. 1230 format: int64 1231 type: integer 1232 value: 1233 description: Value is the taint value the toleration 1234 matches to. If the operator is Exists, the value should 1235 be empty, otherwise just a regular string. 1236 type: string 1237 type: object 1238 type: array 1239 topologySpreadConstraints: 1240 description: topologySpreadConstraints describes how a group 1241 of pods ought to spread across topology domains. Scheduler 1242 will schedule pods in a way which abides by the constraints. 1243 refer to https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/ 1244 items: 1245 description: TopologySpreadConstraint specifies how to spread 1246 matching pods among the given topology. 1247 properties: 1248 labelSelector: 1249 description: LabelSelector is used to find matching 1250 pods. Pods that match this label selector are counted 1251 to determine the number of pods in their corresponding 1252 topology domain. 1253 properties: 1254 matchExpressions: 1255 description: matchExpressions is a list of label 1256 selector requirements. The requirements are ANDed. 1257 items: 1258 description: A label selector requirement is a 1259 selector that contains values, a key, and an 1260 operator that relates the key and values. 1261 properties: 1262 key: 1263 description: key is the label key that the 1264 selector applies to. 1265 type: string 1266 operator: 1267 description: operator represents a key's relationship 1268 to a set of values. Valid operators are 1269 In, NotIn, Exists and DoesNotExist. 1270 type: string 1271 values: 1272 description: values is an array of string 1273 values. If the operator is In or NotIn, 1274 the values array must be non-empty. If the 1275 operator is Exists or DoesNotExist, the 1276 values array must be empty. This array is 1277 replaced during a strategic merge patch. 1278 items: 1279 type: string 1280 type: array 1281 required: 1282 - key 1283 - operator 1284 type: object 1285 type: array 1286 matchLabels: 1287 additionalProperties: 1288 type: string 1289 description: matchLabels is a map of {key,value} 1290 pairs. A single {key,value} in the matchLabels 1291 map is equivalent to an element of matchExpressions, 1292 whose key field is "key", the operator is "In", 1293 and the values array contains only "value". The 1294 requirements are ANDed. 1295 type: object 1296 type: object 1297 x-kubernetes-map-type: atomic 1298 matchLabelKeys: 1299 description: "MatchLabelKeys is a set of pod label keys 1300 to select the pods over which spreading will be calculated. 1301 The keys are used to lookup values from the incoming 1302 pod labels, those key-value labels are ANDed with 1303 labelSelector to select the group of existing pods 1304 over which spreading will be calculated for the incoming 1305 pod. The same key is forbidden to exist in both MatchLabelKeys 1306 and LabelSelector. MatchLabelKeys cannot be set when 1307 LabelSelector isn't set. Keys that don't exist in 1308 the incoming pod labels will be ignored. A null or 1309 empty list means only match against labelSelector. 1310 \n This is a beta field and requires the MatchLabelKeysInPodTopologySpread 1311 feature gate to be enabled (enabled by default)." 1312 items: 1313 type: string 1314 type: array 1315 x-kubernetes-list-type: atomic 1316 maxSkew: 1317 description: 'MaxSkew describes the degree to which 1318 pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`, 1319 it is the maximum permitted difference between the 1320 number of matching pods in the target topology and 1321 the global minimum. The global minimum is the minimum 1322 number of matching pods in an eligible domain or zero 1323 if the number of eligible domains is less than MinDomains. 1324 For example, in a 3-zone cluster, MaxSkew is set to 1325 1, and pods with the same labelSelector spread as 1326 2/2/1: In this case, the global minimum is 1. | zone1 1327 | zone2 | zone3 | | P P | P P | P | - if MaxSkew 1328 is 1, incoming pod can only be scheduled to zone3 1329 to become 2/2/2; scheduling it onto zone1(zone2) would 1330 make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1). 1331 - if MaxSkew is 2, incoming pod can be scheduled onto 1332 any zone. When `whenUnsatisfiable=ScheduleAnyway`, 1333 it is used to give higher precedence to topologies 1334 that satisfy it. It''s a required field. Default value 1335 is 1 and 0 is not allowed.' 1336 format: int32 1337 type: integer 1338 minDomains: 1339 description: "MinDomains indicates a minimum number 1340 of eligible domains. When the number of eligible domains 1341 with matching topology keys is less than minDomains, 1342 Pod Topology Spread treats \"global minimum\" as 0, 1343 and then the calculation of Skew is performed. And 1344 when the number of eligible domains with matching 1345 topology keys equals or greater than minDomains, this 1346 value has no effect on scheduling. As a result, when 1347 the number of eligible domains is less than minDomains, 1348 scheduler won't schedule more than maxSkew Pods to 1349 those domains. If value is nil, the constraint behaves 1350 as if MinDomains is equal to 1. Valid values are integers 1351 greater than 0. When value is not nil, WhenUnsatisfiable 1352 must be DoNotSchedule. \n For example, in a 3-zone 1353 cluster, MaxSkew is set to 2, MinDomains is set to 1354 5 and pods with the same labelSelector spread as 2/2/2: 1355 | zone1 | zone2 | zone3 | | P P | P P | P P | 1356 The number of domains is less than 5(MinDomains), 1357 so \"global minimum\" is treated as 0. In this situation, 1358 new pod with the same labelSelector cannot be scheduled, 1359 because computed skew will be 3(3 - 0) if new Pod 1360 is scheduled to any of the three zones, it will violate 1361 MaxSkew. \n This is a beta field and requires the 1362 MinDomainsInPodTopologySpread feature gate to be enabled 1363 (enabled by default)." 1364 format: int32 1365 type: integer 1366 nodeAffinityPolicy: 1367 description: "NodeAffinityPolicy indicates how we will 1368 treat Pod's nodeAffinity/nodeSelector when calculating 1369 pod topology spread skew. Options are: - Honor: only 1370 nodes matching nodeAffinity/nodeSelector are included 1371 in the calculations. - Ignore: nodeAffinity/nodeSelector 1372 are ignored. All nodes are included in the calculations. 1373 \n If this value is nil, the behavior is equivalent 1374 to the Honor policy. This is a beta-level feature 1375 default enabled by the NodeInclusionPolicyInPodTopologySpread 1376 feature flag." 1377 type: string 1378 nodeTaintsPolicy: 1379 description: "NodeTaintsPolicy indicates how we will 1380 treat node taints when calculating pod topology spread 1381 skew. Options are: - Honor: nodes without taints, 1382 along with tainted nodes for which the incoming pod 1383 has a toleration, are included. - Ignore: node taints 1384 are ignored. All nodes are included. \n If this value 1385 is nil, the behavior is equivalent to the Ignore policy. 1386 This is a beta-level feature default enabled by the 1387 NodeInclusionPolicyInPodTopologySpread feature flag." 1388 type: string 1389 topologyKey: 1390 description: TopologyKey is the key of node labels. 1391 Nodes that have a label with this key and identical 1392 values are considered to be in the same topology. 1393 We consider each <key, value> as a "bucket", and try 1394 to put balanced number of pods into each bucket. We 1395 define a domain as a particular instance of a topology. 1396 Also, we define an eligible domain as a domain whose 1397 nodes meet the requirements of nodeAffinityPolicy 1398 and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname", 1399 each Node is a domain of that topology. And, if TopologyKey 1400 is "topology.kubernetes.io/zone", each zone is a domain 1401 of that topology. It's a required field. 1402 type: string 1403 whenUnsatisfiable: 1404 description: 'WhenUnsatisfiable indicates how to deal 1405 with a pod if it doesn''t satisfy the spread constraint. 1406 - DoNotSchedule (default) tells the scheduler not 1407 to schedule it. - ScheduleAnyway tells the scheduler 1408 to schedule the pod in any location, but giving higher 1409 precedence to topologies that would help reduce the 1410 skew. A constraint is considered "Unsatisfiable" for 1411 an incoming pod if and only if every possible node 1412 assignment for that pod would violate "MaxSkew" on 1413 some topology. For example, in a 3-zone cluster, MaxSkew 1414 is set to 1, and pods with the same labelSelector 1415 spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P 1416 | P | P | If WhenUnsatisfiable is set to DoNotSchedule, 1417 incoming pod can only be scheduled to zone2(zone3) 1418 to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) 1419 satisfies MaxSkew(1). In other words, the cluster 1420 can still be imbalanced, but scheduler won''t make 1421 it *more* imbalanced. It''s a required field.' 1422 type: string 1423 required: 1424 - maxSkew 1425 - topologyKey 1426 - whenUnsatisfiable 1427 type: object 1428 type: array 1429 type: object 1430 x-kubernetes-validations: 1431 - message: forbidden to update spec.prepareDataConfig.schedulingSpec 1432 rule: self == oldSelf 1433 volumeClaimRestorePolicy: 1434 default: Parallel 1435 description: 'VolumeClaimRestorePolicy defines restore policy 1436 for persistent volume claim. Supported policies are as follows: 1437 1. Parallel: parallel recovery of persistent volume claim. 2. 1438 Serial: restore the persistent volume claim in sequence, and 1439 wait until the previous persistent volume claim is restored 1440 before restoring a new one.' 1441 enum: 1442 - Parallel 1443 - Serial 1444 type: string 1445 volumeClaims: 1446 description: volumeClaims defines the persistent Volume claims 1447 that need to be restored and mount them together into the restore 1448 job. these persistent Volume claims will be created if not exist. 1449 items: 1450 properties: 1451 metadata: 1452 description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' 1453 properties: 1454 annotations: 1455 additionalProperties: 1456 type: string 1457 type: object 1458 finalizers: 1459 items: 1460 type: string 1461 type: array 1462 labels: 1463 additionalProperties: 1464 type: string 1465 type: object 1466 name: 1467 type: string 1468 namespace: 1469 type: string 1470 type: object 1471 mountPath: 1472 description: mountPath path within the restoring container 1473 at which the volume should be mounted. 1474 type: string 1475 volumeClaimSpec: 1476 description: volumeClaimSpec defines the desired characteristics 1477 of a persistent volume claim. 1478 properties: 1479 accessModes: 1480 description: 'accessModes contains the desired access 1481 modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' 1482 items: 1483 type: string 1484 type: array 1485 dataSource: 1486 description: 'dataSource field can be used to specify 1487 either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) 1488 * An existing PVC (PersistentVolumeClaim) If the provisioner 1489 or an external controller can support the specified 1490 data source, it will create a new volume based on 1491 the contents of the specified data source. When the 1492 AnyVolumeDataSource feature gate is enabled, dataSource 1493 contents will be copied to dataSourceRef, and dataSourceRef 1494 contents will be copied to dataSource when dataSourceRef.namespace 1495 is not specified. If the namespace is specified, then 1496 dataSourceRef will not be copied to dataSource.' 1497 properties: 1498 apiGroup: 1499 description: APIGroup is the group for the resource 1500 being referenced. If APIGroup is not specified, 1501 the specified Kind must be in the core API group. 1502 For any other third-party types, APIGroup is required. 1503 type: string 1504 kind: 1505 description: Kind is the type of resource being 1506 referenced 1507 type: string 1508 name: 1509 description: Name is the name of resource being 1510 referenced 1511 type: string 1512 required: 1513 - kind 1514 - name 1515 type: object 1516 x-kubernetes-map-type: atomic 1517 dataSourceRef: 1518 description: 'dataSourceRef specifies the object from 1519 which to populate the volume with data, if a non-empty 1520 volume is desired. This may be any object from a non-empty 1521 API group (non core object) or a PersistentVolumeClaim 1522 object. When this field is specified, volume binding 1523 will only succeed if the type of the specified object 1524 matches some installed volume populator or dynamic 1525 provisioner. This field will replace the functionality 1526 of the dataSource field and as such if both fields 1527 are non-empty, they must have the same value. For 1528 backwards compatibility, when namespace isn''t specified 1529 in dataSourceRef, both fields (dataSource and dataSourceRef) 1530 will be set to the same value automatically if one 1531 of them is empty and the other is non-empty. When 1532 namespace is specified in dataSourceRef, dataSource 1533 isn''t set to the same value and must be empty. There 1534 are three important differences between dataSource 1535 and dataSourceRef: * While dataSource only allows 1536 two specific types of objects, dataSourceRef allows 1537 any non-core object, as well as PersistentVolumeClaim 1538 objects. * While dataSource ignores disallowed values 1539 (dropping them), dataSourceRef preserves all values, 1540 and generates an error if a disallowed value is specified. 1541 * While dataSource only allows local objects, dataSourceRef 1542 allows objects in any namespaces. (Beta) Using this 1543 field requires the AnyVolumeDataSource feature gate 1544 to be enabled. (Alpha) Using the namespace field of 1545 dataSourceRef requires the CrossNamespaceVolumeDataSource 1546 feature gate to be enabled.' 1547 properties: 1548 apiGroup: 1549 description: APIGroup is the group for the resource 1550 being referenced. If APIGroup is not specified, 1551 the specified Kind must be in the core API group. 1552 For any other third-party types, APIGroup is required. 1553 type: string 1554 kind: 1555 description: Kind is the type of resource being 1556 referenced 1557 type: string 1558 name: 1559 description: Name is the name of resource being 1560 referenced 1561 type: string 1562 namespace: 1563 description: Namespace is the namespace of resource 1564 being referenced Note that when a namespace is 1565 specified, a gateway.networking.k8s.io/ReferenceGrant 1566 object is required in the referent namespace to 1567 allow that namespace's owner to accept the reference. 1568 See the ReferenceGrant documentation for details. 1569 (Alpha) This field requires the CrossNamespaceVolumeDataSource 1570 feature gate to be enabled. 1571 type: string 1572 required: 1573 - kind 1574 - name 1575 type: object 1576 resources: 1577 description: 'resources represents the minimum resources 1578 the volume should have. If RecoverVolumeExpansionFailure 1579 feature is enabled users are allowed to specify resource 1580 requirements that are lower than previous value but 1581 must still be higher than capacity recorded in the 1582 status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' 1583 properties: 1584 claims: 1585 description: "Claims lists the names of resources, 1586 defined in spec.resourceClaims, that are used 1587 by this container. \n This is an alpha field and 1588 requires enabling the DynamicResourceAllocation 1589 feature gate. \n This field is immutable. It can 1590 only be set for containers." 1591 items: 1592 description: ResourceClaim references one entry 1593 in PodSpec.ResourceClaims. 1594 properties: 1595 name: 1596 description: Name must match the name of one 1597 entry in pod.spec.resourceClaims of the 1598 Pod where this field is used. It makes that 1599 resource available inside a container. 1600 type: string 1601 required: 1602 - name 1603 type: object 1604 type: array 1605 x-kubernetes-list-map-keys: 1606 - name 1607 x-kubernetes-list-type: map 1608 limits: 1609 additionalProperties: 1610 anyOf: 1611 - type: integer 1612 - type: string 1613 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1614 x-kubernetes-int-or-string: true 1615 description: 'Limits describes the maximum amount 1616 of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 1617 type: object 1618 requests: 1619 additionalProperties: 1620 anyOf: 1621 - type: integer 1622 - type: string 1623 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1624 x-kubernetes-int-or-string: true 1625 description: 'Requests describes the minimum amount 1626 of compute resources required. If Requests is 1627 omitted for a container, it defaults to Limits 1628 if that is explicitly specified, otherwise to 1629 an implementation-defined value. Requests cannot 1630 exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 1631 type: object 1632 type: object 1633 selector: 1634 description: selector is a label query over volumes 1635 to consider for binding. 1636 properties: 1637 matchExpressions: 1638 description: matchExpressions is a list of label 1639 selector requirements. The requirements are ANDed. 1640 items: 1641 description: A label selector requirement is a 1642 selector that contains values, a key, and an 1643 operator that relates the key and values. 1644 properties: 1645 key: 1646 description: key is the label key that the 1647 selector applies to. 1648 type: string 1649 operator: 1650 description: operator represents a key's relationship 1651 to a set of values. Valid operators are 1652 In, NotIn, Exists and DoesNotExist. 1653 type: string 1654 values: 1655 description: values is an array of string 1656 values. If the operator is In or NotIn, 1657 the values array must be non-empty. If the 1658 operator is Exists or DoesNotExist, the 1659 values array must be empty. This array is 1660 replaced during a strategic merge patch. 1661 items: 1662 type: string 1663 type: array 1664 required: 1665 - key 1666 - operator 1667 type: object 1668 type: array 1669 matchLabels: 1670 additionalProperties: 1671 type: string 1672 description: matchLabels is a map of {key,value} 1673 pairs. A single {key,value} in the matchLabels 1674 map is equivalent to an element of matchExpressions, 1675 whose key field is "key", the operator is "In", 1676 and the values array contains only "value". The 1677 requirements are ANDed. 1678 type: object 1679 type: object 1680 x-kubernetes-map-type: atomic 1681 storageClassName: 1682 description: 'storageClassName is the name of the StorageClass 1683 required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' 1684 type: string 1685 volumeMode: 1686 description: volumeMode defines what type of volume 1687 is required by the claim. Value of Filesystem is implied 1688 when not included in claim spec. 1689 type: string 1690 volumeName: 1691 description: volumeName is the binding reference to 1692 the PersistentVolume backing this claim. 1693 type: string 1694 type: object 1695 volumeSource: 1696 description: volumeSource describes the volume will be restored 1697 from the specified volume of the backup targetVolumes. 1698 required if the backup uses volume snapshot. 1699 type: string 1700 required: 1701 - metadata 1702 - volumeClaimSpec 1703 type: object 1704 x-kubernetes-validations: 1705 - message: at least one exists for volumeSource and mountPath. 1706 rule: self.volumeSource != '' || self.mountPath !='' 1707 type: array 1708 x-kubernetes-validations: 1709 - message: forbidden to update spec.prepareDataConfig.volumeClaims 1710 rule: self == oldSelf 1711 volumeClaimsTemplate: 1712 description: volumeClaimsTemplate defines a template to build 1713 persistent Volume claims that need to be restored. these claims 1714 will be created in an orderly manner based on the number of 1715 replicas or reused if already exist. 1716 properties: 1717 replicas: 1718 description: the replicas of persistent volume claim which 1719 need to be created and restored. the format of created claim 1720 name is "<template-name>-<index>". 1721 format: int32 1722 minimum: 1 1723 type: integer 1724 startingIndex: 1725 description: the starting index for the created persistent 1726 volume claim by according to template. minimum is 0. 1727 format: int32 1728 minimum: 0 1729 type: integer 1730 templates: 1731 description: templates is a list of volume claims. 1732 items: 1733 properties: 1734 metadata: 1735 description: 'Standard object''s metadata. More info: 1736 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' 1737 properties: 1738 annotations: 1739 additionalProperties: 1740 type: string 1741 type: object 1742 finalizers: 1743 items: 1744 type: string 1745 type: array 1746 labels: 1747 additionalProperties: 1748 type: string 1749 type: object 1750 name: 1751 type: string 1752 namespace: 1753 type: string 1754 type: object 1755 mountPath: 1756 description: mountPath path within the restoring container 1757 at which the volume should be mounted. 1758 type: string 1759 volumeClaimSpec: 1760 description: volumeClaimSpec defines the desired characteristics 1761 of a persistent volume claim. 1762 properties: 1763 accessModes: 1764 description: 'accessModes contains the desired access 1765 modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' 1766 items: 1767 type: string 1768 type: array 1769 dataSource: 1770 description: 'dataSource field can be used to specify 1771 either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) 1772 * An existing PVC (PersistentVolumeClaim) If the 1773 provisioner or an external controller can support 1774 the specified data source, it will create a new 1775 volume based on the contents of the specified 1776 data source. When the AnyVolumeDataSource feature 1777 gate is enabled, dataSource contents will be copied 1778 to dataSourceRef, and dataSourceRef contents will 1779 be copied to dataSource when dataSourceRef.namespace 1780 is not specified. If the namespace is specified, 1781 then dataSourceRef will not be copied to dataSource.' 1782 properties: 1783 apiGroup: 1784 description: APIGroup is the group for the resource 1785 being referenced. If APIGroup is not specified, 1786 the specified Kind must be in the core API 1787 group. For any other third-party types, APIGroup 1788 is required. 1789 type: string 1790 kind: 1791 description: Kind is the type of resource being 1792 referenced 1793 type: string 1794 name: 1795 description: Name is the name of resource being 1796 referenced 1797 type: string 1798 required: 1799 - kind 1800 - name 1801 type: object 1802 x-kubernetes-map-type: atomic 1803 dataSourceRef: 1804 description: 'dataSourceRef specifies the object 1805 from which to populate the volume with data, if 1806 a non-empty volume is desired. This may be any 1807 object from a non-empty API group (non core object) 1808 or a PersistentVolumeClaim object. When this field 1809 is specified, volume binding will only succeed 1810 if the type of the specified object matches some 1811 installed volume populator or dynamic provisioner. 1812 This field will replace the functionality of the 1813 dataSource field and as such if both fields are 1814 non-empty, they must have the same value. For 1815 backwards compatibility, when namespace isn''t 1816 specified in dataSourceRef, both fields (dataSource 1817 and dataSourceRef) will be set to the same value 1818 automatically if one of them is empty and the 1819 other is non-empty. When namespace is specified 1820 in dataSourceRef, dataSource isn''t set to the 1821 same value and must be empty. There are three 1822 important differences between dataSource and dataSourceRef: 1823 * While dataSource only allows two specific types 1824 of objects, dataSourceRef allows any non-core 1825 object, as well as PersistentVolumeClaim objects. 1826 * While dataSource ignores disallowed values (dropping 1827 them), dataSourceRef preserves all values, and 1828 generates an error if a disallowed value is specified. 1829 * While dataSource only allows local objects, 1830 dataSourceRef allows objects in any namespaces. 1831 (Beta) Using this field requires the AnyVolumeDataSource 1832 feature gate to be enabled. (Alpha) Using the 1833 namespace field of dataSourceRef requires the 1834 CrossNamespaceVolumeDataSource feature gate to 1835 be enabled.' 1836 properties: 1837 apiGroup: 1838 description: APIGroup is the group for the resource 1839 being referenced. If APIGroup is not specified, 1840 the specified Kind must be in the core API 1841 group. For any other third-party types, APIGroup 1842 is required. 1843 type: string 1844 kind: 1845 description: Kind is the type of resource being 1846 referenced 1847 type: string 1848 name: 1849 description: Name is the name of resource being 1850 referenced 1851 type: string 1852 namespace: 1853 description: Namespace is the namespace of resource 1854 being referenced Note that when a namespace 1855 is specified, a gateway.networking.k8s.io/ReferenceGrant 1856 object is required in the referent namespace 1857 to allow that namespace's owner to accept 1858 the reference. See the ReferenceGrant documentation 1859 for details. (Alpha) This field requires the 1860 CrossNamespaceVolumeDataSource feature gate 1861 to be enabled. 1862 type: string 1863 required: 1864 - kind 1865 - name 1866 type: object 1867 resources: 1868 description: 'resources represents the minimum resources 1869 the volume should have. If RecoverVolumeExpansionFailure 1870 feature is enabled users are allowed to specify 1871 resource requirements that are lower than previous 1872 value but must still be higher than capacity recorded 1873 in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' 1874 properties: 1875 claims: 1876 description: "Claims lists the names of resources, 1877 defined in spec.resourceClaims, that are used 1878 by this container. \n This is an alpha field 1879 and requires enabling the DynamicResourceAllocation 1880 feature gate. \n This field is immutable. 1881 It can only be set for containers." 1882 items: 1883 description: ResourceClaim references one 1884 entry in PodSpec.ResourceClaims. 1885 properties: 1886 name: 1887 description: Name must match the name 1888 of one entry in pod.spec.resourceClaims 1889 of the Pod where this field is used. 1890 It makes that resource available inside 1891 a container. 1892 type: string 1893 required: 1894 - name 1895 type: object 1896 type: array 1897 x-kubernetes-list-map-keys: 1898 - name 1899 x-kubernetes-list-type: map 1900 limits: 1901 additionalProperties: 1902 anyOf: 1903 - type: integer 1904 - type: string 1905 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1906 x-kubernetes-int-or-string: true 1907 description: 'Limits describes the maximum amount 1908 of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 1909 type: object 1910 requests: 1911 additionalProperties: 1912 anyOf: 1913 - type: integer 1914 - type: string 1915 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 1916 x-kubernetes-int-or-string: true 1917 description: 'Requests describes the minimum 1918 amount of compute resources required. If Requests 1919 is omitted for a container, it defaults to 1920 Limits if that is explicitly specified, otherwise 1921 to an implementation-defined value. Requests 1922 cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 1923 type: object 1924 type: object 1925 selector: 1926 description: selector is a label query over volumes 1927 to consider for binding. 1928 properties: 1929 matchExpressions: 1930 description: matchExpressions is a list of label 1931 selector requirements. The requirements are 1932 ANDed. 1933 items: 1934 description: A label selector requirement 1935 is a selector that contains values, a key, 1936 and an operator that relates the key and 1937 values. 1938 properties: 1939 key: 1940 description: key is the label key that 1941 the selector applies to. 1942 type: string 1943 operator: 1944 description: operator represents a key's 1945 relationship to a set of values. Valid 1946 operators are In, NotIn, Exists and 1947 DoesNotExist. 1948 type: string 1949 values: 1950 description: values is an array of string 1951 values. If the operator is In or NotIn, 1952 the values array must be non-empty. 1953 If the operator is Exists or DoesNotExist, 1954 the values array must be empty. This 1955 array is replaced during a strategic 1956 merge patch. 1957 items: 1958 type: string 1959 type: array 1960 required: 1961 - key 1962 - operator 1963 type: object 1964 type: array 1965 matchLabels: 1966 additionalProperties: 1967 type: string 1968 description: matchLabels is a map of {key,value} 1969 pairs. A single {key,value} in the matchLabels 1970 map is equivalent to an element of matchExpressions, 1971 whose key field is "key", the operator is 1972 "In", and the values array contains only "value". 1973 The requirements are ANDed. 1974 type: object 1975 type: object 1976 x-kubernetes-map-type: atomic 1977 storageClassName: 1978 description: 'storageClassName is the name of the 1979 StorageClass required by the claim. More info: 1980 https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' 1981 type: string 1982 volumeMode: 1983 description: volumeMode defines what type of volume 1984 is required by the claim. Value of Filesystem 1985 is implied when not included in claim spec. 1986 type: string 1987 volumeName: 1988 description: volumeName is the binding reference 1989 to the PersistentVolume backing this claim. 1990 type: string 1991 type: object 1992 volumeSource: 1993 description: volumeSource describes the volume will 1994 be restored from the specified volume of the backup 1995 targetVolumes. required if the backup uses volume 1996 snapshot. 1997 type: string 1998 required: 1999 - metadata 2000 - volumeClaimSpec 2001 type: object 2002 x-kubernetes-validations: 2003 - message: at least one exists for volumeSource and mountPath. 2004 rule: self.volumeSource != '' || self.mountPath !='' 2005 type: array 2006 required: 2007 - replicas 2008 - templates 2009 type: object 2010 x-kubernetes-validations: 2011 - message: forbidden to update spec.prepareDataConfig.volumeClaimsTemplate 2012 rule: self == oldSelf 2013 required: 2014 - volumeClaimRestorePolicy 2015 type: object 2016 readyConfig: 2017 description: configuration for the action of "postReady" phase. 2018 properties: 2019 connectionCredential: 2020 description: credential template used for creating a connection 2021 credential 2022 properties: 2023 hostKey: 2024 description: hostKey specifies the map key of the host in 2025 the connection credential secret. 2026 type: string 2027 passwordKey: 2028 default: password 2029 description: passwordKey specifies the map key of the password 2030 in the connection credential secret. This password will 2031 be saved in the backup annotation for full backup. You can 2032 use the environment variable DP_ENCRYPTION_KEY to specify 2033 encryption key. 2034 type: string 2035 portKey: 2036 description: portKey specifies the map key of the port in 2037 the connection credential secret. 2038 type: string 2039 secretName: 2040 description: secretName refers to the Secret object that contains 2041 the connection credential. 2042 pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ 2043 type: string 2044 usernameKey: 2045 default: username 2046 description: usernameKey specifies the map key of the user 2047 in the connection credential secret. 2048 type: string 2049 required: 2050 - secretName 2051 type: object 2052 execAction: 2053 description: configuration for exec action. 2054 properties: 2055 target: 2056 description: execActionTarget defines the pods that need to 2057 be executed for the exec action. will execute on all pods 2058 that meet the conditions. 2059 properties: 2060 podSelector: 2061 description: kubectl exec in all selected pods. 2062 properties: 2063 matchExpressions: 2064 description: matchExpressions is a list of label selector 2065 requirements. The requirements are ANDed. 2066 items: 2067 description: A label selector requirement is a selector 2068 that contains values, a key, and an operator that 2069 relates the key and values. 2070 properties: 2071 key: 2072 description: key is the label key that the selector 2073 applies to. 2074 type: string 2075 operator: 2076 description: operator represents a key's relationship 2077 to a set of values. Valid operators are In, 2078 NotIn, Exists and DoesNotExist. 2079 type: string 2080 values: 2081 description: values is an array of string values. 2082 If the operator is In or NotIn, the values 2083 array must be non-empty. If the operator is 2084 Exists or DoesNotExist, the values array must 2085 be empty. This array is replaced during a 2086 strategic merge patch. 2087 items: 2088 type: string 2089 type: array 2090 required: 2091 - key 2092 - operator 2093 type: object 2094 type: array 2095 matchLabels: 2096 additionalProperties: 2097 type: string 2098 description: matchLabels is a map of {key,value} pairs. 2099 A single {key,value} in the matchLabels map is equivalent 2100 to an element of matchExpressions, whose key field 2101 is "key", the operator is "In", and the values array 2102 contains only "value". The requirements are ANDed. 2103 type: object 2104 type: object 2105 x-kubernetes-map-type: atomic 2106 required: 2107 - podSelector 2108 type: object 2109 type: object 2110 jobAction: 2111 description: configuration for job action. 2112 properties: 2113 target: 2114 description: jobActionTarget defines the pod that need to 2115 be executed for the job action. will select a pod that meets 2116 the conditions to execute. 2117 properties: 2118 podSelector: 2119 description: select one of the pods which selected by 2120 labels to build the job spec, such as mount required 2121 volumes and inject built-in env of the selected pod. 2122 properties: 2123 matchExpressions: 2124 description: matchExpressions is a list of label selector 2125 requirements. The requirements are ANDed. 2126 items: 2127 description: A label selector requirement is a selector 2128 that contains values, a key, and an operator that 2129 relates the key and values. 2130 properties: 2131 key: 2132 description: key is the label key that the selector 2133 applies to. 2134 type: string 2135 operator: 2136 description: operator represents a key's relationship 2137 to a set of values. Valid operators are In, 2138 NotIn, Exists and DoesNotExist. 2139 type: string 2140 values: 2141 description: values is an array of string values. 2142 If the operator is In or NotIn, the values 2143 array must be non-empty. If the operator is 2144 Exists or DoesNotExist, the values array must 2145 be empty. This array is replaced during a 2146 strategic merge patch. 2147 items: 2148 type: string 2149 type: array 2150 required: 2151 - key 2152 - operator 2153 type: object 2154 type: array 2155 matchLabels: 2156 additionalProperties: 2157 type: string 2158 description: matchLabels is a map of {key,value} pairs. 2159 A single {key,value} in the matchLabels map is equivalent 2160 to an element of matchExpressions, whose key field 2161 is "key", the operator is "In", and the values array 2162 contains only "value". The requirements are ANDed. 2163 type: object 2164 type: object 2165 x-kubernetes-map-type: atomic 2166 volumeMounts: 2167 description: volumeMounts defines which volumes of the 2168 selected pod need to be mounted on the restoring pod. 2169 items: 2170 description: VolumeMount describes a mounting of a Volume 2171 within a container. 2172 properties: 2173 mountPath: 2174 description: Path within the container at which 2175 the volume should be mounted. Must not contain 2176 ':'. 2177 type: string 2178 mountPropagation: 2179 description: mountPropagation determines how mounts 2180 are propagated from the host to container and 2181 the other way around. When not set, MountPropagationNone 2182 is used. This field is beta in 1.10. 2183 type: string 2184 name: 2185 description: This must match the Name of a Volume. 2186 type: string 2187 readOnly: 2188 description: Mounted read-only if true, read-write 2189 otherwise (false or unspecified). Defaults to 2190 false. 2191 type: boolean 2192 subPath: 2193 description: Path within the volume from which the 2194 container's volume should be mounted. Defaults 2195 to "" (volume's root). 2196 type: string 2197 subPathExpr: 2198 description: Expanded path within the volume from 2199 which the container's volume should be mounted. 2200 Behaves similarly to SubPath but environment variable 2201 references $(VAR_NAME) are expanded using the 2202 container's environment. Defaults to "" (volume's 2203 root). SubPathExpr and SubPath are mutually exclusive. 2204 type: string 2205 required: 2206 - mountPath 2207 - name 2208 type: object 2209 type: array 2210 required: 2211 - podSelector 2212 type: object 2213 required: 2214 - target 2215 type: object 2216 readinessProbe: 2217 description: periodic probe of the service readiness. controller 2218 will perform postReadyHooks of BackupScript.spec.restore after 2219 the service readiness when readinessProbe is configured. 2220 properties: 2221 exec: 2222 description: exec specifies the action to take. 2223 properties: 2224 command: 2225 description: refer to container command. 2226 items: 2227 type: string 2228 type: array 2229 image: 2230 description: refer to container image. 2231 type: string 2232 required: 2233 - command 2234 - image 2235 type: object 2236 initialDelaySeconds: 2237 description: number of seconds after the container has started 2238 before probe is initiated. 2239 minimum: 0 2240 type: integer 2241 periodSeconds: 2242 default: 5 2243 description: how often (in seconds) to perform the probe. 2244 defaults to 5 second, minimum value is 1. 2245 minimum: 1 2246 type: integer 2247 timeoutSeconds: 2248 default: 30 2249 description: number of seconds after which the probe times 2250 out. defaults to 30 second, minimum value is 1. 2251 minimum: 1 2252 type: integer 2253 required: 2254 - exec 2255 type: object 2256 type: object 2257 x-kubernetes-validations: 2258 - message: at least one exists for jobAction and execAction. 2259 rule: has(self.jobAction) || has(self.execAction) 2260 resources: 2261 description: restore the specified resources of kubernetes. 2262 properties: 2263 included: 2264 description: will restore the specified resources 2265 items: 2266 properties: 2267 groupResource: 2268 type: string 2269 labelSelector: 2270 description: select the specified resource for recovery 2271 by label. 2272 properties: 2273 matchExpressions: 2274 description: matchExpressions is a list of label selector 2275 requirements. The requirements are ANDed. 2276 items: 2277 description: A label selector requirement is a selector 2278 that contains values, a key, and an operator that 2279 relates the key and values. 2280 properties: 2281 key: 2282 description: key is the label key that the selector 2283 applies to. 2284 type: string 2285 operator: 2286 description: operator represents a key's relationship 2287 to a set of values. Valid operators are In, 2288 NotIn, Exists and DoesNotExist. 2289 type: string 2290 values: 2291 description: values is an array of string values. 2292 If the operator is In or NotIn, the values array 2293 must be non-empty. If the operator is Exists 2294 or DoesNotExist, the values array must be empty. 2295 This array is replaced during a strategic merge 2296 patch. 2297 items: 2298 type: string 2299 type: array 2300 required: 2301 - key 2302 - operator 2303 type: object 2304 type: array 2305 matchLabels: 2306 additionalProperties: 2307 type: string 2308 description: matchLabels is a map of {key,value} pairs. 2309 A single {key,value} in the matchLabels map is equivalent 2310 to an element of matchExpressions, whose key field 2311 is "key", the operator is "In", and the values array 2312 contains only "value". The requirements are ANDed. 2313 type: object 2314 type: object 2315 x-kubernetes-map-type: atomic 2316 required: 2317 - groupResource 2318 type: object 2319 type: array 2320 type: object 2321 x-kubernetes-validations: 2322 - message: forbidden to update spec.resources 2323 rule: self == oldSelf 2324 restoreTime: 2325 description: restoreTime is the point in time for restoring. 2326 pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z$ 2327 type: string 2328 x-kubernetes-validations: 2329 - message: forbidden to update spec.restoreTime 2330 rule: self == oldSelf 2331 serviceAccountName: 2332 description: service account name which needs for recovery pod. 2333 type: string 2334 required: 2335 - backup 2336 type: object 2337 status: 2338 description: RestoreStatus defines the observed state of Restore 2339 properties: 2340 actions: 2341 description: recorded all restore actions performed. 2342 properties: 2343 postReady: 2344 description: record the actions for postReady phase. 2345 items: 2346 properties: 2347 backupName: 2348 description: which backup's restore action belongs to. 2349 type: string 2350 endTime: 2351 description: endTime is the completion time for the restore 2352 job. 2353 format: date-time 2354 type: string 2355 message: 2356 description: message is a human readable message indicating 2357 details about the object condition. 2358 type: string 2359 name: 2360 description: name describes the name of the recovery action 2361 based on the current backup. 2362 type: string 2363 objectKey: 2364 description: the execution object of the restore action. 2365 type: string 2366 startTime: 2367 description: startTime is the start time for the restore 2368 job. 2369 format: date-time 2370 type: string 2371 status: 2372 description: the status of this action. 2373 enum: 2374 - Processing 2375 - Completed 2376 - Failed 2377 type: string 2378 required: 2379 - backupName 2380 - name 2381 - objectKey 2382 type: object 2383 type: array 2384 prepareData: 2385 description: record the actions for prepareData phase. 2386 items: 2387 properties: 2388 backupName: 2389 description: which backup's restore action belongs to. 2390 type: string 2391 endTime: 2392 description: endTime is the completion time for the restore 2393 job. 2394 format: date-time 2395 type: string 2396 message: 2397 description: message is a human readable message indicating 2398 details about the object condition. 2399 type: string 2400 name: 2401 description: name describes the name of the recovery action 2402 based on the current backup. 2403 type: string 2404 objectKey: 2405 description: the execution object of the restore action. 2406 type: string 2407 startTime: 2408 description: startTime is the start time for the restore 2409 job. 2410 format: date-time 2411 type: string 2412 status: 2413 description: the status of this action. 2414 enum: 2415 - Processing 2416 - Completed 2417 - Failed 2418 type: string 2419 required: 2420 - backupName 2421 - name 2422 - objectKey 2423 type: object 2424 type: array 2425 type: object 2426 completionTimestamp: 2427 description: Date/time when the restore finished being processed. 2428 format: date-time 2429 type: string 2430 conditions: 2431 description: describe current state of restore API Resource, like 2432 warning. 2433 items: 2434 description: "Condition contains details for one aspect of the current 2435 state of this API Resource. --- This struct is intended for direct 2436 use as an array at the field path .status.conditions. For example, 2437 \n type FooStatus struct{ // Represents the observations of a 2438 foo's current state. // Known .status.conditions.type are: \"Available\", 2439 \"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge 2440 // +listType=map // +listMapKey=type Conditions []metav1.Condition 2441 `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" 2442 protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }" 2443 properties: 2444 lastTransitionTime: 2445 description: lastTransitionTime is the last time the condition 2446 transitioned from one status to another. This should be when 2447 the underlying condition changed. If that is not known, then 2448 using the time when the API field changed is acceptable. 2449 format: date-time 2450 type: string 2451 message: 2452 description: message is a human readable message indicating 2453 details about the transition. This may be an empty string. 2454 maxLength: 32768 2455 type: string 2456 observedGeneration: 2457 description: observedGeneration represents the .metadata.generation 2458 that the condition was set based upon. For instance, if .metadata.generation 2459 is currently 12, but the .status.conditions[x].observedGeneration 2460 is 9, the condition is out of date with respect to the current 2461 state of the instance. 2462 format: int64 2463 minimum: 0 2464 type: integer 2465 reason: 2466 description: reason contains a programmatic identifier indicating 2467 the reason for the condition's last transition. Producers 2468 of specific condition types may define expected values and 2469 meanings for this field, and whether the values are considered 2470 a guaranteed API. The value should be a CamelCase string. 2471 This field may not be empty. 2472 maxLength: 1024 2473 minLength: 1 2474 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$ 2475 type: string 2476 status: 2477 description: status of the condition, one of True, False, Unknown. 2478 enum: 2479 - "True" 2480 - "False" 2481 - Unknown 2482 type: string 2483 type: 2484 description: type of condition in CamelCase or in foo.example.com/CamelCase. 2485 --- Many .condition.type values are consistent across resources 2486 like Available, but because arbitrary conditions can be useful 2487 (see .node.status.conditions), the ability to deconflict is 2488 important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) 2489 maxLength: 316 2490 pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$ 2491 type: string 2492 required: 2493 - lastTransitionTime 2494 - message 2495 - reason 2496 - status 2497 - type 2498 type: object 2499 type: array 2500 duration: 2501 description: The duration time of restore execution. When converted 2502 to a string, the form is "1h2m0.5s". 2503 type: string 2504 phase: 2505 description: RestorePhase The current phase. Valid values are Running, 2506 Completed, Failed, AsDataSource. 2507 enum: 2508 - Running 2509 - Completed 2510 - Failed 2511 - AsDataSource 2512 type: string 2513 startTimestamp: 2514 description: Date/time when the restore started being processed. 2515 format: date-time 2516 type: string 2517 type: object 2518 type: object 2519 served: true 2520 storage: true 2521 subresources: 2522 status: {}