Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
c7c15cd
chore: update configuration files for network-bootstrapper chart
roderik Sep 17, 2025
19ded51
feat(cli): enhance README and Helm chart for network-bootstrapper
roderik Sep 17, 2025
29dd4b8
feat(cli): update README and refine CLI options for static nodes
roderik Sep 17, 2025
1b4fefc
fix(cli): refine node ID derivation and update related tests
roderik Sep 17, 2025
549c878
feat(charts): update Helm chart values for network nodes
roderik Sep 17, 2025
44d30bd
feat(charts): update Helm chart values for network nodes
roderik Sep 17, 2025
05a9eba
fix(charts): correct validator pod secret naming convention
roderik Sep 17, 2025
37b36ad
fix(charts): update network nodes README for configuration values
roderik Sep 17, 2025
60b6f32
chore(charts): update Chart.lock for network dependencies
roderik Sep 17, 2025
db1b4d6
chore(charts): update Chart.lock and fix service configurations
roderik Sep 17, 2025
6a05361
fix(charts): update README for network-bootstrapper and network-nodes…
roderik Sep 17, 2025
21a94c4
fix(charts): update values.yaml for network-bootstrapper and network-…
roderik Sep 17, 2025
6a24d20
fix(charts): update README and values.yaml for network-bootstrapper a…
roderik Sep 17, 2025
a7816e2
fix(charts): update values.yaml and README for network nodes
roderik Sep 17, 2025
1357867
fix(charts): update README and values.yaml for network-bootstrapper
roderik Sep 17, 2025
4e87a41
fix(charts): resolve YAML parsing error in test-connection template
roderik Sep 17, 2025
b8e2837
fix(charts): update README and values.yaml for network-bootstrapper c…
roderik Sep 17, 2025
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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,4 @@ report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json

