作者:陈超,北京中科金财科技股份有限公司研发中心技术司理,知晓Java/Go等开发言语,熟练掌握 Kubernetes、 Docker、微服务架构,了解比特币、以太坊等公链技术体系,了解 Fabric 等联盟链技术体系,知晓泛金融数字化 处理方案。

KubeSphere 开源社区的伙伴们,我们好。我是北京中科金财科技股份有限公司区块链中心的途径即服务产品研发负责人陈超,很快乐有机会同我们一起共享中科金财依据 KubeSphere 融合区块链技术二次开发改造的经历。

业务介绍

公司区块链战略

自 2019 年 10 月 24 日区块链上升为国家战略至今已满两年。继 20 年区块链被归入“新基建”后,21 年 3 月份,区块链被写入《中华人民共和国国民经济和社会发展第十四个五年规划和 2035 年远景政策大纲》,规划提出培育强大区块链等新式数字工业。

公司研究政策趋势并结合多年 B 端科技服务的经历,将区块链技术及运用制作归入公司的战略,继续在区块链技术底层、上层业务运用及整体运维处理方面进行制作。

区块链途径的定位

区块链技术集许多技术之大成,且在职业中的运用价值方面还处于不断探求的阶段。从底层链技术方面来看,国外的联盟链 Fabric、公链以太坊等,国内的开源联盟链 fisco bcos、政府背书的星火链,长安链,树图等,一起国内还有一些企业自主开发的区块链技术,如趣链公司的区块链、中科金财的中科金链、天河国云的天河链、凌乱美的 chain33,不同的链底层技术所触及的安置、维护、运用接入方法都可能不太相同,造成了打开职业运用的本钱较高,而为了下降用户在接入和维护区块链设备时的实践本钱和学习本钱,且尽可能的适配不同的技术底层,在区块链中间件的规范定义下,需求一套区块链即服务(Blockchain as a Service)途径。

布景介绍

BaaS 途径的制作现状

中科金财于 18 年已打开 BaaS 途径的制作,选用相对老到安稳的运用架构进行开发,逐渐参与了依据多租户的 RBAC 权限体系、资源及区块链网络监控、区块链动态安置及节点处理等功用,并在一些项目场景中投入运用。

但因为整体架构的缺点,在安置功率、安置资源动态处理、区块链网络服务状况实时监控、账本高可用、证书保管等方面遇到了较大的技术难度,进一步迭代升级的本钱十分大。因此从头进行 BaaS 的总体规划,拥抱 Kubernetes、拥抱云原生变得十分重要。

BaaS 为什么拥抱云原生

云原生是关于速度和敏捷性的,有利于各组织在公有云、私有云和混合云等新式动态环境中,构建和工作可弹性扩展的运用,可以构建容错性好、易于处理和便于观察的松耦合体系。

契合云原生架构的运用程序应该是选用开源技术栈(Kubernetes+Docker)进行容器化安置,使用根底设备处理才干完结资源弹性弹性、服务动态安置与资源使用率优化等。

中科金财 SinoBaaS 途径在对区块链网络进行动态安置处理、工作检测、资源弹性扩大等方面的火燎需求与云原生的一些特征十分契合,因此在新的版别改造进程中决议全面集成 Kubernetes。

选型说明

在决议拥抱云原生架构的时分我们选型决议要运用其间十分活泼和老到的 Kubernetes 作为我们途径的底层支撑,但是 Kubernetes 整体体系比较凌乱学习本钱比较高,对非专业用户运用十分不友好。归纳考虑之后我们决议选择一个较完善的 Kubernetes 发行版别。我们针对市场上一些比较盛行的途径做了评估,毕竟选择了 KubeSphere 作为我们的处理途径。

选择 KubeSphere 主要原因有以下几点:

  1. KubeSphere 代码开源,这关于我们后期进行二次开发十分有利;
  2. KubeSphere 整体功用比较完善,也集成了十分多的功用插件,通过这些插件不只可以快速树立一套安稳的环境且更有利于我们后期和 BaaS 途径做融合 ;
  3. KubeSphere 的整体口碑点评很高,社区交流与官方支撑都比较活泼 ;
  4. KubeSphere 是国内的青云公司开发的,整体规划比较贴合国人的运用习气这极大的下降了学习本钱。

整体融合

KubeSphere 具有一套十分完善的配套功用,这让我们只需求要点重视区块链相关的功用组件开发就可以。中科金财 BaaS 途径在 KubeSphere 上做了以下融合:

  1. 新增联盟处理组件,其间主要包含了区块链网络创建;区块链信息概览;组织、通道、链码处理;生意详情查询;数据存证;财物转账等功用。
  2. 依托 KubeSphere 的用户人物体系构建区块链网络盟主等用户人物体系。
  3. 通过 KubeSphere 供应的日志、监控、审计等服务组件对区块链网络中的节点进行运维监管。
  4. 定制化 ks-installer 装置东西,完结快速规范化的树立一套安稳的 BaaS 途径。

实践进程

途径的整体架构

