如何设置 REST 服务器以与 Azure Kubernetes Service (AKS) 上的 Hyperledge



我在Azure Kubernetes Service(AKS(上的Hyperledger Fabric联盟上设置了Hyperledger Fabric。 .我已经在网络上安装了这个链码。我已经在 azure-cli 上测试了peer invokepeer query命令。它工作正常。现在我想使用这个 REST API 服务器与这个超级账本网络进行通信。帮助我设置此 REST 服务器。

编辑: 我通过以下方式编辑了这个配置文件。但是没有运气。

---
name: "balance-transfer"
x-type: "hlfv1"
description: "Balance Transfer Network"
version: "1.0"
#
# The client section will be added on a per org basis see org1.yaml and org2.yaml
#
#client:
#
# [Optional]. But most apps would have this section so that channel objects can be constructed
# based on the content below. If an app is creating channels, then it likely will not need this
# section.
#
channels:
mychannel:
orderers:
- orderer1.OrdererOrg
peers:
peer1.org1:
endorsingPeer: true
chaincodeQuery: true
ledgerQuery: true
eventSource: true
peer2.org1:
endorsingPeer: false
chaincodeQuery: true
ledgerQuery: true
eventSource: false
chaincodes:
- mycc:v0
organizations:
Org1:
mspid: org1
peers:
- peer1.org1
- peer2.org1
certificateAuthorities:
- ca-org1
adminPrivateKey:
path: ./artifacts/azure/peer/adminPrivateKey
signedCert:
path: ./artifacts/azure/peer/signcerts.pem
orderers:
orderer1.OrdererOrg:
url: grpcs://orderer1.XXXXXXXXXXXXXXXXX.eastus.aksapp.io:443
grpcOptions:
ssl-target-name-override: orderer1.XXXXXXXXXXXXXXXXX.eastus.aksapp.io
tlsCACerts:
path: ./artifacts/azure/orderer/ca.crt
peers:
peer1.org1:
url: grpcs://peer1.YYYYYYYYYYYYYY.eastus.aksapp.io:443
grpcOptions:
ssl-target-name-override: peer1.YYYYYYYYYYYYYY.eastus.aksapp.io
tlsCACerts:
path: ./artifacts/azure/peer/peer1_ca.crt
peer2.org1:
url: grpcs://peer2.TTTTTTTTTTTTT.eastus.aksapp.io:443
eventUrl: grpcs://peer2.TTTTTTTTTTTTT.eastus.aksapp.io:443
grpcOptions:
ssl-target-name-override: peer2.VVVVVVVVVV.eastus.aksapp.io
tlsCACerts:
path: ./artifacts/azure/peer/peer2_ca.crt
certificateAuthorities:
org1CA:
url: https://ca.ZZZZZZZZZZZZZ.eastus.aksapp.io:443
httpOptions:
verify: false
tlsCACerts:
path: ./artifacts/azure/org/org1.pem
registrar:
- enrollId: admin
enrollSecret: adminpw
caName: ca.org1

org1 的连接配置文件

{
"certificateAuthorities": {
"org1CA": {
"caName": "ca.org1",
"tlsCACerts": {
"pem": "pem1"
},
"url": "https://ca.m.eastus.aksapp.io:443"
}
},
"client": {
"connection": {
"timeout": {
"orderer": "300",
"peer": {
"endorser": "300"
}
}
},
"organization": "org1"
},
"name": "org1",
"organizations": {
"org1": {
"certificateAuthorities": [
"org1CA"
],
"mspid": "org1",
"peers": [
"peer1.org1",
"peer2.org1"
]
}
},
"peers": {
"peer1.org1": {
"grpcOptions": {
"hostnameOverride": "peer1.x.eastus.aksapp.io",
"ssl-target-name-override": "peer1.x.eastus.aksapp.io"
},
"tlsCACerts": {
"pem": "pem"
},
"url": "grpcs://peer1.x.eastus.aksapp.io:443"
},
"peer2.org1": {
"grpcOptions": {
"hostnameOverride": "peer2.x.eastus.aksapp.io",
"ssl-target-name-override": "peer2.x.eastus.aksapp.io"
},
"tlsCACerts": {
"pem": "pem"
},
"url": "grpcs://peer2.x.eastus.aksapp.io:443"
}
},
"version": "1.0.0",
"wallet": "org1"
}

订购者的连接配置文件。

{
"certificateAuthorities": {
"OrdererOrgCA": {
"caName": "ca.OrdererOrg",
"tlsCACerts": {
"pem": "pem"
},
"url": "https://ca.x.eastus.aksapp.io:443"
}
},
"client": {
"connection": {
"timeout": {
"orderer": "300",
"peer": {
"endorser": "300"
}
}
},
"organization": "OrdererOrg"
},
"name": "OrdererOrg",
"organizations": {
"OrdererOrg": {
"certificateAuthorities": [
"OrdererOrgCA"
],
"mspid": "OrdererOrg",
"orderers": [
"orderer1.OrdererOrg",
"orderer2.OrdererOrg",
"orderer3.OrdererOrg"
]
}
},
"orderers": {
"orderer1.OrdererOrg": {
"grpcOptions": {
"hostnameOverride": "orderer1.x.eastus.aksapp.io",
"ssl-target-name-override": "orderer1.x.eastus.aksapp.io"
},
"tlsCACerts": {
"pem": "pem"
},
"url": "grpcs://orderer1.x.eastus.aksapp.io:443"
},
"orderer2.OrdererOrg": {
"grpcOptions": {
"hostnameOverride": "orderer2.x.eastus.aksapp.io",
"ssl-target-name-override": "orderer2.x.eastus.aksapp.io"
},
"tlsCACerts": {
"pem": "pem"
},
"url": "grpcs://orderer2.x.eastus.aksapp.io:443"
},
"orderer3.OrdererOrg": {
"grpcOptions": {
"hostnameOverride": "orderer3.x.eastus.aksapp.io",
"ssl-target-name-override": "orderer3.x.eastus.aksapp.io"
},
"tlsCACerts": {
"pem": "pem"
},
"url": "grpcs://orderer3.x.eastus.aksapp.io:443"
}
},
"version": "1.0.0",
"wallet": "OrdererOrg"
}

您可以在 kubernetes 中将 REST API 服务器部署为独立的 pod(使用部署(。您需要使用环境变量提供网络配置TARGET_NETWORK。此配置可以按照服务器自述文件Network configuration considerations部分中的说明添加为文件。

涉及的步骤将是

  1. 为 API 服务器创建 docker 映像并推送到 ACR 存储库。
  2. 创建部署 yaml 文件以部署此 docker 映像(网络使用环境变量(
  3. 在 kubernetes 中创建类型LoadBalancer的服务,该服务在 Azure 中创建允许进行 http 调用的负载均衡器。

使用环境变量和文件连接到hyberledger网络需要特别注意。

最新更新