Skip to content

feat(vfs): add Linode (Akamai) object storage schema support#18138

Merged
k8s-ci-robot merged 1 commit intokubernetes:masterfrom
moshevayner:add-linode-provider-draft
Mar 31, 2026
Merged

feat(vfs): add Linode (Akamai) object storage schema support#18138
k8s-ci-robot merged 1 commit intokubernetes:masterfrom
moshevayner:add-linode-provider-draft

Conversation

@moshevayner
Copy link
Copy Markdown
Member

@moshevayner moshevayner commented Mar 30, 2026

What this PR does / why we need it:

Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):

Special notes for your reviewer:

@k8s-ci-robot
Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@k8s-ci-robot k8s-ci-robot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 30, 2026
@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Mar 30, 2026
@moshevayner moshevayner force-pushed the add-linode-provider-draft branch from 4a37174 to 0c9db52 Compare March 30, 2026 18:32
@moshevayner
Copy link
Copy Markdown
Member Author

/test all

Comment thread util/pkg/vfs/s3context.go Outdated
Comment thread util/pkg/vfs/s3fs.go Outdated
Comment on lines +657 to +663
// Some S3-compatible backends (including Linode Object Storage) do not
// implement GetObjectAcl. In that case we conservatively treat the object
// as non-public and continue.
if AWSErrorCode(err) == "NotImplemented" {
klog.V(2).Infof("GetObjectAcl not implemented for %q, treating object as non-public", p)
return false, nil
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this needed?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

During my testing (I think it was as part of nodeup, but can't recall at that point because it's been a couple of days), it failed to start because of errors while trying to pull one of the binaries from my storage bucket with this error. Our object storage API doesn't have GetObjectAcl implemented so I needed to work around it.
Does that make sense?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move to the beginning of the function and return early if p.scheme == "linode".
I understand why you need this, but probably we need to look at a different approach for later.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good! I'll move it now.

@moshevayner moshevayner force-pushed the add-linode-provider-draft branch from 0c9db52 to 31b673d Compare March 30, 2026 21:17
@moshevayner
Copy link
Copy Markdown
Member Author

/test all

Comment thread util/pkg/vfs/s3fs.go Outdated
Comment on lines +650 to +653
if p.scheme == "linode" {
// Linode (Akamai) does not implement GetObjectAcl. In that case we conservatively treat the object as non-public and continue.
return false, nil
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be the first thing in the function, there is no need to do any other work before returning this.
In the future, we can add a secondary check for bucket level ACL, but not needed for now.

Signed-off-by: Moshe Vayner <moshe@vayner.me>
@moshevayner moshevayner force-pushed the add-linode-provider-draft branch from 31b673d to 21de341 Compare March 30, 2026 21:31
@k8s-ci-robot
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: hakman

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added lgtm "Looks good to me", indicates that a PR is ready to be merged. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Mar 30, 2026
@hakman
Copy link
Copy Markdown
Member

hakman commented Mar 30, 2026

/test all

@moshevayner
Copy link
Copy Markdown
Member Author

Thanks for the review @hakman ! ❤️
I'm running a final round of cluster spin ups from my local branch using both Gossip and regular clusters on Linode, and if everything comes up okay, I'll mark this as ready so we can move forward with remaining PRs 🙏🏼

@moshevayner
Copy link
Copy Markdown
Member Author

/retest

@moshevayner moshevayner marked this pull request as ready for review March 31, 2026 13:35
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Mar 31, 2026
@k8s-ci-robot k8s-ci-robot requested a review from hakman March 31, 2026 13:35
@k8s-ci-robot k8s-ci-robot merged commit 440ba63 into kubernetes:master Mar 31, 2026
26 checks passed
@k8s-ci-robot k8s-ci-robot added this to the v1.36 milestone Mar 31, 2026
@moshevayner moshevayner deleted the add-linode-provider-draft branch March 31, 2026 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants