From 102f640331e9e39aa29229534252ff2cd941c7fe Mon Sep 17 00:00:00 2001 From: Owen Howard Date: Tue, 1 Oct 2024 16:54:55 +0100 Subject: [PATCH] Add OADP (Velero) Operator (#18) Commits: - Operator: https://github.com/openshift/oadp-operator/commit/a924ad9e837ccd8186aff142b694ef562553d012 - Velero: https://github.com/openshift/velero/commit/9ac863aaa452bf0e49ebd3f79b5391b57f41239c - Velero Plugin: https://github.com/openshift/openshift-velero-plugin/commit/dcc8f211bbe6554f3e4c2e4b38e7b1c175075aa0 - Velero Plugin for CSI: https://github.com/openshift/velero-plugin-for-csi/commit/428ab3d3c314d0f6262dd4d886725a52d1b71715 - Velero Plugin for KubeVirt: https://github.com/kubevirt/kubevirt-velero-plugin/commit/a8423daf3543c4edcf640d383b435e8bec08d0f4 - Velero Plugin for GCP: https://github.com/openshift/velero-plugin-for-gcp/commit/a33bd7af8ecb5e2e34ebc6044908ce29127ff37e - Velero Restic Restore Helper: https://github.com/openshift/velero/commit/9ac863aaa452bf0e49ebd3f79b5391b57f41239c - Velero Plugin for Azure: https://github.com/openshift/velero-plugin-for-microsoft-azure/commit/3e4b50748108fff6b317efd921c0bf3caef7e707 - Velero Plugin for AWS: https://github.com/openshift/velero-plugin-for-aws/commit/54113b151b2388aedaadbbab9c206f548ca9258c --- ...adp-operator.v1.4.0-2024-09-04-143635.yaml | 733 ++++++++++++++++++ catalog/oadp-operator/oadp-operator.yaml | 10 + 2 files changed, 743 insertions(+) create mode 100644 catalog/oadp-operator/oadp-operator.v1.4.0-2024-09-04-143635.yaml create mode 100644 catalog/oadp-operator/oadp-operator.yaml diff --git a/catalog/oadp-operator/oadp-operator.v1.4.0-2024-09-04-143635.yaml b/catalog/oadp-operator/oadp-operator.v1.4.0-2024-09-04-143635.yaml new file mode 100644 index 0000000..2d80be0 --- /dev/null +++ b/catalog/oadp-operator/oadp-operator.v1.4.0-2024-09-04-143635.yaml @@ -0,0 +1,733 @@ +--- +image: quay.io/okderators/oadp-operator-bundle:1.4.0-2024-09-04-143635 +name: oadp-operator.v1.4.0-2024-09-04-143635 +package: oadp-operator +properties: +- type: olm.gvk + value: + group: oadp.openshift.io + kind: CloudStorage + version: v1alpha1 +- type: olm.gvk + value: + group: oadp.openshift.io + kind: DataProtectionApplication + version: v1alpha1 +- type: olm.gvk + value: + group: velero.io + kind: Backup + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: BackupRepository + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: BackupStorageLocation + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: DataDownload + version: v2alpha1 +- type: olm.gvk + value: + group: velero.io + kind: DataUpload + version: v2alpha1 +- type: olm.gvk + value: + group: velero.io + kind: DeleteBackupRequest + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: DownloadRequest + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: PodVolumeBackup + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: PodVolumeRestore + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: Restore + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: Schedule + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: ServerStatusRequest + version: v1 +- type: olm.gvk + value: + group: velero.io + kind: VolumeSnapshotLocation + version: v1 +- type: olm.package + value: + packageName: oadp-operator + version: 1.4.0-2024-09-04-143635 +- type: olm.csv.metadata + value: + annotations: + alm-examples: |- + [ + { + "apiVersion": "oadp.openshift.io/v1alpha1", + "kind": "DataProtectionApplication", + "metadata": { + "name": "velero-sample" + }, + "spec": { + "backupLocations": [ + { + "velero": { + "config": { + "profile": "default", + "region": "us-east-1" + }, + "credential": { + "key": "cloud", + "name": "cloud-credentials" + }, + "default": true, + "objectStorage": { + "bucket": "my-bucket-name", + "prefix": "velero" + }, + "provider": "aws" + } + } + ], + "configuration": { + "nodeAgent": { + "enable": true, + "uploaderType": "restic" + }, + "velero": { + "defaultPlugins": [ + "openshift", + "aws", + "kubevirt" + ] + } + }, + "snapshotLocations": [ + { + "velero": { + "config": { + "profile": "default", + "region": "us-west-2" + }, + "provider": "aws" + } + } + ] + } + }, + { + "apiVersion": "velero.io/v1", + "kind": "Backup", + "metadata": { + "name": "backup", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "BackupStorageLocation", + "metadata": { + "name": "backupstoragelocation", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "DeleteBackupRequest", + "metadata": { + "name": "deletebackuprequest", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "DownloadRequest", + "metadata": { + "name": "downloadrequest", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "PodVolumeBackup", + "metadata": { + "name": "podvolumebackup", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "PodVolumeRestore", + "metadata": { + "name": "podvolumerestore", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "Restore", + "metadata": { + "name": "restore", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "Schedule", + "metadata": { + "name": "schedule", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "ServerStatusRequest", + "metadata": { + "name": "serverstatusrequest", + "namespace": "openshift-adp" + }, + "spec": {} + }, + { + "apiVersion": "velero.io/v1", + "kind": "VolumeSnapshotLocation", + "metadata": { + "name": "volumesnapshotlocation", + "namespace": "openshift-adp" + }, + "spec": {} + } + ] + capabilities: Seamless Upgrades + categories: | + Cloud Provider,Developer Tools,Modernization & Migration,OpenShift Optional,Storage + certified: "false" + containerImage: quay.io/konveyor/oadp-operator:oadp-1.4 + createdAt: "2024-05-29T17:22:16Z" + description: OADP (OKD API for Data Protection) operator sets up and installs + Data Protection Applications on OKD. + features.operators.openshift.io/cnf: "false" + features.operators.openshift.io/cni: "false" + features.operators.openshift.io/csi: "false" + features.operators.openshift.io/disconnected: "true" + features.operators.openshift.io/fips-compliant: "true" + features.operators.openshift.io/proxy-aware: "true" + features.operators.openshift.io/tls-profiles: "false" + features.operators.openshift.io/token-auth-aws: "true" + features.operators.openshift.io/token-auth-azure: "false" + features.operators.openshift.io/token-auth-gcp: "false" + olm.skipRange: '>=0.0.0 <1.4.0' + operatorframework.io/suggested-namespace: openshift-adp + operators.openshift.io/infrastructure-features: '["Disconnected"]' + operators.operatorframework.io/builder: operator-sdk-v1.34.2 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + repository: https://github.com/openshift/oadp-operator + support: OKD Community + apiServiceDefinitions: {} + crdDescriptions: + owned: + - description: A backup repository is an indicator of a connection from the + restic/kopia server to the backupstoragelocation. + displayName: BackupRepository + kind: BackupRepository + name: backuprepositories.velero.io + statusDescriptors: + - description: Phase is the current state of the BackupRepository. + displayName: Phase + path: phase + - description: Message is a message about the current status of the BackupRepository. + displayName: Message + path: message + - description: LastMaintenanceTime is the last time maintenance was run. + displayName: LastMaintenanceTime + path: lastMaintenanceTime + version: v1 + - description: Backup is a Velero resource that represents the capture of Kubernetes + cluster state at a point in time (API objects and associated volume state). + displayName: Backup + kind: Backup + name: backups.velero.io + statusDescriptors: + - description: CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. Completion time is + recorded before uploading the backup object. The server's time is used + for CompletionTimestamps. + displayName: CompletionTimestamp + path: completionTimestamp + - description: Expiration is when this Backup is eligible for garbage collection. + displayName: Expiration + path: expiration + - description: Format Version is the backup format version, including major, + minor, and patch version. + displayName: FormatVersion + path: formatVersion + - description: Phase is the current state of the Backup + displayName: Phase + path: phase + - description: Progress contains information about the backup's execution + progress. Note that this information is best-effort only -- if Velero + fails to update it during a backup for any reason, it may be inaccurate/stale. + displayName: Progress + path: progress + - description: Start Timestamp records the time a backup was started. Separate + from CreationTimestamp, since that value changes on restores. The server's + time is used for StartTimestamps. + displayName: StartTimestamp + path: startTimestamp + - description: ValidationErrors are a slice of all validation errors (if applicable). + displayName: Validation Errors + path: validationErrors + - description: VolumeSnapshotsAttempted is the total number of attempted volume + snapshots for this backup. + displayName: VolumeSnapshotsAttempted + path: volumeSnapshotsAttempted + - description: VolumeSnapshotsCompleted is the total number of successfully + completed volume snapshots for this backup. + displayName: VolumeSnapshotsCompleted + path: volumeSnapshotsCompleted + - description: Warnings is a count of all warning messages that were generated + during execution of the backup. The actual warnings are in the backup's + log file in object storage. + displayName: Warnings + path: warnings + - description: Errors is a count of all error messages that were generated + during execution of the backup. The actual errors are in the backup's + log file in object storage. + displayName: Errors + path: errors + version: v1 + - description: BackupStorageLocation represents an object storage location (such + as Amazon S3 Bucket) where Velero stores backup objects. + displayName: BackupStorageLocation + kind: BackupStorageLocation + name: backupstoragelocations.velero.io + statusDescriptors: + - description: Phase is the current state of the BackupStorageLocation + displayName: Phase + path: phase + - description: LastSyncedTime is the last time the contents of the location + were synced into + displayName: LastSyncedTime + path: lastSyncedTime + - description: LastValidationTime is the last time the backup store location + was validated + displayName: LastValidationTime + path: lastValidationTime + version: v1 + - description: The CloudStorage API automates the creation of a bucket for object + storage. + displayName: CloudStorage + kind: CloudStorage + name: cloudstorages.oadp.openshift.io + statusDescriptors: + - description: LastSyncTimestamp is the last time the contents of the CloudStorage + was synced + displayName: LastSyncTimestamp + path: lastSyncTimestamp + - description: Name is the name requested for the bucket (aws, gcp) or container + (azure) + displayName: Name + path: name + version: v1alpha1 + - description: DataDownload represents a data download of a volume snapshot. + There is one DataDownload created per volume to be restored. + displayName: DataDownload + kind: DataDownload + name: datadownloads.velero.io + statusDescriptors: + - description: Phase is the current state of the DataDownload. + displayName: Phase + path: phase + - description: CompletionTimestamp records the time a restore was completed. + Completion time is recorded even on failed restores. The server's time + is used for CompletionTimestamps + displayName: CompletionTimestamp + path: completionTimestamp + - description: Message is a message about the current status of the BackupRepository. + displayName: Message + path: message + - description: Node is the name of the node where the DataDownload is processed. + displayName: Node + path: node + - description: Progress holds the total number of bytes of the snapshot and + the current number of restored bytes. This can be used to display progress + information about the restore operation. + displayName: Progress + path: progress + - description: StartTimestamp records the time a restore was started. The + server's time is used for StartTimestamps + displayName: StartTimestamp + path: startTimestamp + version: v2alpha1 + - description: DataProtectionApplication represents configuration to install + a data protection application to safely backup and restore, perform disaster + recovery and migrate Kubernetes cluster resources and persistent volumes. + displayName: DataProtectionApplication + kind: DataProtectionApplication + name: dataprotectionapplications.oadp.openshift.io + statusDescriptors: + - description: Conditions defines the observed state of DataProtectionApplication + displayName: Conditions + path: conditions + version: v1alpha1 + - description: DataUpload acts as the protocol between data mover plugins and + data mover controller for the datamover backup operation + displayName: DataUpload + kind: DataUpload + name: datauploads.velero.io + statusDescriptors: + - description: CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. Completion time is + recorded before uploading the backup object. The server's time is used + for CompletionTimestamps + displayName: CompletionTimestamp + path: completionTimestamp + - description: DataMoverResult stores data-mover-specific information as a + result of the DataUpload. + displayName: DataMoverResult + path: dataMoverResult + - description: Message is a message about the DataUpload's status. + displayName: Message + path: message + - description: Node is the name of the node where the DataUpload is processed. + displayName: Node + path: node + - description: Path is the full path of the snapshot volume being backed up. + displayName: Path + path: path + - description: Phase is the current state of the DataUpload. + displayName: Phase + path: phase + - description: Progress holds the total number of bytes of the volume and + the current number of backed up bytes. This can be used to display progress + information about the backup operation. + displayName: Progress + path: progress + - description: SnapshotID is the identifier for the snapshot in the backup + repository. + displayName: SnapshotID + path: snapshotID + - description: StartTimestamp records the time a backup was started. Separate + from CreationTimestamp, since that value changes on restores. The server's + time is used for StartTimestamps + displayName: StartTimestamp + path: startTimestamp + version: v2alpha1 + - description: DeleteBackupRequest is a request to delete one or more backups. + displayName: DeleteBackupRequest + kind: DeleteBackupRequest + name: deletebackuprequests.velero.io + statusDescriptors: + - description: Phase is the current status of a DeleteBackupRequest + displayName: Phase + path: phase + - description: Errors contains any errors that were encountered during the + deletion process. + displayName: Errors + path: errors + version: v1 + - description: DownloadRequest is a request to download an artifact from object + storage such as a backup log file. + displayName: DownloadRequest + kind: DownloadRequest + name: downloadrequests.velero.io + statusDescriptors: + - description: Phase is the current state of the DownloadRequest. + displayName: Phase + path: phase + - description: DownloadURL contains the pre-signed URL for the target file. + displayName: DownloadURL + path: downloadURL + - description: Expiration is when this DownloadRequest expires and can be + deleted by the system. + displayName: Expiration + path: expiration + version: v1 + - description: A velero pod volume backup is a restic backup of persistent volumes + attached to a running pod. + displayName: PodVolumeBackup + kind: PodVolumeBackup + name: podvolumebackups.velero.io + statusDescriptors: + - description: Phase is the current state of the PodVolumeBackup. + displayName: Phase + path: phase + - description: Path is the full path within the controller pod being backed + up. + displayName: Path + path: path + - description: SnapshotID is the identifier for the snapshot of the pod volume. + displayName: SnapshotID + path: snapshotID + - description: Message is a message about the pod volume backup's status. + displayName: Message + path: message + - description: StartTimestamp records the time a backup was started. Separate + from CreationTimestamp, since that value changes on restores. The server's + time is used for StartTimestamps + displayName: StartTimestamp + path: startTimestamp + - description: CompletionTimestamp records the time a backup was completed. + Completion time is recorded even on failed backups. Completion time is + recorded before uploading the backup object. The server's time is used + for CompletionTimestamps + displayName: CompletionTimestamp + path: completionTimestamp + - description: Progress holds the total number of bytes of the volume and + the current number of backed up bytes. This can be used to display progress + information about the backup operation. + displayName: Progress + path: progress + version: v1 + - description: A velero pod volume restore is a restic restore of persistent + volumes attached to a running pod. + displayName: PodVolumeRestore + kind: PodVolumeRestore + name: podvolumerestores.velero.io + statusDescriptors: + - description: Phase is the current state of the PodVolumeRestore. + displayName: Phase + path: phase + - description: Message is a message about the pod volume restore's status. + displayName: Message + path: message + - description: StartTimestamp records the time a restore was started. The + server's time is used for StartTimestamps + displayName: StartTimestamp + path: startTimestamp + - description: CompletionTimestamp records the time a restore was completed. + Completion time is recorded even on failed restores. The server's time + is used for CompletionTimestamps + displayName: CompletionTimestamp + path: completionTimestamp + - description: Progress holds the total number of bytes of the snapshot and + the current number of restored bytes. This can be used to display progress + information about the restore operation. + displayName: Progress + path: progress + version: v1 + - description: Restore is a Velero resource that represents the application + of resources from a Velero backup to a target Kubernetes cluster. + displayName: Restore + kind: Restore + name: restores.velero.io + statusDescriptors: + - description: Phase is the current state of the Restore + displayName: Phase + path: phase + - description: ValidationErrors is a slice of all validation errors (if applicable) + displayName: ValidationErrors + path: validationErrors + - description: Warnings is a count of all warning messages that were generated + during execution of the restore. The actual warnings are stored in object + storage. + displayName: Warnings + path: warnings + - description: Errors is a count of all error messages that were generated + during execution of the restore. The actual errors are stored in object + storage. + displayName: Errors + path: errors + - description: FailureReason is an error that caused the entire restore to + fail. + displayName: FailureReason + path: failureReason + - description: StartTimestamp records the time the restore operation was started. + The server's time is used for StartTimestamps + displayName: StartTimestamp + path: startTimestamp + - description: CompletionTimestamp records the time the restore operation + was completed. Completion time is recorded even on failed restore. The + server's time is used for StartTimestamps + displayName: CompletionTimestamp + path: completionTimestamp + - description: Progress contains information about the restore's execution + progress. Note that this information is best-effort only -- if Velero + fails to update it during a restore for any reason, it may be inaccurate/stale. + displayName: Progress + path: progress + version: v1 + - description: Schedule is a Velero resource that represents a pre-scheduled + or periodic Backup that should be run. + displayName: Schedule + kind: Schedule + name: schedules.velero.io + statusDescriptors: + - description: Phase is the current phase of the Schedule + displayName: Phase + path: phase + - description: LastBackup is the last time a Backup was run for this Schedule + schedule + displayName: LastBackup + path: lastBackup + - description: ValidationErrors is a slice of all validation errors (if applicable) + displayName: ValidationErrors + path: validationErrors + version: v1 + - description: ServerStatusRequest is a request to access current status information + about the Velero server. + displayName: ServerStatusRequest + kind: ServerStatusRequest + name: serverstatusrequests.velero.io + statusDescriptors: + - description: Phase is the current lifecycle phase of the ServerStatusRequest. + displayName: Phase + path: phase + - description: ProcessedTimestamp is when the ServerStatusRequest was processed + by the ServerStatusRequestController. + displayName: ProcessedTimestamp + path: processedTimestamp + - description: ServerVersion is the Velero server version. + displayName: ServerVersion + path: serverVersion + - description: Plugins list information about the plugins running on the Velero + server + displayName: Plugins + path: plugins + version: v1 + - description: VolumeSnapshotLocation is a location where Velero stores volume + snapshots. + displayName: VolumeSnapshotLocation + kind: VolumeSnapshotLocation + name: volumesnapshotlocations.velero.io + statusDescriptors: + - description: Phase is the current lifecycle phase of the VolumeSnapshotLocation + displayName: Phase + path: phase + version: v1 + description: | + **OKD API for Data Protection (OADP)** operator sets up and installs + Velero on OKD, allowing users to backup and restore + applications. + + Backup and restore Kubernetes resources and internal images, at the + granularity of a namespace, using a version of Velero appropriate for + the installed version of OADP. + + OADP backs up Kubernetes objects and internal images by saving them as + an archive file on object storage. OADP backs up persistent volumes + (PVs) by creating snapshots with the native cloud snapshot API or with + the Container Storage Interface (CSI). For cloud providers that do not + support snapshots, OADP backs up resources and PV data with Restic or Kopia. + + * [Installing OADP for application backup and restore][install-doc] + + * [Installing OADP on a ROSA cluster and using STS, please follow the Getting Started Steps 1-3 in order to obtain the role ARN needed for using the standardized STS configuration flow via OLM][rosa-sts-doc] + + * [Frequently Asked Questions][faq-doc] + + [install-doc]: https://docs.openshift.com/container-platform/latest/backup_and_restore/application_backup_and_restore/installing/about-installing-oadp.html + [rosa-sts-doc]: https://mobb.ninja/docs/misc/oadp/rosa-sts/ + [faq-doc]: https://access.redhat.com/articles/5456281 + displayName: OADP Operator + installModes: + - supported: true + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: false + type: AllNamespaces + keywords: + - disaster backup + - disaster recovery + - disaster restore + - disaster + - backup + - restore + - backup automation + - recovery + - data protection + - data management + - data + - protection + - management + - application resilience + - resilience + - velero + - openshift + - oadp + - cloud-native + - replication + - kopia + - restic + - network file system + - nfs + - simple cloud storage + - s3 + - minio + - cloud storage + - data foundation + - ceph + - csi + - container storage interface + labels: + operatorframework.io/arch.amd64: supported + operatorframework.io/arch.arm64: supported + operatorframework.io/arch.ppc64le: supported + operatorframework.io/arch.s390x: supported + links: + - name: OADP Operator + url: https://github.com/openshift/oadp-operator + maintainers: + - email: oadp-maintainers@redhat.com + name: OADP Operator maintainers + maturity: stable + provider: + name: OKD Community +relatedImages: +- image: quay.io/okderators/oadp-kubevirt-velero-plugin:1.4.0-2024-09-04-143635 + name: kubevirt-velero-plugin +- image: quay.io/okderators/oadp-operator-bundle:1.4.0-2024-09-04-143635 + name: "" +- image: quay.io/okderators/oadp-operator:1.4.0-2024-09-04-143635 + name: "" +- image: quay.io/okderators/oadp-velero-plugin-for-aws:1.4.0-2024-09-04-143635 + name: velero-plugin-for-aws +- image: quay.io/okderators/oadp-velero-plugin-for-gcp:1.4.0-2024-09-04-143635 + name: velero-plugin-for-gcp +- image: quay.io/okderators/oadp-velero-plugin-for-microsoft-azure:1.4.0-2024-09-04-143635 + name: velero-plugin-for-microsoft-azure +- image: quay.io/okderators/oadp-velero-restore-helper:1.4.0-2024-09-04-143635 + name: velero-restore-helper +- image: quay.io/okderators/oadp-velero:1.4.0-2024-09-04-143635 + name: velero +- image: quay.io/okderators/openshift-velero-plugin:1.4.0-2024-09-04-143635 + name: openshift-velero-plugin +- image: registry.redhat.io/oadp/oadp-mustgather-rhel8:v1.2 + name: mustgather +schema: olm.bundle diff --git a/catalog/oadp-operator/oadp-operator.yaml b/catalog/oadp-operator/oadp-operator.yaml new file mode 100644 index 0000000..ab5fb17 --- /dev/null +++ b/catalog/oadp-operator/oadp-operator.yaml @@ -0,0 +1,10 @@ +--- +schema: olm.package +name: oadp-operator +defaultChannel: alpha +--- +schema: olm.channel +package: oadp-operator +name: alpha +entries: + - name: oadp-operator.v1.4.0-2024-09-04-143635 \ No newline at end of file