/
Project Plan - Enable Kubernetes Operators support for Fablo

Project Plan - Enable Kubernetes Operators support for Fablo

Abstract

Fablo is a tool to generate the Hyperledger Fabric blockchain network and run it on Docker. It's main goal is to provide a super-easy start with Hyperledger Fabric. It has a declarative approach - a whole network is described in a single file. Right now only the Docker environment is supported and we want add support for Kubertnetes Operators.

Mentors

NameTimezoneEmail
Jakub DzikowskiCET

jakub.t.dzikowski@gmail.com

Piotr HejwowskiCETpiotr.hejwowski@gmail.com

Mentee

NameTimezoneEmail
Umegbewe NwebeduUTC +1nwebedujunior55@gmail.com

Project codebase:

https://github.com/hyperledger-labs/fablo


Outcomes:

  • Fablo is able to generate scripts and config files needed for kubernetes deployment


Timeline:

WeekDeliverablesStatus
June 1 - June 19
  • Onboarding and documentation exercises
  • Get high level understanding of Fablo codebase
  • Read Documentation for hyperledger fabric operator
  • Environment Setup
Done
June 20 - June 30
  • Use https://github.com/hyperledger-labs/hlf-operator to set up a simple network on k8s. Network should contain:
    • two organizations (Orderer, Org1)
    • one Orderer named orderer0.orderer.example.com
    • two peers peer0.org1.example.com, peer1.org1.example.com both using LevelDb
    • one channel `my-channel1` that joins both peer
    • one chaincode `chaincode1` installed on `my-channel1` (we can provide sample one)
  • Try to do the setup as a separate script, independent of Fablo generated files. We will connect them later.
  • Try to list every component that Hyperledger offers (peers, orderers, ca's) and read about them. (we can provide useful links)
Done

July 1 - July 19

  • Rewrite Fablo target scripts for the simplest network on Kubernetes operators (CAs, Orderers, Peers)
  • Learning part (by Mentor): Certificates. How they are used in Hyperledger, why they are so important, how they are implemented in k8s operators
done
July 20 - July 31
  • Rewrite Fablo target scripts for the simplest network on Kubernetes operators (channels, chaincodes)
  • Learning part (by Mentor): How do we test Fablo using GitHub actions
done
August 1 - August 19
  • Prepare templates for created scripts, similar to current templates for Docker
done
August 20 - August 31
  • Write snapshot tests for templates for k8s

Septemeber 1 - September 19
  • Add and test validation rules (for instance: TLS is not supported for k8s) 

October 1 - October 19
  • Investigate the possibility to support Fablo's advanced feat

    Use https://github.com/hyperledger-labs/hlf-operator to set up a simple network on k8s. Network should contain:
    two organizations (Orderer, Org1)
    one Orderer named orderer0.orderer.example.com
    two peers peer0.org1.example.compeer1.org1.example.com both using LevelDb
    one channel `my-channel1` that joins both peer
    one chaincode `chaincode1` installed on `my-channel1` (we can provide sample one)
    Try to do the setup as a separate script, independent of Fablo generated files. We will connect them later.
    Try to list every component that Hyperledger offers (peers, orderers, ca's) and read about them. (we can provide useful links)

    July 1 - July 19

    Rewrite Fablo target scripts for the simplest network on Kubernetes operators (CAs, Orderers, Peers)
    Learning part (by Mentor): Certificates. How they are used in Hyperledger, why they are so important, how they are implemented in k8s operators

    ures:
    • Orderer sharding
    • Chaincode upgrade
    • Snapshot/restore
    • Fablo REST
    • Channel query scripts
done
October 19 - October 31
  • Investigate the possibility to support multi-tenant deployments (different clusters for orgs)
done
November 1 - November 12
  • Verify all Fablo commands are properly supported: `./fablo k8s generate|start|stop|up|down|chaincode|...`
done

Methodology

TBD