bevel icon indicating copy to clipboard operation
bevel copied to clipboard

feat(fabric): install multiple chaincodes on peers

Open KarthikSamaganam550 opened this issue 5 years ago • 8 comments

Description :

Now BAF is supporting to install single chaincode on peer. I would like to install multiple chaincodes on peers

Proposal Summary:

would like to install multiple chaincodes on peers. And the proposal network.yaml would be like this

network.yaml


1. network:
2.   chaincodes:
3.     - chaincode1: 
4.         ........
5.     - chaincode2:
6.         ........    
7.     - chaincode3:
8.         ........
9.   organizations:
10.     - organization:
11.       name: <name of the org1>
12.       services:
13.         peers:
14.           - peer:
15.             name: peer0  
16.             chaincodes:
17.               - name: <Name of the chaincode>
18.                 version : <version of the chaincode> 
19.                 installed: true | false  # default value is false         
20.               - name: <Name of the chaincode>
21.                 version : <version of the chaincode>
22.                 installed: true | false  # default value is false 
23.           - peer:
24.             name: peer2
25.             chaincodes:
26.               - name: <Name of the chaincode>
27.                 version : <version of the chaincode> 
28.                 installed: true | false  # default value is false         
29.               - name: <Name of the chaincode>
30.                 version : <version of the chaincode> 
31.                 installed: true | false  # default value is false
32.     - organization:
33.       name: <name of the org2>
34.       services:
35.         peers:
36.           - peer:
37.             name: peer0
38.             chaincodes:
39.               - name: <Name of the chaincode>
40.                 version : <version of the chaincode> 
41.                 installed: true | false  # default value is false         
42.               - name: <Name of the chaincode>
43.                 version : <version of the chaincode> 
44.                 installed: true | false  # default value is false
45.           - peer:
46.             name: peer2
47.             chaincodes:
48.               - name: <Name of the chaincode>
49.                 version : <version of the chaincode>  
50.                 installed: true | false  # default value is false        
51.               - name: <Name of the chaincode>
52.                 version : <version of the chaincode> 
53.                 installed: true | false  # default value is false
54.       - organization:
55.         name: <name of the org3>
56.         services:
57.           peers:
58.             - peer:
59.               name: peer0
60.               chaincodes:
61.                 - name: <Name of the chaincode>
62.                   version : <version of the chaincode>  
63.                   installed: true | false  # default value is false        
64.                 - name: <Name of the chaincode>
65.                   version : <version of the chaincode> 
66.                   installed: true | false  # default value is false
67.             - peer:
68.               name: peer2
69.               chaincodes:
70.                 - name: <Name of the chaincode>
71.                   version : <version of the chaincode>  
72.                   installed: true | false  # default value is false        
73.                 - name: <Name of the chaincode>
74.                   version : <version of the chaincode>  
75.                   installed: true | false  # default value is false          
76.   channels:
77.     - channel:
78.       channel_name: <channel name1>
79.       chaincode: 
80.          - name: <chaincode name>
81.            version: <version of the chaincode>
82.          - name: <chaincode name>
83.            version: <version of the chaincode>
84.       participants:
85.         - organization:
86.           name: <name of the org 1>
87.           peers:
88.             - peer:
89.               name: peer0
90.             - peer:
91.               name: peer1
92.         - organization:
93.           name: <name of the org 2>
94.           peers:
95.             - peer:
96.               name: peer0
97.             - peer:
98.               name: peer1 
99.     - channel:
100.       channel_name: <channel name2>
101.       chaincode: 
102.          - name: <chaincode name>
103.            version: <version of the chaincode>
104.          - name: <chaincode name>
105.            version: <version of the chaincode>      
106.       participants:
107.         - organization:
108.           name: <name of the org 2>
109.           peers:
110.             - peer:
111.               name: peer0
112.             - peer:
113.               name: peer1
114.         - organization:
115.           name: <name of the org 3>
116.           peers:
117.             - peer:
118.               name: peer0
119.             - peer:
120.               name: peer1      

                       

Note :

Here with the chaincode section in the network.yaml file defines all the chaincode and its parameters . And in the remaining places where we need to use the chaincode just need to use the name and version of the chaincode.

KarthikSamaganam550 avatar Dec 08 '20 12:12 KarthikSamaganam550

@KarthikSamaganam550 is there any update on this issue?

sownak avatar Sep 01 '21 14:09 sownak

i would like to work on this issue

divyabhanu97 avatar Feb 03 '22 10:02 divyabhanu97

@divyabhanu97 Thanks for taking this up. This is assigned to you now.

sownak avatar Feb 03 '22 11:02 sownak

this is a really necessary feature for production environments with multiple uses cases +1.

joseucarvajal avatar Apr 21 '22 00:04 joseucarvajal

@divyabhanu97, any updates on this issue ?

suvajit-sarkar avatar May 23 '22 12:05 suvajit-sarkar

Hi Suvajit, i have tested the external chaincode deployment with kubernetes and bevel, changes pending with bevel, i am trying to complete it ASAP

divyabhanu97 avatar May 23 '22 13:05 divyabhanu97

Hi @divyabhanu97, please at least send a draft PR for this issue

suvajit-sarkar avatar Jun 20 '22 12:06 suvajit-sarkar

Hi Suvajith, Manual Deployment Steps: Step 1: Generation of certificates for organization that requires external chaincode Step 2: Create chaincode files with connection.json and metadata.json and package it in .tgz format. Make sure Connection.json should have server address and values of certificates generated. Step 3: Copy the packaged chaincode into organization containers and go into peer cli and install the chaincode using “peer lifecycle chaincode install ” Step 4: Create configmap for certificates generated and map the certificates with external chaincode deployment file, run external chaincode as pod &deployment and expose as a service Step 5: Use the exposed chaincode Service IP to create a DNS name. Step 6: Go inside the peer cli and approve and commit the chaincode If the commit is successful try to invoke the chaincode from cli and query. these manual steps are working fine for now, i am in the middle of automation with bevel..

divyabhanu97 avatar Jun 20 '22 13:06 divyabhanu97