1. R3 Corda 简介
2. R3 Corda Configure file
network.yaml文件是用于建立Corda DLT网络的基本配置文件。该文件包含了基础结构和网络规范相关的所有信息。
3. network.yaml文件结构
![]() |
设置Corda DLT网络之前,需要使用所需的规格更新此文件。repo路径中提供了一个示例配置文件:platforms/r3-corda/configuration/samples/network-cordav2.yaml
为了更好的理解,这些配置需要按以下内容进行分组。
- type
- version
- frontend
- env
- docker
- orderers
- organizations
![]() |
3. 样本配置文件中的介绍
type:
定义平台选择,例如corda / fabric,在此示例中为Corda
version:
定义了所使用平台的版本,例如在此示例中,Corda版本为4.0,也支持并应使用Corda版本4.1。
frontend:
是一个标志,它定义是否为节点启用前端。其值只能启用/禁用。仅在安装示例供应链应用程序时适用。
env:
部分包含环境类型和其他(8443除外)Ambassador端口配置。由于尚未为Corda实施“ haproxy”,因此本节下“proxy”字段的值必须为“Ambassador”。
env
带有示例值的局部的快照如下
env:
type: "env_type" # tag for the environment. Important to run multiple flux on single cluster
proxy: ambassador # value has to be 'ambassador' as 'haproxy' has not been implemented for Corda
ambassadorPorts: 15010,15020 # Any additional Ambassador ports can be given here, must be comma-separated without spaces, this is valid only if proxy='ambassador'
retry_count: 20 # Retry count for the checks
external_dns: enabled # Should be enabled if using external-dns for automatic route config
env 字段介绍:
env下的部分字段是
字段 | 描述 |
---|---|
类型(type) | 环境类型。可以像dev / test / prod。 |
代理(proxy) | 选择集群入口控制器。目前支持“ambassador ”或“ haproxy” |
ambassador端口 | 可以在此处提供任何其他ambassador 端口;必须以逗号分隔,且不能使用空格10010,10020 。仅在以下情况下有效proxy: ambassador |
retry_count | 重试检查计数。 |
external_dns | 如果群集具有外部DNS服务,则必须进行设置,enabled 以便自动更新托管区域。 |
docker
部分包含构建和存储所有必需镜像的存储库的凭据。(注意:在运行Ansible脚本之前,请使用NMS Jenkins文件或/和Doorman Jenkins文件来构建和存储Docker镜像)
docker
带有示例值的部分的快照如下
# Docker registry details where images are stored. This will be used to create k8s secrets
# Please ensure all required images are built and stored in this registry.
docker:
url: "<url>"
username: "<username>"
password: "<password>"
docker
下的部分字段是
字段 | 描述 |
---|---|
网址 | Docker注册表URL |
用户名 | 登录所需的用户名凭证 |
密码 | 登录需要密码凭证 |
注意:在运行Ansible剧本之前,请按照以下说明构建和存储docker映像。
orderers
带有示例值的部分的快照如下
# Remote connection information for doorman and networkmap (will be blank or removed for hosting organization)
orderers:
- orderer:
type: doorman
uri: https://doorman.test.corda.blockchaincloudpoc.com:8443
certificate: home_dir/platforms/r3-corda/configuration/build/corda/doorman/tls/ambassador.crt
- orderer:
type: networkmap
uri: https://networkmap.test.corda.blockchaincloudpoc.com:8443
certificate: home_dir/platforms/r3-corda/configuration/build/corda/networkmap/tls/ambassador.crt
orderers
显示给网络的包含Doorman/网络映射的列表
字段 | 描述 |
---|---|
类型 | 对于Corda,networkmap 并且doorman 是orderers的唯一有效类型。 |
uri | Doorman/网络映射外部URL。这应该可以从所有节点到达。 |
证书 | Doorman和Networkmap的自定义证书的目录路径。 |
organizations
部分允许指定将要连接到网络的一个或多个组织。如果组织还托管网络的根目录(例如,doorman, membership service,etc),则这些服务也应在本节中列出。在简单示例中,1st Organisation托管网络的根,因此services doorman, nms and notary在1st Organisation的服务下。
下面是带有示例值的组织字段的快照
- organization:
name: manufacturer
country: CH
state: Zurich
location: Zurich
subject: "O=Manufacturer,OU=Manufacturer,L=Zurich,C=CH"
type: node
external_url_suffix: test.corda.blockchaincloudpoc.com
cloud_provider: aws # Options: aws, azure, gcp
organizations
下的每个组织都有以下字段
字段 | 描述 |
---|---|
名称 | 机构名称 |
国家 | 组织所属国家 |
州 | 组织所属州 |
位置 | 机构所在地 |
Subject | 主题格式可以在OpenSSL主题中参考 |
type | 该字段可以是doorman-nms-notary / node |
external_url_suffix | 集群的公共URL后缀。这是DNS提供程序上Ambassador服务的已配置路径。 |
cloud_provider | 该组织的Kubernetes集群的云提供商。该字段可以是aws,azure或gcp |
aws | 当组织集群位于AWS上时 |
k8s | Kubernetes集群部署变量。 |
vault | 在示例中包含Hashicorp Vault服务器地址和根令牌 |
gitops | Git Repo详细信息,它将由GitOps / Flux使用。 |
services | 包含可能是peers/doorman/nms/notary服务列表 |
对于aws和k8s字段,下面是带有示例值的快照
aws:
access_key: "<aws_access_key>" # AWS Access key, only used when cloud_provider=aws
secret_key: "<aws_secret>" # AWS Secret key, only used when cloud_provider=aws
# Kubernetes cluster deployment variables.
k8s:
region: "<k8s_region>"
context: "<cluster_context>"
config_file: "<path_to_k8s_config_file>"
每个organization下的aws字段包含
字段 | 描述 |
---|---|
aws.access_key | AWS访问密钥 |
aws.secret_key | AWS密钥 |
每个组织下的k8s字段
字段 | 描述 |
---|---|
k8s.region | Kubernetes集群部署所在的区域,例如:eu-west-1 |
k8s.context | 组织实体应部署到的集群的上下文/名称 |
k8s.config_file | kubernetes集群配置文件的路径 |
# Git Repo details which will be used by GitOps/Flux.
gitops:
git_ssh: "git@github.com:<username>/blockchain-automation-framework.git" # Gitops ssh url for flux value files
branch: "<branch_name>" # Git branch where release is being made
release_dir: "platforms/r3-corda/releases/dev" # Relative Path in the Git repo for flux sync per environment.
chart_source: "platforms/r3-corda/charts" # Relative Path where the Helm charts are stored in Git repo
git_push_url: "github.com/<username>/blockchain-automation-framework.git"
username: "<username>" # Git Service user who has rights to check-in in all branches
password: "<password>" # Git Server user password/personal token
private_key: "<path to gitops private key>"
每个organization下的gitops字段包含
字段 | 描述 |
---|---|
gitops.git_ssh | 应当在其中同步通量的存储库的SSH URL |
gitops.branch | 存储Helm Charts and value files的存储库分支 |
gitops.release_dir | flux应同步文件的相对路径 |
gitops.chart_source | 存储Helm Charts的相对路径 |
gitops.git_push_url | git push的Gitops https URL,例如“ github.com/hyperledger-labs/blockchain-automation-framework.git” |
gitops。用户名 | 有权在存储库上进行读写的用户名 |
gitops.password | 有权在存储库中进行读写的用户密码 |
gitops.private_key | 具有对git repo的写访问权的私钥文件的路径 |
organizations中
Corda部分下每个组织的服务字段包含服务清单,可以是doorman/nms/notary/peers
下面是带有示例值的Doorman服务的快照
services:
doorman:
name: doormanskar
subject: "CN=Corda Doorman CA,OU=DLT,O=DLT,L=Berlin,C=DE"
type: doorman
ports:
servicePort: 8080
targetPort: 8080
Doorman服务的字段
字段 | 描述 |
---|---|
services.doorman.name | Doorman服务的名称 |
services.doorman.subject | Doorman服务的证书主题。主题格式可以在 OpenSSL主题 中引用 |
services.doorman.type | 服务类型必须为 doorman |
services.doorman.ports.servicePort | 可访问Doorman服务的HTTP端口号 |
services.doorman.ports.targetPort | Doorman docker-container的HTTP目标端口号 |
nms服务示例值的快照
nms:
name: networkmapskar
subject: "CN=Network Map,OU=FRA,O=FRA,L=Berlin,C=DE"
type: networkmap
ports:
servicePort: 8080
targetPort: 8080
nms服务下的字段
字段 | 描述 |
---|---|
services.nms.name | NetworkMap服务的名称 |
services.nms.subject | NetworkMap服务的证书主题。主题格式可以在OpenSSL主题中引用 |
services.nms.type | 服务类型必须为 networkmap |
services.nms.ports.servicePort | 可访问NetworkMap服务的HTTP端口号 |
services.nms.ports.targetPort | NetworkMap docker-container的HTTP目标端口号 |
下面是带有示例值的公证服务的快照
# Currently only supporting a single notary cluster, but may want to expand in the future
notary:
name: notaryskar
subject: "O=Notary,OU=Notary,L=London,C=GB"
type: notary
p2p:
port: 10002
targetPort: 10002
ambassador: 10010 #Port for ambassador service (use one port per org if using single cluster)
rpc:
port: 10003
targetPort: 10003
rpcadmin:
port: 10005
targetPort: 10005
dbtcp:
port: 9101
targetPort: 1521
dbweb:
port: 8080
targetPort: 81
Notary服务下的字段是
字段 | 描述 |
---|---|
services.notary. name | Notary服务名称 |
services.notary.subject | Notary服务的证书主题。主题格式可以在 OpenSSL主题 中引用 |
services.notary.type | 服务类型必须为 notary |
services.notary.p2p.port | Corda Notary P2P端口。用于Notary人和同一网络的节点之间的通信 |
services.notary.p2p.targetport | 运行Notary服务的P2P端口。 |
services.notary.p2p.ambassadorport | 通过大使提供Notary服务的港口 |
services.notary.rpc.port | Corda Notary人RPC端口。用于Notary和同一网络的节点之间的通信 |
services.notary.rpc.targetport | 运行Notary服务的RPC端口。 |
services.notary.rpcadmin.port | Corda Notary Rpcadmin端口。用于RPC管理员绑定 |
services.notary.dbtcp.port | Corda Notary DbTcp端口。用于将数据库公开给其他服务 |
services.notary.dbtcp.targetPort | Corda Notary DbTcp目标端口。运行数据库服务的端口 |
services.notary.dbweb.port | Corda Notary dbweb端口。用于将dbweb公开给其他服务 |
services.notary.dbweb.targetPort | Corda Notary dbweb目标端口。dbweb服务运行的端口 |
下面是带有示例值的Peer服务的快照
# The participating nodes are named as peers
services:
peers:
- peer:
name: manufacturerskar
subject: "O=Manufacturer,OU=Manufacturer,L=47.38/8.54/Zurich,C=CH"
type: node
p2p:
port: 10002
targetPort: 10002
ambassador: 10020 #Port for ambassador service (use one port per org if using single cluster)
rpc:
port: 10003
targetPort: 10003
rpcadmin:
port: 10005
targetPort: 10005
dbtcp:
port: 9101
targetPort: 1521
dbweb:
port: 8080
targetPort: 81
springboot: # This is for the springboot server
targetPort: 20001
port: 20001
expressapi: # This is for the express api server
targetPort: 3000
port: 3000
Peer服务下的字段是
字段 | 描述 |
---|---|
services.peer.name | Corda节点的名称 |
services.peer.type | 服务类型必须为 node |
services.peer.subject | 节点legal名称主题。 |
services.peer.auth | Corda节点的保险柜授权 |
services.peer.p2p.port | Corda Node P2P端口,用于同一网络的节点之间的通信 |
services.peer.rpc.port | Corda节点RPC端口。用于不同网络的节点之间的通信 |
services.peer.rpcadmin.port | Corda节点Rpcadmin端口。用于RPC管理员绑定 |
services.peer.dbtcp.port | Corda节点DbTcp端口。用于将数据库公开给其他服务 |
services.peer.dbtcp.targetPort | Corda节点DbTcp目标端口。运行数据库服务的端口 |
services.peer.dbweb.port | Corda节点dbweb端口。用于将dbweb公开给其他服务 |
services.peer.dbweb.targetPort | Corda节点dbweb目标端口。dbweb服务运行的端口 |
services.peer.springboot.port | Springboot服务器端口。用于将springboot暴露给其他服务 |
services.peer.springboot.targetPort | Springboot服务器目标端口。运行springboot服务的端口 |
services.peer.expressapi.port | Expressapi端口。用于将expressapi暴露给其他服务 |
services.peer.expressapi.targetPort | Expressapi目标端口。运行expressapi服务的端口 |