2017-11-08 45 views
1

현재 Hypergerger 패브릭 네트워크에 대한 도커 작성 설정을 Kubernetes로 이식하려고하고 있으며 최종 사용자 인터페이스를 사용하여 cli 컨테이너에서 chaincode를 인스턴스화 할 때이 오류가 계속 발생합니다. 여기 Hyperbandger 패브릭 네트워크에 대한 Kubernetes 설정에서 체인 코드 인스턴스 생성이 실패합니다.

2017-11-07 20:49:55.476 UTC [shim] userChaincodeStreamGetter -> ERRO 001 Error trying to connect to local peer: x509: certificate signed by unknown authority (possibly because of "x509: ECDSA verification failure" while trying to verify candidate authority certificate "tlsca.org0.example.com") 
Error starting Simple chaincode: Error trying to connect to local peer: x509: certificate signed by unknown authority (possibly because of "x509: ECDSA verification failure" while trying to verify candidate authority certificate "tlsca.org0.example.com") 

내 암호-config.yml입니다 : 엔드 - 투 - 엔드 시나리오는 직물의 예에서 제공

OrdererOrgs: 
    - Name: Orderer 
    Domain: example.com 
    Specs: 
     - Hostname: orderer 

PeerOrgs: 
    - Name: Org0 
    Domain: org0.example.com 
    Specs: 
     - Hostname: peer0 
     - Hostname: peer1 
     - Hostname: ca 
    Users: 
     Count: 2 

그리고 여기가 피어 매니페스트 내는 Kubernetes에 사용했던 환경 변수 창 :

env: 
    - name: CORE_PEER_ID 
     value: peer0.org0.example.com 
    - name: CORE_PEER_ADDRESS 
     value: peer0.org0.example.com:7051 
    - name: CORE_PEER_ADDRESSAUTODETECT 
     value: "true" 
    - name: CORE_PEER_TLS_SERVERHOSTOVERRIDE 
     value: peer0.org0.example.com 
    - name: CORE_PEER_GOSSIP_EXTERNALENDPOINT 
     value: peer0.org0.example.com:7051 
    - name: CORE_PEER_LOCALMSPID 
     value: Org0MSP 
    - name: CORE_LEDGER_STATE_STATEDATABASE 
     value: CouchDB 
    - name: CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS 
     value: localhost:5984 
    - name: CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME 
     value: 
    - name: CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD 
     value: 
    - name: CORE_VM_ENDPOINT 
     value: unix:///host/var/run/docker.sock 
    - name: CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE 
     value: bridge 
    - name: CORE_LOGGING_LEVEL 
     value: DEBUG 
    - name: CORE_PEER_TLS_ENABLED 
     value: "true" 
    - name: CORE_PEER_GOSSIP_USELEADERELECTION 
     value: "true" 
    - name: CORE_PEER_GOSSIP_ORGLEADER 
     value: "false" 
    - name: CORE_PEER_PROFILE_ENABLED 
     value: "true" 
    - name: CORE_PEER_TLS_CERT_FILE 
     value: /etc/hyperledger/fabric/tls/server.crt 
    - name: CORE_PEER_TLS_KEY_FILE 
     value: /etc/hyperledger/fabric/tls/server.key 
    - name: CORE_PEER_TLS_ROOTCERT_FILE 
     value: /etc/hyperledger/fabric/tls/ca.crt 

체인 코드 인스턴스화 단계까지는 채널 제작, 채널 피어 연결, 앵커 피어 업데이트, 체인 코드 설치 등 모든 것이 잘 수행되었습니다.

답변

0

Fabric이 많이 변경되어 소스 코드의 일부를 다시 찾지 않아 소스 코드를 확인할 수 없었습니다 (필자의 대답을 편집 할 것입니다). 이 오류를 생성하지만, 나는 마침내 그것을 알아낼 수 있었다고 확신합니다. (다음 포드를 회전 당신은 인증서 표시의 올바른 세트를 생성 한

  • 및 엔드 - 투 - 엔드 시나리오를 실행하려고 시도 :

    그래서이 오류 상황을 매우 특정 조건에서 발생할 수 성공했거나 성공하지 못할 수도 있음).
  • 는 그런 다음, cryptogen를 사용하여 인증서 표시 세트를 재생 포드의 새로운 세트를 스핀 업, 먼저 기존 chaincode 이미지를 제거하지 않고 다시 엔드 - 투 - 엔드 시나리오를 실행하려고했습니다. 어떻게됩니까

는 chaincode의 이미지에 구운 CORE_* 환경 변수의 일부뿐만 아니라합니다 (TLS의 rootcert로 생성된다. 그러나, 당신은 엔드 - 투 - 엔드의 실행 사이에 인증서 표시 세트를 재생하는 경우 시나리오에서 체인 코드 이미지를 제거하지 않고 chaincode 이미지가 구워진 old rootcert에 대한 새로운 최종 엔티티 인증서를 확인하려고 시도하게됩니다.

다음 단계를 수행하여 최종 사용자 측에서 성공적으로 확인했습니다.

  1. Minikube (또는 Kubernetes를 실행중인 모든 클러스터)에서 모든 체인 코드 컨테이너를 제거하십시오.
  2. 새 포드 세트 회전 및 종단 간 시나리오 실행 - 성공해야합니다. 그렇지 않다면 이것은 당신과 다른 문제입니다.
  3. 포드를 분해합니다. certs를 다시 생성하십시오.
  4. 포드를 다시 위로 돌립니다. 엔드 - 투 - 엔드 시나리오를 다시 실행하십시오. 이번에는 오류가 나타납니다.

TL; DRcryptogen를 사용하여 인증서 표시의 새로운 세트를 재생성 경우 chaincode 컨테이너 이미지를 제거하는 것을 잊지 마십시오.