谷歌镜像 伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

使用Helm在Kubernetes上部署区块链

来源:本站原创 浏览:231次 时间:2021-05-27
王杰 译 分布式实验室 


“三点钟区块链”无疑成为了大家春节期间焦虑的根源,而“区块链”注定是2018年被持续讨论、关注的行业性热点话题。今天主要来谈一谈如何使用Helm在Kubernetes上部署区块链。

背景


Webjet[1]是一家在线旅行社,负责管理澳大利亚和新西兰每天数以千计的旅行预订。在过去的一年中,微软和Webjet通过利用区块链技术合作,帮助Webjet解决酒店预订处理和管理方面的低效问题。你可以从相关新闻报道来了解更多关于我们合作的相关信息。有关更多技术细节,请看下面视频。

https://v.qq.com/x/page/k0600vmf6k9.html随着Webjet继续增加其区块链部署,他们开始碰到其基础架构即服务(IaaS)体系结构的一些缺陷。为此,我们最近与Webjet合作将其部署迁移到Kubernetes。在本文中,我们将分享从IaaS迁移到Kubernetes的经验教训,解释我们如何使用Helm将私有Ethereum[2]网络部署到Kubernetes,并展示如何使用Helm部署自己的私有以太网网络。

通往Kubernetes的道路


由于基于各种指标的自动缩放的虚拟机缩放集(VMSS)功能[3],Webjet选择将他们的私有以太网网络托管在一系列VMSS上,每个VMSS都运行由Docker Compose编排的Docker容器。GitHub[4]上提供了一个通用版本的Webjet Azure ARM部署。然而,在Webjet将其转化为生产的过程中,基于IaaS架构的一些缺陷(如下两个)变得更加明显。
难以扩展
Docker Compose支持为容器运行多个副本 ;但是,为了在副本之间实现负载平衡,需要管理容器主机端口映射。
在节点级别,由于VMSS的自动缩放功能可扩展整个节点,因此VMSS可以针对同类工作负载进行最佳工作。在机器上运行几种不同的服务时,扩展/缩小VMSS会影响该机器上的所有正在运行的服务。另外,架构可以分成几个Docker Compose文件,并由此分成几个VMSS,但这需要大量的预先计划来确保硬件需求和成本的适当平衡。
升级容易出错
升级服务意味着SSH-ing进入虚拟机,先运行docker - compose stop,再下载新的Docker Compose manifest,随后运行docker - compose up即可。像SaltStack这样的配置管理工具可以͵��,���用来实现这个过程的自动化,但是这个过程本身是灵活可自定义的,并且很可能出现错误。
由于上述原因,Webjet团队决定通过AKS[5]利用Kubernetes来帮助自动化应用程序的部署、扩展和编排。借助Kubernetes,Webjet可以扩展/缩小某些应用程序,并利用Kubernetes原生支持滚动升级的特点来升级服务。

构建


在将现有的Docker Compose manifest迁移到Kubernetes之后,我们落地了以下架构:


上图显示了映射到Kubernetes构建的私有以太坊网络的体系结构。蓝色代表Kubernetes Services,红色代表Kubernetes Deployments,而绿色和黄色分别代表Kubernetes Secrets和ConfigMaps。
每当Webjet需要部署新的以太坊网络时,都需要对YAML定义进行一系列配置更新。这些更改包括以太坊成因文件,应用程序密码和Geth私钥。Webjet最初使用shell脚本完成此任务,该脚本将搜索并替换配置值,然后使用kubectl create执行部署 。在使用Webjet进行hackfest期间,我们使用Helm来管理而不是YAML定义的模板化。

Helm是什么


