本文档提供了从零开始实现区块链部署的快速入门指南,其中大部分设置均采用默认值或者示例值。如需了解更全面的配置方式,请参见后续章节的详细介绍。

限制条件

  • 需要注册账号,开通容器服务,用户账户需有 100 元的余额并通过实名认证,否则无法创建按量付费的 ECS 实例和负载均衡。
  • 容器集群和 NAS 文件系统必须位于相同的地域,请确保所选地域能同时支持 kubernetes 集群模式和 NAS 文件系统(取两者交集)。关于 NAS 文件系统支持地域列表请参见 产品与服务 > 文件存储 > NAS > 文件系统列表
  • 文件系统的使用方式仅适用于区块链相关应用和解决方案的开发、测试阶段,如需在生产环境部署,请联系我们进一步探讨具体的业务和技术需求,以共同决定最适合的方式。

步骤 1 创建 Kubernetes 集群

  1. 登录容器服务管理控制台
  2. 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,进入集群列表页面。
  3. 单击页面右上角的创建 Kubernetes 集群,在弹出的选择集群模板中,选择标准专有集群页面,单击创建
    默认进入Kubernetes 专有版集群配置页面。
  4. 设置集群的基本信息。本示例相关配置如下:
    配置项 配置说明
    集群名称 名称为1-63个字符,可包含数字、汉字、英文字符,或"-"。
    资源组 集群所处的资源组。
    地域 集群所处地域。
    专有网络 集群的专有网络。
    您可以在已有 VPC 列表中选择所需的 VPC 。
    • 如果您使用的 VPC 中当前已有 NAT 网关,容器服务会使用已有的 NAT 网关。
    • 如果 VPC 中没有 NAT 网关,系统会默认自动为您创建一个 NAT 网关。如果您不希望系统自动创建 NAT 网关,可以取消勾选页面下方的为专有网络配置 SNAT
      说明 若选择不自动创建 NAT 网关,您需要自行配置 NAT 网关实现 VPC 安全访问公网环境,或者手动配置 SNAT,否则 VPC 内实例将不能正常访问公网,会导致集群创建失败。
    虚拟交换机 集群的虚拟交换机。您可以在已有 vswitch 列表中选择所需的 vswitch 。

    您可以根据需要,选择1~3个 vswitch。推荐您选择3个 vswitch。

    节点类型 支持按量付费和包年包月。
    购买时长和自动续费(可选项) 您可以选择购买的时长及自动续费的时长。
    说明 选择包年包月节点类型时可配置。
    Master节点配置 选择实例数量、实例规格和系统盘。
    • Master 实例数量:选择3个或5个实例。
    • 实例规格:参见实例规格族
    • 系统盘:支持SSD云盘和高效云盘。
    Worker节点配置 您可选择新增实例或添加已有实例。若选择新增实例,可进行如下配置。
    • 实例规格:支持选择配置ECS实例规格。参见实例规格族
    • 系统盘:支持SSD云盘和高效云盘。
    • 挂载数据盘:支持SSD云盘、高效云盘和普通云盘。
    Docker 版本和Kubernetes 版本(可选项) 显示当前支持的Docker版本和Kubernetes版本,您可查看对应版本,并根据需要进行选择。
    说明 选择添加已有 Worker 实例时可配置。
    登录方式 支持设置密钥和密码,关于使用密钥登录的信息,参见SSH密钥对访问Kubernetes集群
    网络插件 支持Flannel和Terway,默认启用Flannel。具体可参见Flannel与Terway
    Pod网络CIDR和Service CIDR 具体如何规划可参见VPC下 Kubernetes 的网络地址段规划
    配置SNAT 可选,若不选择,需要自行配置NAT网关,或手动配置SNAT。
    公网访问
    • 如果选择开放,会创建一个EIP,并挂载到内网SLB上。此时,Master节点的6443端口(对应API Server)暴露出来,用户可以在外网通过kubeconfig连接/操作集群。
    • 若选择不开放,不会创建EIP,用户只能在VPC内部用kubeconfig连接/操作集群。
    SSH登录(可选项)
    • 选择开放公网 SSH 登录,您可以 SSH 访问集群。
    • 选择不开放公网 SSH 登录,将无法通过 SSH 访问集群,也无法通过 kubectl 连接集群。您可手动进行配置,具体操作参见SSH访问Kubernetes集群
    说明 勾选公网访问时可配置。
    云监控插件 在节点上安装云监控插件,可以在云监控控制台查看所创建ECS实例的监控信息。
    日志服务 您可使用已有Project或新建一个Project。

    勾选使用日志服务,会在集群中自动配置日志服务插件。创建应用时,您可通过简单配置,快速使用日志服务,详情参见使用日志服务进行Kubernetes日志采集

    RDS白名单 将节点 IP 添加到 RDS 实例的白名单。
    实例保护 为防止通过控制台或 API 误删除释放集群节点,该选项默认勾选。
    标签 为集群绑定标签。
    说明
    • 是必需的,而 是可选的,可以不填写。
    • 不能是 aliyun、http:// 、https:// 开头的字符串,不区分大小写,最多 64 个字符。
    • 不能是 http:// 或 https://,可以为空,不区分大小写,最多 128 个字符。
    • 同一个资源,标签键不能重复,相同标签键(Key)的标签会被覆盖。
    • 如果一个资源已经绑定了 20 个标签,已有标签和新建标签会失效,您需要解绑部分标签后才能再绑定新的标签。
    高级选项
    • 节点Pod数量:单节点可运行 Pod 数量的上限。
    • kube-proxy代理模式:支持 iptables 和 IPVS 两种模式。
      • iptables:成熟稳定的kube-proxy代理模式,Kubernetes service的服务发现和负载均衡使用iptables规则配置,但性能一般,受规模影响较大,适用于集群存在少量的service。
      • IPVS:高性能的kube-proxy代理模式,Kubernetes service的服务发现和负载均衡使用Linux ipvs模块进行配置,适用于集群存在大量的service,对负载均衡有高性能要求的场景。
    • CPU Policy:设置CPU Policy。
      • none:默认策略,表示启用现有的默认 CPU 亲和方案。
      • static:允许为节点上具有某些资源特征的 Pod 赋予增强的 CPU 亲和性和独占性。
    • 设置节点服务端口范围。默认端口范围为30000~32767。
    • 集群 CA:设置是否开启集群CA。

      如果勾选自定义集群 CA,可以将 CA 证书添加到 Kubernetes 集群中,加强服务端和客户端之间信息交互的安全性。

    • 工作流引擎:设置是否使用AGS。
      • 如果勾选 AGS,则创建集群时系统自动安装 AGS 工作流插件。
      • 如果不勾选,则需要手动安装 AGS 工作流插件,请参见AGS命令行帮助
    说明

    本例中,集群名称为 k8s-blockchain。

    可用区选择 华东1可用区A

  5. 最后单击 创建集群
    等待集群创建完成(约需要数分钟)。
  6. 返回集群列表页面, 选择刚创建的 k8s-blockchain 集群,单击 管理
    集群列表
  7. 在集群的基本信息页面 ,记录 Master 节点 SSH 连接地址 (此为公网地址)。
    集群基本信息
  8. 在节点列表页面, 记录当前集群对应的节点(Master 和 Worker)的 IP 地址 (此为内网地址)。
    节点列表