中科金财针对 BaaS 途径所需求具有如活络安置、资源动态弹性处理、可视化运维、细颗粒度监控与预警、工作高可靠等方面的核心才干,进行了中科金财区块链即服务途径 SinoBaaS 的总体规划,规划图如下:

中科金财区块链途径容器化最佳实践

  1. 安全可控:供应依据 RBAC 的级权限处理体系、供应日志审计,全方位保障途径与服务的安全可靠;
  2. 极速上手:通过对区块链运用于生态的构建供应全流程赋能,协助用户专心于业务运用层的立异与接入,下降区块链运用门槛;
  3. 高可用性:支撑途径、链节点的集群化安置,可以按需动态扩容,满足企业级安全需求;
  4. 智能运维:支撑为供应联盟链、节点、主机等多维度的实时监控服务,通过 Dashboard 供应丰厚的图表展示方法,完结监控数据的可视化,轻松了解链、节点、主机等资源的工作健康状况;
  5. 支撑可插拔方法的多种区块链底层(中科金链和 Hyperledger Fabric 等)在不同环境中的多种安置方式(云主机、物理机),活络满足业务层技术选项,下降关于环境特点的依靠,可以继续集成处理市场上其他的链技术底层;
  6. 高扩展性:支撑通过参与自定义插件、第三方云原生插件来扩展途径的功用,比如参与 CA 服务插件,可集中化进行插件的处理。

途径所选用的存储方案

SinoBaaS 在初期的实践中运用了 PersistentVolume 的 localhost 方式,这种方法使得区块链节点对物理节点的耦合性十分高,且证书也都保存在物理环境中,使得 Kubernetes 的主动调度的特性被严重约束了。在组成区块链网络中还需求通过证书加密,证书保存到本地安全隐患也十分高,一旦磁盘损坏可能会导致证书丢掉,失去了证书的节点服务就跟失去了身份的人相同,后续的补偿方法十分困难。

因此在开发进程中,引入了独立的分布式存储,并将证书等信息存储在 Kubernetes 的 ConfigMap 中,整个区块链网络工作所产生的账本数据、状况数据、证书等都得到了高可靠的存储,处理了 Kubernetes 在漂移调度进程中资源依靠问题。

途径安置方案

在 BaaS 途径未融合 KubeSphere 改造前,区块链网络安置进程恰当繁琐,首要需求我们手动生成区块链网络所需的证书再别离拷贝到节点机器上,再通过修改脚本参数生成安置组织节点的 yaml 文件,然后才干安置到各个机器中,整个安置进程十分不规范且简略犯错,排查起来问题比较困难,整体安置功率较低。

我们在选择 KubeSphere 时就考虑到它具有一套规范的安置流程,并且 ks-installer 东西也是开源的十分适合我们针对安置痛点进行优化。优化往后的 ks-installer 集群可以完结只需求依据不同项目环境修改特定的几个参数就可以十分流畅的安置一套规范的 BaaS 途径。

途径融合区块链方案

安置区块链网络

我们以为运用 BaaS 进行安置区块链网络时一般考虑几点要素:

  1. 易用性
  • 躲藏区块链要害技术的概念,比如一致算法,P2P 网络,密码学,生意处理等。
  • 躲藏技术细节,BaaS 途径的网络的树立,比如落块的规则,peer 锚节点的设定,状况数据库选择 LevelDB 仍是 CouchDB 等。
  • 操作满足简略,输入几个装备信息就能树立区块链网络。
  1. 安全与安稳
  • 依据 RBAC 的身份辨别。
  • 途径的监控告警。
  • 数据齐备,容灾切换等高可用机制。
  1. 弹性安置,并发业务
  • 能进行水平扩展与收缩,比如能迅速新增节点,封闭 Node 节点时途径服务不会收到影响。
  • 一起支撑多用户多业务完结链上操作。
  1. 打开与隐私处理
  • 对各类区块链技术及各类运用场景需求保持打开性,比如存储智能合约的链码库房,以及链码处理。
  • 用户信息,证书,安置信息,账本数据,生意信息进行隔离。

创建完的联盟的架构如下:

整个区块链联盟运用 Namespace 作为资源的隔离,整体的树立也分为三层 : 服务层(service),容器层(Pod),和分布式存储。

中科金财区块链途径容器化最佳实践

区块链网络处理

区块链的处理,直接面临用户,供应给运维或许普通用户来操作,所以既要保证可操作性又要保证要害数据的出现。

当然针对各类运用场景如数据层证,财物转账等常用场景我们也供应了内置的链码,如需定制化智能合约可以通过链码库房来上传链码,并进行实例化等操作,能有比较好的打开性。

中科金财区块链途径容器化最佳实践

本地化开发方式

在对 KubeSphere 进行二次开发的进程中,前端的本地化开发比较简略只需求替换 server/config.yaml 中的 server:apiServer:url/wsUrl 地址便可。但后端的本地化开发便触及到若干问题:怎么保证开发环境与测试环境的一起,怎么快速开发调试,如果开发触及到多个云上多个服务之间的相互调用又该怎么?这些问题成为了团队开发的痛点。

