1. 前言
当我们想要使用Blockchain Automation Framework之前,我们需要在部署区块链网络和/或操作区块链自动化框架的平台上安装了所有先决条件,可以参考Configure_prerequisites进行配置。
2. 为Blockchain Automation Framework配置先决条件
2.1 Ansible详细目录文件
在区块链自动化框架中,我们通过运行Ansible剧本的机器连接到Kubernetes集群,并且不直接修改或连接任何其他机器。区块链自动化框架的样本清单文件位于此处。将此文件的内容添加到您的Ansible主机配置文件中(通常在文件/ etc / ansible / hosts中)。在这里阅读更多有关Ansible库存的信息。
2.2 GitOps的私钥
为了使Git存储库与集群同步,Blockchain Automation框架为每个集群配置Flux。身份验证通过SSH密钥进行,因此应在运行剧本之前生成此密钥。运行以下命令以生成名为gitops的私钥-公钥对。
区块链自动化框架使用一些自定义构建的docker映像,这些映像不公开(自此发行版开始)。这些docker映像需要由您构建,然后上传到docker注册表,例如https://hub.docker.com/。
注意:区块链自动化框架建议将私有Docker注册表用于生产。可以在network.yaml文件中提供docker 注册表的用户名/密码,以便Kubernetes集群可以访问注册表。
2.4 Alpine Utils
Alpine-utils Docker镜像是在区块链自动化框架(BAF)中使用的轻量级实用程序映像。它主要用作BAF Kubernetes部署中的初始化容器,以连接到Hashicorp Vault下载证书。要生成映像,请从platform / shared / images文件夹执行以下命令。
sudo docker build -t alpine-utils:1.0 -f alpine-utils.Dockerfile .
上面的命令将创建一个带有标签alpine-utils:1.0的镜像。如果要将此镜像上传到注册表,请相应地更新标签,然后推送到docker。示例命令如下所示:
sudo docker tag alpine-utils:1.0 adopblockchaincloud0502.azurecr.io/alpine-utils:1.0
sudo docker push adopblockchaincloud0502.azurecr.io/alpine-utils:1.0
注意:在上面的示例命令中,请根据您的注册表替换docker映像/标签名称,并拥有自己的docker存储库以进行推送。
2.5 LinuxKit基础
在platform / r3-corda / images / linuxkit-base中构建LinuxKit Base映像。
2.6 Corda
在platform / r3-corda / images / doorman中构建Corda Doorman映像。
2.7 Corda网络图
在platform / r3-corda / images / networkmap构建Corda Networkmap映像。
2.8 Corda节点
在platform / r3-corda / images构建Corda节点映像。
2.9 Unseal Hashicorp Vault
Hashicorp Vault是区块链自动化框架的先决条件之一。如果尚未初始化和密封,请完成以下步骤以密封并访问保管库。
- 安装Vault客户端。请遵循 “Install Vault” 中的说明。
- 将环境变量VAULT_ADDR设置为保管库服务。请注意,应该可以从运行此命令的主机以及Ansible控制器和Kubernetes节点访问此服务。
export VAULT_ADDR=http://my-vault-server:9000
现在执行以下命令:
vault operator init -key-shares=1 -key-threshold=1
它将给出以下输出:
Unseal Key 1: << unseal key>>
Initial Root Token: << root token>>
将根令牌和解封密钥保存在安全的位置。在运行Ansible剧本以部署DLT网络之前,将在Blockchain Automation框架的network.yaml文件中更新此根令牌。
使用以下命令解封:
vault operator unseal << unseal-key-from-above >>
运行以下命令以登录并检查Vault是否已打开:
vault login << give the root token >>`
您可能会在初始化Vault时生成多个根令牌,并删除在network.yaml文件中使用的一个令牌,因为在Ansible日志中可能会看到该令牌。
2.10 Ambassador
区块链自动化框架(BAF)使用Ambassador进行集群间通信。为了使一个Kubernetes集群中的BAF Kubernetes服务能够与另一个集群中的服务对话,需要按照以下步骤配置大使:
- 将Ambassador部署到群集上后(手动或使用
platforms/shared/configuration/kubernetes-env-setup.yaml
剧本),获取Ambassador服务的外部IP地址。
kubectl get services -o wide
- 上面命令的输出将如下所示:
- Ambassador服务输出,从输出中复制EXTERNAL-IP的Ambassador服务。
注意:如果Playbook配置了Ambassador,则必须在执行Playbook时完成此配置,否则部署将失败。配置您的子域配置,以将外部DNS名称重定向到该外部IP。例如,如果您要将外部域后缀配置为test.corda.blockchaincloudpoc.com,则更新DNS映射以将所有请求从ALIAS 重定向到* .test.corda.blockchaincloudpoc.com从上方到EXTERNAL-IP。在AWS Route53中,设置如下所示(在托管区域中)。 Ambassador外部DNS配置如果您不想在每次更改DNS名称时都手动更新路由配置,则可以使用外部DNS自动更新DNS路由。按照您的云提供商的步骤进行操作,然后在BAF配置文件(network.yaml)的部分中使用。
external_dns:enabledenv
注意:此处未提供外部DNS设置的详细配置,请参考上面的链接。
2.11 HAProxy入口
从0.3.0.0版开始,区块链自动化框架(BAF)使用HAProxy Ingress Controller进行光纤网络的集群间通信。为了使一个Kubernetes集群中的Fabric GRPC服务能够与另一个集群中的GRPC服务进行通信,需要按照以下步骤配置HAProxy:
- 在BAF配置文件(network.yaml)的部分中使用。
proxy: haproxy
env
platforms/shared/configuration/kubernetes-env-setup.yaml
使用BAF配置文件执行剧本,然后获取HAProxy控制器服务的外部IP地址。
kubectl get services --all-namespaces -o wide
- 复制EXTERNAL-IP为haproxy-ingress在命名空间服务进入控制器(ingress-controller)的输出信息。
- 配置您的子域配置,以将外部DNS名称重定向到该外部IP。
- 例如,如果您要将外部域后缀配置为test.corda.blockchaincloudpoc.com
- 更新DNS映射以将所有请求从ALIAS上重定向到* .test.corda.blockchaincloudpoc.com并指向EXTERNAL-IP。
- 此外,您可以使用上面的外部DNS自动配置路由。