步骤 2 为 Worker 节点绑定弹性公网 IP

  1. 登录 IP 管理控制台
  2. 在左侧导航栏,单击弹性公网 IP > 弹性公网 IP ,然后单击 申请弹性公网IP
  3. 选择 k8s-blockchain 集群所在地域,对于其他设置,根据需要自行选择,然后单击 立即购买
  4. 开通完成后,等上述购买的 IP 实例出现在列表后,单击 绑定
  5. 在 ECS 实例下拉列表中,选择一个 worker 节点(名称是以 node 结尾的实例),单击 确定
  6. 完成绑定后,回到弹性公网 IP 列表,记录上述新建实例的 IP 地址。

步骤 3 创建文件系统和添加挂载点

  1. 登录 文件存储 NAS 控制台
  2. 在页面顶部地域列表中,单击 华东1。单击右上角的 创建文件系统
    创建文件系统
  3. 在弹出的创建文件系统 对话框进行配置,配置完成后单击 确定
    创建文件系统
    • 地域:选择 华东1,选择与容器集群相同的地域。
    • 存储类型:本示例选择 容量型
    • 协议类型:选择 NFS
    • 可用区:选择 华东1可用区B。同一地域不同可用区可以互通。
  4. 单击 点击前往
    提示信息
  5. 配置 NAS 存储包,完成后单击立即购买
    创建nas
    • 存储类型:本示例选择 容量型
    • 购买时长:本示例选择1个月,请根据实际需要选择。
  6. 在新创建的文件系统的操作列表中,单击 添加挂载点。在弹出的 添加挂载点 对话框中进行配置。完成后单击确定
    添加挂载点
    • 挂载点类型:选择 专有网络
    • VPC网络:选择在创建容器集群环节的 VPC 网络。
    • 交换机:选择在创建容器集群环节的虚拟交换机。
    • 权限组:选择 VPC 默认权限组
  7. 在文件系统的操作列表中,单击 管理。在文件系统详情页面记录 挂载地址
    查看挂在地址

