Repository navigation
Default Kubernetes image volumes when supported - #156
Merged
Merged
Conversation
Contributor
Author
|
This PR was generated with Warp. Comment |
bnavetta
reviewed
Sep 22, 2026
Make use_image_volumes tri-state so omitted configuration probes real cluster support while preserving strict explicit opt-in and opt-out behavior. Fall back to the copy path for unsupported clusters and read-write sidecars in automatic mode.\n\nREMOTE-3249
warp-agent-staging
Bot
force-pushed
the
factory/remote-3249-auto-image-volumes
branch
from
October 19, 2026 15:10
7e85252 to
d75709b
Compare
Contributor
Author
There was a problem hiding this comment.
Overview
The rebase preserves the PR's tri-state configuration and startup-Job probe while retaining main's metadata checks and upgrade guidance. The remaining detection policy needs a human decision.
Concerns
- Important — ambiguous:
internal/worker/kubernetes.go:901-910selects legacy mode for the worker's lifetime after every probe error, including a 15-second scheduling timeout or registry/network failure. Supported clusters can therefore lose image volumes, or fail startup when the fallback requires disallowed root init containers; this is not evidence of unsupported runtime capability. I recommend falling back only for clear incompatibility and failing/retrying startup for inconclusive errors: should that replace the current best-effort fallback policy?
Verdict
Checks: build pass, affected-package tests pass, affected-package vet pass, Helm pass, CI pending, visual proof n/a.
Found: 0 critical, 1 important, 0 suggestions, 0 nits. Human decision needed; no approval or rejection.
Responding as eng-factory-slim: Open session · View in factory
bnavetta
approved these changes
Oct 19, 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.



Automatically prefer native Kubernetes image volumes when
backend.kubernetes.use_image_volumesis omitted, while honoring explicit opt-in and opt-out.Linear: REMOTE-3249
Behavior
true, and explicitfalsethrough YAML, runtime configuration, and Helm. The chart leaves the key unset by default.truestill requires a successful image-volume preflight; explicitfalseskips that probe and uses the legacy copy path.emptyDirmounts. Mixed tasks work in both automatic and explicit-on mode.Detection limits
API-server version, discovery, and dry-run do not prove admission and node-runtime support. The existing 15-second runtime probe remains the capability check, without extra cluster-scoped permissions. A successful probe proves only its selected node/runtime, not every node in a heterogeneous pool. Writable sidecars still require permission to run root init containers.
Validation
ExecuteTask; automatic fallback on an inconclusive API timeout is also covered.go test . ./internal/config ./internal/worker -count=1— passed.go vet . ./internal/config ./internal/workerandgo build ./...— passed.golangci-lint run . ./internal/config ./internal/worker --concurrency 2 --timeout=5m— passed (v2.12.2).gofmtandgit diff --check— passed.