Skip to content
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

feat!: add node selectors features #491

Merged
merged 104 commits into from
Feb 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
38828fe
feat: enable shadowforking
barnabasbusa Jan 29, 2024
431c499
fixes
barnabasbusa Jan 30, 2024
46b05e0
fixes
barnabasbusa Jan 30, 2024
48ad47e
fix lint
barnabasbusa Jan 30, 2024
e1c94b4
fix stuff
barnabasbusa Jan 30, 2024
775773a
add some readme
barnabasbusa Jan 30, 2024
638d138
this should work
barnabasbusa Jan 30, 2024
3fbe3b1
fix gz issue
barnabasbusa Jan 30, 2024
9594472
fix capital
barnabasbusa Jan 30, 2024
6858338
fix timeout issue
barnabasbusa Jan 30, 2024
6c45a1c
add test
barnabasbusa Jan 30, 2024
caf613f
fix url
barnabasbusa Jan 30, 2024
ce3e1c4
add pull to geth
barnabasbusa Jan 31, 2024
16acd65
cleanup
barnabasbusa Jan 31, 2024
731e9b5
add ready condition
barnabasbusa Jan 31, 2024
0e46a00
disable wait for 8551 and disable checkpoint for shadowfork
barnabasbusa Jan 31, 2024
a700a88
disable wait geth
barnabasbusa Jan 31, 2024
1ef4f44
fix path for geth
barnabasbusa Jan 31, 2024
4bed169
fix path for geth
barnabasbusa Jan 31, 2024
bed5c89
strip components
barnabasbusa Jan 31, 2024
9ea484f
stop waiting
barnabasbusa Jan 31, 2024
33130dd
fix path
barnabasbusa Jan 31, 2024
dc44149
fix path based storage
barnabasbusa Jan 31, 2024
55f0d89
add shanghai time override
barnabasbusa Jan 31, 2024
35c6e59
add deposit contract override
barnabasbusa Jan 31, 2024
90c16bc
increase timeout
barnabasbusa Jan 31, 2024
e6765d5
remove cancun override
barnabasbusa Jan 31, 2024
527917f
untar on the fly
barnabasbusa Jan 31, 2024
f51a157
enable verkle shadowfork
barnabasbusa Jan 31, 2024
a2cbd7a
fix lint
barnabasbusa Jan 31, 2024
284e14e
fix prauge override
barnabasbusa Jan 31, 2024
a1ebbe4
enable verkle shadowfork
barnabasbusa Jan 31, 2024
bcda9b1
lint
barnabasbusa Jan 31, 2024
a5c78ab
add verkle to readme
barnabasbusa Jan 31, 2024
076c3b3
bump eggs
barnabasbusa Jan 31, 2024
3c9ea34
fix logic
barnabasbusa Jan 31, 2024
8247372
bump eggs
barnabasbusa Jan 31, 2024
35d19be
add testcase
barnabasbusa Jan 31, 2024
aa2201b
Merge branch 'main' into bbusa/shadowfork
barnabasbusa Jan 31, 2024
8dab8c4
disable checkpoint sync for shadowforks
barnabasbusa Jan 31, 2024
809fb32
fix lint
barnabasbusa Jan 31, 2024
a219a12
Merge branch 'main' into bbusa/shadowfork
barnabasbusa Feb 1, 2024
f792457
Merge branch 'main' into bbusa/shadowfork
barnabasbusa Feb 2, 2024
fedab9e
add a new service to fetch snapshots
barnabasbusa Feb 2, 2024
ecc3931
Merge branch 'main' into bbusa/shadowfork
barnabasbusa Feb 2, 2024
6a6e8f5
sketchy workaround
barnabasbusa Feb 2, 2024
2435b50
Merge branch 'bbusa/shadowfork' of github.com:kurtosis-tech/ethereum-…
barnabasbusa Feb 2, 2024
44eb92f
fix path for latest snapshot
barnabasbusa Feb 2, 2024
9740cb4
fix peering issues
barnabasbusa Feb 2, 2024
4882199
fix lint
barnabasbusa Feb 2, 2024
e2c8c06
enable syncing any chain
barnabasbusa Feb 2, 2024
3455265
add latest snapshot to any network
barnabasbusa Feb 2, 2024
b0a8f73
enable ephemery shadowforking
barnabasbusa Feb 2, 2024
a65790f
rework the way data is stored
barnabasbusa Feb 5, 2024
90aac2d
add file to pvc
barnabasbusa Feb 5, 2024
e4d7264
fix lint
barnabasbusa Feb 5, 2024
79f36f4
add wait for download
barnabasbusa Feb 7, 2024
2afc5a5
fix lint
barnabasbusa Feb 7, 2024
31e3373
fix cancun time
barnabasbusa Feb 7, 2024
66e8781
fix cancun override, not for verkle
barnabasbusa Feb 7, 2024
8a9d3b7
fix fnt
barnabasbusa Feb 7, 2024
f73aeaa
fix geth verkle shadowfork
barnabasbusa Feb 7, 2024
58e28b6
add shadowfork for all els
barnabasbusa Feb 7, 2024
161979e
update tests
barnabasbusa Feb 7, 2024
ded3820
add input parser
barnabasbusa Feb 7, 2024
111bbad
dont run shadowforks in ci
barnabasbusa Feb 7, 2024
194b09a
Merge branch 'main' into bbusa/shadowfork
barnabasbusa Feb 8, 2024
d61d5ee
fix path based
barnabasbusa Feb 8, 2024
e81829e
feat: enable min_validator_withdrawability_delay, shard_committee_per…
barnabasbusa Feb 9, 2024
762cd50
Merge branch 'main' into bbusa/shadowfork
barnabasbusa Feb 9, 2024
84d9dbe
fix lint
barnabasbusa Feb 9, 2024
3afbe18
fix based on feedback
barnabasbusa Feb 9, 2024
e75c548
fix based on feedback
barnabasbusa Feb 9, 2024
623fe23
update nethermind image, to not make it fail
barnabasbusa Feb 9, 2024
b3b5ff8
update nethermind image, to not make it fail
barnabasbusa Feb 9, 2024
0392c22
fix master
barnabasbusa Feb 9, 2024
3c98118
feat!: add node selectors features
barnabasbusa Feb 9, 2024
76c9247
fix lint
barnabasbusa Feb 9, 2024
3eab7b2
revert the nethermind image
barnabasbusa Feb 9, 2024
870a2e1
Merge branch 'bbusa/shadowfork' into bbusa/node-selector
barnabasbusa Feb 9, 2024
2b0bf8f
fix global node selectors
barnabasbusa Feb 9, 2024
5c53c8a
Merge branch 'bbusa/node-selector' of github.com:kurtosis-tech/ethere…
barnabasbusa Feb 9, 2024
f3a9ed6
add test for node selectors
barnabasbusa Feb 9, 2024
fbecc0a
fix input parser
barnabasbusa Feb 9, 2024
73d1595
fix network name logic
barnabasbusa Feb 9, 2024
74c77e2
fix network name logic
barnabasbusa Feb 9, 2024
957db55
revert changes
barnabasbusa Feb 9, 2024
1727cef
Merge branch 'bbusa/shadowfork' into bbusa/node-selector
barnabasbusa Feb 9, 2024
0fc0275
refactor
barnabasbusa Feb 9, 2024
e3eb772
Merge branch 'bbusa/shadowfork' into bbusa/node-selector
barnabasbusa Feb 9, 2024
83b8ad3
adding verkle logic
parithosh Feb 9, 2024
ed14fa8
reverted streaming file
parithosh Feb 9, 2024
5864a52
switch to tar autodetect
parithosh Feb 9, 2024
ec464b0
switch to tar autodetect
parithosh Feb 9, 2024
89145ef
switch to tar autodetect
parithosh Feb 9, 2024
4dfe8f7
thank you rafael
parithosh Feb 9, 2024
211211a
lint so bbusa can sleep well
parithosh Feb 9, 2024
14d2285
Merge branch 'bbusa/shadowfork' into bbusa/node-selector
barnabasbusa Feb 9, 2024
a2ad8a2
Merge branch 'main' into bbusa/node-selector
barnabasbusa Feb 9, 2024
de44423
fix lint, remove not needed env
barnabasbusa Feb 9, 2024
0768fba
Update node-selectors.yaml
barnabasbusa Feb 12, 2024
8cc4928
add node selectors to all tooling too
barnabasbusa Feb 12, 2024
51f1cfe
make tolerations neater
barnabasbusa Feb 12, 2024
6d3e28a
Merge branch 'main' into bbusa/node-selector
barnabasbusa Feb 12, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/tests/node-selectors.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
participants:
- el_client_type: reth
cl_client_type: teku
cl_split_mode_enabled: true
node_selectors: {
"kubernetes.io/hostname": testing-1,
}
- el_client_type: reth
cl_client_type: teku
cl_split_mode_enabled: true
global_node_selectors: {
"kubernetes.io/hostname": testing-2,
}
12 changes: 12 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,12 @@ participants:
# Defaults to empty
tolerations: []