这让我们团队活跃探求本地化开发的方法,其间telepresence和kt-connect都能处理以上痛点,完结的作用类似,都能将集群流量转发到本地。_ 这儿运用 kt-connect 官方原图说明一下 _。

中科金财区块链途径容器化最佳实践

多租户融合

KubeSphere 途径供应了多租户处理,人物处理,并以企业空间,项目进行更细颗粒度的权限处理。结合区块链 BaaS 途径也需求多租户,创建区块链联盟,并在联盟中创建区块链节点和服务。BaaS 在 KubeSphere 的多租户的根底上进行融合,供应多租户的登录才干,每一个租户创建自己的区块链服务;通过 BaaS 创建的区块链服务来满足业务体系的上链需求。

区块链创建一个联盟,包含一个和多个组织一起每个组织具有必定数量的区块链节点,供应区块链服务。通过 BaaS 途径创建用户并关联相应的组织,当创建联盟时邀请相关组织参与联盟。

中科金财区块链途径容器化最佳实践

用户基本信息如下: 包含用户名,用户所属组织,用户邮箱等信息。

中科金财区块链途径容器化最佳实践

在 Baas 途径中的组织处理中可以添加组织并关联到用户,再邀请到创建的联盟中进行通道和智能合约的操作。

中科金财区块链途径容器化最佳实践

实践进程中遇到的问题

SinoBaaS 途径从开始改造,到活跃拥抱云原生架构,到毕竟选择 KubeSphere 作为技术开发途径,也遇到不少的问题和挑战 :

  • 不熟悉 K8s:在 K8s 概念、安置、运用方法的各个方面都要学习和探求。
  • 不熟悉云原生的开发和调试流程:不熟悉 KubeSphere 的前后端和装置脚本 ks-install,从最开始的二进制方法工作 ks-apiserver,本地化调试前端 , 到容器化安置,在开发进程中也缺少对容器化开发调试的方法,到最后选择 telepresence 署理方法调试服务。
  • 不熟悉 KubeSphere 的代码和功用组件 : 通过官方文档和社区逐渐熟悉 kapi 接口,KubeSphere 的架构和在 CRD 的扩展方面不断的探究,毕竟在自定义 CRD 部分,从头规划区块链部分的 CRD 结构。
  • 区块链功用和 KubeSphere 的融合:在融合方面,因为区块链服务和 KubeSphere 功用仍是有不少差异。在联盟处理,项目人物以及企业空间等方面的融合与展示,以到达不至于特别突兀的作用,团队内部进行了数次评论。

运用作用

SinoBaaS 途径通过 KubeSphere 的开始改造升级,完结了区块链联盟的创建,组织处理,通道处理,链码库房,链码处理,区块和生意查询,数据存证和财物转账等功用。联盟的创建和删去更加的快捷,融合 KubeSphere 的企业空间和项目进行了多层级的权限处理,不同人物的用户可以有不同的区块链视图,看到不同的区块链的节点和服务信息。简略作用如下:

区块链浏览器页面:

中科金财区块链途径容器化最佳实践

联盟概览页面:

中科金财区块链途径容器化最佳实践

信息查询页面(可以通过区块号,区块 hash,生意 ID 等进行查询操作):

中科金财区块链途径容器化最佳实践

未来规划和展望

在 SinoBaaS 1.0 版别开发结束后,我们也在捉住推进后续版其他规划和迭代,在此也做一下罗列说明,以供参考交流。

本地协同开发方式

现在可以完结将 ks-apiserver 云上的流量悉数阻拦在本地,但是在面临多人协同开发时还存在缺少,下一步需求完结创建路由规则重定向特定流量,完结多人协作场景下互不影响的本地调试。

自定义服务组件

现在区块链网络仍是以本地化 SDK 的方法接入,在运用快捷性和规范化方面还存在缺少,且还无法对访问进行审计管控,因此还需求在途径中开发依据 AK/SK 的 API 服务,作为区块链网络对外接入访问的进口,并将 API 的服务作为 KubeSphere 的一个服务组件,并装备进 ks-installer 中,随途径的一起初始化安置,并在 Service Components 中可以查询到服务的状况。

中科金财区块链途径容器化最佳实践

后续乃至可以参与更多的 DApp 运用,都可以归入服务组件中统一处理,并在运用环节深度集成到途径的各个功用中。

集群联邦下打造区块链联邦网络

SinoBaas 途径为更好的习气凌乱网络场景下的需求,如多个参与组织都有独立的局域网,相互间以专线方法通讯,考虑依托 KubeSphere 的多集群保管方式完结跨集群区块链组网和区块链跨网络通信,真实处理联盟链运用下凌乱网络对区块链工作及处理的影响。

依据运用商铺来打造合约商铺

KubeSphere 中供应了运用商铺的功用,用户可以上传、安置运用商铺的运用或许自定义运用。区块链中有许多依据智能合约的运用(溯源、存证、加密猫,依据 ERC721 的数字藏品等),将依据智能合约的运用打造成规范的合约模板,凭仗运用商铺的机制来打造合约商铺,方便 SinoBaaS 途径的用户自主选择合约运用进行安置。

本文由博客一文多发途径 OpenWrite 发布!