一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种在Kubernetes中部署云原生区块链软件的方法和装置与流程

2022-03-23 03:22:17 来源:中国专利 TAG:

一种在kubernetes中部署云原生区块链软件的方法和装置
技术领域
1.本说明书涉及计算机软件技术领域,尤其涉及一种在kubernetes中部署云原生区块链软件的方法、装置、电子设备和存储介质。


背景技术:

2.随着云原生的广泛使用,会碰到多中心化的场景,区块链能够在这些场景中弥补云原生的不足。联盟链的账户系统采用公私钥体系,符合零信任安全的要求。同时,强大的治理功能也能填补云原生在治理方面的缺失。除此之外,作为一种基于多副本的可信计算环境,以及特殊的链式存储结构,保证结果的可信。最新的开源云原生区块链软件是一套精简的联盟链协议和微服务框架,其目标是通过在联盟链框架中整合云原生组件,可以提升联盟链技术与云原生技术的兼容性,让更多的企业以及开发者能够加入到联盟链生态中,其可以运行在kubernetes管理的云原生环境中。而在kubernetes中,管理员多使用kubectl命令来管理集群以及集群中的各种组件、服务。为此,需要扩展kubectl命令,以使kubectl命令能够管理区块链软件。扩展kubectl命令的缺点是我们需要维护两种工具:一个工具是区块链服务客户端只能给用户使用,另一个工具是扩展的kubectl命令。维护两个配置命令,如果未来配置工具更新时,就需要同时修改两个工具,工作量翻倍,且容易导致不一致而出现问题。


技术实现要素:

