Eclipse 数据空间组件-最小化运行环境MVD_of_EDC-9

30 阅读6分钟

以下是日文版操作说明:MVD_of_EDC |备忘录博客

Eclipse 数据空间 设置组件

首先,创建一个 Eclipse Dataspace 设置组件 (EDC)。 EDC 是实现数据空间数据联动的框架。 请按照以下步骤设置 EDC:

1. 准备

项目readme描述了 Requirements 所需的环境。

  • Docker
  • KinD
  • Terraform
  • JDK 17+
  • Git
  • shell
  • Postman
  • openssl,
  • newman
  • jq(curl 环境下的json处理命令,是个单独的程序)
  • Kubernetes

OpenSSL 协议安装

sudo apt install openssl 

newman安装

sudo apt install nodejs npm n 
sudo n stable 
sudo npm install -g newman 

克隆源代码

git clone https://github.com/eclipse-edc/MinimumViableDataspace.git cd MinimumViableDataspace 

官网环境配置图

环境配置

2. 构建和启动

在 K8S 上启动各种服务。

./gradlew build ./gradlew -Ppersistence=true dockerize 

Child (K8S) 環境起動

# Create the cluster 
kind create cluster -n mvd --config deployment/kind.config.yaml 
# Load docker images into KinD 
kind load docker-image controlplane:latest dataplane:latest identity-hub:latest catalog-server:latest sts:latest -n mvd 

# 確認 
docker ps 
CONTAINER ID   IMAGE                  COMMAND                   CREATED         STATUS         PORTS                                                                 NAMES 
b7f31408c498   kindest/node:v1.27.3   "/usr/local/bin/entr…"   2 minutes ago   Up 2 minutes   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 127.0.0.1:32825->6443/tcp   mvd-control-plane 

在 k8s 上部署 Ingress NGINX 控制器

# Deploy an NGINX ingress
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml

# Wait for the ingress controller to become available
kubectl wait --namespace ingress-nginx \
  --for=condition=ready pod \
  --selector=app.kubernetes.io/component=controller \
  --timeout=90s

部署此 MVD 环境

# Deploy the dataspace, type 'yes' when prompted
cd deployment
terraform init
terraform apply

确认

kubectl get pods --namespace mvd

结果(如果看到以下内容,则说明部署成功)

NAME                                                   READY   STATUS    RESTARTS   AGE
consumer-controlplane-68c4696c57-2qmh2                 1/1     Running   0          55s
consumer-dataplane-75d79bfd56-t5mt2                    1/1     Running   0          39s
consumer-identityhub-545fdb579c-df6bq                  1/1     Running   0          55s
consumer-postgres-687484545b-sp8xr                     1/1     Running   0          96s
consumer-sts-778bb7bb44-kfqxp                          1/1     Running   0          70s
consumer-vault-0                                       1/1     Running   0          95s
dataspace-issuer-server-7ff68bd8b4-qh7c7               1/1     Running   0          96s
provider-catalog-server-58b67bdb89-nxtvq               1/1     Running   0          54s
provider-identityhub-bb68bfcf4-bv42v                   1/1     Running   0          55s
provider-manufacturing-controlplane-86bdd7c967-b6r7h   1/1     Running   0          54s
provider-manufacturing-dataplane-7d66445bf8-dp24n      1/1     Running   0          39s
provider-postgres-7fd78d95b8-x2kzd                     1/1     Running   0          96s
provider-qna-controlplane-dc894c5ff-qxcd7              1/1     Running   0          55s
provider-qna-dataplane-8574c764fd-t2x8z                1/1     Running   0          39s
provider-sts-64cd87f4f6-n5cvq                          1/1     Running   0          70s
provider-vault-0                                       1/1     Running   0          95s

3. 数据初始化

您可以使用项目下的 seed-k8s.sh 或 seed-k8s.sh 脚本运行初始化数据。执行前请根据环境调整url。

seed-k8s.sh 是在newman(postman环境下的自动化脚本)的docker环境下执行
seed-k8s.sh 是在newman(postman环境下的自动化脚本)的k8s环境下执行
bash seed-k8s.sh

说明: Postman (Newman) 可以进行参数化运行给出。

如下newman命令所示,这次执行的是 “Seed” 文件夹下的所有内容。 请注意,此注册过程在以下两台主机provider-qna、 provider-manufacturing 批量执行

newman deployment/postman/MVD.postman_collection.json 中的seed文件夹中的请求

echo "Seed data to 'provider-qna' and 'provider-manufacturing'"
for url in 'http://127.0.0.1/provider-manufacturing/cp' 'http://127.0.0.1/provider-qna/cp'
do
  newman run \
    --folder "Seed" \
    --env-var "HOST=$url" \
    ./deployment/postman/MVD.postman_collection.json
