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

Name

Timezone

Email

Name

Timezone

Email

Jakub Dzikowski

CET

jakub.t.dzikowski@gmail.com

Piotr Hejwowski

CET

piotr.hejwowski@gmail.com

Mentee

Name

Timezone

Email

Name

Timezone

Email

Umegbewe Nwebedu

UTC +1

nwebedujunior55@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:

Week

Deliverables

Status

Week

Deliverables

Status

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