github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/deploy/helm/crds/dataprotection.kubeblocks.io_backups.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: backups.dataprotection.kubeblocks.io 9 spec: 10 group: dataprotection.kubeblocks.io 11 names: 12 categories: 13 - kubeblocks 14 kind: Backup 15 listKind: BackupList 16 plural: backups 17 singular: backup 18 scope: Namespaced 19 versions: 20 - additionalPrinterColumns: 21 - jsonPath: .spec.backupPolicyName 22 name: POLICY 23 type: string 24 - jsonPath: .spec.backupMethod 25 name: METHOD 26 type: string 27 - jsonPath: .status.backupRepoName 28 name: REPO 29 type: string 30 - jsonPath: .status.phase 31 name: STATUS 32 type: string 33 - jsonPath: .status.totalSize 34 name: TOTAL-SIZE 35 type: string 36 - jsonPath: .status.duration 37 name: DURATION 38 type: string 39 - jsonPath: .metadata.creationTimestamp 40 name: CREATION-TIME 41 type: string 42 - jsonPath: .status.completionTimestamp 43 name: COMPLETION-TIME 44 type: string 45 - jsonPath: .status.expiration 46 name: EXPIRATION-TIME 47 type: string 48 name: v1alpha1 49 schema: 50 openAPIV3Schema: 51 description: Backup is the Schema for the backups API. 52 properties: 53 apiVersion: 54 description: 'APIVersion defines the versioned schema of this representation 55 of an object. Servers should convert recognized schemas to the latest 56 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 57 type: string 58 kind: 59 description: 'Kind is a string value representing the REST resource this 60 object represents. Servers may infer this from the endpoint the client 61 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 62 type: string 63 metadata: 64 type: object 65 spec: 66 description: BackupSpec defines the desired state of Backup. 67 properties: 68 backupMethod: 69 description: backupMethod specifies the backup method name that is 70 defined in backupPolicy. 71 type: string 72 x-kubernetes-validations: 73 - message: forbidden to update spec.backupMethod 74 rule: self == oldSelf 75 backupPolicyName: 76 description: Which backupPolicy is applied to perform this backup. 77 pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ 78 type: string 79 x-kubernetes-validations: 80 - message: forbidden to update spec.backupPolicyName 81 rule: self == oldSelf 82 deletionPolicy: 83 allOf: 84 - enum: 85 - Delete 86 - Retain 87 - enum: 88 - Delete 89 - Retain 90 default: Delete 91 description: deletionPolicy determines whether the backup contents 92 stored in backup repository should be deleted when the backup custom 93 resource is deleted. Supported values are "Retain" and "Delete". 94 "Retain" means that the backup can not be deleted and remains in 95 'Deleting' phase. "Delete" means that the backup content and its 96 physical snapshot on backup repository are deleted. 97 type: string 98 parentBackupName: 99 description: parentBackupName determines the parent backup name for 100 incremental or differential backup. 101 type: string 102 x-kubernetes-validations: 103 - message: forbidden to update spec.parentBackupName 104 rule: self == oldSelf 105 retentionPeriod: 106 description: "retentionPeriod determines a duration up to which the 107 backup should be kept. Controller will remove all backups that are 108 older than the RetentionPeriod. For example, RetentionPeriod of 109 `30d` will keep only the backups of last 30 days. Sample duration 110 format: - years: \t2y - months: \t6mo - days: \t\t30d - hours: \t12h 111 - minutes: \t30m You can also combine the above durations. For example: 112 30d12h30m. If not set, the backup will be kept forever." 113 type: string 114 required: 115 - backupMethod 116 - backupPolicyName 117 type: object 118 status: 119 description: BackupStatus defines the observed state of Backup. 120 properties: 121 actions: 122 description: actions records the actions information for this backup. 123 items: 124 properties: 125 actionType: 126 description: actionType is the type of the action. 127 type: string 128 availableReplicas: 129 description: availableReplicas available replicas for statefulSet 130 action. 131 format: int32 132 type: integer 133 completionTimestamp: 134 description: completionTimestamp records the time an action 135 was completed. 136 format: date-time 137 type: string 138 failureReason: 139 description: failureReason is an error that caused the backup 140 to fail. 141 type: string 142 name: 143 description: name is the name of the action. 144 type: string 145 objectRef: 146 description: objectRef is the object reference for the action. 147 properties: 148 apiVersion: 149 description: API version of the referent. 150 type: string 151 fieldPath: 152 description: 'If referring to a piece of an object instead 153 of an entire object, this string should contain a valid 154 JSON/Go field access statement, such as desiredState.manifest.containers[2]. 155 For example, if the object reference is to a container 156 within a pod, this would take on a value like: "spec.containers{name}" 157 (where "name" refers to the name of the container that 158 triggered the event) or if no container name is specified 159 "spec.containers[2]" (container with index 2 in this pod). 160 This syntax is chosen only to have some well-defined way 161 of referencing a part of an object. TODO: this design 162 is not final and this field is subject to change in the 163 future.' 164 type: string 165 kind: 166 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 167 type: string 168 name: 169 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' 170 type: string 171 namespace: 172 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' 173 type: string 174 resourceVersion: 175 description: 'Specific resourceVersion to which this reference 176 is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' 177 type: string 178 uid: 179 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' 180 type: string 181 type: object 182 x-kubernetes-map-type: atomic 183 phase: 184 description: phase is the current state of the action. 185 type: string 186 startTimestamp: 187 description: startTimestamp records the time an action was started. 188 format: date-time 189 type: string 190 timeRange: 191 description: timeRange records the time range of backed up data, 192 for PITR, this is the time range of recoverable data. 193 properties: 194 end: 195 description: end records the end time of backup. 196 format: date-time 197 type: string 198 start: 199 description: start records the start time of backup. 200 format: date-time 201 type: string 202 type: object 203 totalSize: 204 description: totalSize is the total size of backed up data size. 205 A string with capacity units in the format of "1Gi", "1Mi", 206 "1Ki". 207 type: string 208 volumeSnapshots: 209 description: volumeSnapshots records the volume snapshot status 210 for the action. 211 items: 212 properties: 213 contentName: 214 description: contentName is the name of the volume snapshot 215 content. 216 type: string 217 name: 218 description: name is the name of the volume snapshot. 219 type: string 220 size: 221 description: size is the size of the volume snapshot. 222 type: string 223 volumeName: 224 description: volumeName is the name of the volume. 225 type: string 226 type: object 227 type: array 228 type: object 229 type: array 230 backupMethod: 231 description: backupMethod records the backup method information for 232 this backup. Refer to BackupMethod for more details. 233 properties: 234 actionSetName: 235 description: actionSetName refers to the ActionSet object that 236 defines the backup actions. For volume snapshot backup, the 237 actionSet is not required, the controller will use the CSI volume 238 snapshotter to create the snapshot. 239 type: string 240 env: 241 description: env specifies the environment variables for the backup 242 workload. 243 items: 244 description: EnvVar represents an environment variable present 245 in a Container. 246 properties: 247 name: 248 description: Name of the environment variable. Must be a 249 C_IDENTIFIER. 250 type: string 251 value: 252 description: 'Variable references $(VAR_NAME) are expanded 253 using the previously defined environment variables in 254 the container and any service environment variables. If 255 a variable cannot be resolved, the reference in the input 256 string will be unchanged. Double $$ are reduced to a single 257 $, which allows for escaping the $(VAR_NAME) syntax: i.e. 258 "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". 259 Escaped references will never be expanded, regardless 260 of whether the variable exists or not. Defaults to "".' 261 type: string 262 valueFrom: 263 description: Source for the environment variable's value. 264 Cannot be used if value is not empty. 265 properties: 266 configMapKeyRef: 267 description: Selects a key of a ConfigMap. 268 properties: 269 key: 270 description: The key to select. 271 type: string 272 name: 273 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 274 TODO: Add other useful fields. apiVersion, kind, 275 uid?' 276 type: string 277 optional: 278 description: Specify whether the ConfigMap or its 279 key must be defined 280 type: boolean 281 required: 282 - key 283 type: object 284 x-kubernetes-map-type: atomic 285 fieldRef: 286 description: 'Selects a field of the pod: supports metadata.name, 287 metadata.namespace, `metadata.labels[''<KEY>'']`, 288 `metadata.annotations[''<KEY>'']`, spec.nodeName, 289 spec.serviceAccountName, status.hostIP, status.podIP, 290 status.podIPs.' 291 properties: 292 apiVersion: 293 description: Version of the schema the FieldPath 294 is written in terms of, defaults to "v1". 295 type: string 296 fieldPath: 297 description: Path of the field to select in the 298 specified API version. 299 type: string 300 required: 301 - fieldPath 302 type: object 303 x-kubernetes-map-type: atomic 304 resourceFieldRef: 305 description: 'Selects a resource of the container: only 306 resources limits and requests (limits.cpu, limits.memory, 307 limits.ephemeral-storage, requests.cpu, requests.memory 308 and requests.ephemeral-storage) are currently supported.' 309 properties: 310 containerName: 311 description: 'Container name: required for volumes, 312 optional for env vars' 313 type: string 314 divisor: 315 anyOf: 316 - type: integer 317 - type: string 318 description: Specifies the output format of the 319 exposed resources, defaults to "1" 320 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 321 x-kubernetes-int-or-string: true 322 resource: 323 description: 'Required: resource to select' 324 type: string 325 required: 326 - resource 327 type: object 328 x-kubernetes-map-type: atomic 329 secretKeyRef: 330 description: Selects a key of a secret in the pod's 331 namespace 332 properties: 333 key: 334 description: The key of the secret to select from. Must 335 be a valid secret key. 336 type: string 337 name: 338 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names 339 TODO: Add other useful fields. apiVersion, kind, 340 uid?' 341 type: string 342 optional: 343 description: Specify whether the Secret or its key 344 must be defined 345 type: boolean 346 required: 347 - key 348 type: object 349 x-kubernetes-map-type: atomic 350 type: object 351 required: 352 - name 353 type: object 354 type: array 355 name: 356 description: the name of backup method. 357 pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ 358 type: string 359 runtimeSettings: 360 description: runtimeSettings specifies runtime settings for the 361 backup workload container. 362 properties: 363 resources: 364 description: 'resources specifies the resource required by 365 container. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' 366 properties: 367 claims: 368 description: "Claims lists the names of resources, defined 369 in spec.resourceClaims, that are used by this container. 370 \n This is an alpha field and requires enabling the 371 DynamicResourceAllocation feature gate. \n This field 372 is immutable. It can only be set for containers." 373 items: 374 description: ResourceClaim references one entry in PodSpec.ResourceClaims. 375 properties: 376 name: 377 description: Name must match the name of one entry 378 in pod.spec.resourceClaims of the Pod where this 379 field is used. It makes that resource available 380 inside a container. 381 type: string 382 required: 383 - name 384 type: object 385 type: array 386 x-kubernetes-list-map-keys: 387 - name 388 x-kubernetes-list-type: map 389 limits: 390 additionalProperties: 391 anyOf: 392 - type: integer 393 - type: string 394 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 395 x-kubernetes-int-or-string: true 396 description: 'Limits describes the maximum amount of compute 397 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 398 type: object 399 requests: 400 additionalProperties: 401 anyOf: 402 - type: integer 403 - type: string 404 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 405 x-kubernetes-int-or-string: true 406 description: 'Requests describes the minimum amount of 407 compute resources required. If Requests is omitted for 408 a container, it defaults to Limits if that is explicitly 409 specified, otherwise to an implementation-defined value. 410 Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 411 type: object 412 type: object 413 type: object 414 snapshotVolumes: 415 default: false 416 description: snapshotVolumes specifies whether to take snapshots 417 of persistent volumes. if true, the BackupScript is not required, 418 the controller will use the CSI volume snapshotter to create 419 the snapshot. 420 type: boolean 421 targetVolumes: 422 description: targetVolumes specifies which volumes from the target 423 should be mounted in the backup workload. 424 properties: 425 volumeMounts: 426 description: volumeMounts specifies the mount for the volumes 427 specified in `Volumes` section. 428 items: 429 description: VolumeMount describes a mounting of a Volume 430 within a container. 431 properties: 432 mountPath: 433 description: Path within the container at which the 434 volume should be mounted. Must not contain ':'. 435 type: string 436 mountPropagation: 437 description: mountPropagation determines how mounts 438 are propagated from the host to container and the 439 other way around. When not set, MountPropagationNone 440 is used. This field is beta in 1.10. 441 type: string 442 name: 443 description: This must match the Name of a Volume. 444 type: string 445 readOnly: 446 description: Mounted read-only if true, read-write otherwise 447 (false or unspecified). Defaults to false. 448 type: boolean 449 subPath: 450 description: Path within the volume from which the container's 451 volume should be mounted. Defaults to "" (volume's 452 root). 453 type: string 454 subPathExpr: 455 description: Expanded path within the volume from which 456 the container's volume should be mounted. Behaves 457 similarly to SubPath but environment variable references 458 $(VAR_NAME) are expanded using the container's environment. 459 Defaults to "" (volume's root). SubPathExpr and SubPath 460 are mutually exclusive. 461 type: string 462 required: 463 - mountPath 464 - name 465 type: object 466 type: array 467 volumes: 468 description: Volumes indicates the list of volumes of targeted 469 application that should be mounted on the backup job. 470 items: 471 type: string 472 type: array 473 type: object 474 required: 475 - name 476 type: object 477 backupRepoName: 478 description: backupRepoName is the name of the backup repository. 479 type: string 480 completionTimestamp: 481 description: completionTimestamp records the time a backup was completed. 482 Completion time is recorded even on failed backups. The server's 483 time is used for CompletionTimestamp. 484 format: date-time 485 type: string 486 duration: 487 description: The duration time of backup execution. When converted 488 to a string, the format is "1h2m0.5s". 489 type: string 490 expiration: 491 description: expiration is when this backup is eligible for garbage 492 collection. 'null' means the Backup will NOT be cleaned except delete 493 manual. 494 format: date-time 495 type: string 496 failureReason: 497 description: failureReason is an error that caused the backup to fail. 498 type: string 499 formatVersion: 500 description: formatVersion is the backup format version, including 501 major, minor and patch version. 502 type: string 503 path: 504 description: path is the directory inside the backup repository where 505 the backup data is stored. It is an absolute path in the backup 506 repository. 507 type: string 508 persistentVolumeClaimName: 509 description: persistentVolumeClaimName is the name of the persistent 510 volume claim that is used to store the backup data. 511 type: string 512 phase: 513 description: phase is the current state of the Backup. 514 enum: 515 - New 516 - InProgress 517 - Running 518 - Completed 519 - Failed 520 - Deleting 521 type: string 522 startTimestamp: 523 description: startTimestamp records the time a backup was started. 524 The server's time is used for StartTimestamp. 525 format: date-time 526 type: string 527 target: 528 description: target records the target information for this backup. 529 properties: 530 connectionCredential: 531 description: connectionCredential specifies the connection credential 532 to connect to the target database cluster. 533 properties: 534 hostKey: 535 description: hostKey specifies the map key of the host in 536 the connection credential secret. 537 type: string 538 passwordKey: 539 default: password 540 description: passwordKey specifies the map key of the password 541 in the connection credential secret. This password will 542 be saved in the backup annotation for full backup. You can 543 use the environment variable DP_ENCRYPTION_KEY to specify 544 encryption key. 545 type: string 546 portKey: 547 description: portKey specifies the map key of the port in 548 the connection credential secret. 549 type: string 550 secretName: 551 description: secretName refers to the Secret object that contains 552 the connection credential. 553 pattern: ^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$ 554 type: string 555 usernameKey: 556 default: username 557 description: usernameKey specifies the map key of the user 558 in the connection credential secret. 559 type: string 560 required: 561 - secretName 562 type: object 563 podSelector: 564 description: podSelector is used to find the target pod. The volumes 565 of the target pod will be backed up. 566 properties: 567 matchExpressions: 568 description: matchExpressions is a list of label selector 569 requirements. The requirements are ANDed. 570 items: 571 description: A label selector requirement is a selector 572 that contains values, a key, and an operator that relates 573 the key and values. 574 properties: 575 key: 576 description: key is the label key that the selector 577 applies to. 578 type: string 579 operator: 580 description: operator represents a key's relationship 581 to a set of values. Valid operators are In, NotIn, 582 Exists and DoesNotExist. 583 type: string 584 values: 585 description: values is an array of string values. If 586 the operator is In or NotIn, the values array must 587 be non-empty. If the operator is Exists or DoesNotExist, 588 the values array must be empty. This array is replaced 589 during a strategic merge patch. 590 items: 591 type: string 592 type: array 593 required: 594 - key 595 - operator 596 type: object 597 type: array 598 matchLabels: 599 additionalProperties: 600 type: string 601 description: matchLabels is a map of {key,value} pairs. A 602 single {key,value} in the matchLabels map is equivalent 603 to an element of matchExpressions, whose key field is "key", 604 the operator is "In", and the values array contains only 605 "value". The requirements are ANDed. 606 type: object 607 strategy: 608 default: Any 609 description: 'strategy specifies the strategy to select the 610 target pod when multiple pods are selected. Valid values 611 are: - Any: select any one pod that match the labelsSelector.' 612 enum: 613 - Any 614 type: string 615 type: object 616 x-kubernetes-map-type: atomic 617 resources: 618 description: resources specifies the kubernetes resources to back 619 up. 620 properties: 621 excluded: 622 description: excluded is a slice of namespaced-scoped resource 623 type names to exclude in the kubernetes resources. The default 624 value is empty. 625 items: 626 type: string 627 type: array 628 included: 629 default: 630 - '*' 631 description: included is a slice of namespaced-scoped resource 632 type names to include in the kubernetes resources. The default 633 value is "*", which means all resource types will be included. 634 items: 635 type: string 636 type: array 637 selector: 638 description: selector is a metav1.LabelSelector to filter 639 the target kubernetes resources that need to be backed up. 640 If not set, will do not back up any kubernetes resources. 641 properties: 642 matchExpressions: 643 description: matchExpressions is a list of label selector 644 requirements. The requirements are ANDed. 645 items: 646 description: A label selector requirement is a selector 647 that contains values, a key, and an operator that 648 relates the key and values. 649 properties: 650 key: 651 description: key is the label key that the selector 652 applies to. 653 type: string 654 operator: 655 description: operator represents a key's relationship 656 to a set of values. Valid operators are In, NotIn, 657 Exists and DoesNotExist. 658 type: string 659 values: 660 description: values is an array of string values. 661 If the operator is In or NotIn, the values array 662 must be non-empty. If the operator is Exists or 663 DoesNotExist, the values array must be empty. 664 This array is replaced during a strategic merge 665 patch. 666 items: 667 type: string 668 type: array 669 required: 670 - key 671 - operator 672 type: object 673 type: array 674 matchLabels: 675 additionalProperties: 676 type: string 677 description: matchLabels is a map of {key,value} pairs. 678 A single {key,value} in the matchLabels map is equivalent 679 to an element of matchExpressions, whose key field is 680 "key", the operator is "In", and the values array contains 681 only "value". The requirements are ANDed. 682 type: object 683 type: object 684 x-kubernetes-map-type: atomic 685 type: object 686 serviceAccountName: 687 description: serviceAccountName specifies the service account 688 to run the backup workload. 689 type: string 690 type: object 691 timeRange: 692 description: timeRange records the time range of backed up data, for 693 PITR, this is the time range of recoverable data. 694 properties: 695 end: 696 description: end records the end time of backup. 697 format: date-time 698 type: string 699 start: 700 description: start records the start time of backup. 701 format: date-time 702 type: string 703 type: object 704 totalSize: 705 description: totalSize is the total size of backed up data size. A 706 string with capacity units in the format of "1Gi", "1Mi", "1Ki". 707 If no capacity unit is specified, it is assumed to be in bytes. 708 type: string 709 volumeSnapshots: 710 description: volumeSnapshots records the volume snapshot status for 711 the action. 712 items: 713 properties: 714 contentName: 715 description: contentName is the name of the volume snapshot 716 content. 717 type: string 718 name: 719 description: name is the name of the volume snapshot. 720 type: string 721 size: 722 description: size is the size of the volume snapshot. 723 type: string 724 volumeName: 725 description: volumeName is the name of the volume. 726 type: string 727 type: object 728 type: array 729 type: object 730 type: object 731 served: true 732 storage: true 733 subresources: 734 status: {}