-
Notifications
You must be signed in to change notification settings - Fork 0
feat: ethereum package #16
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
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
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.
Pull Request Overview
Adds a new Ethereum package alongside generic environment‐variable utilities and updates to existing Signet and Quincey components.
- Introduce a generic
EnvProvider
interface and updateCreateConfigMap
/CreateEnvMap
to use Go generics. - Add
ethereum
package with execution and consensus client components, argument types, validation, and tests. - Adjust Signet and Quincey code to use the new
EnvProvider
for building ConfigMaps.
Reviewed Changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 4 comments.
Show a summary per file
File | Description |
---|---|
pkg/utils/env.go | Converted env utilities to generics and removed non-interface fallback |
pkg/signet_node/types.go | Added ConsensusEnv type implementing EnvProvider |
pkg/signet_node/signet_node.go | Switched SignetNode to use the new ConsensusEnv |
pkg/quincey/quincey.go | Updated CreateConfigMap call to pass an EnvProvider |
pkg/ethereum/types.go | Defined EthereumNodeArgs and EthereumNodeComponent types |
pkg/ethereum/execution/validation_test.go | Added unit tests for execution client argument validation |
pkg/ethereum/execution/validation.go | Implemented Validate for execution client args |
pkg/ethereum/execution/types.go | Defined execution client argument and component structs |
pkg/ethereum/execution/component.go | Built execution client component and command builder |
pkg/ethereum/ethereum_node.go | Created top-level NewEthereumNodeComponent function |
pkg/ethereum/consensus/validation_test.go | Added unit tests for consensus client argument validation |
pkg/ethereum/consensus/validation.go | Implemented Validate for consensus client args |
pkg/ethereum/consensus/types.go | Defined consensus client argument and component structs |
pkg/ethereum/consensus/component.go | Built consensus client component and command builder |
// NewEthereumNodeComponent creates a new Ethereum node component that combines an execution client and a consensus client | ||
func NewEthereumNodeComponent(ctx *pulumi.Context, name string, args *EthereumNodeArgs, opts ...pulumi.ResourceOption) (*EthereumNodeComponent, error) { | ||
component := &EthereumNodeComponent{ | ||
Name: name, |
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.
[nitpick] EthereumNodeComponent stores Name and Namespace as plain strings, whereas other components use pulumi.StringOutput for these fields. For consistency and to expose computed outputs, consider using pulumi.StringOutput here as well.
Name: name, | |
Name: pulumi.ToOutput(name).(pulumi.StringOutput), | |
Namespace: pulumi.ToOutput(args.Namespace).(pulumi.StringOutput), |
Copilot uses AI. Check for mistakes.
Co-authored-by: Copilot <[email protected]>
TL;DR
Added Ethereum node components for Kubernetes deployments, including execution and consensus clients with proper configuration and resource management.
What changed?
This PR introduces a new Ethereum node infrastructure for Kubernetes deployments with the following components:
Created a consensus client package with:
Created an execution client package with:
Added an Ethereum node component that combines both execution and consensus clients
Enhanced the environment variable handling in the utils package to use generics
Added proper JWT authentication between execution and consensus clients
Why make this change?
This change provides a standardized way to deploy Ethereum nodes in Kubernetes environments, which is essential for running Ethereum infrastructure in cloud-native environments. The components handle all the complexity of configuring and connecting execution and consensus clients, managing persistent storage, and setting up proper networking and authentication between components.
The implementation follows best practices for Kubernetes deployments and provides a flexible, reusable infrastructure component that can be used across different environments and configurations.