From a54b43a8c8dc88805834dcd748ec1cdda7add177 Mon Sep 17 00:00:00 2001 From: Philip Haupt <“der.mad.mob@gmail.com”> Date: Fri, 7 Nov 2025 01:38:14 +0100 Subject: [PATCH] velero update --- velero/main.yaml | 208 ++++++++++++++++++++++------------ velero/src/kustomization.yaml | 2 +- velero/src/values.yaml | 37 +++--- 3 files changed, 156 insertions(+), 91 deletions(-) diff --git a/velero/main.yaml b/velero/main.yaml index 4e92d1f..34371b1 100644 --- a/velero/main.yaml +++ b/velero/main.yaml @@ -72,7 +72,7 @@ spec: resticIdentifier: description: |- ResticIdentifier is the full restic-compatible string for identifying - this repository. + this repository. This field is only used when RepositoryType is "restic". type: string volumeNamespace: description: |- @@ -82,7 +82,6 @@ spec: required: - backupStorageLocation - maintenanceFrequency - - resticIdentifier - volumeNamespace type: object status: @@ -648,6 +647,10 @@ spec: uploads to perform when using the uploader. type: integer type: object + volumeGroupSnapshotLabelKey: + description: VolumeGroupSnapshotLabelKey specifies the label key to + group PVCs under a VGS. + type: string volumeSnapshotLocations: description: VolumeSnapshotLocations is a list containing names of VolumeSnapshotLocations associated with this backup. @@ -1294,6 +1297,9 @@ spec: of the CSI snapshot. nullable: true properties: + driver: + description: Driver is the driver used by the VolumeSnapshotContent + type: string snapshotClass: description: SnapshotClass is the name of the snapshot class that the volume snapshot is created with @@ -1636,38 +1642,41 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: Pod Volume Backup status such as New/InProgress + - description: PodVolumeBackup status such as New/InProgress jsonPath: .status.phase name: Status type: string - - description: Time when this backup was started + - description: Time duration since this PodVolumeBackup was started jsonPath: .status.startTimestamp - name: Created + name: Started type: date - - description: Namespace of the pod containing the volume to be backed up - jsonPath: .spec.pod.namespace - name: Namespace - type: string - - description: Name of the pod containing the volume to be backed up - jsonPath: .spec.pod.name - name: Pod - type: string - - description: Name of the volume to be backed up - jsonPath: .spec.volume - name: Volume - type: string - - description: The type of the uploader to handle data transfer - jsonPath: .spec.uploaderType - name: Uploader Type - type: string + - description: Completed bytes + format: int64 + jsonPath: .status.progress.bytesDone + name: Bytes Done + type: integer + - description: Total bytes + format: int64 + jsonPath: .status.progress.totalBytes + name: Total Bytes + type: integer - description: Name of the Backup Storage Location where this backup should be stored jsonPath: .spec.backupStorageLocation name: Storage Location type: string - - jsonPath: .metadata.creationTimestamp + - description: Time duration since this PodVolumeBackup was created + jsonPath: .metadata.creationTimestamp name: Age type: date + - description: Name of the node where the PodVolumeBackup is processed + jsonPath: .status.node + name: Node + type: string + - description: The type of the uploader to handle data transfer + jsonPath: .spec.uploaderType + name: Uploader + type: string name: v1 schema: openAPIV3Schema: @@ -1697,6 +1706,11 @@ spec: BackupStorageLocation is the name of the backup storage location where the backup repository is stored. type: string + cancel: + description: |- + Cancel indicates request to cancel the ongoing PodVolumeBackup. It can be set + when the PodVolumeBackup is in InProgress phase + type: boolean node: description: Node is the name of the node that the Pod is running on. @@ -1786,6 +1800,13 @@ spec: status: description: PodVolumeBackupStatus is the current status of a PodVolumeBackup. properties: + acceptedTimestamp: + description: |- + AcceptedTimestamp records the time the pod volume backup is to be prepared. + The server's time is used for AcceptedTimestamp + format: date-time + nullable: true + type: string completionTimestamp: description: |- CompletionTimestamp records the time a backup was completed. @@ -1806,7 +1827,11 @@ spec: description: Phase is the current state of the PodVolumeBackup. enum: - New + - Accepted + - Prepared - InProgress + - Canceling + - Canceled - Completed - Failed type: string @@ -1860,39 +1885,40 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: - - description: Namespace of the pod containing the volume to be restored - jsonPath: .spec.pod.namespace - name: Namespace + - description: PodVolumeRestore status such as New/InProgress + jsonPath: .status.phase + name: Status type: string - - description: Name of the pod containing the volume to be restored - jsonPath: .spec.pod.name - name: Pod + - description: Time duration since this PodVolumeRestore was started + jsonPath: .status.startTimestamp + name: Started + type: date + - description: Completed bytes + format: int64 + jsonPath: .status.progress.bytesDone + name: Bytes Done + type: integer + - description: Total bytes + format: int64 + jsonPath: .status.progress.totalBytes + name: Total Bytes + type: integer + - description: Name of the Backup Storage Location where the backup data is stored + jsonPath: .spec.backupStorageLocation + name: Storage Location + type: string + - description: Time duration since this PodVolumeRestore was created + jsonPath: .metadata.creationTimestamp + name: Age + type: date + - description: Name of the node where the PodVolumeRestore is processed + jsonPath: .status.node + name: Node type: string - description: The type of the uploader to handle data transfer jsonPath: .spec.uploaderType name: Uploader Type type: string - - description: Name of the volume to be restored - jsonPath: .spec.volume - name: Volume - type: string - - description: Pod Volume Restore status such as New/InProgress - jsonPath: .status.phase - name: Status - type: string - - description: Pod Volume Restore status such as New/InProgress - format: int64 - jsonPath: .status.progress.totalBytes - name: TotalBytes - type: integer - - description: Pod Volume Restore status such as New/InProgress - format: int64 - jsonPath: .status.progress.bytesDone - name: BytesDone - type: integer - - jsonPath: .metadata.creationTimestamp - name: Age - type: date name: v1 schema: openAPIV3Schema: @@ -1922,6 +1948,11 @@ spec: BackupStorageLocation is the name of the backup storage location where the backup repository is stored. type: string + cancel: + description: |- + Cancel indicates request to cancel the ongoing PodVolumeRestore. It can be set + when the PodVolumeRestore is in InProgress phase + type: boolean pod: description: Pod is a reference to the pod containing the volume to be restored. @@ -2007,6 +2038,13 @@ spec: status: description: PodVolumeRestoreStatus is the current status of a PodVolumeRestore. properties: + acceptedTimestamp: + description: |- + AcceptedTimestamp records the time the pod volume restore is to be prepared. + The server's time is used for AcceptedTimestamp + format: date-time + nullable: true + type: string completionTimestamp: description: |- CompletionTimestamp records the time a restore was completed. @@ -2018,11 +2056,19 @@ spec: message: description: Message is a message about the pod volume restore's status. type: string + node: + description: Node is name of the node where the pod volume restore + is processed. + type: string phase: description: Phase is the current state of the PodVolumeRestore. enum: - New + - Accepted + - Prepared - InProgress + - Canceling + - Canceled - Completed - Failed type: string @@ -3168,6 +3214,10 @@ spec: uploads to perform when using the uploader. type: integer type: object + volumeGroupSnapshotLabelKey: + description: VolumeGroupSnapshotLabelKey specifies the label key + to group PVCs under a VGS. + type: string volumeSnapshotLocations: description: VolumeSnapshotLocations is a list containing names of VolumeSnapshotLocations associated with this backup. @@ -3411,7 +3461,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-server namespace: velero --- @@ -3427,7 +3477,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-server-upgrade-crds namespace: velero --- @@ -3439,7 +3489,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-server namespace: velero rules: @@ -3462,7 +3512,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-upgrade-crds rules: - apiGroups: @@ -3484,7 +3534,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-server namespace: velero roleRef: @@ -3504,7 +3554,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-server roleRef: apiGroup: rbac.authorization.k8s.io @@ -3527,7 +3577,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-upgrade-crds roleRef: apiGroup: rbac.authorization.k8s.io @@ -3539,13 +3589,29 @@ subjects: namespace: velero --- apiVersion: v1 +data: + global: | + { + "keepLatestMaintenanceJobs": 3 + } +kind: ConfigMap +metadata: + labels: + app.kubernetes.io/instance: velero + app.kubernetes.io/managed-by: Helm + app.kubernetes.io/name: velero + helm.sh/chart: velero-11.1.1 + name: velero-repo-maintenance + namespace: velero +--- +apiVersion: v1 kind: Service metadata: labels: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero namespace: velero spec: @@ -3566,9 +3632,9 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - app.kubernetes.io/version: 1.16.2 + app.kubernetes.io/version: 1.17.0 component: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero namespace: velero spec: @@ -3589,8 +3655,8 @@ spec: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - app.kubernetes.io/version: 1.16.2 - helm.sh/chart: velero-10.1.1 + app.kubernetes.io/version: 1.17.0 + helm.sh/chart: velero-11.1.1 name: velero spec: automountServiceAccountToken: true @@ -3599,7 +3665,7 @@ spec: - server - --uploader-type=kopia - --features=EnableCSI - - --keep-latest-maintenance-jobs=3 + - --repo-maintenance-job-configmap=velero-repo-maintenance command: - /velero env: @@ -3620,7 +3686,7 @@ spec: value: /credentials/cloud - name: ALIBABA_CLOUD_CREDENTIALS_FILE value: /credentials/cloud - image: velero/velero:v1.16.2 + image: velero/velero:v1.17.0 imagePullPolicy: IfNotPresent livenessProbe: failureThreshold: 5 @@ -3680,7 +3746,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: node-agent namespace: velero spec: @@ -3697,7 +3763,7 @@ spec: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: node-agent role: node-agent spec: @@ -3728,7 +3794,7 @@ spec: value: /credentials/cloud - name: ALIBABA_CLOUD_CREDENTIALS_FILE value: /credentials/cloud - image: velero/velero:v1.16.2 + image: velero/velero:v1.17.0 imagePullPolicy: IfNotPresent name: node-agent ports: @@ -3775,7 +3841,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: velero-upgrade-crds namespace: velero spec: @@ -3791,7 +3857,7 @@ spec: - /velero install --crds-only --dry-run -o yaml | /tmp/kubectl apply -f - command: - /tmp/sh - image: velero/velero:v1.16.2 + image: velero/velero:v1.17.0 imagePullPolicy: IfNotPresent name: velero volumeMounts: @@ -3803,7 +3869,7 @@ spec: - cp `which sh` /tmp && cp `which kubectl` /tmp command: - /bin/sh - image: docker.io/bitnami/kubectl:1.33 + image: docker.io/bitnamilegacy/kubectl:1.34 imagePullPolicy: IfNotPresent name: kubectl volumeMounts: @@ -3822,7 +3888,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: nas namespace: velero spec: @@ -3844,7 +3910,7 @@ metadata: app.kubernetes.io/instance: velero app.kubernetes.io/managed-by: Helm app.kubernetes.io/name: velero - helm.sh/chart: velero-10.1.1 + helm.sh/chart: velero-11.1.1 name: nas namespace: velero spec: diff --git a/velero/src/kustomization.yaml b/velero/src/kustomization.yaml index 8b0215e..eda9703 100644 --- a/velero/src/kustomization.yaml +++ b/velero/src/kustomization.yaml @@ -5,7 +5,7 @@ kind: Kustomization helmCharts: - name: velero repo: https://vmware-tanzu.github.io/helm-charts - version: 10.1.1 + version: 11.1.1 releaseName: velero includeCRDs: true namespace: velero diff --git a/velero/src/values.yaml b/velero/src/values.yaml index 3dcc0d6..4ebfb50 100644 --- a/velero/src/values.yaml +++ b/velero/src/values.yaml @@ -27,7 +27,7 @@ namespace: # enabling node-agent). Required. image: repository: velero/velero - tag: v1.16.2 + tag: v1.17.0 # Digest value example: sha256:d238835e151cec91c6a811fe3a89a66d3231d9f64d09e5f3c49552672d271f38. # If used, it will take precedence over the image.tag. # digest: @@ -282,11 +282,16 @@ metrics: enabled: false annotations: {} additionalLabels: {} - # ServiceMonitor namespace. Default to Velero namespace. + # metrics.nodeAgentPodMonitor.metricRelabelings Specify Metric Relabelings to add to the scrape endpoint + # ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig + # metricRelabelings: [] + # metrics.nodeAgentPodMonitor.relabelings [array] Prometheus relabeling rules + # relabelings: [] + # PodMonitor namespace. Default to Velero namespace. # namespace: - # ServiceMonitor connection scheme. Defaults to HTTP. + # PodMonitor connection scheme. Defaults to HTTP. # scheme: "" - # ServiceMonitor connection tlsConfig. Defaults to {}. + # PodMonitor connection tlsConfig. Defaults to {}. # tlsConfig: {} prometheusRule: @@ -316,14 +321,14 @@ metrics: # severity: critical # - alert: VeleroNoNewBackup # annotations: - # message: Velero backup {{ $labels.schedule }} has not run successfuly in the last 30h + # message: Velero backup {{ $labels.schedule }} has not run successfully in the last 25h # expr: |- # ( - # rate(velero_backup_last_successful_timestamp{schedule!=""}[15m]) <=bool 0 + # (time() - velero_backup_last_successful_timestamp{schedule!=""}) >bool (25 * 3600) # or # absent(velero_backup_last_successful_timestamp{schedule!=""}) # ) == 1 - # for: 30h + # for: 1h # labels: # severity: critical # - alert: VeleroBackupPartialFailures @@ -338,7 +343,7 @@ metrics: kubectl: image: - repository: docker.io/bitnami/kubectl + repository: docker.io/bitnamilegacy/kubectl # Digest value example: sha256:d238835e151cec91c6a811fe3a89a66d3231d9f64d09e5f3c49552672d271f38. # If used, it will take precedence over the kubectl.image.tag. # digest: @@ -512,14 +517,6 @@ configuration: # Resource requests/limits to specify for the repository-maintenance job. Optional. # https://velero.io/docs/v1.14/repository-maintenance/#resource-limitation repositoryMaintenanceJob: - requests: - # cpu: 500m - # memory: 512Mi - limits: - # cpu: 1000m - # memory: 1024Mi - # Number of latest maintenance jobs to keep for each repository - latestJobsCount: 3 # Per-repository resource settings ConfigMap # This ConfigMap allows specifying different settings for different repositories # See: https://velero.io/docs/main/repository-maintenance/ @@ -547,7 +544,8 @@ configuration: # operator: "In" # values: ["us-central1-a", "us-central1-b", "us-central1-c"] # priorityClassName: "low-priority" # Note: priorityClassName is only supported in global configuration - global: {} + global: + keepLatestMaintenanceJobs: 3 # Repository-specific configurations # Repository keys are formed as: "{namespace}-{storageLocation}-{repositoryType}" # For example: "default-default-kopia" or "prod-s3-backup-kopia" @@ -791,7 +789,7 @@ schedules: {} # velero.io/plugin-config: "" # velero.io/pod-volume-restore: RestoreItemAction # data: -# image: velero/velero-restore-helper:v1.10.2 +# image: velero/velero:v1.17.0 # cpuRequest: 200m # memRequest: 128Mi # cpuLimit: 200m @@ -809,4 +807,5 @@ configMaps: {} ## ## End of additional Velero resource settings. -## \ No newline at end of file +## +