Я пытаюсь настроить тестовую сеть Fabri c v2.0 (https://hyperledger-fabric.readthedocs.io/en/release-2.0/test_network.html) на kubernetes (локально на minikube). У меня ошибка с peer channel join
.
. Я создал файлы kubernetes на основе docker -compose-test- net .yaml тестовой сети. Я успешно развернул следующие модули:
- заказчик (плот)
- 2 пира (peer0-org1-example-com и peer0-org2-example-com)
- a fabri c -tools pod.
Я успешно генерирую криптографический материал с помощью cryptogen и configtxgen.
Я успешно создаю канал: когда я нахожусь в fabri c -tools pod:
bash-5.0# peer channel create -o orderer-example-com:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f /fabric/${CHANNEL_NAME}.tx --tls --cafile $ORDERER_CA
2020-02-11 08:10:14.057 CET [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
2020-02-11 08:10:14.080 CET [cli.common] readBlock -> INFO 002 Expect block, but got status: &{NOT_FOUND}
...
2020-02-11 08:10:15.105 CET [cli.common] readBlock -> INFO 00c Received block: 0
Но когда я пытаюсь подключиться к каналу первому пиру, возникает ошибка. Я тратил дни на это, и я не могу найти решение. Ваша помощь будет принята с благодарностью !!
в модуле fabri c -tools:
bash-5.0# peer channel join -b $CHANNEL_NAME.block
Error: error getting endorser client for channel: endorser client failed to connect to peer0-org1-example-com:7051: failed to create new connection: context deadline exceeded
, что я вижу в журналах модуля peer0-org1-example-com:
[31m2020-02-11 08:11:29.945 CET [core.comm] ServerHandshake -> ERRO 1b9[0m TLS handshake failed with error remote error: tls: bad certificate server=PeerServer remoteaddress=172.17.0.6:43270
[36m2020-02-11 08:11:29.945 CET [grpc] handleRawConn -> DEBU 1ba[0m grpc: Server.Serve failed to complete security handshake from "172.17.0.6:43270": remote error: tls: bad certificate
Спасибо !!
ОБНОВЛЕНИЕ:
Если я запускаю соединение с равноправными каналами непосредственно на модуле peer0-org1-example-com, я вижу, что существует проблема с сертификатом:
addrConn.createTransport failed to connect to {peer0-org1-example-com:7051 0 <nil>}. Err :connection error: desc = "transport: authentication handshake failed: x509: certificate is valid for peer0.org1.example.com, peer0, localhost, peer0.org1.example.com, peer0, localhost, peer0.org1.example.com, peer0, localhost, not peer0-org1-example-com". Reconnecting.
Кажется, что он примет соединение для peer0.org1.example.com, но не для peer0-org1-example-com. Но в Kubernetes это не позволяет мне ставить точки в названиях сервисов и развертываний, поэтому я ставлю тире. Ты знаешь как это решить? Я пытался заставить инструмент cryptogen генерировать сертификаты для peer0-org1-example-com, но он все испортил. Я думаю, что было бы лучше сделать имена кубернетес с точками, но я не могу это сделать.
Имена в файлах развертываний одноранговых узлов:
apiVersion: apps/v1
kind: Deployment
metadata:
name: peer0-org1-example-com
spec:
selector:
matchLabels:
name: peer0-org1-example-com
replicas: 1
template:
metadata:
labels:
name: peer0-org1-example-com
Имена в файлы одноранговых сервисов:
apiVersion: v1
kind: Service
metadata:
name: peer0-org1-example-com
labels:
run: peer0-org1-example-com
spec:
type: ClusterIP
selector:
name: peer0-org1-example-com
ports:
- protocol: TCP
port: 7051
name: grpc