done

以下是postman操作的中文解释

分类 操作

Seed(种子数据初始化)

创建资产和策略

1. **Create Asset 1(创建资产1)**
2. **Create Asset 2(创建资产2)**
3. **Create Membership Policy(创建会员政策)**
4. **Create DataProcessor policy(创建数据处理者政策)**
5. **Create Sensitive Data Processor policy(创建敏感数据处理者政策)**
6. **Create "member-and-data-cred" definition(创建“会员和数据凭证”定义)**
7. **Create "require sensitive" definition(创建“需要敏感数据”定义)**
8. **Create linked Asset for provider-qna(为提供商Q&A创建链接资产)**
9. **Create linked Asset for provider-manufacturing(为提供商制造部门创建链接资产)**
10. **Create normal asset for CatalogServer(为目录服务器创建普通资产)**
11. **Create Membership Policy(创建会员政策)**
12. **Create "require membership" definition(创建“需要会员”定义)**

ControlPlane Management(控制平面管理)

资产和目录管理

13. **Get Assets(获取资产)**
14. **Request Catalog(请求目录)**
15. **Get Cached Catalogs(获取缓存的目录)**
16. **Initiate negotiation(发起协商)**
17. **Get Contract Negotiations(获取合同协商)**
18. **Initiate Transfer(发起传输)**
19. **Get transfer processes(获取传输过程)**
20. **Get cached EDRs(获取缓存的EDR)**
21. **Get EDR DataAddress for TransferId(获取传输ID的EDR数据地址)**
22. **Download Data from Public API(从公共API下载数据)**

IdentityHub(身份中心)

参与者上下文管理API

23. **Get Participant By ID(按ID获取参与者)**
24. **Get all participants(获取所有参与者)**
25. **Create Participant(创建参与者)**
26. **Create Participant (existing key)(创建参与者(使用现有密钥))**
27. **Update Roles(更新角色)**
28. **Regenerate Token(重新生成令牌)**
29. **Activate Participant(激活参与者)**
30. **Deactivate Participant(停用参与者)**
31. **Delete Participant(删除参与者)**

密钥对资源管理API

32. **Get KeyPair for Participant(获取参与者的密钥对)**
33. **Get all KeyPairs(获取所有密钥对)**
34. **Add KeyPair(添加密钥对)**
35. **Rotate key(轮换密钥)**
36. **Revoke key(撤销密钥)**

DID文档管理API

37. **Query DIDs(查询DIDs)**
38. **Get All DID Documents(获取所有DID文档)**
39. **Publish DID(发布DID)**
40. **Add endpoint(添加端点)**
41. **Un-Publish DID(取消发布DID)**
42. **Delete DID(删除DID)**
43. **Get DID Document state(获取DID文档状态)**

可验证凭证管理API

44. **Get Credential By ID(按ID获取凭证)**
45. **Get All Credentials(获取所有凭证)**
46. **Query Credentials by Type(按类型查询凭证)**
47. **Make Credential Request(发起凭证请求)**
48. **Get Credential Reqeusts(获取凭证请求)**

IssuerService(发行服务)

管理API

证明管理
49. **create Attestation(创建证明)**
50. **query Attestations(查询证明)**
凭证定义管理
51. **create Credential Definition(创建凭证定义)**
52. **query Credential Definitions(查询凭证定义)**
53. **get by ID(按ID获取)**
54. **update Credential Definition(更新凭证定义)**
55. **delete Credential Definition By Id(按ID删除凭证定义)**
凭证管理
56. **query Credentials(查询凭证)**
57. **resume Credential(恢复凭证)**
58. **revoke Credential(撤销凭证)**
59. **check Credential Status(检查凭证状态)**
60. **suspend Credential(暂停凭证)**
61. **get Credentials(获取凭证)**
参与者管理
62. **update Participant(更新参与者)**
63. **Create Participant(创建参与者)**
64. **query Participants(查询参与者)**
65. **get Participant By Id(按ID获取参与者)**
发行流程管理
66. **Query issuance processes(查询发行流程)**

Seed Issuer SQL(种子发行者SQL)

创建参与者和定义

67. **Create consumer participant(创建消费者参与者)**
68. **Create provider participant(创建提供者参与者)**
69. **Create attestation definitions(创建证明定义)**
70. **Create credential definitions(创建凭证定义)**

Seed Issuer(种子发行者)

71. **Create consumer participant(创建消费者参与者)**
72. **Create provider participant(创建提供者参与者)**
73. **Create attestation definitions(创建证明定义)**
74. **Create credential definitions(创建凭证定义)**