Skip to main content

Build Status Known Vulnerabilities <Sonarcloud quality gate> codecov.io

Nephos

Library to deploy Hyperledger Fabric projects to Kubernetes

Source resides at https://github.com/hyperledger-labs/nephos, originally developed at AID:Tech

Documentation resides at https://nephos.readthedocs.io

Prerequisites

This library requires an existing Kubernetes cluster.

For best results, use a real cluster (e.g. on a cloud like AWS, GCP, Azure, IBM Cloud, etc.). However, you may also use Minikube.

Either way, you will need to have the following tools installed:

Installation

Pip

You can install nephos from PyPI by running:

pip install nephos

Git repository

You can also download the git repository with:

git clone https://github.com/hyperledger-labs/nephos.git

And work locally by installing the following:

Virtual environment

This library currently only supports Python 3:

python3 -m venv ./venv

source ./venv/bin/activate

Requirements

All python-related requirments are held in the requirements.txt file

pip install -r requirements.txt

You will also need to install an initialise helm for Kubernetes, as described here

Furthermore, you will need the Hyperledger Fabric utility binaries that can be installed with this script on Linux, or via Homebrew for the Fabric tools and CA tools on Mac OS X.

Testing

Unit tests

Once you have all requirments installed, all the unit tests should pass and provide full coverage:

PYTHONPATH=. pytest --ignore=./integration --cov=. --cov-report xml:coverage.xml --cov-report term-missing

The integration tests should also pass:

PYTHONPATH=. pytest -x -s ./integration

Usage

To use nephos, run the deploy.py executable CLI script.

For instance, you can see available commands/options by running:

PYTHONPATH=. ./nephos/deploy.py --help

To install a full end-to-end fabric network, you can run:

PYTHONPATH=. ./nephos/deploy.py -f ./PATH_TO_YOUR_SETTINGS/file.yaml fabric

You can also upgrade a network:

PYTHONPATH=. ./nephos/deploy.py --upgrade -f ./PATH_TO_YOUR_SETTINGS/file.yaml fabric

Examples

Development

Example of development/QA/production(-ish) networks are provided in the examples folder.

To run the dev example from the git repository, use this command:

./nephos/deploy.py --verbose -f ./examples/dev/nephos_config.yaml fabric

Note: The nephos_config.yaml is by default set to point to the minikube context (even for the prod example) to prevent accidental deployments to production clusters. If your K8S context name is different, please update this file.

QA and Production

For the QA and production examples, you will need to replace the CA hostname to one pointing to your K8S cluster Ingress Controller (e.g. NGINX or Traefik) IP address.

In a real cluster, you will wish to install an ingress controller and a certificate manager. We include in the repository two example Cluster Issuers (you will need to modify the email field in them) for the cert-manager deployment:

helm install stable/nginx-ingress -n nginx-ingress --namespace ingress-controller

helm install stable/cert-manager -n cert-manager --namespace cert-manager

kubectl create -f ./examples/certManagerCI_staging.yaml

kubectl create -f ./examples/certManagerCI_production.yaml

To use the Composer examples, you will need a Cloud system capable of a "ReadWriteMany" policy (e.g. "azurefile" on Azure).

Minikube

Given that we may wish to test locally on Minikube, we will need to use a local ingress controller and ignore cert-manager in favour of self-cooked SSL certificates.

In ./examples we include the ca-nephos-local.* self-signed certificates, created with OpenSSL as follows:

openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -subj "/C=IE/ST=Dublin/L=Dublin/O=AID:Tech/CN=ca.nephos.local" -keyout ca-nephos-local.key -out ca-nephos-local.crt

openssl x509 -in ca-nephos-local.crt -out ca-nephos-local.pem -outform PEM

kubectl create ns cas

kubectl -n cas create secret tls ca--tls --cert=ca-nephos-local.crt --key=ca-nephos-local.key

We can save them to the cas namespace as follows

cd ./examples

kubectl create ns cas

kubectl -n cas create secret tls ca--tls --cert=ca-nephos-local.crt --key=ca-nephos-local.key

We can then enable the ingress on minikube and update /etc/hosts with the IP of minikube:

minikube addons enable ingress

echo "$(minikube ip)  ca.nephos.local" | sudo tee -a /etc/hosts

Further information

For more information on how to deploy Hyperledger Fabric to Kubernetes, please see the following resources:

Helm charts

We have released a set of Helm Charts, currently living in two locations:

Educational material

A workshop on the Hyperledger Global Forum, featuring slides and a part 1 and part 2 videos.

A(n older) webinar on deploying Hyperledger Fabric on Kubernetes.

We have also contributed the Composer chapter on the EdX course Blockchain for Business.

And we have also released a course on Packt, Udemy and O’Reilly called Hyperledger for Blockchain Applications.

Contributing to Nephos

We welcome all PRs, especially those addressing issues mentioned in the GitHub Project.

To submit a PR, please make sure that:

  1. Fork the repository to your own GitHub account.
  2. All tests are passing, and there is 100% coverage on the unit tests.
  3. All new/changed functions should be correctly documented with docstrings using the Google format.
  4. Update the version number by editing the following files: setup.py (to update VERSION) and docs/conf.py (to update the version and release)

The documentation and pip package are auto-generated after approval and merging of the PR.

Metadata

Release files for nephos 0.4.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nephos 0.4.4
File Size Uploaded Provenance Actions
nephos-0.4.4.tar.gz 32.7 kB Without provenance Details for nephos-0.4.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nephos 0.4.4
File Interpreter ABI Platform Actions
nephos-0.4.4-py2.py3-none-any.whl Python 2, Python 3 none any Details for nephos-0.4.4-py2.py3-none-any.whl

Total release size: 77.3 kB

Release files / nephos-0.4.4.tar.gz

Download URL nephos-0.4.4.tar.gz
Size 32.7 kB
Tags Source
SHA-256 checksum
How to use checksums
3a1604ccbfef359907f0ec8d2c49cee03636064efcc5d2e72d062612c545195b
BLAKE2b-256 checksum
How to use checksums
5aff4b077e567eb457228c483eb15b08972356fcd32d7016e19708504275a064
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.7+

Release files / nephos-0.4.4-py2.py3-none-any.whl

Download URL nephos-0.4.4-py2.py3-none-any.whl
Size 44.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
a5af277009f348ed5ffedcb292a5182ef9b4a53882dbfa7dd06cf6fc9003651a
BLAKE2b-256 checksum
How to use checksums
7962b5fc87e2b40dbf8c8248163269a366f30b7e55615421688399b855eb6c87
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.4.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.7+

Security for nephos 0.4.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.4 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page