Helm是Kubernetes的包管理员。该项目最初由Deis创建,并已被捐赠给云原生计算基金会(CNCF)。话说,有趣的Deis现在已成为微软的一员。通常情况下,应用程序由服务、部署、秘钥等组合而成。与单独管理这些Kubernetes资源不同,Helm提供更高级别的架构(称为图表)来管理整个应用程序。借助Helm,你可以创建、升级和回滚整个应用程序,并轻松与同行和更大的社区共享应用程序/图表。
创建图表
使用Webjet,我们创建了Helm图表来部署一个私有以太网网络。要创建Helm图表,请安装Helm CLI[6],然后运行helm create以搭建新图表。要迁移现有的YAML manifests,请将manifests复制到Helm文件夹结构并添加下面列出的以下标签:图表标准标签[7]。 对于部署图表来说虽然这些标签是非必需的,但建议保持一致。下一步是对可以覆盖的配置和设置进行模板化。有关更多详细信息,请参阅图表最佳实践指南[8]。
借助Helm,每个图表都是可单独管理的单位。Webjet将他们的架构分成多个Helm图表,这样他们可以单独升级。例如,我们为以太坊网络(Miners、EthStats、Bootnode)制作了单独的图表,另一个用于Blockchain Watcher,一个用于部署其存储(SQL)等。在多个Helm图表中共享的工件(例如,Secrets、ConfigMaps )被标记为图表中的依赖关系requirement.yaml[9]。
部署图表
Helm是由两个部分组成:一个客户端CLI(helm)和服务器(tiller)。通过acs-engine或ACS / AKS在Azure上部署Kubernetes集群的一个优点是默认情况下,集群将预先配置Tiller。对于尚未初始化的群集,可以执行如下命令helm init。
要安装图表,你可以运行helm install,它将从官方Charts版本库中搜索并安装图表[10]。我们与Webjet一起开发的以太坊图表可以在GitHub上找到,并且一旦这个拉取请求merged[11],你就可以使用以下方法将私有以太网络安装到你的Kubernetes集群上:

helm install incubator/ethereum


在拉取请求merged之前,我已经做了图表存档:


请注意,geth.account.publicKey,geth.account.privateKey和geth.account.secret是必需的配置。要创建新的Geth帐户,请参阅https://github.com/ethereum/go-ethereum/wiki/Managing-your-accounts。


你现在在Kubernetes群集中运行了一个私有以太坊网络。
值得一提的是,该图表部署了一个未连接到MainNet的私有以太坊网络。
使用Webjet,他们的图表被委托给一个Git仓库,所有的部署都是通过向Chart提供一个本地文件路径来使用Helm来启动的。但是,也可以轻松配置专用Helm Charts存储库[12]来托管你的私人图表。

最后


本文解释了Webjet如何将其部署迁移到Kubernetes,并展示如何使用Helm来简化托管在Kubernetes上的应用程序的部署和管理。在Azure上使用Kubernetes大大简化了Webjet的部署过程。我们使用Helm的解决方案不需要Webjet来管理他们自己的部署脚本,并且可以利用社区提供的许多现有图表。图表可以提交给图表注册表并与社区共享。文章中显示的以太坊图表是开源的,并且存在一个将其添加到Charts注册表的GitHub的开放请求[11]。此图部署了简化的以太坊专用网络;为了以更高可用的方式部署网络,请参考此图表[13]。
相关链接:
  1. https://www.webjet.com.au/

  2. https://www.ethereum.org/

  3. https://docs.microsoft.com/en-us/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-autoscale-overview

  4. https://github.com/EthereumEx/ethereum-arm-templates/tree/master/ethereum-consortium

  5. https://azure.microsoft.com/en-us/services/container-service/

  6. https://docs.helm.sh/using_helm/#install-helm

  7. https://docs.helm.sh/chart_best_practices/#standard-labels

  8. https://docs.helm.sh/chart_best_practices/

  9. https://docs.helm.sh/developing_charts/#chart-dependencies

  10. https://github.com/kubernetes/charts/

  11. https://github.com/kubernetes/charts/pull/3220

  12. https://github.com/kubernetes/helm/blob/master/docs/chart_repository.md

  13. https://github.com/jpoon/kubernetes-ethereum-chart/tree/bootnode-registrar


原文链接:https://www.microsoft.com/developerblog/2018/02/09/using-helm-deploy-blockchain-kubernetes/


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net