Coder Social home page Coder Social logo

postfinance / hlfabric-k8scc Goto Github PK

View Code? Open in Web Editor NEW
22.0 22.0 11.0 2.74 MB

Chaincode builder and launcher for Hyperledger Fabric on Kubernetes

License: MIT License

Go 76.27% Dockerfile 2.89% Shell 20.84%
blockchain chaincode hyperledger hyperledger-fabric kubernetes

hlfabric-k8scc's People

Contributors

dependabot[bot] avatar djboris9 avatar j0eggu avatar kane17 avatar mirioeggmann avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

hlfabric-k8scc's Issues

Proposal: Creating a deployment/replicaset

Hi! ๐Ÿ‘‹

First of, thanks for the awesome external builder!

It's not an issue exactly, but more like some enhancement proposal. Since now the builder is creating a single pod, would it make sense to make it a deployment or at least a replica set? In that way the chaincode has at least some restart policies in case of node failing.

kubewire contact

hello,
sorry to distrub you in another of your project but I want to know if I can have some help with kubewire (archived project) ?

best

bruno

Use builder image versions according to peer version

Issue

Solves image version problems like #6

Proposal

Instead of hard coding builder image versions in k8scc.yaml, we should use the same substitution mechanism as in core.yaml to set the image version according to the peer version.

Example from core.yaml:

$(DOCKER_NS)/fabric-ccenv:$(TWO_DIGIT_VERSION)

Implementation hint

Something like this, but at runtime. We may need to start the peer binary in order to get the version. And maybe we can also process the core.yaml and remove the image versions from the k8scc.yaml.

Problem with CouchDB Indexes

We noticed that it's currently not possible to use CouchDB-Indexes that are located in META-INF in the chaincode package.

After analysing the output of the chaincode builder I saw that the /var/hyperledger/production/externalbuilder/builds/{chaincode-build-name-with-hash}/release folder is empty.

