Skip to content

Commit

Permalink
Initial mkdocs content
Browse files Browse the repository at this point in the history
See #66

Signed-off-by: James Taylor <jamest@uk.ibm.com>
  • Loading branch information
jt-nti committed May 20, 2024
1 parent 3c6f7a0 commit fbd2f7e
Show file tree
Hide file tree
Showing 21 changed files with 881 additions and 277 deletions.
117 changes: 0 additions & 117 deletions docs/TEST_NETWORK_K8S.md

This file was deleted.

84 changes: 0 additions & 84 deletions docs/TEST_NETWORK_NANO.md

This file was deleted.

3 changes: 3 additions & 0 deletions docs/about/community.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Community

You can find community discussion related to the Kubernetes Builder on the [#fabric-kubernetes](https://discord.com/channels/905194001349627914/945796983795384331) channel on Hyperledger Discord ([invite link](https://discord.gg/hyperledger)).
21 changes: 21 additions & 0 deletions docs/about/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Introduction

The Kubernetes external [chaincode builder](../../concepts/chaincode-builder) for Hyperledger Fabric (k8s builder) is an alternative to Fabric's legacy built in Docker chaincode builder, which does not work in a Kubernetes deployment, and the preconfigured chaincode-as-a-service builder, which is more suited to chaincode development and test.

With the k8s builder, the Fabric administrator is responsible for [preparing a chaincode image](../../concepts/chaincode-image), publishing to a container registry, and [preparing a chaincode package](../../concepts/chaincode-package) with coordinates of the contract's immutable image digest.
When Fabric detects the installation of a `type=k8s` contract, the builder assumes full ownership of the lifecycle of pods, containers, and network linkages necessary to communicate securely with the peer.


Advantages:

🚀 Chaincode runs _immediately_ on channel commit.

✨ Avoids the complexity and administrative burdens associated with Chaincode-as-a-Service.

🔥 Pre-published chaincode images avoid code-compilation errors at deployment time.

🏗️ Pre-published chaincode images encourage modern, industry accepted CI/CD best practices.

🛡️ Pre-published chaincode images remove any and all dependencies on a root-level _docker daemon_.

🕵️ Pre-published chaincode images provide traceability and change management features (e.g. Git commit hash as image tag)
20 changes: 20 additions & 0 deletions docs/about/objectives.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Objectives

The aim is for the builder to work as closely as possible with the existing [Fabric chaincode lifecycle](https://hyperledger-fabric.readthedocs.io/en/latest/chaincode_lifecycle.html), making sensible compromises for deploying chaincode on Kubernetes within those limitations.
(The assumption being that there are more people with Kubernetes skills than are familiar with the inner workings of Fabric!)

The two key principles are:

1. **The contents of the chaincode package must uniquely identify the chaincode functions executed on the ledger:**
In the case of the k8s builder the chaincode source code is not actually inside the package.
In order not to break the Fabric chaincode lifecycle, the chaincode image must be specified using an immutable `@digest`, not `:label` which can be altered post commit.
See [Pull an image by digest (immutable identifier)](https://docs.docker.com/engine/reference/commandline/pull/#pull-an-image-by-digest-immutable-identifier) for more details.
2. **The Fabric peer manages the chaincode process, not Kubernetes:**
Running the chaincode in server mode, i.e. allowing the peer to initiate the gRPC connection, would make it possible to leave Kubernetes to manage the chaincode process by creating a chaincode deployment.
Unfortunately due to limitations in Fabric's builder and launcher implementation, that is not possible and the peer expects to control the chaincode process.

## Status

The k8s builder is [close to a version 1 release](https://github.com/hyperledger-labs/fabric-builder-k8s/milestone/1) and has been tested in a number of Kubernetes environments, deployment platforms, and provides semantic-revision aware [release tags](https://github.com/hyperledger-labs/fabric-builder-k8s/tags) for the external builder binaries.

The current status should be considered as STABLE and any bugs or enhancements delivered as GitHub Issues in conjunction with community PRs.
Loading

0 comments on commit fbd2f7e

Please sign in to comment.