步骤 4 配置部署区块链网络

  1. 在 Kubernetes 菜单下,单击左侧导航中的市场 > 应用目录。在右侧列表区域找到 ack-hyperledger-fabric,并单击该区域。
    部署区块链网络
  2. 应用目录-ack-hyperledger-fabric 应用界面右侧区域,选择部署集群,并填写发布名称
    配置ack-hyperledger-fabric
  3. 单击 参数 标签,查看或者修改相关部署参数。
    • sharedStorage: 输入步骤 3 创建文件系统和添加挂载点中记录的NAS文件系统挂载地址(必填,否则将部署失败)。
    • dockerImageRegistry:根据部署所在区域(中国或海外),从注释中的可选项中选择对应的容器镜像仓库地址填入。
    • externalAddress: 输入上文 Worker 节点绑定的弹性公网 IP,用于生成connection profile。
    部署参数
  4. 单击 创建
    说明 如参数中的sharedStorage未配置,部署过程将会报 spec.nfs.server: Required value的错误。出现此错误后,需要先删除对应的发布名称,然后填写sharedStorage参数值,并重新部署。
  5. 进入部署集群的控制台界面,查看区块链网络相关 pods 的状态,直到全部变为 Running。
    部署集群信息

容器控制台的 Kubernetes 服务也支持通过 helm 部署区块链网络,具体请参见配置部署区块链

步骤 5 用 CLI 测试区块链网络

  1. 在 Kubernetes 集群的 master 节点上,执行以下命令进入 CLI 容器。
    kubectl exec -it <fabricNetwork>-fabric-cli bash
  2. 执行以下命令开始 CLI 测试。
    ./cli-test.sh
  3. 测试过程中,按任意键继续下一步。
  4. 如测试过程中没有任何错误,并且最后出现如下字样,说明测试已经成功完成。
      ===================== Query on PEER4 on channel 'bankchannel' is successful ===================== 
      Press any key to continue...
      ===================== All GOOD, End-2-End execution completed =====================

步骤 6 访问区块链浏览器

  1. 登录容器服务管理控制台
  2. 在Kubernetes菜单下,单击左侧导航栏中的路由与负载均衡 > 服务,选择所需的集群和命名空间,找到<网络名称>-explorer服务并访问其外部端点。
    您也可在 Kubernetes 集群的 master 节点上运行 kubectl get svc 命令,或者登录容器服务控制台,进入 kubernetes 集群的控制台,单击左侧导航栏中的 服务,然后查看 <网络名称>-explorer 服务的 EXTERNAL-IP(外部端点)。查看服务
  3. 在网络浏览器中访问上述 EXTERNAL-IP(外部端点)。
    访问外部端点

步骤 7 删除区块链网络

  1. 在 Kubernetes 菜单下,在左侧导航栏单击应用 > 发布,选择Helm,在目标集群中选择区块链网络对应的发布名称,单击删除
    删除发布工程
  2. 在弹出的删除应用对话窗口,单击确定
    删除应用

至此我们便完成了环境准备、区块链配置部署、测试区块链、删除区块链的一系列基本操作。对于后续的开发测试,可以复用区块链配置部署、测试区块链、删除区块链的步骤;或者根据实际需要、按照产品文档的指引,进一步定制区块链网络环境。