mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 07:25:10 +00:00
The existing orderer configuration file is incompatible with v3.0, and the v3.0 configuration does not work with v2.5. To support both versions, configuration settings have been updated to use environment variables instead of referencing static configuration files. Signed-off-by: Tatsuya Sato <tatsuya.sato.so@hitachi.com> |
||
|---|---|---|
| .. | ||
| config | ||
| docs | ||
| kube | ||
| scripts | ||
| .gitignore | ||
| network | ||
| README.md | ||
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:
-
envsubst (
brew install gettexton OSX) -
K8s - either:
- KIND + Docker (resources: 8 CPU / 8 GRAM)
- Rancher Desktop (resources: 8 CPU / 8GRAM, mobyd, and disable Traefik)
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
- Working with Kubernetes
- Certificate Authorities
- Launching the Test Network
- Working with Channels
- Working with Chaincode
- Working with Applications
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.localho.st
127.0.0.1 org1-ca.localho.st
127.0.0.1 org2-ca.localho.st
127.0.0.1 org0-orderer1.localho.st
127.0.0.1 org0-orderer2.localho.st
127.0.0.1 org0-orderer3.localho.st
127.0.0.1 org1-peer1.localho.st
127.0.0.1 org1-peer2.localho.st
127.0.0.1 org2-peer1.localho.st
127.0.0.1 org2-peer2.localho.st
- 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 totest-network-k8s/bin. Mac native builds are linked against thenetdns=cgoDNS resolver, and are not subject to the timeouts associated with the Golang DNS resolver.