Sample Deployment with Four Replica Nodes and One Client Node

The sample VMware Blockchain for Ethereum deployment includes a set of Helm charts for four Replica nodes and one Client node. The deployment on Kubernetes must only be on a supported host with a single cluster.

Replica nodes are the participants in the consensus algorithm, concord-bft. Client nodes are the clients in the blockchain network running ethrpc.

The current sample deployment has been tested on the following components:

  • Minikube with VirtualBox, Hyperkit and Docker drivers
  • Hosted on AWS EKS

Deployment Prerequisites

Make sure that you implement all the required prerequisites. See Deployment Prerequisites.

VMware Blockchain Node Deployment

You can deploy four Replica nodes and one Client node on Minikube or EKS.

Run the following command to deploy Minikube.

helm install <name of blockchain> . --set global.imageCredentials.registry=<registry address> --set global.imageCredentials.username=<username> --set global.imageCredentials.password=<password>

Run the following command to deploy EKS.

helm install <name of blockchain> . --set global.imageCredentials.registry=<registry address> --set global.imageCredentials.username=<username> --set global.imageCredentials.password=<password> --set global.storageClassName=gp2 --set resources.replica.cpuRequest=10000m --set resources.replica.cpuLimit=10000m --set resources.replica.memoryRequest=56Gi --set resources.replica.memoryLimit=56Gi --set resources.client.cpuRequest=5000m --set resources.client.cpuLimit=5000m --set resources.client.memoryRequest=28Gi --set resources.client.memoryLimit=28Gi

Note that it might take up to 5 mins for the blockchain nodes to be operational after deployment. Open the pod logs vmbc-deployment-client-0-clientservice-xxx-yyy and wait until you see the client_id=8 is serving - the pool is ready notification.

Test your deployment.

  • Get the ethrpc endpoint.

    Run the following command to get ethrpc endpoint on Minikube

    minikube service list
    

    Run the following command to get ethrpc endpoint on EKS

    kubectl get svc
    

    Note: If you do not see a URL, try an alternate minikube service client-0-ethrpc command.

  • Run the ethrpc curl command.

    curl -H 'Content-Type: application/json' -H "Accept: application/json" -d '{"id": 1, "jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": ["0x00", true]}' <ethrpc url from above>
    

    Sample output:

    {"id":1,"jsonrpc":"2.0","method":"eth_getBlockByNumber","result":{"extraData":"0x","gasLimit":"0x7fffffffffffffff","gasUsed":"0x0","hash":"0x92e4414494ec1b4752faea0d80e79f618d447743f32eff4153c5e391be1d1a88","miner":"0x52a06a6cBEF9543244C530F52b602712FE5dfb74","nonce":"0x0000000000000000","number":"0x0","parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","size":1,"stateRoot":"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","timestamp":"0x1669680399","transactions":[{"blockHash":"0x92e4414494ec1b4752faea0d80e79f618d447743f32eff4153c5e391be1d1a88","blockNumber":"0x0","contractAddress":"0x","from":"0x0000000000000000000000000000000000000000","gas":"0x0","gasPrice":0,"hash":"0x77f5bd9e7dbe2c2772f58f53431dfdfa205991ec4ff0b2bc385adecefd8895be","input":"0x","logs":[],"nonce":"0x0","to":"0xfb389874fb4e03182a7358275eaf78008775c7ed","transactionIndex":"0x0","value":"0x0000000000000000000000000000000000000000000000007fffffffffffffff"}]}}
    

    See Troubleshooting for any errors.

Uninstall VMware Blockchain Nodes.

helm uninstall <name of blockchain>

Deployment Configuration and Customization

You can customize your deployment configurations. A list of configurations is available in the values.yaml file. You can use the "--set" parameter value for configuration.

NameDescriptionValueType
global.imageCredentials.registryContainer registry for image downloads""Mandatory
global.imageCredentials.usernameUsername to access/download for registry""Mandatory
global.imageCredentials.passwordPassword to access/download for registry""Mandatory
global.storageClassStorage class for deploymentstandardOptional
global.ethPermissioningWriteEnabledEnabled eth write permissionfalseOptional
global.ethPermissioningReadEnabledEnabled eth read permissionfalseOptional
genesisBlock.timestampBlockchain creation time in UTC, 24 hours format - YYYY-MM-DD hh:mm:ss2022-12-02 00:01:00Optional

Troubleshooting

The most common problems and errors are addressed with probable solutions to troubleshoot the problem. See, Troubleshooting.