Repository navigation
fix(backport): batch for release-1.7, 2026-11-12 - #5290
Merged
myasnikovdaniil merged 2 commits intoNov 12, 2026
Merged
Conversation
seaweedfs-cosi-driver v0.3.1 grants access by rewriting the legacy /etc/iam/identity.json. Each S3 gateway migrates that file to per-identity files and renames it away whenever it changes, so a grant written while a gateway is migrating is lost: the BucketAccess reports accessGranted and its Secret is written, but every gateway rejects the key with InvalidAccessKeyId and never recovers. Users added to a Bucket in one change lose a key regularly. v0.4.0 also writes the per-identity file on grant. The rest of v0.4.0 does not reach the platform. The readwrite-governance-bypass access policy is opt-in and no BucketAccessClass uses it. The refusal to delete a bucket that still holds locked objects applies only to object-lock buckets, and their classes are Retain, so the sidecar never calls DriverDeleteBucket for them. Assisted-by: LLM Signed-off-by: Myasnikov Daniil <[email protected]> (cherry picked from commit 6a93765) Signed-off-by: cozystack-ci[bot] <274107086+cozystack-ci[bot]@users.noreply.github.com>
…#5284) ## What this PR does This PR bumps seaweedfs COSI driver to v0.4.0, because v0.3.1 can lose a grant for good: BucketAccess reports `accessGranted` and its Secret is written, but S3 gateways keep rejecting the key with `InvalidAccessKeyId`. Fixes #4912. Driver v0.3.1 grants access by rewriting legacy `/etc/iam/identity.json`, and every S3 gateway migrates this file to per-identity files and renames it away on each change, so grant written during migration is dropped. v0.4.0 also writes `/etc/iam/identities/<user>.json` on grant (seaweedfs/seaweedfs-cosi-driver#15). First version of this PR built the driver from that upstream commit, now upstream released v0.4.0 so it's just a tag bump. Rest of v0.4.0 doesn't reach the platform: - `readwrite-governance-bypass` access policy (seaweedfs/seaweedfs-cosi-driver#16) is opt-in, none of our BucketAccessClasses use it. - Bucket deletion is refused while objects hold an active lock (seaweedfs/seaweedfs-cosi-driver#18), only for object-lock buckets. All `-lock` BucketClasses are `Retain`, and sidecar calls DriverDeleteBucket only for `Delete`. - Filer errors (seaweedfs/seaweedfs-cosi-driver#20) are now matched by exact not-found message, I checked it against seaweedfs 4.45 filer and formats match. One behavior change: bucket deletion doesn't ignore errors of the recursive delete anymore, so sidecar retries instead of reporting success. How I tested (seaweedfs 4.45, two S3 gateways): Bucket with one user, then three more users added in one change, after a minute ListObjects with each user key, rejected key retried once more after 30s. Five runs for each driver, the fixed one is a build of `5efd120`, the commit v0.4.0 takes the grant fix from: | driver | keys rejected for good | | --- | --- | | v0.3.1 | 5 of 20 (4 runs out of 5 lost at least one) | | `5efd120` | 0 of 20 | Same failure broke v1.7.1-rc.1 e2e, RabbitMQ backup round-trip got `403 InvalidAccessKeyId` for freshly granted key: https://github.com/cozystack/cozystack/actions/runs/42980741995 Keys already lost on running clusters stay broken after upgrade. Workaround from #4912 still works: remove user from Bucket, wait until its BucketAccess is gone, add it back. ### Screenshots Not a UI change. ### Downstream repositories - [x] No downstream repository is affected by this change - [ ] [cozystack/website](https://github.com/cozystack/website) - follow-up: - [ ] [cozystack/terraform-provider-cozystack](https://github.com/cozystack/terraform-provider-cozystack) - follow-up: - [ ] [cozystack/ansible-cozystack](https://github.com/cozystack/ansible-cozystack) - follow-up: - [ ] [cozystack/ccp](https://github.com/cozystack/ccp) - follow-up: - [ ] [cozystack/talm](https://github.com/cozystack/talm) - follow-up: - [ ] [cozystack/cozyhr](https://github.com/cozystack/cozyhr) - follow-up: - [ ] [cozystack/cozy-proxy](https://github.com/cozystack/cozy-proxy) - follow-up: - [ ] [cozystack/cozystack-telemetry-server](https://github.com/cozystack/cozystack-telemetry-server) - follow-up: - [ ] [cozystack/external-apps-example](https://github.com/cozystack/external-apps-example) - follow-up: - [ ] [cozystack/examples](https://github.com/cozystack/examples) - follow-up: - [ ] [cozystack/community](https://github.com/cozystack/community) - follow-up: ### Release note ```release-note fix(seaweedfs): bucket users granted together could get S3 keys that never work (403 InvalidAccessKeyId). COSI driver is bumped to v0.4.0, which writes each grant to per-identity IAM file. ``` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> <!-- coderabbit-ai-generated:v1 --> ## Summary by CodeRabbit * **Updates** * Updated the SeaweedFS COSI driver to version `v0.4.0`. * The updated driver writes IAM files per identity, helping preserve grants when identity files are updated. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Backported-from: 76a34d3
Contributor
Author
Backport batch report for release-1.7, 2026-11-12 (9ca0285a0bb3) |
Contributor
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
myasnikovdaniil
marked this pull request as ready for review
November 12, 2026 11:51
myasnikovdaniil
approved these changes
Nov 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this PR does
Backports to
release-1.7frommain, picked by the rules of the backport policy in merge order. A merged pull request comes as its own commits, picked withgit cherry-pick -xso each keeps its author, message and sign-offs, and a merge commit that carries the original's merge message with aBackported-from:trailer naming it; a squash-merged one comes as one pick.backport-batch verifychecks that shape. A pick listed as changed differs from the commit it came from;git range-diff <merge>^1..<merge>^2 <batch merge>^1..<batch merge>^2shows how. A conflict or a failing check here is a backport task.fix(seaweedfs): bump the COSI driver to v0.4.0 for the lost-grant fix, 1 commitMaintainer overrides
fix(workloadmonitor): stop doubling the bucket- prefix in bucket Workload names:backport/skip, left outfix(kubernetes-nodes): refuse a partial resources spec on every pool:backport/skip, left outfix(tests): keep two unit tests green after the release image restamp:backport/skip, left outSkipped
release-1.7: 46fixorsecurity, or the scope isdeps: 31targetVersionor a CRD, or makes a sizeable API change: 2Rule 1, already on `release-1.7`
fix(vm-disk): name the importer error in the disk's WorkloadsReady message,its 2 commits picked, the last in 432336387019fix(backupstrategy-controller): run backup clients on a package-owned image,its 2 commits picked, the last in 4643366734f8fix(fluxcd): keep Helm uninstall working during flux-plunger recovery,its 1 commit picked, the last in 021040795b22fix(kubernetes): keep NFS publish from hanging on a dead server,its 1 commit picked, the last in fa88bd1c4902fix(multus): drop the CPU limit and make resources configurable,its 2 commits picked, the last in 363c8426bab7fix(kafka): pass the container limits to the Kafka JVMs,its 3 commits picked, the last in fc38a540c02ffix(linstor): mark volumes restored from a snapshot DRBD-initialized,its 1 commit picked, the last in f9550b71cc24fix(e2e): keep chainsaw asserts polling through transient API errors,its 1 commit picked, the last in df75adc11cfafix(seaweedfs): build SeaweedFS in-tree with a bounded S3 read-ahead,its 5 commits picked, the last in 7f4c3463d2a9fix(backups): prepare standalone VMDisk restore targets and add VM backup/restore e2e round-trips,its 3 commits picked, the last in 4ac0cd581481fix(monitoring): send alerts to every Alertmanager replica,its 1 commit picked, the last in 5033d53410bafix(backups): gate every default Strategy CR on its CRD,its 2 commits picked, the last in dee1eef5590bfix(fluxcd): close the flux-plunger review follow-ups for the hook, drain and Warnings,its 7 commits picked, the last in a8e491646a06fix(ci): dispatch frozen-line builds with GITHUB_TOKEN,its 1 commit picked, the last in bf81e2d9db22fix(cluster-api): resync capi-operator every minute,its 1 commit picked, the last in cc8d6a4f05a0fix(hack): keep the backup stack in the vminstance selective install,its 1 commit picked, the last in 8ba8386a2e5cfix(vm-disk): let CDI adopt the PVC a Velero restore recreates,its 2 commits picked, the last in 691d7bce038efix(etcd): stop counting canceled watch streams as failed gRPC requests,its 1 commit picked, the last in 38e408917936fix(tcp-balancer): cap HAProxy fds and threads by the pod's own limits,its 1 commit picked, the last in 7a3d0b0a5559fix(marketplace): do not install a connected repository's components on connect,its 2 commits picked, the last in 25f8f11187b9fix(tenant): stop the gateway release waiting on TenantGateway listeners and certificates,its 1 commit picked, the last in 18b22495038bfix(controller): carry healthCheckExprs and waitStrategy to existing releases,its 1 commit picked, the last in d2a452e89067fix(ingress-nginx): drop the admission-webhook policy a rebase brought back,its 1 commit picked, the last in cf00b41e0e9afix(release): keep release bodies within GitHub's size limit,its 1 commit picked, the last in c7405158634efix(kubernetes): run Proxmox CCM v0.16.1 and pin the Proxmox images by digest,its 2 commits picked, the last in 8ff6dcacd3b5fix(kubernetes-nodes): plan autoscaler capacity on the cores the VM actually gets,its 1 commit picked, the last in d68a163c2d86fix(e2e): keep the Proxmox tenant kubeconfig per run and remove it,its 2 commits picked, the last in 77227c55e9d6fix(e2e): read the KubernetesNodes pool release in the HelmRelease guard,its 3 commits picked, the last in 6b17a76ef6cbfix(e2e): validate the leak allowlist against every suite layout,its 3 commits picked, the last in 7ec550b7b81ffix(marketplace): pin a tapped repository to a digest instead of a mutable tag,its 15 commits picked, the last in 9cff86f85124fix(dashboard): link a tenant row to its detail page,its 2 commits picked, the last in bd5e0b5e88b3fix(cilium): pass the CiliumNode list to jq on stdin in the IPAM hook,its 1 commit picked, the last in b28a2e228160fix(kubernetes): move the OIDC users out of the bootstrap Job's script,its 1 commit picked, the last in 02dd8e5454f8fix(clickhouse): restore the archive a Backup was taken as,its 3 commits picked, the last in 9ded5c5fc356fix(backups): re-render the default backup objects when the S3 endpoint changes,its 8 commits picked, the last in 490eab5b9abafix(securitygroups): project a membership-only group to a policy Cilium accepts,its 1 commit picked, the last in b7c50a5e070ffix(postgres): render the declared databases in a stable order,its 1 commit picked, the last in b658dffe7c31fix(mariadb-operator): derive the cluster name from the platform domain,its 2 commits picked, the last in 17702dd57babfix(redis): run one Sentinel when Redis runs a single pod,its 5 commits picked, the last in 5524a41b8586fix(lineage, kubernetes): resolve CAPK node VMs to their cluster,its 2 commits picked, the last in c90856088afffix(api): read pool usage under the quota key the controller counts,its 1 commit picked, the last in 18c17af8d50ffix(platform): remove the dead registries value and patch-containerd Secret,its 2 commits picked, the last in 617f88943895fix(postgres): fail a backup job as soon as its cnpg Backup fails,its 1 commit picked, the last in 6645e21b9e0afix(postgres): refuse system databases and never drop them,its 1 commit picked, the last in 6f1bb80f8004fix(mariadb): fail backup and restore jobs whose operator Job failed,its 5 commits picked, the last in ef3de554b99ffix(kubernetes, monitoring): send tenant cluster metrics to the tenant's vminsert,its 1 commit picked, the last in 423a75bb31dbRule 2, the title type is not `fix` or `security`, or the scope is `deps`
docs(governance): welcome new contributors and link LF sanctions guidance,type docsfeat(bucket): add a ui flag to skip the s3manager web UI,type featchore: link the FOSSA license scan for CLOMonitor,type chorefeat(backups): back up Valkey with the Redis strategy,type featdocs(release): add changelog for v1.6.5,type docsfeat(release): sign the release assets and attach a source SBOM,type featdocs: move the operator guides out of docs/ to where readers find them,type docsdocs(release): check changelog claims against the code,type docsdocs(release): point changelog check B at the Talos installer profile,type docsdocs(agents): define where a new document belongs,type docstest(harbor): pin the resources of the nginx proxy and the portal,type testfeat(keycloak): load additional CA files from Secret or ConfigMap keys,type featfeat(kubernetes-nodes): trust a factory CA in the Proxmox template script,type featci(e2e): end the Proxmox lane's SSH key with a newline,type citest(kubernetes): pin RetryOnFailure on the Proxmox csi release,type testtest(kubernetes): name the Proxmox fixture's node pool <cluster>-<pool>,type testdocs(agents): steer agents away from Helm lookup,type docsfeat(release): attach an SBOM to every release image,type featci(api-review-gate): publish the gate as a commit status,type cidocs: move the repo-only guides onto the website,type docsfeat(monitoring-agents): export PVC labels from kube-state-metrics,type featfeat(monitoring-agents): keep application identity in container log streams,type featfeat(api): expose HelmRelease failure state on Application status,type featfeat(operator): let the platform source trust a private registry CA,type featfeat(release): make backports automatic with backport-batch,type featfeat(api): add the reservation evaluator for tenant quotas,type featfeat(release): keep a line's backport record and reports across batch pull requests,type featci(e2e): skip final cleanup on disposable PR runners,type cifeat(backups): record the RDB snapshot location and size for Redis backups,type featfeat(observability-proxy): serve tenant namespace logs through an authorizing proxy,type feattest(release): isolate report deduplication from workflow attempts,type testRule 3, a breaking change
fix(platform)!: refuse a networking variant change on a live cluster,! in the titlefix(vm-disk)!: refuse a golden-image clone CDI would leave unbound,! in the titlefix(kubernetes, opensearch, foundationdb)!: restrict managed application images,! in the titlefix(keycloak)!: make the KMS proxy keep its keys across restarts,! in the titlefix(monitoring-agents)!: isolate merged log payload under log_processed,! in the titleRule 4, touches platform migrations, `targetVersion` or a CRD, or makes a sizeable API change
fix(backups): keep the backupstrategy-controller Helm release under the Secret size limit,a sizeable API change (breaking-change: [v1alpha1] spec.spec.template: field "metadata" was removed, and 5 more), a CRDfix(backups): report sizeBytes for MariaDB and CNPG backup artifacts,a CRDScreenshots
See the original pull requests.
Downstream repositories
Release note