# Node selector
# Only works with Kubernetes
# Example: node_selectors: { "disktype": "ssd" }
# Defaults to empty
node_selectors: {}

# A list of optional extra params that will be passed to the CL client Beacon container for modifying its behaviour
# If the client combines the Beacon & validator nodes (e.g. Teku, Nimbus), then this list will be passed to the combined Beacon-validator node
beacon_extra_params: []
Expand Down Expand Up @@ -605,6 +611,12 @@ xatu_sentry_params:
# toleration_seconds: 3600
# Defaults to empty
global_tolerations: []

# Global node selector that will be passed to all containers (unless overridden by a more specific node selector)
# Only works with Kubernetes
# Example: node_selectors: { "disktype": "ssd" }
# Defaults to empty
node_selectors: {}
```

#### Example configurations
Expand Down
34 changes: 30 additions & 4 deletions main.star
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ def run(plan, args={}):
persistent = args_with_right_defaults.persistent
xatu_sentry_params = args_with_right_defaults.xatu_sentry_params
global_tolerations = args_with_right_defaults.global_tolerations
global_node_selectors = args_with_right_defaults.global_node_selectors

grafana_datasource_config_template = read_file(
static_files.GRAFANA_DATASOURCE_CONFIG_TEMPLATE_FILEPATH
Expand Down Expand Up @@ -95,6 +96,7 @@ def run(plan, args={}):
persistent,
xatu_sentry_params,
global_tolerations,
global_node_selectors,
parallel_keystore_generation,
)

Expand Down Expand Up @@ -137,7 +139,9 @@ def run(plan, args={}):
if "broadcaster" in args_with_right_defaults.additional_services:
args_with_right_defaults.additional_services.remove("broadcaster")
broadcaster_service = broadcaster.launch_broadcaster(
plan, all_el_client_contexts
plan,
all_el_client_contexts,
global_node_selectors,
)
fuzz_target = "http://{0}:{1}".format(
broadcaster_service.ip_address,
Expand Down Expand Up @@ -170,6 +174,7 @@ def run(plan, args={}):
beacon_uri,
raw_jwt_secret,
args_with_right_defaults.global_client_log_level,
global_node_selectors,
)
mev_endpoints.append(endpoint)
elif (
Expand All @@ -195,6 +200,7 @@ def run(plan, args={}):
fuzz_target,
contract_owner.private_key,
normal_user.private_key,
global_node_selectors,
)
epoch_recipe = GetHttpRequestRecipe(
endpoint="/eth/v2/beacon/blocks/head",
Expand All @@ -218,6 +224,7 @@ def run(plan, args={}):
builder_uri,
network_params.seconds_per_slot,
persistent,
global_node_selectors,
)
mev_flood.spam_in_background(
plan,
Expand All @@ -238,7 +245,8 @@ def run(plan, args={}):
)
if args_with_right_defaults.participants[index].validator_count != 0:
mev_boost_launcher = mev_boost.new_mev_boost_launcher(
MEV_BOOST_SHOULD_CHECK_RELAY, mev_endpoints
MEV_BOOST_SHOULD_CHECK_RELAY,
mev_endpoints,
)
mev_boost_service_name = "{0}-{1}-{2}-{3}".format(
input_parser.MEV_BOOST_SERVICE_NAME_PREFIX,
Expand All @@ -252,6 +260,7 @@ def run(plan, args={}):
mev_boost_service_name,
network_params.network_id,
mev_params.mev_boost_image,
global_node_selectors,
)
all_mevboost_contexts.append(mev_boost_context)

Expand All @@ -275,6 +284,7 @@ def run(plan, args={}):
fuzz_target,
tx_spammer_params,
network_params.electra_fork_epoch,
global_node_selectors,
)
plan.print("Successfully launched transaction spammer")
elif additional_service == "blob_spammer":
Expand All @@ -287,6 +297,7 @@ def run(plan, args={}):
network_params.deneb_fork_epoch,
network_params.seconds_per_slot,
network_params.genesis_delay,
global_node_selectors,
)
plan.print("Successfully launched blob spammer")
elif additional_service == "goomy_blob":
Expand All @@ -299,6 +310,7 @@ def run(plan, args={}):
all_cl_client_contexts[0],
network_params.seconds_per_slot,
goomy_blob_params,
global_node_selectors,
)
plan.print("Successfully launched goomy the blob spammer")
# We need a way to do time.sleep
Expand All @@ -309,7 +321,10 @@ def run(plan, args={}):
static_files.EL_FORKMON_CONFIG_TEMPLATE_FILEPATH
)
el_forkmon.launch_el_forkmon(
plan, el_forkmon_config_template, all_el_client_contexts
plan,
el_forkmon_config_template,
all_el_client_contexts,
global_node_selectors,
)
plan.print("Successfully launched execution layer forkmon")
elif additional_service == "beacon_metrics_gazer":
Expand All @@ -319,6 +334,7 @@ def run(plan, args={}):
plan,
all_cl_client_contexts,
network_params,
global_node_selectors,
)
)
launch_prometheus_grafana = True
Expand All @@ -329,7 +345,10 @@ def run(plan, args={}):
elif additional_service == "blockscout":
plan.print("Launching blockscout")
blockscout_sc_verif_url = blockscout.launch_blockscout(
plan, all_el_client_contexts, persistent
plan,
all_el_client_contexts,
persistent,
global_node_selectors,
)
plan.print("Successfully launched blockscout")
elif additional_service == "dora":
Expand All @@ -342,6 +361,7 @@ def run(plan, args={}):
el_cl_data_files_artifact_uuid,
network_params.electra_fork_epoch,
network_params.network,
global_node_selectors,
)
plan.print("Successfully launched dora")
elif additional_service == "blobscan":
Expand All @@ -352,6 +372,7 @@ def run(plan, args={}):
all_el_client_contexts,
network_params.network_id,
persistent,
global_node_selectors,
)
plan.print("Successfully launched blobscan")
elif additional_service == "full_beaconchain_explorer":
Expand All @@ -365,6 +386,7 @@ def run(plan, args={}):
all_cl_client_contexts,
all_el_client_contexts,
persistent,
global_node_selectors,
)
plan.print("Successfully launched full-beaconchain-explorer")
elif additional_service == "prometheus_grafana":
Expand All @@ -383,6 +405,7 @@ def run(plan, args={}):
args_with_right_defaults.participants,
network_params,
assertoor_params,
global_node_selectors,
)
plan.print("Successfully launched assertoor")
elif additional_service == "custom_flood":
Expand All @@ -392,6 +415,7 @@ def run(plan, args={}):
genesis_constants.PRE_FUNDED_ACCOUNTS[0].address,
fuzz_target,
args_with_right_defaults.custom_flood_params,
global_node_selectors,
)
else:
fail("Invalid additional service %s" % (additional_service))
Expand All @@ -404,6 +428,7 @@ def run(plan, args={}):
prometheus_additional_metrics_jobs,
all_ethereum_metrics_exporter_contexts,
all_xatu_sentry_contexts,
global_node_selectors,
)

plan.print("Launching grafana...")
Expand All @@ -412,6 +437,7 @@ def run(plan, args={}):
grafana_datasource_config_template,
grafana_dashboards_config_template,
prometheus_private_url,
global_node_selectors,
additional_dashboards=args_with_right_defaults.grafana_additional_dashboards,
)
plan.print("Successfully launched grafana")
Expand Down
2 changes: 2 additions & 0 deletions network_params.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ participants:
cl_tolerations: []
validator_tolerations: []
tolerations: []
node_selectors: {}
beacon_extra_params: []
beacon_extra_labels: {}
validator_extra_params: []
Expand Down Expand Up @@ -87,3 +88,4 @@ grafana_additional_dashboards: []
persistent: false
xatu_sentry_enabled: false
global_tolerations: []
global_node_selectors: {}
4 changes: 4 additions & 0 deletions src/assertoor/assertoor_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ def launch_assertoor(
participant_configs,
network_params,
assertoor_params,
global_node_selectors,
):
all_client_info = []
validator_client_info = []
Expand Down Expand Up @@ -91,6 +92,7 @@ def launch_assertoor(
tests_config_artifacts_name,
network_params,
assertoor_params,
global_node_selectors,
)

plan.add_service(SERVICE_NAME, config)
Expand All @@ -101,6 +103,7 @@ def get_config(
tests_config_artifacts_name,
network_params,
assertoor_params,
node_selectors,
):
config_file_path = shared_utils.path_join(
ASSERTOOR_CONFIG_MOUNT_DIRPATH_ON_SERVICE,
Expand All @@ -127,6 +130,7 @@ def get_config(
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)


Expand Down
11 changes: 9 additions & 2 deletions src/beacon_metrics_gazer/beacon_metrics_gazer_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,16 @@ MIN_MEMORY = 20
MAX_MEMORY = 300


def launch_beacon_metrics_gazer(plan, cl_client_contexts, network_params):
def launch_beacon_metrics_gazer(
plan,
cl_client_contexts,
network_params,
global_node_selectors,
):
config = get_config(
cl_client_contexts[0].ip_addr,
cl_client_contexts[0].http_port_num,
global_node_selectors,
)

beacon_metrics_gazer_service = plan.add_service(SERVICE_NAME, config)
Expand All @@ -51,7 +57,7 @@ def launch_beacon_metrics_gazer(plan, cl_client_contexts, network_params):
)


def get_config(ip_addr, http_port_num):
def get_config(ip_addr, http_port_num, node_selectors):
config_file_path = shared_utils.path_join(
BEACON_METRICS_GAZER_CONFIG_MOUNT_DIRPATH_ON_SERVICE,
BEACON_METRICS_GAZER_CONFIG_FILENAME,
Expand All @@ -76,4 +82,5 @@ def get_config(ip_addr, http_port_num):
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
4 changes: 4 additions & 0 deletions src/blob_spammer/blob_spammer.star
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ def launch_blob_spammer(
deneb_fork_epoch,
seconds_per_slot,
genesis_delay,
global_node_selectors,
):
config = get_config(
prefunded_addresses,
Expand All @@ -26,6 +27,7 @@ def launch_blob_spammer(
deneb_fork_epoch,
seconds_per_slot,
genesis_delay,
global_node_selectors,
)
plan.add_service(SERVICE_NAME, config)

Expand All @@ -37,6 +39,7 @@ def get_config(
deneb_fork_epoch,
seconds_per_slot,
genesis_delay,
node_selectors,
):
dencunTime = (deneb_fork_epoch * 32 * seconds_per_slot) + genesis_delay
return ServiceConfig(
Expand Down Expand Up @@ -68,4 +71,5 @@ def get_config(
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
24 changes: 21 additions & 3 deletions src/blobber/blobber_launcher.star
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,22 @@ MIN_MEMORY = 10
MAX_MEMORY = 300


def launch(plan, service_name, node_keystore_files, beacon_http_url, extra_params):
def launch(
plan,
service_name,
node_keystore_files,
beacon_http_url,
extra_params,
node_selectors,
):
blobber_service_name = "{0}".format(service_name)

blobber_config = get_config(
service_name, node_keystore_files, beacon_http_url, extra_params
service_name,
node_keystore_files,
beacon_http_url,
extra_params,
node_selectors,
)

blobber_service = plan.add_service(blobber_service_name, blobber_config)
Expand All @@ -49,7 +60,13 @@ def launch(plan, service_name, node_keystore_files, beacon_http_url, extra_param
)


def get_config(service_name, node_keystore_files, beacon_http_url, extra_params):
def get_config(
service_name,
node_keystore_files,
beacon_http_url,
extra_params,
node_selectors,
):
validator_root_dirpath = shared_utils.path_join(
VALIDATOR_KEYS_MOUNTPOINT_ON_CLIENTS,
node_keystore_files.raw_root_dirpath,
Expand Down Expand Up @@ -78,4 +95,5 @@ def get_config(service_name, node_keystore_files, beacon_http_url, extra_params)
max_cpu=MAX_CPU,
min_memory=MIN_MEMORY,
max_memory=MAX_MEMORY,
node_selectors=node_selectors,
)
Loading