diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index e9660266..287fe46b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -166,12 +166,12 @@ jobs: - "1.21.14" - "1.22.17" - "1.23.17" - - "1.24.15" - - "1.25.11" - - "1.26.6" - - "1.27.3" - - "1.28.0" - - "1.29.0" + - "1.24.17" + - "1.25.16" + - "1.26.14" + - "1.27.11" + - "1.28.7" + - "1.29.2" env: KUBECONFIG: /tmp/kubeconfig diff --git a/CHANGELOG.md b/CHANGELOG.md index 7952aac6..66f72e8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ This project follows [Semantic Versioning](https://semver.org/) ## [Unreleased] +## [3.4.0] - 2024-05-09 + +### Changed + +- Dependency updates (including CVE fixes) +- Upgrade operator-sdk to 1.34.1 + +### Fixed + +- Helm chart: Add `metadata.namespace` to namespaced resources for compatibility + with ArgoCD + ## [3.3.0] - 2023-09-22 ### Added @@ -141,7 +153,8 @@ This project follows [Semantic Versioning](https://semver.org/) - Label selectors to control which PVCs are selected for snapshotting - Retention policies based on snapshot age or count -[Unreleased]: https://github.com/backube/snapscheduler/compare/v3.3.0...HEAD +[Unreleased]: https://github.com/backube/snapscheduler/compare/v3.4.0...HEAD +[3.4.0]: https://github.com/backube/snapscheduler/compare/v3.3.0...v3.4.0 [3.3.0]: https://github.com/backube/snapscheduler/compare/v3.2.0...v3.3.0 [3.2.0]: https://github.com/backube/snapscheduler/compare/v3.1.0...v3.2.0 [3.1.0]: https://github.com/backube/snapscheduler/compare/v3.0.0...v3.1.0 diff --git a/bundle.Dockerfile b/bundle.Dockerfile index 1cf2dc42..1e554bee 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -7,9 +7,9 @@ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=snapscheduler LABEL operators.operatorframework.io.bundle.channels.v1=candidate,stable LABEL operators.operatorframework.io.bundle.channel.default.v1=stable -LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.31.0 +LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.34.1 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 -LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 +LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v4 # Labels for testing. LABEL operators.operatorframework.io.test.mediatype.v1=scorecard+v1 diff --git a/bundle/manifests/snapscheduler.backube_snapshotschedules.yaml b/bundle/manifests/snapscheduler.backube_snapshotschedules.yaml index 39bf7395..db5066a2 100644 --- a/bundle/manifests/snapscheduler.backube_snapshotschedules.yaml +++ b/bundle/manifests/snapscheduler.backube_snapshotschedules.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.13.0 + controller-gen.kubebuilder.io/version: v0.15.0 creationTimestamp: null name: snapshotschedules.snapscheduler.backube spec: @@ -37,14 +37,19 @@ spec: of PVC(s) 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' + 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' + 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 @@ -58,41 +63,42 @@ spec: description: matchExpressions is a list of label selector requirements. The requirements are ANDed. items: - description: A label selector requirement is a selector that - contains values, a key, and an operator that relates the key - and values. + description: |- + A label selector requirement is a selector that contains values, a key, and an operator that + relates the key and values. properties: key: description: key is the label key that the selector applies to. type: string operator: - description: operator represents a key's relationship to - a set of values. Valid operators are In, NotIn, Exists - and DoesNotExist. + description: |- + operator represents a key's relationship to a set of values. + Valid operators are In, NotIn, Exists and DoesNotExist. type: string values: - description: values is an array of string values. If the - operator is In or NotIn, the values array must be non-empty. - If the operator is Exists or DoesNotExist, the values - array must be empty. This array is replaced during a strategic + description: |- + values is an array of string values. If the operator is In or NotIn, + the values array must be non-empty. If the operator is Exists or DoesNotExist, + the values array must be empty. This array is replaced during a strategic merge patch. items: type: string type: array + x-kubernetes-list-type: atomic required: - key - operator type: object type: array + x-kubernetes-list-type: atomic matchLabels: additionalProperties: type: string - description: matchLabels is a map of {key,value} pairs. A single - {key,value} in the matchLabels map is equivalent to an element - of matchExpressions, whose key field is "key", the operator - is "In", and the values array contains only "value". The requirements - are ANDed. + description: |- + matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + map is equivalent to an element of matchExpressions, whose key field is "key", the + operator is "In", and the values array contains only "value". The requirements are ANDed. type: object type: object x-kubernetes-map-type: atomic @@ -104,8 +110,9 @@ spec: will be kept. properties: expires: - description: The length of time (time.Duration) after which a - given Snapshot will be deleted. + description: |- + The length of time (time.Duration) after which a given Snapshot will be + deleted. pattern: ^\d+(h|m|s)$ type: string maxCount: @@ -115,9 +122,9 @@ spec: type: integer type: object schedule: - description: Schedule is a Cronspec specifying when snapshots should - be taken. See https://en.wikipedia.org/wiki/Cron for a description - of the format. + description: |- + Schedule is a Cronspec specifying when snapshots should be taken. See + https://en.wikipedia.org/wiki/Cron for a description of the format. pattern: ^(@(annually|yearly|monthly|weekly|daily|hourly))|((((\d+,)*\d+|(\d+(\/|-)\d+)|\*(\/\d+)?)\s?){5})$ type: string snapshotTemplate: @@ -126,8 +133,9 @@ spec: labels: additionalProperties: type: string - description: A list of labels that should be added to each Snapshot - created by this schedule. + description: |- + A list of labels that should be added to each Snapshot created by this + schedule. type: object snapshotClassName: description: The name of the VolumeSnapshotClass to be used when @@ -142,8 +150,9 @@ spec: description: Conditions is a list of conditions related to operator reconciliation. items: - description: Condition represents the state of the operator's reconciliation - functionality. + description: |- + Condition represents the state of the operator's + reconciliation functionality. properties: lastHeartbeatTime: format: date-time diff --git a/bundle/manifests/snapscheduler.clusterserviceversion.yaml b/bundle/manifests/snapscheduler.clusterserviceversion.yaml index 36ad58c4..4823de10 100644 --- a/bundle/manifests/snapscheduler.clusterserviceversion.yaml +++ b/bundle/manifests/snapscheduler.clusterserviceversion.yaml @@ -28,15 +28,15 @@ metadata: capabilities: Full Lifecycle categories: Storage certified: "false" - containerImage: quay.io/backube/snapscheduler:v3.3.0 - createdAt: "2023-09-22T15:45:56Z" + containerImage: quay.io/backube/snapscheduler:v3.4.0 + createdAt: "2024-05-09T18:13:51Z" description: The SnapScheduler operator takes snapshots of Kubernetes CSI-based persistent volumes according to user-supplied schedules. - operators.operatorframework.io/builder: operator-sdk-v1.31.0 - operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 + operators.operatorframework.io/builder: operator-sdk-v1.34.1 + operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/backube/snapscheduler support: https://github.com/backube/snapscheduler - name: snapscheduler.v3.3.0 + name: snapscheduler.v3.4.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -300,7 +300,7 @@ spec: - --upstream=http://127.0.0.1:8080/ - --logtostderr=true - --v=0 - image: quay.io/brancz/kube-rbac-proxy:v0.14.3 + image: quay.io/brancz/kube-rbac-proxy:v0.17.1 name: kube-rbac-proxy ports: - containerPort: 8443 @@ -324,7 +324,7 @@ spec: - --leader-elect command: - /manager - image: quay.io/backube/snapscheduler:3.3.0 + image: quay.io/backube/snapscheduler:3.4.0 livenessProbe: httpGet: path: /healthz @@ -418,4 +418,4 @@ spec: provider: name: Backube url: https://github.com/backube - version: 3.3.0 + version: 3.4.0 diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 9e3b889a..465af2a9 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -6,9 +6,9 @@ annotations: operators.operatorframework.io.bundle.package.v1: snapscheduler operators.operatorframework.io.bundle.channels.v1: candidate,stable operators.operatorframework.io.bundle.channel.default.v1: stable - operators.operatorframework.io.metrics.builder: operator-sdk-v1.31.0 + operators.operatorframework.io.metrics.builder: operator-sdk-v1.34.1 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 - operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 + operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v4 # Annotations for testing. operators.operatorframework.io.test.mediatype.v1: scorecard+v1 diff --git a/bundle/tests/scorecard/config.yaml b/bundle/tests/scorecard/config.yaml index 0c0690cc..fa911673 100644 --- a/bundle/tests/scorecard/config.yaml +++ b/bundle/tests/scorecard/config.yaml @@ -8,7 +8,7 @@ stages: - entrypoint: - scorecard-test - basic-check-spec - image: quay.io/operator-framework/scorecard-test:v1.31.0 + image: quay.io/operator-framework/scorecard-test:v1.34.1 labels: suite: basic test: basic-check-spec-test @@ -18,7 +18,7 @@ stages: - entrypoint: - scorecard-test - olm-bundle-validation - image: quay.io/operator-framework/scorecard-test:v1.31.0 + image: quay.io/operator-framework/scorecard-test:v1.34.1 labels: suite: olm test: olm-bundle-validation-test @@ -28,7 +28,7 @@ stages: - entrypoint: - scorecard-test - olm-crds-have-validation - image: quay.io/operator-framework/scorecard-test:v1.31.0 + image: quay.io/operator-framework/scorecard-test:v1.34.1 labels: suite: olm test: olm-crds-have-validation-test @@ -38,7 +38,7 @@ stages: - entrypoint: - scorecard-test - olm-crds-have-resources - image: quay.io/operator-framework/scorecard-test:v1.31.0 + image: quay.io/operator-framework/scorecard-test:v1.34.1 labels: suite: olm test: olm-crds-have-resources-test @@ -48,7 +48,7 @@ stages: - entrypoint: - scorecard-test - olm-spec-descriptors - image: quay.io/operator-framework/scorecard-test:v1.31.0 + image: quay.io/operator-framework/scorecard-test:v1.34.1 labels: suite: olm test: olm-spec-descriptors-test @@ -58,7 +58,7 @@ stages: - entrypoint: - scorecard-test - olm-status-descriptors - image: quay.io/operator-framework/scorecard-test:v1.31.0 + image: quay.io/operator-framework/scorecard-test:v1.34.1 labels: suite: olm test: olm-status-descriptors-test diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index fd51f9da..c24998a0 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -6,4 +6,4 @@ kind: Kustomization images: - name: controller newName: quay.io/backube/snapscheduler - newTag: 3.3.0 + newTag: 3.4.0 diff --git a/docs/index.md b/docs/index.md index d6248284..0ae55505 100644 --- a/docs/index.md +++ b/docs/index.md @@ -26,7 +26,8 @@ Kubernetes version compatibility: | 3.1 | 1.20 -- 1.24+ | `v1` | | 3.2 | 1.20 -- 1.25+ | `v1` | | 3.3 | 1.20 -- 1.28+ | `v1` | -| master | 1.20 -- 1.28+ | `v1` | +| 3.4 | 1.20 -- 1.29+ | `v1` | +| master | 1.20 -- 1.29+ | `v1` | ## Contents diff --git a/helm/snapscheduler/Chart.yaml b/helm/snapscheduler/Chart.yaml index 1f5dfefa..b4fdac20 100644 --- a/helm/snapscheduler/Chart.yaml +++ b/helm/snapscheduler/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: snapscheduler # Chart version: Incremented during chart, template, or appVersion changes. -version: "3.3.0" +version: "3.4.0" description: >- An operator to take scheduled snapshots of Kubernetes persistent volumes type: application @@ -23,19 +23,17 @@ maintainers: url: https://github.com/JohnStrunk icon: https://raw.githubusercontent.com/backube/snapscheduler/master/docs/media/snapscheduler.svg?sanitize=true # This is the version number of the application being deployed. -appVersion: "3.3.0" +appVersion: "3.4.0" annotations: artifacthub.io/category: storage # https://artifacthub.io/docs/topics/annotations/helm/ # Changelog for current chart & app version # Supported kinds: added, changed, deprecated, removed, fixed, security artifacthub.io/changes: | - - kind: added - description: Ability to set a `priorityClassName` for the operator via Helm chart - - kind: added - description: Ability to set pod labels and annotations for the operator via Helm chart - kind: fixed - description: Improve cronspec validation to allow "slash" notation + description: Add `metadata.namespace` to namespaced resources for compatibility with ArgoCD + - kind: security + description: Dependency updates artifacthub.io/containsSecurityUpdates: "true" artifacthub.io/crds: | - kind: SnapshotSchedule