fabric-samples/test-network-k8s
jkneubuh 9f9cec7195
Run RCAADMIN registration on the host OS, not in k8s (#809)
* Run RCAADMIN registration on the host OS, not in k8s

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* Fix a typo that caused the log trailer to not exit cleanly on error

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>

* allow a node registration to have been previously created.  This allows for multiple 'network up' targets to be run.

Signed-off-by: Josh Kneubuhl <jkneubuh@us.ibm.com>
2022-08-05 13:17:05 +01:00
..
config Fix namespace in k8s configuration files (#784) 2022-07-04 08:36:36 -04:00
docs Fix test-network-k8s docs (#776) 2022-06-24 12:21:24 -04:00
kube Fix namespace in k8s configuration files (#784) 2022-07-04 08:36:36 -04:00
scripts Run RCAADMIN registration on the host OS, not in k8s (#809) 2022-08-05 13:17:05 +01:00
.gitignore Feature/fabric builder k8s (#739) 2022-05-26 13:52:25 +01:00
network Run RCAADMIN registration on the host OS, not in k8s (#809) 2022-08-05 13:17:05 +01:00
README.md Feature/fabric builder k8s (#739) 2022-05-26 13:52:25 +01:00

Kubernetes Test Network

This project re-establishes the Hyperledger test-network as a cloud native application.

Objectives:

  • Provide a simple, one click activity for running the Fabric test network.
  • Provide a reference guide for deploying production-style networks on Kubernetes.
  • Provide a cloud ready platform for developing chaincode, Gateway, and blockchain apps.
  • Provide a Kube supplement to the Fabric CA Operations and Deployment guides.
  • Support a transition to Chaincode as a Service.
  • Support a transition from the Internal, Docker daemon to External Chaincode builders.
  • Run on any Kube.

Fabric, Ahoy!

Prerequisites:

Quickstart

Create a KIND cluster:

./network kind
./network cluster init

or for Rancher / k3s:

export TEST_NETWORK_CLUSTER_RUNTIME=k3s

./network cluster init

Launch the network, create a channel, and deploy the basic-asset-transfer smart contract:

./network up

./network channel create

./network chaincode deploy asset-transfer-basic ../asset-transfer-basic/chaincode-java

Invoke and query chaincode:

./network chaincode invoke asset-transfer-basic '{"Args":["InitLedger"]}'
./network chaincode query  asset-transfer-basic '{"Args":["ReadAsset","asset1"]}'

Access the blockchain with a REST API:

./network rest-easy

Shut down the test network:

./network down 

Tear down the cluster (KIND):

./network unkind

For Rancher: Preferences -> Kubernetes Settings -> Reset Kubernetes OR ...

./network cluster clean

Detailed Guides

DNS Resolution on OSX

Fabric's OSX binaries have been statically linked with the golang go DNS resolver. In some environments, this causes a brief but noticeable delay when issuing peer commands against the test network.

Workarounds to improve DNS resolution time on OSX:

  • Add manual DNS overrides for virtual hosts by adding to /etc/hosts:
127.0.0.1 org0-ca.vcap.me
127.0.0.1 org1-ca.vcap.me
127.0.0.1 org2-ca.vcap.me
127.0.0.1 org0-orderer1.vcap.me
127.0.0.1 org0-orderer2.vcap.me
127.0.0.1 org0-orderer3.vcap.me
127.0.0.1 org1-peer1.vcap.me
127.0.0.1 org1-peer2.vcap.me
127.0.0.1 org2-peer1.vcap.me
127.0.0.1 org2-peer2.vcap.me
  • Reduce the system resolver timeout from the default 5s by adding to /etc/resolv.conf:
options: timeout 2
  • Compile the fabric binaries on a Mac and copy build/bin/* outputs to test-network-k8s/bin. Mac native builds are linked against the netdns=cgo DNS resolver, and are not subject to the timeouts associated with the Golang DNS resolver.