feat(rebalancer): support RPC overrides#7746
Conversation
|
8189679 to
b4c9ff1
Compare
b4c9ff1 to
74a8aec
Compare
f5bd361 to
0c48d94
Compare
bd68e89 to
64f8793
Compare
33fafc9 to
a89d584
Compare
64f8793 to
83c269c
Compare
320d54a to
0150453
Compare
📝 WalkthroughWalkthroughThis PR adds per-chain RPC env vars and secret mappings in the rebalancer Helm chart, surfaces rebalancer chains through the Helm manager, discovers deployed rebalancer pods to extract warpRouteIds and build chain-specific managers, and applies environment-based RPC URL overrides at service startup. Changes
Sequence Diagram(s)sequenceDiagram
participant Service as Rebalancer Service
participant Env as Environment
participant Metadata as Chain Metadata
participant Provider as MultiProvider
Service->>Metadata: Load chain metadata
Service->>Env: Scan for RPC_URL_<CHAIN> vars
Env-->>Service: Override values (if any)
Service->>Metadata: Apply overrides (replace rpcUrls)
Metadata-->>Service: Updated metadata
Service->>Provider: Initialize providers with updated chains
Provider-->>Service: Ready
sequenceDiagram
participant CLI as CLI/Operator
participant Manager as RebalancerHelmManager
participant K8s as Kubernetes API
participant Helm as Helm
CLI->>Manager: getManagersForChain(env, chain)
Manager->>K8s: List pods in namespace
K8s-->>Manager: Pod list (env vars / args)
Manager->>Manager: Extract helmReleaseName + warpRouteId
Manager-->>CLI: RebalancerPodInfo[]
CLI->>Helm: Deploy/apply with chain-aware helm values
Helm-->>CLI: Applied
Estimated Code Review Effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly Related PRs
Suggested Reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Add support for private RPC endpoints in the rebalancer, following the same pattern used by the standalone keyfunder package. Changes: - Add RPC_URL_<CHAIN> environment variable support to rebalancer service - Update helm external secret template to inject RPC URLs from GCP Secret Manager - Extract chain names from rebalancer config and pass to helm values The rebalancer now: 1. Fetches RPC URLs from GCP secrets named <env>-rpc-endpoints-<chain> 2. Injects them as RPC_URL_<CHAIN> environment variables (e.g., RPC_URL_ETHEREUM) 3. Applies these overrides to chain metadata before creating MultiProvider 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
0150453 to
bbaff24
Compare
🐳 Monorepo Docker Image Built SuccessfullyImage Tags: |
♻️ Rebalancer Docker Image Built SuccessfullyImage Tags: |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #7746 +/- ##
=======================================
Coverage 77.02% 77.02%
=======================================
Files 117 117
Lines 2651 2651
Branches 244 244
=======================================
Hits 2042 2042
Misses 593 593
Partials 16 16
🚀 New features to boost your workflow:
|
Summary
RPC_URL_<CHAIN>environment variables to override registry RPC URLsChanges
Rebalancer Service (
typescript/rebalancer/src/service.ts)applyRpcOverrides()function that readsRPC_URL_<CHAIN>env vars (e.g.,RPC_URL_ETHEREUM,RPC_URL_ARBITRUM)Helm Chart (
typescript/infra/helm/rebalancer/)RPC_URL_<CHAIN>env vars from GCP secrets<env>-rpc-endpoints-<chain>(e.g.,mainnet3-rpc-endpoints-ethereum)chainsarray to values.yaml for RPC secret fetchingRPC Rotation Integration (
typescript/infra/src/utils/rpcUrls.ts)selectRebalancers()function to discover and prompt for rebalancer refreshRebalancerHelmManager.getManagersForChain()to find deployed rebalancers by chainrefreshDependentK8sResourcesInteractive()to include rebalancers alongside warp monitorsTest plan
RPC_URL_*env vars🤖 Generated with Claude Code
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.