-
Notifications
You must be signed in to change notification settings - Fork 301
Feat/traffic keepalive #2591
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
matthewlouisbrockman
wants to merge
119
commits into
main
Choose a base branch
from
feat/traffic-keepalive
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Feat/traffic keepalive #2591
Changes from all commits
Commits
Show all changes
119 commits
Select commit
Hold shift + click to select a range
2a4fd7b
proxy: use token-authenticated grpc resume
matthewlouisbrockman d40a473
iac: expose api grpc resume route
matthewlouisbrockman 75fe000
tests: cover proxy without autoresume
matthewlouisbrockman 5410a78
proxy: resolve resumed sandbox from catalog
matthewlouisbrockman a43231b
note on edge proxies needing to re-retrieve from the catalog
matthewlouisbrockman ff454b7
Add traffic keepalive lifecycle config
matthewlouisbrockman bddd713
Propagate traffic keepalive through catalog
matthewlouisbrockman 7f466bd
Refresh sandboxes from proxy traffic
matthewlouisbrockman 28acdbd
don't need new grpc token, can use the existing api token
matthewlouisbrockman a544be8
use apiSecret naming to finish consolidation from separate resume aut…
matthewlouisbrockman 743720b
Allow edge cluster token for proxy resume
matthewlouisbrockman 3295a1d
Merge remote-tracking branch 'origin/main' into feat/byoc-autoresume
matthewlouisbrockman 9f4f0de
Rate limit API gRPC resume calls
matthewlouisbrockman abaf347
Fix AWS client-proxy gRPC resume wiring
matthewlouisbrockman 9c74628
Apply lint fixes
matthewlouisbrockman c5d07e0
Retry catalog lookup after auto-resume
matthewlouisbrockman 2ad0816
Merge remote-tracking branch 'origin/main' into feat/byoc-autoresume
matthewlouisbrockman d8afeb3
Fix client proxy lint
matthewlouisbrockman 57e75a6
Persist snapshot internet access updates
matthewlouisbrockman 4e92684
Retry resumed sandbox proxy connections
matthewlouisbrockman 0ab385e
Handle empty auto-resume routes explicitly
matthewlouisbrockman a4d9da2
edge returns the ip on autoresume to avoid extra check
matthewlouisbrockman f3f6d10
Consolidate local route IP handling
matthewlouisbrockman efa2672
refactor(api): simplify route IP lookup
matthewlouisbrockman 052c078
refactor(orchestrator): reuse traffic token header constant
matthewlouisbrockman 05db929
chore: remove redundant autoresume comments
matthewlouisbrockman 0cdff28
refactor(client-proxy): drop resume catalog fallback
matthewlouisbrockman 7a93b62
use ConstantTimeCompare on secret comparison
matthewlouisbrockman c51de22
keepalive only via redis
matthewlouisbrockman de46ab0
feat: make keepalive an object in lifecycle
matthewlouisbrockman 0afb767
fix: make lifecycle keepalive optional
matthewlouisbrockman 15fbf58
not need token internally, only use the cluster token, but looking at…
matthewlouisbrockman d5b299f
only pass around the cluster auth tokens for the byoc autoresume setup
matthewlouisbrockman 8b658e9
move public grpc to another port to check auth before joining flow
matthewlouisbrockman c22a1e2
fix client proxy config tag alignment
matthewlouisbrockman 289472d
use oauth org auth for client proxy resume
matthewlouisbrockman 34bc0c2
remove unused client proxy cluster token
matthewlouisbrockman e9d080b
Merge remote-tracking branch 'origin/main' into feat/byoc-autoresume
matthewlouisbrockman ffea1d9
avoid public grpc port collision in ci
matthewlouisbrockman 5b36fff
use ci public grpc port 5013
matthewlouisbrockman 8c50ea8
route client proxy autoresume through public grpc auth
matthewlouisbrockman 46724f3
move public api grpc port to 5109
matthewlouisbrockman 0148f8e
revert client proxy public grpc wiring, keep it just for edge
matthewlouisbrockman fb0998b
remove unused api secret from api job
matthewlouisbrockman dc5d958
infer client proxy grpc tls from address
matthewlouisbrockman f0cf3c9
make cluster auth org index nonunique
matthewlouisbrockman 37f54c3
remove resumed sandbox proxy retry override
matthewlouisbrockman 16fe8ad
remove proxy destination retry override
matthewlouisbrockman feaf9c7
feat(proxy): add catalog-backed traffic keepalive throttle
matthewlouisbrockman c3f08c7
Merge remote-tracking branch 'origin/main' into feat/traffic-keepalive
matthewlouisbrockman 104a8bb
Route public API gRPC through ingress
matthewlouisbrockman becd10c
Require bearer metadata before public gRPC lookup
matthewlouisbrockman 60df4df
Infer client proxy API gRPC TLS
matthewlouisbrockman 8150071
Keep local API gRPC plaintext
matthewlouisbrockman 20bbf8b
Remove stale API gRPC named port
matthewlouisbrockman a849729
Remove unused API cluster token
matthewlouisbrockman b4e4189
Document autoresume state handling
matthewlouisbrockman 419ae95
Keep autoresume routing info wording
matthewlouisbrockman 435419e
Use noop API gRPC OAuth token source
matthewlouisbrockman 253b461
Remove unrelated snapshot upsert change
matthewlouisbrockman 0b7eebb
Fix autoresume routing error assertion
matthewlouisbrockman 761e74e
Use noop client proxy OIDC verifier
matthewlouisbrockman 1f76ea4
Reuse discovery local IP for route host
matthewlouisbrockman 4548f24
Rename API gRPC ports to internal and edge
matthewlouisbrockman a0014f2
Rename cluster instance IP to local IP
matthewlouisbrockman ff35f10
Route edge API gRPC through ingress LB
matthewlouisbrockman 371feaf
Remove legacy edge resume auth metadata
matthewlouisbrockman b40b179
Move client proxy OAuth verifier out of handlers
matthewlouisbrockman f0972bc
Move OAuth bearer checks into internal oauth
matthewlouisbrockman 41017d6
Restore proxy traffic access token header
matthewlouisbrockman da734bd
create func normalizeNodeIP
matthewlouisbrockman af9208f
split gRPC resume oauth auth modes
matthewlouisbrockman e320d4a
separate auth from autoresume logic
matthewlouisbrockman bb52622
Check edge traffic JWT before database access
matthewlouisbrockman 081c0bc
Clean up client proxy OAuth helpers
matthewlouisbrockman 8c3bfa0
Remove unused API gRPC port override
matthewlouisbrockman 5581a43
Merge remote-tracking branch 'origin/main' into feat/byoc-autoresume
matthewlouisbrockman 161fb72
Merge remote-tracking branch 'origin/main' into feat/byoc-autoresume
matthewlouisbrockman 842dfd3
consolidate naming from internal edge on grpc for autoresume
matthewlouisbrockman b0256e9
auth store tracks team ids
matthewlouisbrockman 7f2b446
auth org id is unique in clusters
matthewlouisbrockman 4a4b4fd
Require autoresume scope for edge resume
matthewlouisbrockman 4529407
rm newline
matthewlouisbrockman 7317c40
note on not having the node ip for cicd
matthewlouisbrockman 93373eb
add autoresume env vars to the .env.gcp.template
matthewlouisbrockman 1bf35c1
Use lifecycle scope for edge autoresume
matthewlouisbrockman 41fe105
refactor(api): dedupe catalog keepalive conversion
matthewlouisbrockman 45a0ede
refactor(proxy): rename sandbox lifecycle client
matthewlouisbrockman 272b5b2
rename api-edge-grpc to grpc-api to keep it consistant with dashboard…
matthewlouisbrockman cf8744d
use shared const for the required jwt scopes for autoresume over grpc
matthewlouisbrockman 03f6bbd
Merge remote-tracking branch 'origin/main' into feat/byoc-autoresume
matthewlouisbrockman 9d720b1
Use TLS for external client proxy gRPC
matthewlouisbrockman 2f99e54
Pass startup context to grpc resume auth
matthewlouisbrockman 1c45a5d
Clean up grpc resume auth assignment
matthewlouisbrockman 574b90f
Allow client proxy OIDC without audience
matthewlouisbrockman 72f09a3
Remove client proxy OIDC audience config
matthewlouisbrockman e98abb7
Merge remote-tracking branch 'origin/main' into feat/traffic-keepalive
matthewlouisbrockman 38e5411
Use catalog traffic keepalive timer
matthewlouisbrockman c30c6e0
Clarify traffic keepalive eligibility
matthewlouisbrockman c840405
Merge branch 'main' into feat/traffic-keepalive
matthewlouisbrockman e9ab050
Merge branch 'feat/byoc-autoresume' into feat/traffic-keepalive
matthewlouisbrockman 62180b5
Store sandbox routing metadata from edge creates
matthewlouisbrockman 66bcdba
Persist keepalive policy in orchestrator config
matthewlouisbrockman 2666e30
Harden traffic keepalive API validation
matthewlouisbrockman d4f5b04
Remove unused sandbox timeout persistence
matthewlouisbrockman 7b863e1
Clean up traffic keepalive review nits
matthewlouisbrockman 61d88c9
fix(proxy): validate traffic keepalive requests
matthewlouisbrockman de2b6c8
chore(api): address keepalive review notes
matthewlouisbrockman dcc5a1b
Separate lifecycle object from flat sandbox fields
matthewlouisbrockman 21be331
chore: auto-commit generated changes
github-actions[bot] dc2ab30
Clarify sandbox catalog alias
matthewlouisbrockman 3b3de0d
Clarify sandbox routing catalog alias
matthewlouisbrockman 9b4be16
Remove orchestrator variables churn
matthewlouisbrockman caa8cca
Apply traffic keepalive lint fixes
matthewlouisbrockman cf99daa
Require proxy auth metadata tokens
matthewlouisbrockman 4868193
Rename client proxy control plane inputs
matthewlouisbrockman fe2bbe2
Merge remote-tracking branch 'origin/main' into feat/traffic-keepalive
matthewlouisbrockman b24dd2d
Use lifecycle config for sandbox timeout policies
matthewlouisbrockman 088532b
Revert "Rename client proxy control plane inputs"
matthewlouisbrockman File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Keepalive timeout stored without upper-bound validation
Low Severity
buildKeepaliveConfigvalidates that the traffic keepalive timeout is greater than the throttle interval but never validates an upper bound. A caller could supply an arbitrarily large timeout (up toint32max, ~68 years), which would be stored and later used verbatim inKeepAliveFor. WhilegetMaxAllowedTTLcaps the actual extension atMaxInstanceLength, the uncapped stored value is misleading and means theTrafficKeepaliveThrottleIntervalerror message ("must be greater than N seconds") could fire for a zero or negative timeout that should have been caught by the earlier< 0check — specifically, no check preventsTimeout = 0being accepted when0 > TrafficKeepaliveThrottleIntervalis false, making a zero timeout silently pass validation but produce a no-op keepalive.Reviewed by Cursor Bugbot for commit b24dd2d. Configure here.