Commit 69da8f04 authored by Barnabas Busa's avatar Barnabas Busa Committed by GitHub

feat: add pitfalls for persistent storage as a warning (#441)

parent 060fd8fb
......@@ -51,6 +51,19 @@ Where `network_params.yaml` contains the parameters for your network in your hom
Kurtosis packages work the same way over Docker or on Kubernetes. Please visit our [Kubernetes docs](https://docs.kurtosis.com/k8s) to learn how to spin up a private testnet on a Kubernetes cluster.
#### Considerations for Running on a Public Testnet with a Cloud Provider
When running on a public testnet using a cloud provider's Kubernetes cluster, there are a few important factors to consider:
1. State Growth: The growth of the state might be faster than anticipated. This could potentially lead to issues if the default parameters become insufficient over time. It's important to monitor state growth and adjust parameters as necessary.
2. Persistent Storage Speed: Most cloud providers provision their Kubernetes clusters with relatively slow persistent storage by default. This can cause performance issues, particularly with Ethereum Light (EL) clients.
3. Network Syncing: The disk speed provided by cloud providers may not be sufficient to sync with networks that have high demands, such as the mainnet. This could lead to syncing issues and delays.
To mitigate these issues, you can use the `el_client_volume_size` and `cl_client_volume_size` flags to override the default settings locally. This allows you to allocate more storage to the EL and CL clients, which can help accommodate faster state growth and improve syncing performance. However, keep in mind that increasing the volume size may also increase your cloud provider costs. Always monitor your usage and adjust as necessary to balance performance and cost.
For optimal performance, we recommend using a cloud provider that allows you to provision Kubernetes clusters with fast persistent storage or self hosting your own Kubernetes cluster with fast persistent storage.
#### Tear down
The testnet will reside in an [enclave][enclave] - an isolated, ephemeral environment. The enclave and its contents (e.g. running containers, files artifacts, etc) will persist until torn down. You can remove an enclave and its contents with:
......@@ -125,6 +138,11 @@ participants:
# A list of optional extra env_vars the el container should spin up with
el_extra_env_vars: {}
# Persistent storage size for the EL client container (in MB)
# Defaults to 0, which means that the default size for the client will be used
# Default values can be found in /src/package_io/constants.star VOLUME_SIZE
el_client_volume_size: 0
# A list of optional extra labels the el container should spin up with
# Example; el_extra_labels: {"ethereum-package.partition": "1"}
el_extra_labels: {}
......@@ -154,6 +172,11 @@ participants:
# Defaults to false
cl_split_mode_enabled: false
# Persistent storage size for the CL client container (in MB)
# Defaults to 0, which means that the default size for the client will be used
# Default values can be found in /src/package_io/constants.star VOLUME_SIZE
cl_client_volume_size: 0
# 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: []
......
......@@ -120,6 +120,7 @@ def launch(
extra_beacon_labels,
extra_validator_labels,
persistent,
cl_volume_size,
split_mode_enabled=False,
):
beacon_service_name = "{0}".format(service_name)
......@@ -135,6 +136,17 @@ def launch(
bn_max_cpu = int(bn_max_cpu) if int(bn_max_cpu) > 0 else BEACON_MAX_CPU
bn_min_mem = int(bn_min_mem) if int(bn_min_mem) > 0 else BEACON_MIN_MEMORY
bn_max_mem = int(bn_max_mem) if int(bn_max_mem) > 0 else BEACON_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
cl_volume_size = (
int(cl_volume_size)
if int(cl_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["lighthouse_volume_size"]
)
# Launch Beacon node
beacon_config = get_beacon_config(
......@@ -156,6 +168,7 @@ def launch(
extra_beacon_params,
extra_beacon_labels,
persistent,
cl_volume_size,
)
beacon_service = plan.add_service(beacon_service_name, beacon_config)
......@@ -283,6 +296,7 @@ def get_beacon_config(
extra_params,
extra_labels,
persistent,
cl_volume_size,
):
# If snooper is enabled use the snooper engine context, otherwise use the execution client context
if snooper_enabled:
......@@ -390,6 +404,7 @@ def get_beacon_config(
if persistent:
files[BEACON_DATA_DIRPATH_ON_BEACON_SERVICE_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=cl_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -99,6 +99,7 @@ def launch(
extra_beacon_labels,
extra_validator_labels,
persistent,
cl_volume_size,
split_mode_enabled=False,
):
beacon_service_name = "{0}".format(service_name)
......@@ -114,6 +115,18 @@ def launch(
bn_min_mem = int(bn_min_mem) if int(bn_min_mem) > 0 else BEACON_MIN_MEMORY
bn_max_mem = int(bn_max_mem) if int(bn_max_mem) > 0 else BEACON_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
cl_volume_size = (
int(cl_volume_size)
if int(cl_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["lodestar_volume_size"]
)
# Launch Beacon node
beacon_config = get_beacon_config(
plan,
......@@ -134,6 +147,7 @@ def launch(
extra_beacon_params,
extra_beacon_labels,
persistent,
cl_volume_size,
)
beacon_service = plan.add_service(beacon_service_name, beacon_config)
......@@ -253,6 +267,7 @@ def get_beacon_config(
extra_params,
extra_labels,
persistent,
cl_volume_size,
):
el_client_rpc_url_str = "http://{0}:{1}".format(
el_client_context.ip_addr,
......@@ -344,7 +359,8 @@ def get_beacon_config(
if persistent:
files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name)
persistent_key="data-{0}".format(service_name),
size=cl_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -138,6 +138,7 @@ def launch(
extra_beacon_labels,
extra_validator_labels,
persistent,
cl_volume_size,
split_mode_enabled,
):
beacon_service_name = "{0}".format(service_name)
......@@ -161,6 +162,18 @@ def launch(
bn_min_mem = int(bn_min_mem) if int(bn_min_mem) > 0 else BEACON_MIN_MEMORY
bn_max_mem = int(bn_max_mem) if int(bn_max_mem) > 0 else BEACON_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
cl_volume_size = (
int(cl_volume_size)
if int(cl_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["nimbus_volume_size"]
)
beacon_config = get_beacon_config(
plan,
launcher.el_cl_genesis_data,
......@@ -182,6 +195,7 @@ def launch(
extra_beacon_labels,
split_mode_enabled,
persistent,
cl_volume_size,
)
beacon_service = plan.add_service(beacon_service_name, beacon_config)
......@@ -291,6 +305,7 @@ def get_beacon_config(
extra_labels,
split_mode_enabled,
persistent,
cl_volume_size,
):
validator_keys_dirpath = ""
validator_secrets_dirpath = ""
......@@ -392,7 +407,8 @@ def get_beacon_config(
if persistent:
files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name)
persistent_key="data-{0}".format(service_name),
size=cl_volume_size,
)
return ServiceConfig(
......
......@@ -111,6 +111,7 @@ def launch(
extra_beacon_labels,
extra_validator_labels,
persistent,
cl_volume_size,
split_mode_enabled=False,
):
split_images = images.split(IMAGE_SEPARATOR_DELIMITER)
......@@ -140,6 +141,17 @@ def launch(
bn_max_cpu = int(bn_max_cpu) if int(bn_max_cpu) > 0 else BEACON_MAX_CPU
bn_min_mem = int(bn_min_mem) if int(bn_min_mem) > 0 else BEACON_MIN_MEMORY
bn_max_mem = int(bn_max_mem) if int(bn_max_mem) > 0 else BEACON_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
cl_volume_size = (
int(cl_volume_size)
if int(cl_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["prysm_volume_size"]
)
beacon_config = get_beacon_config(
plan,
......@@ -160,6 +172,7 @@ def launch(
extra_beacon_params,
extra_beacon_labels,
persistent,
cl_volume_size,
)
beacon_service = plan.add_service(beacon_service_name, beacon_config)
......@@ -271,6 +284,7 @@ def get_beacon_config(
extra_params,
extra_labels,
persistent,
cl_volume_size,
):
# If snooper is enabled use the snooper engine context, otherwise use the execution client context
if snooper_enabled:
......@@ -350,7 +364,8 @@ def get_beacon_config(
if persistent:
files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name)
persistent_key="data-{0}".format(service_name),
size=cl_volume_size,
)
return ServiceConfig(
......
......@@ -124,6 +124,7 @@ def launch(
extra_beacon_labels,
extra_validator_labels,
persistent,
cl_volume_size,
split_mode_enabled,
):
beacon_service_name = "{0}".format(service_name)
......@@ -143,6 +144,18 @@ def launch(
bn_min_mem = int(bn_min_mem) if int(bn_min_mem) > 0 else BEACON_MIN_MEMORY
bn_max_mem = int(bn_max_mem) if int(bn_max_mem) > 0 else BEACON_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
cl_volume_size = (
int(cl_volume_size)
if int(cl_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["teku_volume_size"]
)
config = get_beacon_config(
plan,
launcher.el_cl_genesis_data,
......@@ -164,6 +177,7 @@ def launch(
extra_beacon_labels,
split_mode_enabled,
persistent,
cl_volume_size,
)
beacon_service = plan.add_service(service_name, config)
......@@ -276,6 +290,7 @@ def get_beacon_config(
extra_labels,
split_mode_enabled,
persistent,
cl_volume_size,
):
validator_keys_dirpath = ""
validator_secrets_dirpath = ""
......@@ -399,7 +414,8 @@ def get_beacon_config(
if persistent:
files[BEACON_DATA_DIRPATH_ON_SERVICE_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name)
persistent_key="data-{0}".format(service_name),
size=cl_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -75,6 +75,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
log_level = input_parser.get_client_log_level_or_default(
participant_log_level, global_log_level, BESU_LOG_LEVELS
......@@ -84,6 +85,17 @@ def launch(
el_max_cpu = int(el_max_cpu) if int(el_max_cpu) > 0 else EXECUTION_MAX_CPU
el_min_mem = int(el_min_mem) if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY
el_max_mem = int(el_max_mem) if int(el_max_mem) > 0 else EXECUTION_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
el_volume_size = (
el_volume_size
if int(el_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["besu_volume_size"]
)
cl_client_name = service_name.split("-")[3]
......@@ -105,6 +117,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
)
service = plan.add_service(service_name, config)
......@@ -147,6 +160,7 @@ def get_config(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
cmd = [
"besu",
......@@ -219,6 +233,7 @@ def get_config(
if persistent:
files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=el_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -77,6 +77,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
log_level = input_parser.get_client_log_level_or_default(
participant_log_level, global_log_level, ERIGON_LOG_LEVELS
......@@ -87,6 +88,18 @@ def launch(
el_min_mem = el_min_mem if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY
el_max_mem = el_max_mem if int(el_max_mem) > 0 else EXECUTION_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
el_volume_size = (
el_volume_size
if int(el_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["erigon_volume_size"]
)
cl_client_name = service_name.split("-")[3]
config = get_config(
......@@ -107,6 +120,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
)
service = plan.add_service(service_name, config)
......@@ -151,6 +165,7 @@ def get_config(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
init_datadir_cmd_str = "erigon init --datadir={0} {1}".format(
EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
......@@ -237,6 +252,7 @@ def get_config(
if persistent:
files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=el_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -70,7 +70,6 @@ def launch(
image,
participant_log_level,
global_log_level,
# If empty then the node will be launched as a bootnode
existing_el_clients,
el_min_cpu,
el_max_cpu,
......@@ -80,6 +79,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
log_level = input_parser.get_client_log_level_or_default(
participant_log_level, global_log_level, VERBOSITY_LEVELS
......@@ -90,6 +90,18 @@ def launch(
el_min_mem = el_min_mem if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY
el_max_mem = el_max_mem if int(el_max_mem) > 0 else EXECUTION_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
el_volume_size = (
el_volume_size
if int(el_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["ethereumjs_volume_size"]
)
cl_client_name = service_name.split("-")[3]
config = get_config(
......@@ -110,6 +122,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
)
service = plan.add_service(service_name, config)
......@@ -151,6 +164,7 @@ def get_config(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
cmd = [
"--dataDir=" + EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
......@@ -214,6 +228,7 @@ def get_config(
if persistent:
files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=el_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -87,6 +87,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
log_level = input_parser.get_client_log_level_or_default(
participant_log_level, global_log_level, VERBOSITY_LEVELS
......@@ -95,6 +96,17 @@ def launch(
el_max_cpu = el_max_cpu if int(el_max_cpu) > 0 else EXECUTION_MAX_CPU
el_min_mem = el_min_mem if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY
el_max_mem = el_max_mem if int(el_max_mem) > 0 else EXECUTION_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
el_volume_size = (
el_volume_size
if int(el_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["geth_volume_size"]
)
cl_client_name = service_name.split("-")[3]
......@@ -119,6 +131,7 @@ def launch(
launcher.electra_fork_epoch,
launcher.final_genesis_timestamp,
persistent,
el_volume_size,
)
service = plan.add_service(service_name, config)
......@@ -166,6 +179,7 @@ def get_config(
electra_fork_epoch,
final_genesis_timestamp,
persistent,
el_volume_size,
):
# TODO: Remove this once electra fork has path based storage scheme implemented
if electra_fork_epoch != None or "verkle" in network:
......@@ -296,6 +310,7 @@ def get_config(
if persistent:
files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=el_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -75,6 +75,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
log_level = input_parser.get_client_log_level_or_default(
participant_log_level, global_log_level, NETHERMIND_LOG_LEVELS
......@@ -84,6 +85,17 @@ def launch(
el_max_cpu = el_max_cpu if int(el_max_cpu) > 0 else EXECUTION_MAX_CPU
el_min_mem = el_min_mem if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY
el_max_mem = el_max_mem if int(el_max_mem) > 0 else EXECUTION_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
el_volume_size = (
el_volume_size
if int(el_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["nethermind_volume_size"]
)
cl_client_name = service_name.split("-")[3]
......@@ -105,6 +117,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
)
service = plan.add_service(service_name, config)
......@@ -148,6 +161,7 @@ def get_config(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
cmd = [
"--log=" + log_level,
......@@ -210,6 +224,7 @@ def get_config(
if persistent:
files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=el_volume_size,
)
return ServiceConfig(
......
......@@ -78,6 +78,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
log_level = input_parser.get_client_log_level_or_default(
participant_log_level, global_log_level, VERBOSITY_LEVELS
......@@ -87,6 +88,17 @@ def launch(
el_max_cpu = el_max_cpu if int(el_max_cpu) > 0 else EXECUTION_MAX_CPU
el_min_mem = el_min_mem if int(el_min_mem) > 0 else EXECUTION_MIN_MEMORY
el_max_mem = el_max_mem if int(el_max_mem) > 0 else EXECUTION_MAX_MEMORY
network_name = (
"devnets"
if launcher.network != "kurtosis"
and launcher.network not in constants.PUBLIC_NETWORKS
else launcher.network
)
el_volume_size = (
el_volume_size
if int(el_volume_size) > 0
else constants.VOLUME_SIZE[network_name]["reth_volume_size"]
)
cl_client_name = service_name.split("-")[3]
......@@ -108,6 +120,7 @@ def launch(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
)
service = plan.add_service(service_name, config)
......@@ -150,6 +163,7 @@ def get_config(
extra_env_vars,
extra_labels,
persistent,
el_volume_size,
):
init_datadir_cmd_str = "reth init --datadir={0} --chain={1}".format(
EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER,
......@@ -226,6 +240,7 @@ def get_config(
if persistent:
files[EXECUTION_DATA_DIRPATH_ON_CLIENT_CONTAINER] = Directory(
persistent_key="data-{0}".format(service_name),
size=el_volume_size,
)
return ServiceConfig(
image=image,
......
......@@ -79,3 +79,84 @@ GENESIS_TIME = {
"sepolia": 1655733600,
"holesky": 1695902400,
}
VOLUME_SIZE = {
"mainnet": {
"geth_volume_size": 1000000, # 1TB
"erigon_volume_size": 3000000, # 3TB
"nethermind_volume_size": 1000000, # 1TB
"besu_volume_size": 1000000, # 1TB
"reth_volume_size": 3000000, # 3TB
"ethereumjs_volume_size": 1000000, # 1TB
"prysm_volume_size": 500000, # 500GB
"lighthouse_volume_size": 500000, # 500GB
"teku_volume_size": 500000, # 500GB
"nimbus_volume_size": 500000, # 500GB
"lodestar_volume_size": 500000, # 500GB
},
"goerli": {
"geth_volume_size": 800000, # 800GB
"erigon_volume_size": 1200000, # 1200GB
"nethermind_volume_size": 800000, # 800GB
"besu_volume_size": 800000, # 800GB
"reth_volume_size": 1200000, # 1200GB
"ethereumjs_volume_size": 800000, # 800GB
"prysm_volume_size": 300000, # 300GB
"lighthouse_volume_size": 300000, # 300GB
"teku_volume_size": 300000, # 300GB
"nimbus_volume_size": 300000, # 300GB
"lodestar_volume_size": 300000, # 300GB
},
"sepolia": {
"geth_volume_size": 300000, # 300GB
"erigon_volume_size": 500000, # 500GB
"nethermind_volume_size": 300000, # 300GB
"besu_volume_size": 300000, # 300GB
"reth_volume_size": 500000, # 500GB
"ethereumjs_volume_size": 300000, # 300GB
"prysm_volume_size": 150000, # 150GB
"lighthouse_volume_size": 150000, # 150GB
"teku_volume_size": 150000, # 150GB
"nimbus_volume_size": 150000, # 150GB
"lodestar_volume_size": 150000, # 150GB
},
"holesky": {
"geth_volume_size": 100000, # 100GB
"erigon_volume_size": 200000, # 200GB
"nethermind_volume_size": 100000, # 100GB
"besu_volume_size": 100000, # 100GB
"reth_volume_size": 200000, # 200GB
"ethereumjs_volume_size": 100000, # 100GB
"prysm_volume_size": 100000, # 100GB
"lighthouse_volume_size": 100000, # 100GB
"teku_volume_size": 100000, # 100GB
"nimbus_volume_size": 100000, # 100GB
"lodestar_volume_size": 100000, # 100GB
},
"devnets": {
"geth_volume_size": 100000, # 100GB
"erigon_volume_size": 200000, # 200GB
"nethermind_volume_size": 100000, # 100GB
"besu_volume_size": 100000, # 100GB
"reth_volume_size": 200000, # 200GB
"ethereumjs_volume_size": 100000, # 100GB
"prysm_volume_size": 100000, # 100GB
"lighthouse_volume_size": 100000, # 100GB
"teku_volume_size": 100000, # 100GB
"nimbus_volume_size": 100000, # 100GB
"lodestar_volume_size": 100000, # 100GB
},
"kurtosis": {
"geth_volume_size": 3000, # 3GB
"erigon_volume_size": 3000, # 3GB
"nethermind_volume_size": 3000, # 3GB
"besu_volume_size": 3000, # 3GB
"reth_volume_size": 3000, # 3GB
"ethereumjs_volume_size": 3000, # 3GB
"prysm_volume_size": 1000, # 1GB
"lighthouse_volume_size": 1000, # 1GB
"teku_volume_size": 1000, # 1GB
"nimbus_volume_size": 1000, # 1GB
"lodestar_volume_size": 1000, # 1GB
},
}
......@@ -123,12 +123,14 @@ def input_parser(plan, input_args):
el_client_type=participant["el_client_type"],
el_client_image=participant["el_client_image"],
el_client_log_level=participant["el_client_log_level"],
el_client_volume_size=participant["el_client_volume_size"],
el_extra_params=participant["el_extra_params"],
el_extra_env_vars=participant["el_extra_env_vars"],
el_extra_labels=participant["el_extra_labels"],
cl_client_type=participant["cl_client_type"],
cl_client_image=participant["cl_client_image"],
cl_client_log_level=participant["cl_client_log_level"],
cl_client_volume_size=participant["cl_client_volume_size"],
cl_split_mode_enabled=participant["cl_split_mode_enabled"],
beacon_extra_params=participant["beacon_extra_params"],
beacon_extra_labels=participant["beacon_extra_labels"],
......@@ -445,12 +447,14 @@ def default_participant():
"el_client_type": "geth",
"el_client_image": "",
"el_client_log_level": "",
"el_client_volume_size": 0,
"el_extra_params": [],
"el_extra_env_vars": {},
"el_extra_labels": {},
"cl_client_type": "lighthouse",
"cl_client_image": "",
"cl_client_log_level": "",
"cl_client_volume_size": 0,
"cl_split_mode_enabled": False,
"beacon_extra_params": [],
"beacon_extra_labels": {},
......
......@@ -290,6 +290,7 @@ def launch_participant_network(
participant.el_extra_env_vars,
participant.el_extra_labels,
persistent,
participant.el_client_volume_size,
)
# Add participant el additional prometheus metrics
......@@ -435,6 +436,7 @@ def launch_participant_network(
participant.beacon_extra_labels,
participant.validator_extra_labels,
persistent,
participant.cl_client_volume_size,
participant.cl_split_mode_enabled,
)
else:
......@@ -466,6 +468,7 @@ def launch_participant_network(
participant.beacon_extra_labels,
participant.validator_extra_labels,
persistent,
participant.cl_client_volume_size,
participant.cl_split_mode_enabled,
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment