config/crds/resources/apiextensions.k8s.io_v1_customresourcedefinition_gkebackuprestores.gkebackup.cnrm.cloud.google.com.yaml (775 lines of code) (raw):
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
cnrm.cloud.google.com/version: 0.0.0-dev
creationTimestamp: null
labels:
cnrm.cloud.google.com/managed-by-kcc: "true"
cnrm.cloud.google.com/system: "true"
name: gkebackuprestores.gkebackup.cnrm.cloud.google.com
spec:
group: gkebackup.cnrm.cloud.google.com
names:
categories:
- gcp
kind: GKEBackupRestore
listKind: GKEBackupRestoreList
plural: gkebackuprestores
shortNames:
- gcpgkebackuprestore
- gcpgkebackuprestores
singular: gkebackuprestore
preserveUnknownFields: false
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
- description: When 'True', the most recent reconcile of the resource succeeded
jsonPath: .status.conditions[?(@.type=='Ready')].status
name: Ready
type: string
- description: The reason for the value in 'Ready'
jsonPath: .status.conditions[?(@.type=='Ready')].reason
name: Status
type: string
- description: The last transition time for the value in 'Status'
jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
name: Status Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: GKEBackupRestore is the Schema for the GKEBackupRestore API
properties:
apiVersion:
description: 'APIVersion defines the versioned schema of this representation
of an object. Servers should convert recognized schemas to the latest
internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
type: string
kind:
description: 'Kind is a string value representing the REST resource this
object represents. Servers may infer this from the endpoint the client
submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
type: string
metadata:
type: object
spec:
description: GKEBackupRestoreSpec defines the desired state of GKEBackupRestore
properties:
backupRef:
description: Required. Immutable. A reference to the [Backup][google.cloud.gkebackup.v1.Backup]
used as the source from which this Restore will restore. Note that
this Backup must be a sub-resource of the RestorePlan's [backup_plan][google.cloud.gkebackup.v1.RestorePlan.backup_plan].
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: A reference to an externally managed GKEBackupBackup
resource. Should be in the format "projects/{{projectID}}/locations/{{location}}/backups/{{backupID}}".
type: string
name:
description: The name of a GKEBackupBackup resource.
type: string
namespace:
description: The namespace of a GKEBackupBackup resource.
type: string
type: object
description:
description: User specified descriptive string for this Restore.
type: string
filter:
description: Optional. Immutable. Filters resources for `Restore`.
If not specified, the scope of the restore will remain the same
as defined in the `RestorePlan`. If this is specified, and no resources
are matched by the `inclusion_filters` or everything is excluded
by the `exclusion_filters`, nothing will be restored. This filter
can only be specified if the value of [namespaced_resource_restore_mode][google.cloud.gkebackup.v1.RestoreConfig.namespaced_resource_restore_mode]
is set to `MERGE_SKIP_ON_CONFLICT`, `MERGE_REPLACE_VOLUME_ON_CONFLICT`
or `MERGE_REPLACE_ON_CONFLICT`.
properties:
exclusionFilters:
description: Optional. Excludes resources from restoration. If
specified, a resource will not be restored if it matches any
`ResourceSelector` of the `exclusion_filters`.
items:
properties:
groupKind:
description: Optional. Selects resources using their Kubernetes
GroupKinds. If specified, only resources of provided GroupKind
will be selected.
properties:
resourceGroup:
description: 'Optional. API group string of a Kubernetes
resource, e.g. "apiextensions.k8s.io", "storage.k8s.io",
etc. Note: use empty string for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes resource,
must be in UpperCamelCase (PascalCase) and singular
form. E.g. "CustomResourceDefinition", "StorageClass",
etc.
type: string
type: object
labels:
additionalProperties:
type: string
description: Optional. Selects resources using Kubernetes
[labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/).
If specified, a resource will be selected if and only
if the resource has all of the provided labels and all
the label values match.
type: object
name:
description: Optional. Selects resources using their resource
names. If specified, only resources with the provided
name will be selected.
type: string
namespace:
description: Optional. Selects resources using their namespaces.
This only applies to namespace scoped resources and cannot
be used for selecting cluster scoped resources. If specified,
only resources in the provided namespace will be selected.
If not specified, the filter will apply to both cluster
scoped and namespace scoped resources (e.g. name or label).
The [Namespace](https://pkg.go.dev/k8s.io/api/core/v1#Namespace)
resource itself will be restored if and only if any resources
within the namespace are restored.
type: string
type: object
type: array
inclusionFilters:
description: Optional. Selects resources for restoration. If specified,
only resources which match `inclusion_filters` will be selected
for restoration. A resource will be selected if it matches any
`ResourceSelector` of the `inclusion_filters`.
items:
properties:
groupKind:
description: Optional. Selects resources using their Kubernetes
GroupKinds. If specified, only resources of provided GroupKind
will be selected.
properties:
resourceGroup:
description: 'Optional. API group string of a Kubernetes
resource, e.g. "apiextensions.k8s.io", "storage.k8s.io",
etc. Note: use empty string for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes resource,
must be in UpperCamelCase (PascalCase) and singular
form. E.g. "CustomResourceDefinition", "StorageClass",
etc.
type: string
type: object
labels:
additionalProperties:
type: string
description: Optional. Selects resources using Kubernetes
[labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/).
If specified, a resource will be selected if and only
if the resource has all of the provided labels and all
the label values match.
type: object
name:
description: Optional. Selects resources using their resource
names. If specified, only resources with the provided
name will be selected.
type: string
namespace:
description: Optional. Selects resources using their namespaces.
This only applies to namespace scoped resources and cannot
be used for selecting cluster scoped resources. If specified,
only resources in the provided namespace will be selected.
If not specified, the filter will apply to both cluster
scoped and namespace scoped resources (e.g. name or label).
The [Namespace](https://pkg.go.dev/k8s.io/api/core/v1#Namespace)
resource itself will be restored if and only if any resources
within the namespace are restored.
type: string
type: object
type: array
type: object
labels:
additionalProperties:
type: string
description: A set of custom labels supplied by user.
type: object
resourceID:
description: The GKEBackupRestore name. If not given, the metadata.name
will be used.
type: string
restorePlanRef:
description: Required. The RestorePlan from which this Restore is
created.
oneOf:
- not:
required:
- external
required:
- name
- not:
anyOf:
- required:
- name
- required:
- namespace
required:
- external
properties:
external:
description: A reference to an externally managed GKEBackupRestorePlan
resource. Should be in the format "projects/{{projectID}}/locations/{{location}}/restorePlans/{{restoreplanID}}".
type: string
name:
description: The name of a GKEBackupRestorePlan resource.
type: string
namespace:
description: The namespace of a GKEBackupRestorePlan resource.
type: string
type: object
volumeDataRestorePolicyOverrides:
description: Optional. Immutable. Overrides the volume data restore
policies selected in the Restore Config for override-scoped resources.
items:
properties:
policy:
description: Required. The VolumeDataRestorePolicy to apply
when restoring volumes in scope.
type: string
selectedPVCs:
description: A list of PVCs to apply the policy override to.
properties:
namespacedNames:
description: Optional. A list of namespaced Kubernetes resources.
items:
properties:
name:
description: Optional. The name of the Kubernetes
resource.
type: string
namespace:
description: Optional. The Namespace of the Kubernetes
resource.
type: string
type: object
type: array
type: object
type: object
type: array
required:
- restorePlanRef
type: object
status:
description: GKEBackupRestoreStatus defines the config connector machine
state of GKEBackupRestore
properties:
conditions:
description: Conditions represent the latest available observations
of the object's current state.
items:
properties:
lastTransitionTime:
description: Last time the condition transitioned from one status
to another.
type: string
message:
description: Human-readable message indicating details about
last transition.
type: string
reason:
description: Unique, one-word, CamelCase reason for the condition's
last transition.
type: string
status:
description: Status is the status of the condition. Can be True,
False, Unknown.
type: string
type:
description: Type is the type of the condition.
type: string
type: object
type: array
externalRef:
description: A unique specifier for the GKEBackupRestore resource
in GCP.
type: string
observedGeneration:
description: ObservedGeneration is the generation of the resource
that was most recently observed by the Config Connector controller.
If this is equal to metadata.generation, then that means that the
current reported status reflects the most recent desired state of
the resource.
format: int64
type: integer
observedState:
description: ObservedState is the state of the resource as most recently
observed in GCP.
properties:
cluster:
description: |-
Output only. The target cluster into which this Restore will restore data.
Valid formats:
- `projects/*/locations/*/clusters/*`
- `projects/*/zones/*/clusters/*`
Inherited from parent RestorePlan's
[cluster][google.cloud.gkebackup.v1.RestorePlan.cluster] value.
type: string
completeTime:
description: Output only. Timestamp of when the restore operation
completed.
type: string
createTime:
description: Output only. The timestamp when this Restore resource
was created.
type: string
etag:
description: 'Output only. `etag` is used for optimistic concurrency
control as a way to help prevent simultaneous updates of a restore
from overwriting each other. It is strongly suggested that systems
make use of the `etag` in the read-modify-write cycle to perform
restore updates in order to avoid race conditions: An `etag`
is returned in the response to `GetRestore`, and systems are
expected to put that etag in the request to `UpdateRestore`
or `DeleteRestore` to ensure that their change will be applied
to the same version of the resource.'
type: string
resourcesExcludedCount:
description: Output only. Number of resources excluded during
the restore execution.
format: int32
type: integer
resourcesFailedCount:
description: Output only. Number of resources that failed to be
restored during the restore execution.
format: int32
type: integer
resourcesRestoredCount:
description: Output only. Number of resources restored during
the restore execution.
format: int32
type: integer
restoreConfig:
description: Output only. Configuration of the Restore. Inherited
from parent RestorePlan's [restore_config][google.cloud.gkebackup.v1.RestorePlan.restore_config].
properties:
allNamespaces:
description: Restore all namespaced resources in the Backup
if set to "True". Specifying this field to "False" is an
error.
type: boolean
clusterResourceConflictPolicy:
description: Optional. Defines the behavior for handling the
situation where cluster-scoped resources being restored
already exist in the target cluster. This MUST be set to
a value other than CLUSTER_RESOURCE_CONFLICT_POLICY_UNSPECIFIED
if [cluster_resource_restore_scope][google.cloud.gkebackup.v1.RestoreConfig.cluster_resource_restore_scope]
is not empty.
type: string
clusterResourceRestoreScope:
description: Optional. Identifies the cluster-scoped resources
to restore from the Backup. Not specifying it means NO cluster
resource will be restored.
properties:
allGroupKinds:
description: Optional. If True, all valid cluster-scoped
resources will be restored. Mutually exclusive to any
other field in the message.
type: boolean
excludedGroupKinds:
description: Optional. A list of cluster-scoped resource
group kinds to NOT restore from the backup. If specified,
all valid cluster-scoped resources will be restored
except for those specified in the list. Mutually exclusive
to any other field in the message.
items:
properties:
resourceGroup:
description: 'Optional. API group string of a Kubernetes
resource, e.g. "apiextensions.k8s.io", "storage.k8s.io",
etc. Note: use empty string for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes resource,
must be in UpperCamelCase (PascalCase) and singular
form. E.g. "CustomResourceDefinition", "StorageClass",
etc.
type: string
type: object
type: array
noGroupKinds:
description: Optional. If True, no cluster-scoped resources
will be restored. This has the same restore scope as
if the message is not defined. Mutually exclusive to
any other field in the message.
type: boolean
selectedGroupKinds:
description: Optional. A list of cluster-scoped resource
group kinds to restore from the backup. If specified,
only the selected resources will be restored. Mutually
exclusive to any other field in the message.
items:
properties:
resourceGroup:
description: 'Optional. API group string of a Kubernetes
resource, e.g. "apiextensions.k8s.io", "storage.k8s.io",
etc. Note: use empty string for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes resource,
must be in UpperCamelCase (PascalCase) and singular
form. E.g. "CustomResourceDefinition", "StorageClass",
etc.
type: string
type: object
type: array
type: object
excludedNamespaces:
description: A list of selected namespaces excluded from restoration.
All namespaces except those in this list will be restored.
properties:
namespaces:
description: Optional. A list of Kubernetes Namespaces
items:
type: string
type: array
type: object
namespacedResourceRestoreMode:
description: Optional. Defines the behavior for handling the
situation where sets of namespaced resources being restored
already exist in the target cluster. This MUST be set to
a value other than NAMESPACED_RESOURCE_RESTORE_MODE_UNSPECIFIED.
type: string
noNamespaces:
description: Do not restore any namespaced resources if set
to "True". Specifying this field to "False" is not allowed.
type: boolean
restoreOrder:
description: Optional. RestoreOrder contains custom ordering
to use on a Restore.
properties:
groupKindDependencies:
description: Optional. Contains a list of group kind dependency
pairs provided by the customer, that is used by Backup
for GKE to generate a group kind restore order.
items:
properties:
requiring:
description: Required. The requiring group kind
requires that the other group kind be restored
first.
properties:
resourceGroup:
description: 'Optional. API group string of
a Kubernetes resource, e.g. "apiextensions.k8s.io",
"storage.k8s.io", etc. Note: use empty string
for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes
resource, must be in UpperCamelCase (PascalCase)
and singular form. E.g. "CustomResourceDefinition",
"StorageClass", etc.
type: string
type: object
satisfying:
description: Required. The satisfying group kind
must be restored first in order to satisfy the
dependency.
properties:
resourceGroup:
description: 'Optional. API group string of
a Kubernetes resource, e.g. "apiextensions.k8s.io",
"storage.k8s.io", etc. Note: use empty string
for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes
resource, must be in UpperCamelCase (PascalCase)
and singular form. E.g. "CustomResourceDefinition",
"StorageClass", etc.
type: string
type: object
required:
- requiring
- satisfying
type: object
type: array
type: object
selectedApplications:
description: A list of selected ProtectedApplications to restore.
The listed ProtectedApplications and all the resources to
which they refer will be restored.
properties:
namespacedNames:
description: Optional. A list of namespaced Kubernetes
resources.
items:
properties:
name:
description: Optional. The name of the Kubernetes
resource.
type: string
namespace:
description: Optional. The Namespace of the Kubernetes
resource.
type: string
type: object
type: array
type: object
selectedNamespaces:
description: A list of selected Namespaces to restore from
the Backup. The listed Namespaces and all resources contained
in them will be restored.
properties:
namespaces:
description: Optional. A list of Kubernetes Namespaces
items:
type: string
type: array
type: object
substitutionRules:
description: Optional. A list of transformation rules to be
applied against Kubernetes resources as they are selected
for restoration from a Backup. Rules are executed in order
defined - this order matters, as changes made by a rule
may impact the filtering logic of subsequent rules. An empty
list means no substitution will occur.
items:
properties:
newValue:
description: Optional. This is the new value to set
for any fields that pass the filtering and selection
criteria. To remove a value from a Kubernetes resource,
either leave this field unspecified, or set it to
the empty string ("").
type: string
originalValuePattern:
description: Optional. (Filtering parameter) This is
a [regular expression] (https://en.wikipedia.org/wiki/Regular_expression)
that is compared against the fields matched by the
target_json_path expression (and must also have passed
the previous filters). Substitution will not be performed
against fields whose value does not match this expression.
If this field is NOT specified, then ALL fields matched
by the target_json_path expression will undergo substitution.
Note that an empty (e.g., "", rather than unspecified)
value for this field will only match empty fields.
type: string
targetGroupKinds:
description: Optional. (Filtering parameter) Any resource
subject to substitution must belong to one of the
listed "types". If this field is not provided, no
type filtering will be performed (all resources of
all types matching previous filtering parameters will
be candidates for substitution).
items:
properties:
resourceGroup:
description: 'Optional. API group string of a
Kubernetes resource, e.g. "apiextensions.k8s.io",
"storage.k8s.io", etc. Note: use empty string
for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes resource,
must be in UpperCamelCase (PascalCase) and singular
form. E.g. "CustomResourceDefinition", "StorageClass",
etc.
type: string
type: object
type: array
targetJSONPath:
description: Required. This is a [JSONPath] (https://kubernetes.io/docs/reference/kubectl/jsonpath/)
expression that matches specific fields of candidate
resources and it operates as both a filtering parameter
(resources that are not matched with this expression
will not be candidates for substitution) as well as
a field identifier (identifies exactly which fields
out of the candidate resources will be modified).
type: string
targetNamespaces:
description: Optional. (Filtering parameter) Any resource
subject to substitution must be contained within one
of the listed Kubernetes Namespace in the Backup.
If this field is not provided, no namespace filtering
will be performed (all resources in all Namespaces,
including all cluster-scoped resources, will be candidates
for substitution). To mix cluster-scoped and namespaced
resources in the same rule, use an empty string ("")
as one of the target namespaces.
items:
type: string
type: array
required:
- targetJSONPath
type: object
type: array
transformationRules:
description: Optional. A list of transformation rules to be
applied against Kubernetes resources as they are selected
for restoration from a Backup. Rules are executed in order
defined - this order matters, as changes made by a rule
may impact the filtering logic of subsequent rules. An empty
list means no transformation will occur.
items:
properties:
description:
description: Optional. The description is a user specified
string description of the transformation rule.
type: string
fieldActions:
description: Required. A list of transformation rule
actions to take against candidate resources. Actions
are executed in order defined - this order matters,
as they could potentially interfere with each other
and the first operation could affect the outcome of
the second operation.
items:
properties:
fromPath:
description: Optional. A string containing a JSON
Pointer value that references the location in
the target document to move the value from.
type: string
op:
description: Required. op specifies the operation
to perform.
type: string
path:
description: Optional. A string containing a JSON-Pointer
value that references a location within the
target document where the operation is performed.
type: string
value:
description: Optional. A string that specifies
the desired value in string format to use for
transformation.
type: string
required:
- op
type: object
type: array
resourceFilter:
description: Optional. This field is used to specify
a set of fields that should be used to determine which
resources in backup should be acted upon by the supplied
transformation rule actions, and this will ensure
that only specific resources are affected by transformation
rule actions.
properties:
groupKinds:
description: Optional. (Filtering parameter) Any
resource subject to transformation must belong
to one of the listed "types". If this field is
not provided, no type filtering will be performed
(all resources of all types matching previous
filtering parameters will be candidates for transformation).
items:
properties:
resourceGroup:
description: 'Optional. API group string of
a Kubernetes resource, e.g. "apiextensions.k8s.io",
"storage.k8s.io", etc. Note: use empty string
for core API group'
type: string
resourceKind:
description: Optional. Kind of a Kubernetes
resource, must be in UpperCamelCase (PascalCase)
and singular form. E.g. "CustomResourceDefinition",
"StorageClass", etc.
type: string
type: object
type: array
jsonPath:
description: Optional. This is a [JSONPath] (https://github.com/json-path/JsonPath/blob/master/README.md)
expression that matches specific fields of candidate
resources and it operates as a filtering parameter
(resources that are not matched with this expression
will not be candidates for transformation).
type: string
namespaces:
description: Optional. (Filtering parameter) Any
resource subject to transformation must be contained
within one of the listed Kubernetes Namespace
in the Backup. If this field is not provided,
no namespace filtering will be performed (all
resources in all Namespaces, including all cluster-scoped
resources, will be candidates for transformation).
items:
type: string
type: array
type: object
required:
- fieldActions
type: object
type: array
volumeDataRestorePolicy:
description: 'Optional. Specifies the mechanism to be used
to restore volume data. Default: VOLUME_DATA_RESTORE_POLICY_UNSPECIFIED
(will be treated as NO_VOLUME_DATA_RESTORATION).'
type: string
volumeDataRestorePolicyBindings:
description: Optional. A table that binds volumes by their
scope to a restore policy. Bindings must have a unique scope.
Any volumes not scoped in the bindings are subject to the
policy defined in volume_data_restore_policy.
items:
properties:
policy:
description: Required. The VolumeDataRestorePolicy to
apply when restoring volumes in scope.
type: string
volumeType:
description: The volume type, as determined by the PVC's
bound PV, to apply the policy to.
type: string
required:
- policy
type: object
type: array
type: object
state:
description: Output only. The current state of the Restore.
type: string
stateReason:
description: Output only. Human-readable description of why the
Restore is in its current state.
type: string
uid:
description: Output only. Server generated global unique identifier
of [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
format.
type: string
updateTime:
description: Output only. The timestamp when this Restore resource
was last updated.
type: string
volumesRestoredCount:
description: Output only. Number of volumes restored during the
restore execution.
format: int32
type: integer
type: object
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}