But according to the doc (https://hyperledger-fabric.readthedocs.io/en/release-2.2/cc_launcher.html#bin-release) it should contain the statedb/couchdb/indexes/ structure copied from the META-INF folder in the chaincode package.

So I think there is probably a little bug in the release.go file that we have to fix.

Stream logs

Function streamPodLogs should stream the logs while the pod is running. Currently it streams the logs of the pod only when it's finished.

chaincode definition for 'XXX' exists, but chaincode is not installed

The build process is successful but I can't invoke. I see this in the peer logs

2020-06-24 23:50:52.422 UTC [chaincode.externalbuilder] MoveOrCopyDir -> DEBU 0b9 Failed to move /tmp/fabric-fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1276509464/release to /var/hyperledger/production/externalbuilder/builds/fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1/release: rename /tmp/fabric-fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1276509464/release /var/hyperledger/production/externalbuilder/builds/fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1/release: invalid cross-device link, try copy instead
2020-06-24 23:50:52.422 UTC [chaincode.externalbuilder] MoveOrCopyDir -> DEBU 0ba Failed to move /tmp/fabric-fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1276509464/bld to /var/hyperledger/production/externalbuilder/builds/fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1/bld: rename /tmp/fabric-fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1276509464/bld /var/hyperledger/production/externalbuilder/builds/fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1/bld: invalid cross-device link, try copy instead
2020-06-24 23:50:52.477 UTC [chaincode.externalbuilder] PackageMetadata -> DEBU 0bb Walking package release dir '/var/hyperledger/production/externalbuilder/builds/fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1/release'
2020-06-24 23:50:52.478 UTC [chaincode.externalbuilder] func1 -> DEBU 0bc Adding file '/var/hyperledger/production/externalbuilder/builds/fabcar_2-61d813c1700f156bb3b02e8bb16ae605cb15112eb075edeb1d1df36980fd11e1/release' to tar with header name 'META-INF/'

Problem in sharing volume k8scc-transfer-pv

k8scc-transfer-pv has access mode ReadWriteMany and shared by all peers and chaincode containers. It would make trouble when several peers execute chaincodes at the same time or they execute different chaincodes at the same time. Besides this issue, my k8s cluster does not support ReadWriteMany type PV.

Could it be replaced by temporary volumes? Chaincode container could use emptyDir for its volume and the launcher copy necessary data to the container when the container is available.

[Question] What is chaincode.json

Readme.md refers chaincode.json but I'm not sure what it is. I could not find it in example folder.

Another question. One of the features is "The chaincode must be usable without changes", but it does not conform with the document saying the chaincode should be re-written using shim.ChaincodeServer.

Handle signals

Handle process signals in order to collect garbage by executing the defers in build.go and run.go

Handshake issue with host

When running the demo, network.sh up, I've been getting handshake errors on the host from the peer and orderer

Peer0:

2021-10-06 20:51:38.521 UTC [core.comm] ServerHandshake -> ERRO 44a TLS handshake failed with error EOF server=PeerServer remoteaddress=10.3.2.25:55306

2021-10-06 20:51:38.521 UTC [grpc] Warningf -> DEBU 44b grpc: Server.Serve failed to complete security handshake from "10.3.2.25:55306": EOF

2021-10-06 20:51:38.713 UTC [gossip.channel] publishStateInfo -> DEBU 44c Empty membership, no one to publish state info to

2021-10-06 20:51:39.778 UTC [gossip.election] waitForInterrupt -> DEBU 44d d28ac30ece53d355648c15ffcaffb8d494f513a7ef94538ba9868111670a4252 : Exiting

2021-10-06 20:51:39.778 UTC [gossip.election] IsLeader -> DEBU 44e d28ac30ece53d355648c15ffcaffb8d494f513a7ef94538ba9868111670a4252 : Returning true

2021-10-06 20:51:39.779 UTC [gossip.election] waitForInterrupt -> DEBU 44f d28ac30ece53d355648c15ffcaffb8d494f513a7ef94538ba9868111670a4252 : Entering

2021-10-06 20:51:40.467 UTC [gossip.discovery] InitiateSync -> DEBU 450 No peers to send to, aborting membership sync

2021-10-06 20:51:42.523 UTC [gossip.discovery] periodicalSendAlive -> DEBU 451 Empty membership, no one to send a heartbeat to

2021-10-06 20:51:42.523 UTC [gossip.discovery] periodicalSendAlive -> DEBU 452 Sleeping 5s

2021-10-06 20:51:42.713 UTC [gossip.channel] publishStateInfo -> DEBU 453 Empty membership, no one to publish state info to

2021-10-06 20:51:43.521 UTC [core.comm] ServerHandshake -> ERRO 454 TLS handshake failed with error EOF server=PeerServer remoteaddress=10.3.2.25:55386

orderer:

2021-10-06 20:54:21.307 UTC [core.comm] ServerHandshake -> ERRO 9d9 TLS handshake failed with error EOF server=Orderer remoteaddress=10.3.2.25:49092

2021-10-06 20:54:21.307 UTC [grpc] Warningf -> DEBU 9da grpc: Server.Serve failed to complete security handshake from "10.3.2.25:49092": EOF

2021-10-06 20:54:21.470 UTC [orderer.consensus.etcdraft] Check -> DEBU 9db Current active nodes in cluster are: [1] channel=mychannel node=1

2021-10-06 20:54:22.891 UTC [orderer.consensus.etcdraft] Check -> DEBU 9dc Current active nodes in cluster are: [1] channel=system-channel node=1

2021-10-06 20:54:23.470 UTC [orderer.consensus.etcdraft] Check -> DEBU 9dd Current active nodes in cluster are: [1] channel=mychannel node=1

2021-10-06 20:54:24.891 UTC [orderer.consensus.etcdraft] Check -> DEBU 9de Current active nodes in cluster are: [1] channel=system-channel node=1

2021-10-06 20:54:25.470 UTC [orderer.consensus.etcdraft] Check -> DEBU 9df Current active nodes in cluster are: [1] channel=mychannel node=1

2021-10-06 20:54:26.891 UTC [orderer.consensus.etcdraft] Check -> DEBU 9e0 Current active nodes in cluster are: [1] channel=system-channel node=1

2021-10-06 20:54:27.470 UTC [orderer.consensus.etcdraft] Check -> DEBU 9e1 Current active nodes in cluster are: [1] channel=mychannel node=1

2021-10-06 20:54:28.892 UTC [orderer.consensus.etcdraft] Check -> DEBU 9e2 Current active nodes in cluster are: [1] channel=system-channel node=1

2021-10-06 20:54:29.470 UTC [orderer.consensus.etcdraft] Check -> DEBU 9e3 Current active nodes in cluster are: [1] channel=mychannel node=1

2021-10-06 20:54:30.891 UTC [orderer.consensus.etcdraft] Check -> DEBU 9e4 Current active nodes in cluster are: [1] channel=system-channel node=1

2021-10-06 20:54:31.312 UTC [core.comm] ServerHandshake -> ERRO 9e5 TLS handshake failed with error EOF server=Orderer remoteaddress=10.3.2.25:49266

2021-10-06 20:54:31.312 UTC [grpc] Warningf -> DEBU 9e6 grpc: Server.Serve failed to complete security handshake from "10.3.2.25:49266": EOF

10.3.2.25 is the kubernetes host IP.

Why am I getting this error? Any ideas

/healthz endpoint fails

After the peer starts, the /healthz endpoint fails with the following error:

{"status":"Service Unavailable","time":"2020-06-24T09:51:14.845961762Z","failed_checks":[{"component":"docker","reason":"failed to ping to Docker daemon: Get \"http://unix.sock/_ping\": dial unix /var/run/docker.sock: connect: no such file or directory"}]}%

The solution is to delete the vm section in core.yaml

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.