3.本说明书实施例的目的是针对上述问题,提供一种在kubernetes中部署云原生区块链软件的方法、装置、电子设备和存储介质。
4.为解决上述技术问题,本说明书实施例是这样实现的:
5.第一方面,提出了一种在kubernetes中部署云原生区块链软件的方法,使用kubectl工具和区块链服务客户端,包括:
6.增加区块链服务客户端命令,以使所述区块链服务客户端支持操作区块链相关功能;
7.修改区块链服务客户端命令,以使所述区块链服务客户端能够检测自身所处的运行环境;
8.根据所述区块链服务客户端所处的运行环境,添加与部署云原生区块链软件相关的功能;
9.生成区块链服务客户端插件提交至kubectl krew仓库,以使通过kubectl krew命令直接安装区块链服务客户端插件。
10.第二方面,提出了一种在kubernetes中部署云原生区块链软件的装置,使用kubectl工具和区块链服务客户端,包括:
11.区块链服务客户端命令增强模块,用于使所述区块链服务客户端能够具有区块链功能;
12.区块链服务客户端命令修改模块,用于修改后的区块链服务客户端命令支持所述区块链服务客户端能够检测到自身所处的运行环境;
13.部署区块链功能模块,用于根据所述区块链服务客户端所处的运行环境,添加与部署云原生区块链软件相关的功能;
14.插件生成模块,用于生成区块链服务客户端插件提交至kubectl krew仓库,以使通过kubectl krew命令直接安装区块链服务客户端插件。
15.第三方面,提出了一种电子设备,包括:处理器;以及
16.被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行第二方面所述的方法。
17.第四方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行第二方面所述的方法。
18.本说明书可以达到至少以下技术效果:
19.本发明以云原生区块链软件运行在kubenetes中为目标,将区块链服务客户端作为kubectl的扩展模块,通过kubectl工具和krew仓库,用户无需再单独下载和安装区块链服务客户端命令,只需要简单执行kubectl krew命令,只需要维护一份代码,同时能够在两种运行环境中使用。
附图说明
20.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1为本说明书实施例提供的在kubernetes中部署云原生区块链软件的方法示意图之一。
22.图2为本说明书实施例提供的在kubernetes中部署云原生区块链软件的方法示意图之二。
23.图3为本说明书实施例提供的在kubernetes中部署云原生区块链软件的装置示意图之一。
24.图4为本说明书的一个实施例提供的电子设备的结构示意图。
具体实施方式
25.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
26.下面通过具体的实例对本说明书所涉及的一种在kubernetes中部署云原生区块链软件的方案进行详述。特别地,在具体实施例中,所述的云原生区块链软件以cita cloud
为例进行说明,所用到的区块链服务客户端以cloud-cli为例进行说明。但是应当理解,在不违背本发明方案的情况下,其他云原生区块链软件和区块链服务客户端也同样适用于本发明的方案。
27.关键术语
28.kubernetes:简称k8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,kubernetes的目标是让部署容器化的应用简单并且高效(powerful),kubernetes提供了应用部署,规划,更新,维护的一种机制。传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。新的方式是通过部署容器方式实现,每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。相对于虚拟机,容器能快速部署,由于容器与底层设施、机器文件系统解耦的,所以它能在不同云、不同版本操作系统间进行迁移。容器占用资源少、部署快,每个应用可以被打包成一个容器镜像,每个应用与容器间成一对一关系也使容器有更大优势,使用容器可以在build或release的阶段,为应用创建容器镜像,因为每个应用不需要与其余的应用堆栈组合,也不依赖于生产环境基础结构,这使得从研发到测试、生产能提供一致环境。类似地,容器比虚拟机轻量、更“透明”,这更便于监控和管理。
29.kubectl:是kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署。主要的职责就是对集群中的资源的对象进行操作,这些操作包括对资源对象的创建、删除和查看等。kubectl提供了一种插件扩展机制,以丰富和增强其对集群的管控能力。为了扩展kubectl的功能,kubernetes从1.8版本开始引入插件机制,在1.14版本时达到稳定版。用户自定义插件的可执行文件名需要以“kubectl
‑”
开头,复制到$path中的某个目录(如/usr/local/bin),然后就可以通过kubectl运行自定义插件了。krew是kubectl插件的包管理工具。借助krew,可以轻松地使用kubectl plugin:发现插件、安装和管理插件。对于kubectl用户:krew能帮助用户搜索、安装和管理kubectl插件;对于插件开发者:krew可以帮助你在多种平台上打包和发布插件。
30.cita cloud:是一套精简的联盟链协议和微服务框架。通过在联盟链框架中整合云原生组件,可以提升联盟链技术与云原生技术的兼容性,让更多的企业以及开发者能够加入到联盟链生态中。cita cloud包括六大微服务:(1)network微服务,主要提供网络部分的功能,分为收/发两大部分功能。(2)storage微服务,主要提供kv存储相关的功能,涵盖了常用的增删改查功能。(3)kms微服务,主要提供私钥加密存储,以及相关的密码学服务。(4)executor微服务,主要提供根据交易改变链上状态以及查询链上状态的功能。(5)consensus微服务,主要提供让提案在多个共识参与方之间达成一致的功能。(6)controller微服务在整个区块链中处于核心的位置,主导所有主要的流程,以及提供准对用户的rpc接口。
31.cloud-cli:即指cloud client,是云客户端软件,由于cita-cloud从一开始就确认了与云计算结合的路线,因此cloud-cli是cita-cloud必不可少的工具。
32.实施例一
33.参照图1所示,为本发明实施例中一种在kubernetes中部署云原生区块链软件的方法。首先要说明的是,之前,我们需要kubectl来管理k8s,cloud-cli来管理cita cloud,这样需要两个工具。本发明实施例的方案所利用的就kubectl的扩展机制,将cloud-cli作为模块添加到kubectl中。通常情况下,cloud-cli是工具,而本发明实施例给出的方法使得cloud-cli又是工具又是kubectl模块。在不违反本发明实施例的方法的情况下,除了正常维护cita cloud的cloud-cli工具,同时也要为维护以kubectl-命名开头的cloud-cli模块,而这两种模式达到的功能是一样的。因此,本发明实施例的方法包括:
34.步骤101:增加区块链服务客户端命令,以使所述区块链服务客户端支持操作区块链相关功能。
35.可选地,在增加cloud-cli命令包括实现对区块链的部署功能和管理功能。在一个实施例中,通过cloud-cli命令,用户能够直接对链进行如下常用操作:
36.//部署测试链
37.kubectl cloud-cli
‑‑
namespace chain-room
‑‑
chain-name test-chain
‑‑
deploy
38.//删除测试链
39.kubectl cloud-cli
‑‑
namespace chain-room
‑‑
chain-name test-chain
‑‑
remove
40.//升级链的容器,过渡到新版本
41.kubectl cloud-cli
‑‑
namespace chain-room
‑‑
chain-name test-chain
‑‑
update
42.//向链中增加新节点
43.kubectl cloud-cli
‑‑
namespace chain-room
‑‑
chain-name test-chain
‑‑
add-node
44.步骤102:修改区块链服务客户端命令,以使所述区块链服务客户端能够检测自身所处的运行环境。
45.可选地,在一个实施例中,cloud-cli工具检测自身所处的运行环境包括:检测cloud-cli独立运行,或作为kubectl工具的扩展功能运行。在一个实施例中,根据kubectl官方文档,kubectl插件需要采用kubectl-xxx形成进行命名,即插件要以kubectl-为前缀,因此,能够通过检测程序自身文件名的方式来判断cloud-cli命令的运行方式,cloud-cli检查自身运行方式如下:
46.47.步骤103:根据所述区块链服务客户端所处的运行环境,添加与部署云原生区块链软件相关的功能。
48.可选地,在一个实施例中,如图2所示,添加与部署云原生区块链软件相关的功能包括:
49.步骤131:当检测到所述区块链服务客户端作为所述kubectl工具的扩展功能运行时,需指定区块链名称以及区块链所在的命名空间。
50.一个实施例中,在kubectl模式下:
51.[0052][0053]
步骤132:当区块链服务客户端独立运行时,需由区块链用户指定区块链的相关配置。
[0054]
一个实施例中,以独立模式运行的cloud-cli命令,需要获知其用于访问链的信息:链地址、链端口。这些信息需要区块链用户通过命令行参数进行指定,或通过环境变量进行指定:
[0055]
[0056][0057]
步骤104:生成区块链服务客户端插件提交至kubectl krew仓库,以使通过kubectl krew命令直接安装区块链服务客户端插件。
[0058]
一个实施例中,根据kubectl krew规范定义的manifests文件,来编写cloud-cli插件的manifests文件,文件内容如下:
[0059]
[0060]
[0061][0062]
将上面编写的manifests文件,通过pull request向krew index仓库提交插件。但pull request通过之后,便可通过krew install进行安装。通过kubectl krew安装cloud-cli的方法如下:
[0063][0064]
实施例二
[0065]
图3为本说明书的一个实施例提供的一种在kubernetes中部署云原生区块链软件的装置300的结构示意图。特别地,在具体实施例中,所述的云原生区块链软件以cita cloud为例进行说明,所用到的区块链服务客户端以cloud-cli为例进行说明。但是应当理解,在不违背本发明方案的情况下,其他云原生区块链软件和区块链服务客户端也同样适用于本发明的方案。请参考图3,在一种实施方式中在kubernetes中部署云原生区块链软件
的装置,使用kubectl工具和区块链服务客户端工具,包括:
[0066]
区块链服务客户端命令增强模块301,用于使所述区块链服务客户端能够具有区块链功能;
[0067]
区块链服务客户端命令修改模块302,用于修改后的区块链服务客户端命令支持所述区块链服务客户端能够检测到自身所处的运行环境;
[0068]
部署区块链功能模块303,用于根据所述区块链服务客户端所处的运行环境,添加与部署云原生区块链软件相关的功能;
[0069]
插件生成模块304,用于生成区块链服务客户端插件提交至kubectl krew仓库,以使通过kubectl krew命令直接安装区块链服务客户端插件。
[0070]
应理解,本说明书实施例的在kubernetes中部署云原生区块链软件的装置还可执行图1至图2中在kubernetes中部署云原生区块链软件的装置(或设备)执行的方法,并实现在kubernetes中部署云原生区块链软件的装置(或设备)在图1至图2所示实例的功能,在此不再赘述。
[0071]
实施例四
[0072]
图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(random-access memory,ram),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
[0073]
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是isa(industry standard architecture,工业标准体系结构)总线、pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0074]
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
[0075]
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共享资源访问控制装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
[0076]
使用kubectl工具和区块链服务客户端,包括:
[0077]
增加区块链服务客户端命令,以使所述区块链服务客户端支持操作区块链相关功能;
[0078]
修改区块链服务客户端命令,以使所述区块链服务客户端能够检测自身所处的运行环境;
[0079]
根据所述区块链服务客户端所处的运行环境,添加与部署云原生区块链软件相关的功能;
[0080]
生成区块链服务客户端插件提交至kubectl krew仓库,以使通过kubectl krew命令直接安装区块链服务客户端插件。上述如本说明书图1至图2所示实施例揭示的一种在
kubernetes中部署云原生区块链软件的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0081]
当然,除了软件实现方式之外,本说明书实施例的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0082]
实施例五
[0083]
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图3至图4所示实施例的方法,并具体用于执行以下方法:
[0084]
使用kubectl工具和区块链服务客户端,包括:
[0085]
增加区块链服务客户端命令,以使所述区块链服务客户端支持操作区块链相关功能;
[0086]
修改区块链服务客户端命令,以使所述区块链服务客户端能够检测自身所处的运行环境;
[0087]
根据所述区块链服务客户端所处的运行环境,添加与部署云原生区块链软件相关的功能;
[0088]
生成区块链服务客户端插件提交至kubectl krew仓库,以使通过kubectl krew命令直接安装区块链服务客户端插件。总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书的保护范围之内。
[0089]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0090]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0091]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0092]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献