# Finder (MacOS) folder config
.DS_Store
Chart.lock
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
"editor.defaultFormatter": "biomejs.biome"
},
"typescript.tsdk": "node_modules/typescript/lib",
"prettier.enable": false,
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"emmet.showExpandedAbbreviation": "never",
Expand Down
31 changes: 8 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,15 @@ The helm chart to run this on Kubernetes / OpenShift can be found [here](./chart
## CLI usage

```
Usage: network-bootstrapper [options]
Usage: network-bootstrapper [options] [command]

Generate node identities, configure consensus, and emit a Besu genesis.
Utilities for configuring Besu-based networks.

Options:
-v, --validators <count> Number of validator nodes to generate.
(default: 4)
-r, --rpc-nodes <count> Number of RPC nodes to generate. (default: 2)
-a, --allocations <file> Path to a genesis allocations JSON file.
(default: none)
-o, --outputType <type> Output target (screen, file, kubernetes).
(default: "screen")
--consensus <algorithm> Consensus algorithm (IBFTv2, QBFT). (default:
QBFT)
--chain-id <number> Chain ID for the genesis config. (default:
random between 40000 and 50000)
--seconds-per-block <number> Block time in seconds. (default: 2)
--gas-limit <decimal> Block gas limit in decimal form. (default:
9007199254740991)
--gas-price <number> Base gas price (wei). (default: 0)
--evm-stack-size <number> EVM stack size limit. (default: 2048)
--contract-size-limit <number> Contract size limit in bytes. (default:
2147483647)
--accept-defaults Accept default values for all prompts when CLI
flags are omitted. (default: disabled)
-h, --help display help for command
-h, --help display help for command

Commands:
generate [options] Generate node identities, configure consensus, and emit a
Besu genesis.
help [command] display help for command
```
3 changes: 3 additions & 0 deletions biome.jsonc
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
{
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
"extends": ["ultracite"],
"files": {
"includes": ["**", "!**/*.yaml"]
},
"linter": {
"rules": {
"suspicious": {
Expand Down
52 changes: 0 additions & 52 deletions charts/network-bootstrapper/README.md

This file was deleted.

113 changes: 0 additions & 113 deletions charts/network-bootstrapper/values.yaml

This file was deleted.

File renamed without changes.
15 changes: 15 additions & 0 deletions charts/network/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: v2
name: network
description: A Helm chart for a blockchain network on Kubernetes
type: application
version: 0.1.0
appVersion: "0.1.0"
maintainers:
- name: SettleMint
email: support@settlemint.com
url: https://settlemint.com
dependencies:
- name: network-bootstrapper
version: "*"
- name: network-nodes
version: "*"
Comment on lines +12 to +15

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using a wildcard * for dependency versions is not recommended as it can introduce breaking changes unexpectedly. It is best practice to pin dependencies to a specific chart version or use a version range (e.g., ~0.1.0 or ^0.1.0) to ensure stable and predictable deployments.

dependencies:
  - name: network-bootstrapper
    version: "0.1.0"
  - name: network-nodes
    version: "0.1.0"

19 changes: 19 additions & 0 deletions charts/network/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# network

![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.0](https://img.shields.io/badge/AppVersion-0.1.0-informational?style=flat-square)

A Helm chart for a blockchain network on Kubernetes

## Maintainers

| Name | Email | Url |
| ---- | ------ | --- |
| SettleMint | <support@settlemint.com> | <https://settlemint.com> |

## Requirements

| Repository | Name | Version |
|------------|------|---------|
| | network-bootstrapper | * |
| | network-nodes | * |

23 changes: 23 additions & 0 deletions charts/network/charts/network-bootstrapper/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
54 changes: 54 additions & 0 deletions charts/network/charts/network-bootstrapper/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# network-bootstrapper

![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.1.0](https://img.shields.io/badge/AppVersion-0.1.0-informational?style=flat-square)

A Helm chart for Kubernetes

## Maintainers

| Name | Email | Url |
| ---- | ------ | --- |
| SettleMint | <support@settlemint.com> | <https://settlemint.com> |

## Values

| Key | Type | Default | Description |
|-----|------|---------|-------------|
| affinity | object | `{}` | |
| fullnameOverride | string | `"bootstrapper"` | Override for the fully qualified resource name generated by helpers. |
| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy controlling when Kubernetes fetches updated image layers. |
| image.repository | string | `"ghcr.io/settlemint/network-bootstrapper"` | OCI registry path hosting the network bootstrapper image. |
| image.tag | string | `""` | Image tag override; leave empty to inherit the chart appVersion. |
| imagePullSecrets | list | `[]` | Image pull secrets enabling access to private registries. |
| nameOverride | string | `""` | Override for the short release name used by name templates. |
| nodeSelector | object | `{}` | |
| podAnnotations | object | `{}` | |
| podLabels | object | `{}` | |
| podSecurityContext | object | `{}` | |
| rbac.create | bool | `true` | Render Role and RoleBinding resources tied to the ServiceAccount. |
| resources | object | `{}` | |
| securityContext | object | `{}` | |
| serviceAccount.annotations | object | `{}` | Metadata annotations applied to the ServiceAccount. |
| serviceAccount.automount | bool | `true` | Mount the ServiceAccount token into the bootstrapper pod. |
| serviceAccount.create | bool | `true` | Create a ServiceAccount resource for the release automatically. |
| serviceAccount.name | string | `""` | Existing ServiceAccount name to reuse instead of creating one. |
| settings.allocations | string | `nil` | Path to a JSON allocations file providing pre-funded accounts. |
| settings.chainId | int | `nil` | Explicit chain ID to encode into the genesis file. |
| settings.clusterDomain | string | `"svc.cluster.local"` | Kubernetes DNS suffix appended to generated static node hostnames when unset by the CLI. |
| settings.consensus | string | `nil` | Consensus engine to configure (QBFT or IBFTv2). |
| settings.contractSizeLimit | int | `nil` | Maximum smart-contract bytecode size accepted by the EVM. |
| settings.defaultStaticNodeDiscoveryPort | int | `30303` | Default UDP discovery port used in generated enode URIs when no override is provided. |
| settings.defaultStaticNodePort | int | `30303` | Default TCP P2P port used in generated enode URIs when no override is provided. |
| settings.evmStackSize | int | `nil` | Maximum EVM stack size permitted for contract execution. |
| settings.gasLimit | int | `nil` | Genesis block gas limit expressed as a decimal number. |
| settings.gasPrice | int | `nil` | Base gas price in wei applied across the network. |
| settings.outputType | string | `"kubernetes"` | Output target for generated artefacts: screen, file, or kubernetes. |
| settings.secondsPerBlock | int | `nil` | Block interval in seconds for the genesis configuration. |
| settings.staticNodeDiscoveryPort | int | `nil` | UDP discovery port embedded in static node enode URIs. |
| settings.staticNodeDomain | string | `nil` | DNS suffix appended to generated static node hostnames. |
| settings.staticNodeNamespace | string | `nil` | Namespace component inserted between service name and domain in static node hostnames. |
| settings.staticNodePort | int | `nil` | TCP P2P port embedded in static node enode URIs. |
| settings.validators | int | `nil` | Number of validator identities to generate (default 4). |
| tolerations | list | `[]` | Tolerations allowing the bootstrapper pod onto tainted nodes. |
| volumeMounts | list | `[]` | Extra volume mounts applied to the bootstrapper container. |
| volumes | list | `[]` | Additional volumes attached to the bootstrapper pod. |
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,22 @@ spec:
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args:
- generate
{{- $clusterDomain := default "svc.cluster.local" .Values.settings.clusterDomain }}
{{- $defaultStaticPort := default 30303 .Values.settings.defaultStaticNodePort }}
{{- $defaultStaticDiscovery := default 30303 .Values.settings.defaultStaticNodeDiscoveryPort }}
{{- $resolvedStaticDomain := default $clusterDomain .Values.settings.staticNodeDomain }}
{{- $resolvedStaticPort := default $defaultStaticPort .Values.settings.staticNodePort }}
{{- $resolvedStaticDiscovery := default $defaultStaticDiscovery .Values.settings.staticNodeDiscoveryPort }}
{{- with .Values.settings.validators }}
- --validators={{ . }}
{{- end }}
{{- with .Values.settings.rpcNodes }}
- --rpc-nodes={{ . }}
- --static-node-namespace={{ default .Release.Namespace .Values.settings.staticNodeNamespace }}
{{- if $resolvedStaticDomain }}
- --static-node-domain={{ $resolvedStaticDomain }}
{{- end }}
- --static-node-port={{ $resolvedStaticPort }}
- --static-node-discovery-port={{ $resolvedStaticDiscovery }}
{{- with .Values.settings.allocations }}
- --allocations={{ . }}
{{- end }}
Expand Down
Loading