hyperledger-bevel / bevel

An automation framework for rapidly and consistently deploying production-ready DLT platforms
https://hyperledger-bevel.readthedocs.io/en/latest/
Apache License 2.0
346 stars 719 forks source link

Fabric Ops Console: implement `deployer` package #2558

Open amozghovyi opened 6 months ago

amozghovyi commented 6 months ago

Is your feature request related to a problem? Please describe.

I deployed Fabric v2.5.4 network via Bevel v1.0.1 and Ops Console unable to connect ordering service. Because of this, adding a channel via Ops Console also does not work.

The same issue is in https://github.com/hyperledger-labs/fabric-operations-console/issues/594 In the Dev tools in browser i see the following error while Ops Console trying to connect to Ordering services:

RestApi:GET /deployer/api/v3/instance/$iid/type/orderer/component/gtchkd10ord2 Formatted RestApi error into: REQUEST_ERROR_IN_RESPONSE: GET /deployer/api/v3/instance/$iid/type/orderer/component/gtchkd10ord2 failed with 400:  

details": "this api is not available to Console's without the \"deployer\" counterpart.

The same problem occurred when I tried to use fabric-operations-console docker image (ghcr.io/hyperledger-labs/fabric-console:v1.0.9-5) instead of Bevel Ops Console docker image.:

stitch-dependencies.min.js:72 RestApi: GET /deployer/api/v3/instance/$iid response: {
    "statusCode": 503,
    "error": "api is not available",
    "msg": "this api is not available to Console's without the \"deployer\" counterpart"
}
2024/05/02-08:46:39.352 - warn: [deployer apis] import only mode, deployer data requested but there is no deployer to ask
2024/05/02-08:46:39.352 - error: [cluster type] unable to get cluster type from deployer, communication error error=import only - deployer is not available
2024/05/02-08:46:39.353 - warn: [startup - cluster type] unable to retrieve cluster type from deployer

 warn: [deployer apis] import only mode, deployer data requested but there is no deployer to ask

2024/05/02-08:52:30.514 - silly: --------------------------------- incoming request ---------------------------------
2024/05/02-08:52:30.514 - info: [WOJ1:FGCJw] New GET request for url: /deployer/api/v3/instance/$iid
2024/05/02-08:52:30.516 - debug: [middle] this api requires deployer, but the "import_only_enabled" setting indicates there is no deployer.
2024/05/02-08:52:30.567 - info: [WOJ1:FGCJw] ended HTTP/1.1 GET /deployer/api/v3/instance/$iid 503 1868 54 ms b89a2
2024/05/02-08:52:30.573 - info: [WOJ1:TXPTU] ended HTTP/1.1 GET /api/v3/migration/status 200 1868 87 ms b89a2

It looks like deployer is a separate package for Ops Console (https://github.com/hyperledger-labs/fabric-operations-console/tree/main/packages/fabric-deployer). It has separate Docker file (https://github.com/hyperledger-labs/fabric-operations-console/blob/main/packages/fabric-deployer/Dockerfile) and not included to main Ops Console docker file (https://github.com/hyperledger-labs/fabric-operations-console/blob/main/docker/console/Dockerfile).

Also all references to the deployer_url variable inside the Bevel Ops Console container have a default value of http://example.com:80.

Describe the solution you'd like

Implement deployer package into Bevel Ops Console helm chart as separate deployment or as container in Ops Console statefulset.

Describe alternatives you've considered A clear and concise description of any alternative solutions or features you've considered.

Additional context Issue with the same problem with Ordering Services- https://github.com/hyperledger-labs/fabric-operations-console/issues/594 Issues where the deployer is mentioned as a separate component: https://github.com/hyperledger-labs/fabric-operations-console/issues/34 https://github.com/hyperledger-labs/fabric-operations-console/issues/583 https://github.com/hyperledger-labs/fabric-operations-console/issues/522

Orderer service communication issue may be preventing channel creation: image