Enable Kubernetes Operators support for Fablo

Project TitleEnable Kubernetes Operators support for Fablo
Status

COMPLETED

Difficulty

MEDIUM 

Description 

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.

Participating in the project will allow you to gain significant experience with Hyperledger Fabric network lifecycle and Kubernetes Operators. You will work with a "translation" of the current Docker-backed flow to Kubernetes. 

Additional Information

Fablo's GitHub repository: https://github.com/hyperledger-labs/fablo

Learning Objectives

  1. Learn Hyperledger Fabric network lifecycle by implementing support for it for different environment
  2. Learn Kubernetes Operators
  3. Work with Bash and TypeScript
  4. Get hands on experience with professional software development process (mentoring, PRs, code reviews, working CI process)

The expertise gained with working on the project is a good start in a broad range of professional careers related with Hyperledger Fabric and/or Kubernetes. It is also a great warmup before Certificated Fabric Administrator and for Kubernetes certifications.

Expected Outcome

Fablo generates Docker compose file and some bash scripts for automation of the network configuration. We want to add an option to generate network configuration for Kubernetes Operators. We expect the following outcome:

  1. Fablo is able to generate YAMLs needed for K8S deployment. It can be implemented as a single YAML file deployed by single organization (minimal approach). It can be also splitted for multiple organizations for independent deployments (nice to have).
  2. Fablo supports current Docker features for K8S (like, up, down, prune, chaincode upgrade etc.). The scope of supported features is flexible and depends on the work required for adding basic support for K8S. 

Relation to Hyperledger 

Education Level

Undergraduate or graduate

Skills

A candidate should feel comfortable with command line and working with Linux or OS X environment.

Nice to have:

  • Some experience with Bash, TypeScript and YAML
  • Knowledge of Docker or any other containerization tool

Future plans

Adding support for Kubernetes is a major step for Fablo, since it will make us closer to working with production networks. It will also allow to start complex networks, when local computer resources are insufficient. We will be happy to have our mentee working with us on Fablo with related issues, when the internship ends.

Preferred Hours and Length of Internship

Both full time and part time are acceptable, however we prefer part time.

Mentor(s) Names and Contact Info

  • Piotr Hejwowski (Hejwo, piotr.hejwowski@softwaremill.com)
  • Jakub Dzikowski (dzikowski, jakub.dzikowski@softwaremill.com)