Deploy on Bare Metal (Kubernetes)
This document provides instructions for deploying the Block Node Server Helm chart in a Single-Node Kubernetes environment. This setup is ideal for production environments on bare metal or cloud VMs.
Prerequisites
A server with a supported operating system and sufficient resources to run Kubernetes and the Block Node Server is required.
For full hardware specifications — including minimum CPU, RAM, disk, and NIC requirements for both deployment profiles, storage I/O benchmark targets, and network latency requirements — see the Block Node Hardware Specifications document.
Quick reference for minimum mainnet deployments:
Local Full History (LFH)
24c / 48t, ≥ 2.0 GHz, PCIe 4+
256 GB
8 TB
100 TB
2 × 10 Gbps
Remote Full History (RFH)
24c / 48t, ≥ 2.0 GHz, PCIe 4+
256 GB
8 TB
—
2 × 10 Gbps
Note: Servers may be acquired from bare metal or cloud providers that offer dedicated instances. LFH configurations require significant storage and are typically sourced from bare metal providers, or purchased outright and self-hosted, or colocated.
Server Provisioning
Once a server has been acquired, it needs to be provisioned with the necessary software components to run Kubernetes and the Block Node Server.
Assuming a Linux based environment, a node operator has two options at this time
Solo Provisioner installation (recommended)
Custom provisioner script
Solo Provisioner
Solo Provisioner (formerly known as Solo Weaver) is a go-based tool to simplify the provisioning of Hiero network components (like the block node) in a streamlined and automated fashion. For a step-by-step GCP VM walkthrough using Solo Provisioner (including local, previewnet, and testnet profiles), see the Virtual Machine Single Node Kubernetes Deployment Guide. For production Tier 1 mainnet, the Block Node Hardware Specifications take precedence over the smaller VM sizings used there.
To utilize the Solo Provisioner experience
Install Solo Provisioner on the server
Run the provisioning and install flow Follow the Setup Block Node steps.
Custom Provisioning Script
A node operator with sufficient knowledge and expertize may desire to create a script that factors in their cloud provider and business needs when provisioning the machine.
In this case the following recipe steps are suggested as a guide when designing your script
Disable Linux Swap
Configure Sysctl for Kubernetes
Setup Bind Mounts
Setup Kubelet and its Systemd Service
Setup Kubectl
Setup Helm
Setup K9s
Setup CRI-O and its Systemd Service
Setup Kubeadm
Initialize Cluster
Setup and start Cilium
Setup MetalLB
Check ClusterHealth
Note: The script recipe is provided as-is (with no maintenance) and may require further edits by operators depending on their OS and version. The recipe focuses on setting up k8s, supporting helm based installation and kubectl modification in addition to metalLB load balancing.
Installation Steps
With the server provisioned, follow these steps to deploy the Block Node Server on a single-node Kubernetes cluster:
Note 1: Skip steps 1 through 7 if you utilize Solo Provisioner as will install the block node for you.
Note 2: Some steps are marked as intermediate, indicating they will change due to improvements.
ENV variables setup: Set some helpful environment variables for your deployment in a `.env file:
A sample
.envfile is provided at .env.sample.(Intermediate) Automate with Task: Use the provided Taskfile.yml to streamline the deployment process. The Taskfile includes tasks for installing Helm charts, configuring the Block Node Server, and managing the Kubernetes cluster.
(Intermediate) Setup
kubectlandhelmenvironments:Configure Persistent Volume Creation Script: Create Persistent Volume (PV)s and Persistent Volume Claim (PVC)s for Block Node Server data storage.
Update ./values-overrides/host-paths.yaml with the appropriate namespace.
Configure Helm Chart Values: Customize the Helm chart values for your deployment.
Update ./lfh-values.yaml or ./values-overrides/rfh-values.yaml with your specific configuration settings.
Install Block Node Server Helm Chart: Deploy the Block Node Server using Helm.
Verify Deployment: Check the status of the Block Node Server deployment to ensure it is running correctly.
Expected output should indicate that the Block Node Server is operational.
Access Block Node Server: Connect to the Block Node Server using the configured service endpoint.
Install
grpcurlif not already installed:Install protobuf compiler if not already installed:
Use
grpcurlto interact with the Block Node Server:Expected output should show the server status:
Helm Chart Upgrades: To upgrade the Block Node Server Helm chart to a newer version, update the
VERSIONvariable in your.envfile and run:(Caution) Reset Block Node Server Data: To reset the Block Node Server (clear data and install version), run:
Uninstall Block Node Server: To uninstall the Block Node Server and remove all associated resources, run:
See also: Resetting and Upgrading the Block Node - covers when and why to reset or upgrade, pre- and post-operation checks, rollback, and troubleshooting that complement the one-line commands above.
Last updated