6. 安装部署

6.1. 概述

数据要素流通平台基于k3s环境部署,提供了一键部署脚本和yaml文件,用户可以根据自己的需求,选择部署对应的服务, 可根据实际情况调整适配yaml文件。

6.2. 环境依赖

6.2.1. 硬件要求

配置 最低配置 推荐配置
CPU 1.5GHz 2.4GHz
内存 16GB 64GB
核心 8核 16核
带宽 20Mb 40Mb

6.2.2. 软件依赖

名称 版本 描述 是否必须
docker 24+ 运行核心组件及服务
docker-compose v2.24.6+ 本地部署长安链服务
k3s v1.28.2+ 与 Kubernetes 集群进行交互和管理,管理核心组件及服务
helm v3.14.0+ 管理 Kubernetes 应用部署的包,管理服务任务

6.2.2.1. Docker安装

参考官网:https://docs.docker.com/engine/install/

安装完成后,执行以下命令进行验证:

  ~ docker version
Client:
 Version:           24.0.6-rd
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        da4c87c
 Built:             Wed Sep  6 16:39:20 2023
 OS/Arch:           darwin/amd64
 Context:           desktop-linux

Server: Docker Desktop 4.27.1 (136059)
 Engine:
  Version:          25.0.2
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.6
  Git commit:       fce6e0c
  Built:            Thu Feb  1 00:23:17 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.28
  GitCommit:        ae07eda36dd25f8a1b98dfbf587313b99c0190bb
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

6.2.2.2. Docker-compose安装

使用脚本进行安装

# 脚本安装  ~ sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限  ~ sudo chmod +x /usr/local/bin/docker-compose

安装完成后,执行以下命令进行验证:

  ~ docker-compose --version
Docker Compose version v2.22.0

6.2.2.3. K3S安装

注:安装K3S前需要先完成Docker安装

6.2.2.3.1. 使用脚本安装

下面以 Linux为例进行安装,

使用K3S安装脚本进行安装,具体步骤如下:

#1. 下载K3S安装脚本和依赖包  ~  wget  -c "https://get.k3s.io" -O install.sh
➜  ~  wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s"  ~  wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s-airgap-images-amd64.tar.gz"  ~  wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/k3s-images.txt"  ~  wget  -c "https://github.com/k3s-io/k3s/releases/download/v1.28.2%2Bk3s1/sha256sum-amd64.txt"

# 2. 设置K3S配置文件  ~ mkdir -p /etc/rancher/k3s/
➜  ~ tee /etc/rancher/k3s/config.yaml <<-'EOF'
docker: true
tls-san: k3s.domain.com
service-node-port-range: 30000-40000
kubelet-arg: system-reserved=cpu=500m,memory=512Mi,ephemeral-storage=1024Mi,pid=100
kubelet-arg: kube-reserved=cpu=500m,memory=512Mi,ephemeral-storage=1024Mi,pid=100
kubelet-arg: eviction-hard=memory.available<1024Mi,nodefs.available<10%,imagefs.available<10%
kubelet-arg: eviction-minimum-reclaim=memory.available=500Mi,nodefs.available=500Mi,imagefs.available=500Mi
EOF

# 3. 导入K3S镜像,并执行安装脚本  ~ docker load -i k3s-airgap-images-amd64.tar.gz
➜  ~ cp -f k3s /usr/local/bin/
➜  ~ chmod 700 /usr/local/bin/k3s
➜  ~ chmod 700 install.sh
➜  ~ INSTALL_K3S_SKIP_DOWNLOAD=true  ./install.sh

安装完成后,执行以下命令进行验证:

  ~ k3s -v
k3s version v1.21.4+k3s- ()
go version go1.16.6

➜  ~ kubectl get ns
NAME              STATUS   AGE
default           Active   420d
kube-system       Active   420d
kube-public       Active   420d
...
6.2.2.3.2. 使用Rancher Desktop安装

除命令行安装k3s外,还可使用Rancher Desktop工具进行可视化安装。 Rancher Desktop官网为:https://rancherdesktop.io/

  • 下载对应的Rancher desktop安装包并安装(安装过程中使用默认配置即可)

  • 启动k3s(Rancher desktop显示的名字就是Kubernetes)。如果本地安装了docker desktop,建议先卸载,因为rancher desktop 也会运行一个docker环境,可能会冲突。为k3s分配的资源至少2c6g。

  • 更改current-context为rancher-desktop

# 更改current-context为rancher-desktop,   ~ vim ~/.kube/config

...
contexts:
  - name: docker-desktop
    context:
      cluster: docker-desktop
      name: docker-desktop
      user: docker-desktop
  - name: rancher-desktop
    context:
      cluster: rancher-desktop
      name: rancher-desktop
      user: rancher-desktop
preferences: {}
current-context: rancher-desktop #最后一行的current-context设置为rancher-desktop

6.2.2.4. helm安装

使用脚本安装:

  ~ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
➜  ~ chmod 700 get_helm.sh
➜  ~ ./get_helm.sh

安装完成后,使用以下命令进行验证:

  ~ helm version
version.BuildInfo{Version:"v3.13.1", GitCommit:"3547a4b5bf5edb5478ce352e18858d8a552a4110", GitTreeState:"clean", GoVersion:"go1.20.8"}

6.3. 数据要素流通平台部署

6.3.1. 获取部署包

数据要素流通平台部署包主要包括 数据要素登记服务部署脚本可信计算服务部署脚本

# 1. 获取数据要素登记服务部署脚本  ~ git clone https://git.chainweaver.org.cn/ChainWeaver/ida/ida-deployment.git

# 2. 切换到v1.0.0分支  ~ git checkout -b v1.0.0 origin/v1.0.0

# 3. 获取可信计算服务部署脚本  ~ git clone https://git.chainweaver.org.cn/ChainWeaver/mira/mira-deployment.git

# 4. 切换到v1.0.0分支  ~ git checkout -b v1.0.0 origin/v1.0.0

6.3.2. 部署长安链

数据要素流通平台依赖长安链(需要启用docker go VM),需要先部署长安链。如果已经部署长安链,可以跳过该步骤。

6.3.3. 部署智能合约

智能合约包括数据产品登记合约与隐私计算合约两部分,具体列表如下:

  • 数据产品登记合约: IDA合约

  • 隐私计算合约: 计算资源管理合约、任务管理合约

部署智能合约需要长安链用户证书,不同的长安链部署方式,生成用户证书的目录也会不同

  • 本机部署: 用户证书在chainmaker-go/build/crypto-config目录

  • 其他方式部署: 需要根据部署方式获取用户链证书,或者从链管理员处获得

注:多个参与方分别部署数据要素流通平台时,合约也仅需部署一次,无需每个参与方分别部署。

以本机部署长安链为例,安装智能合约流程如下

  • 长安链CERT模式

# 1. 进入安装目录  ~ cd mira-deployment/deploy

# 2. 查看合约文件和部署脚本  ~ tree -L 2 ../deploy  
  ../deploy
  ├── cmc # 长安链CMC工具
  ├── contract
     ├── computing_resource_manager.wasm # 计算资源管理合约
     ├── contract_ida.7z # ida合约
     ├── did.wasm # DID合约
     ├── evidence.wasm # 存证合约
     └── mission_manager.wasm # 任务管理合约
  ├── create_contract_pk.sh # pk模式安装合约脚本
  ├── create_contract.sh # cert模式安装合约脚本
  ├── crypto-config # 长安链用户证书
     ├── wx-org1.chainmaker.org
     ├── wx-org2.chainmaker.org
     ├── wx-org3.chainmaker.org
     └── wx-org4.chainmaker.org
  ├── sdk_config_pk.yml # pk模式配置文件
  ├── sdk_config.yml # cert模式配置文件
  ├── update_contract_pk.sh # pk模式升级合约脚本
  └── update_contract.sh # cert模式升级合约脚本

# 3. 拷贝长安链用户证书到当前目录  ~ cp -r chainmaker-go/build/crypto-config .

# 4. 替换证书后crypto-config目录结构  ~ tree -L 3 crypto-config  
  crypto-config
  ├── wx-org1.chainmaker.org
     ├── ca
        ├── ca.crt
        └── ca.key
     ├── node
        ├── common1
        └── consensus1
     └── user
         ├── admin1
         ├── client1
         └── light1
  
# 5.修改sdk_config.yml中链ID和节点地址
#  chain_id: "chain1"  # 链ID
#  node_addr: "localhost:12301" # 链节点RPC地址

# 6. 执行脚本部署智能合约  ~ sh create_contract.sh
...
{
  "contract_result": {
    "gas_used": 11538,
    "result": {
      "address": "63137ccf397ddc76ab3cfd117ba11e629c1ac33b",
      "creator": {
        "member_id": "admin1.sign.wx-org1.chainmaker.org",
        "member_info": "+ExKNBZh6Lc5hFZIXuK/WN3GbGuByT8v/eh3DUW9QYk=",
        "member_type": 1,
        "org_id": "wx-org1.chainmaker.org",
        "role": "ADMIN",
        "uid": "540bae6af481a46dcf4ea0051897c19cbdf9fac69ba4adcd3ea071d1d575c989"
      },
      "name": "evidence",
      "runtime_type": 2,
      "version": "1.0.0"
    }
  },
  "tx_block_height": 2,
  "tx_id": "17c4896e98c130dacac5fe6eb223def1dfa8d9cc1ab744d8800fd6eefbf13c7b",
  "tx_timestamp": 1712644866
}
# 出现以上输出代表合约安装成功
  • 长安链PK模式

# 1. 进入安装目录  ~ cd mira-deployment/deploy

# 2. 查看合约文件和部署脚本  ~ tree -L 2 ../deploy  
  ../deploy
  ├── cmc # 长安链CMC工具
  ├── contract
     ├── computing_resource_manager.wasm # 计算资源管理合约
     ├── contract_ida.7z # ida合约
     ├── did.wasm # DID合约
     ├── evidence.wasm # 存证合约
     └── mission_manager.wasm # 任务管理合约
  ├── create_contract_pk.sh # pk模式安装合约脚本
  ├── create_contract.sh # cert模式安装合约脚本
  ├── crypto-config # 长安链用户证书
     ├── node1
     ├── node2
     ├── node3
     └── node4
  ├── sdk_config_pk.yml # pk模式配置文件
  ├── sdk_config.yml # cert模式配置文件
  ├── update_contract_pk.sh # pk模式升级合约脚本
  └── update_contract.sh # cert模式升级合约脚本

# 3. 拷贝长安链用户证书到当前目录  ~ cp -r chainmaker-go/build/crypto-config .

# 4. 替换证书后crypto-config目录结构  ~ tree -L 3 crypto-config  
  crypto-config
  ├── node1
     ├── admin
        ├── admin1
        ├── admin2
        ├── admin3
        ├── admin4
        └── admin5
     ├── node1.key
     ├── node1.nodeid
     ├── node1.pem
     └── user
         └── client1
  
# 5.修改sdk_config_pk.yml中链ID和节点地址
#  chain_id: "chain1"  # 链ID
#  node_addr: "localhost:12301" # 链节点RPC地址

# 6. 执行脚本部署智能合约  ~ sh create_contract_pk.sh
...
{
  "contract_result": {
    "gas_used": 11538,
    "result": {
      "address": "63137ccf397ddc76ab3cfd117ba11e629c1ac33b",
      "creator": {
        "member_id": "admin1.sign.wx-org1.chainmaker.org",
        "member_info": "+ExKNBZh6Lc5hFZIXuK/WN3GbGuByT8v/eh3DUW9QYk=",
        "member_type": 1,
        "org_id": "wx-org1.chainmaker.org",
        "role": "ADMIN",
        "uid": "540bae6af481a46dcf4ea0051897c19cbdf9fac69ba4adcd3ea071d1d575c989"
      },
      "name": "evidence",
      "runtime_type": 2,
      "version": "1.0.0"
    }
  },
  "tx_block_height": 2,
  "tx_id": "17c4896e98c130dacac5fe6eb223def1dfa8d9cc1ab744d8800fd6eefbf13c7b",
  "tx_timestamp": 1712644866
}
# 出现以上输出代表合约安装成功

6.4. 基础服务部署

# 1. 进入如下目录  ~ cd ida-deployment/helm

# 2. 创建public namespace, 这里示例为 "public" kubectl create ns public

# 3. 创建数据放置的文件夹,这里示例中,数据放置在数据放置服务器上的(这里是k8s-node1节点):: /mnt/data,需要提前创建  ~ mkdir -p /mnt/data/public/mysql # mysql 数据存储路径, 其中的"public"为上一步创建的namespace  ~ mkdir -p /mnt/data/public/redis # redis 数据存储路径, 其中的"public"为上一步创建的namespace  ~ mkdir -p /mnt/data/public/key/logs # key 日志存储路径, 其中的"public"为上一步创建的namespace  ~ mkdir -p /mnt/data/public/chain/logs # chain 日志存储路径, 其中的"public"为上一步创建的namespace

# 4. 启动public 服务, 自定义的配置如mysql password等可在public/values.yaml中修改  ~ helm install public ./public --namespace public \
      --set global.contract.name=ida \ # 指定合约名称,这里示例为 ida
      --set 'global.nodeAffinity.values[0]=k8s-node1' \ # 指定数据希望放置的K8S节点名称,这里示例为 k8s-node1
      --set global.dataPath=/mnt/data # 指定数据存储路径,这里示例为 /mnt/data

# 5. 查看服务状态  ~ kubectl get pods -n public

# 6. 卸载服务(部署时跳过)  ~ helm uninstall public --namespace public # 卸载 public  ~ kubectl delete ns public # 删除namespace  ~ rm -rf /mnt/data/public # 删除数据

# 7. 本地生成yaml文件(仅调试使用)
# 生成public yaml文件  ~ helm template public ./public --namespace public \
      --set global.publicNameSpace=public \
      --set global.contract.name=ida \
      --set 'global.nodeAffinity.values[0]=k8s-node1' \
      --set global.dataPath=/mnt/data > ../output_public.yaml

6.5. 数据要素登记服务平台部署

# 1. 进入如下目录  ~ cd ida-deployment/helm

# 2. 创建ida namespace, 这里示例为 "ida"  ~ kubectl create ns ida

# 3. 创建数据放置的文件夹,这里示例中,数据放置在数据放置服务器上的(这里是k8s-node1节点):: /mnt/data,需要提前创建  ~ mkdir -p /mnt/data/ida/certification/logs # certification 日志存储路径, 其中的"ida"为上一步创建的namespace  ~ mkdir -p /mnt/data/ida/registration/logs # registration 日志存储路径, 其中的"ida"为上一步创建的namespace  ~ mkdir -p /mnt/data/ida/gateway/logs # gateway 日志存储路径, 其中的"ida"为上一步创建的namespace  ~ mkdir -p /mnt/data/ida/circulation/logs # circulation 日志存储路径, 其中的"ida"为上一步创建的namespace


# 4. 启动ida 服务, 自定义的配置如mysql password等可在ida/values.yaml中修改  ~ helm install ida ./ida  --namespace ida \
      --set global.publicNameSpace=public \ # 指定public的namespace,这里前面的示例为 public
      --set global.contract.name=ida \ # 指定合约名称,这里示例为 ida
      --set 'global.nodeAffinity.values[0]=k8s-node1' \ # 指定数据希望放置的K8S节点名称,这里示例为 k8s-node1
      --set global.dataPath=/mnt/data \ # 指定数据存储路径,这里示例为 /mnt/data
      --set global.circulation.nodePort=31085 # 指定 circulation 服务的nodePort,这里示例为 31085
  
# 5. 查看服务状态  ~ kubectl get pods -n ida
 待pod启动完成后,可访问ida服务 http://{yourk8shost}:31085
 默认账号密码为:Admin/ChainMaker123.

# 6. 卸载服务(部署时跳过)  ~ helm uninstall ida --namespace ida # 卸载 ida  ~ kubectl delete ns ida # 删除namespace  ~ rm -rf /mnt/data/ida # 删除数据

# 7. 本地生成yaml文件(仅调试使用)
# 生成ida yaml文件  ~ helm template ida ./ida --namespace ida  \
    --set global.publicNameSpace=public \
    --set global.contract.name=ida \
    --set 'global.nodeAffinity.values[0]=k8s-node1' \
    --set global.dataPath=/mnt/data \
    --set global.circulation.nodePort=31090 > ../output_ida.yaml

6.6. 可信计算平台部署(CERT模式)

# 1.进入如下目录  ~ cd mira-deployment/mira/mira
  • 修改common-values.yaml, 主要包括ip, port, 镜像版本和数据库密码, 其中ip地址设置为集群对外地址, 数据库密码参考mysql和redis部署,k3s配置项需要从~/.kube/config获取

MASTERIP: "192.168.40.243" # 集群IP
LOCALPORT: "80"
MINIOSVC: "192.168.40.243:31000" # minio 服务地址 需要修改为对外地址
CHAINNODE: "192.168.40.243:12301" # 链服务访问地址
MYSQLHOST: "mysql.public" # mysql服务
REDISHOST: "redis.public" # redis服务
MYSQLPASSWORD: "root123456" # mysql密码, 具体密码为部署mysql服务设置
REDISPASSWORD: "123456" # redis密码, 具体密码为部署redis服务设置
...
mpc-scheduler:
  enabled: true
  fullnameOverride: mpc-scheduler
  image:
    repository: "chainweaver/mira-scheduler"
    pullPolicy: IfNotPresent
    # Overrides the image tag whose default is the chart appVersion.
    tag: "v1.0.0"
  env:
    CHART_REPO_URL: "http://192.168.40.243:30000/charts" # charts仓库地址 需要根据实际配置, 端口是chartmuseum的暴露端口
    NAMESPACE: "mira"
    REDIS_ADDR: "redis.public:6379" # redis 服务地址
    REDIS_PASSWORD: "123456" # redis 服务密码

...
# k3s配置项需要从宿主机 ~/.kube/config获取, 服务调度需要使用
k3s:
  config: |-
    apiVersion: v1
    clusters:
    - cluster:
...
  • 修改org-values.yaml, 主要包括grpc通信端口, 服务暴露端口

...
ASSET_GRPC_IP: registration.ida # ida数字资产服务
ASSET_GRPC_PORT: 8082 # ida数字资产服务端口
KEY_GRPC_IP: key.public # ida密钥管理服务
KEY_GRPC_PORT: 8083 # ida密钥管理服务端口


java-backendservice:
  service:
    nodePort: 32008 # 服务暴露端口

# 任务管理服务
job-service:
    service:
        nodePort: 32108 # 服务暴露端口

# 密钥管理服务
mpc-kms:
    service:
        nodePort: 31028 # 服务暴露端口

# 网络资源管理服务
port-server:
    service:
        nodePort: 31208 # 服务暴露端口

# 调度服务
mpc-scheduler:
  env:
    NAMESPACE: "mira" # 调度服务namespace, 跟mpc-scheduler保持一致
...
# 2. 修改mysql初始化脚本配置  ~ cd mira-deployment/mira/mira/templates
  • 修改init-mysql.yaml, 主要包括mysql服务地址和密码

  restartPolicy: Never
  containers:
    - name: init-mysql
      image: mysql:8.0
      env:
        - name: MYSQL_ROOT_PASSWORD
          value: "root123456" # 修改mysql密码
          # 修改mysql服务地址
            until mysql -h mysql.public.svc.cluster.local -P 3306 -u root -p$MYSQL_ROOT_PASSWORD -e "source /init.sql"; do
            echo "waiting for mysql"
            sleep 2
            done
  initContainers:
    - name: wait-for-mysql-service
      image: busybox:1.28
      command:
          # 修改mysql服务地址
          until nslookup mysql.public.svc.cluster.local; do
            echo "waiting for mysql-service"
            sleep 2
          done
# 3. 进入certs目录替换长安链用户证书,参考6.3.3 智能合约证书替换  ~ cd mira-deployment/mira/mira/prepare/chainmaker-config/certs

# 4. 替换后目录结构  ~ tree -L 3 ../certs
  ../certs
  ├── wx-org1.chainmaker.org
     ├── ca
        ├── ca.crt
        └── ca.key
     ├── node
        ├── common1
        └── consensus1
     └── user
         ├── admin1
         ├── client1
         └── light1

# 5. 执行安装脚本

#配置脚本中的chart仓库推送地址
vi mira-deployment/mira/push_charts.sh
# 修改192.168.40.243:30000中的ip为common-values.yaml中配置过的MASTERIP,port和mira-deployment/mira/minio/values.yaml中chartmuseum部分的port一致
# charts仓库地址 需要根据实际配置, 端口是chartmuseum的暴露端口
helm repo add charts http://192.168.40.243:30000/charts
# mira-deployment/mira/minio/values.yaml中chartmuseum部分的port为30000
vi mira-deployment/mira/minio/values.yaml
chartmuseum:
  deployment:
    name: chartmuseum-chartmuseum
  service:
    servicename: chartmuseum-chartmuseum
    type: NodePort
    nodePort: 30000
# 修改完成后执行如下脚本    ~ cd mira-deployment/mira
➜  ~ sh install.sh

6.7. 可信计算平台部署(PK模式)

# 1.进入如下目录  ~ cd mira-deployment/mira/mira
  • 修改common-values.yaml, 主要包括ip, port, 镜像版本和数据库密码, 其中ip地址设置为集群对外地址, 数据库密码参考mysql和redis部署,k3s配置项需要从~/.kube/config获取

MASTERIP: "192.168.40.243" # 集群IP
LOCALPORT: "80"
MINIOSVC: "192.168.40.243:31000" # minio 服务地址 需要修改为对外地址
CHAINNODE: "192.168.40.243:12301" # 链服务访问地址
MYSQLHOST: "mysql.public" # mysql服务
REDISHOST: "redis.public" # redis服务
MYSQLPASSWORD: "root123456" # mysql密码, 具体密码为部署mysql服务设置
REDISPASSWORD: "123456" # redis密码, 具体密码为部署redis服务设置
...
mpc-scheduler:
  enabled: true
  fullnameOverride: mpc-scheduler
  image:
    repository: "chainweaver/mira-scheduler"
    pullPolicy: IfNotPresent
    # Overrides the image tag whose default is the chart appVersion.
    tag: "v1.0.0"
  env:
    CHART_REPO_URL: "http://192.168.40.243:30000/charts" # charts仓库地址 需要根据实际配置, 端口是chartmuseum的暴露端口
    NAMESPACE: "mira"
    REDIS_ADDR: "redis.public:6379" # redis 服务地址
    REDIS_PASSWORD: "123456" # redis 服务密码

...
# k3s配置项需要从宿主机 ~/.kube/config获取, 服务调度需要使用
k3s:
  config: |-
    apiVersion: v1
    clusters:
    - cluster:
...
  • 修改org-values.yaml, 主要包括grpc通信端口, 服务暴露端口

...
ASSET_GRPC_IP: registration.ida # ida数字资产服务
ASSET_GRPC_PORT: 8082 # ida数字资产服务端口
KEY_GRPC_IP: key.public # ida密钥管理服务
KEY_GRPC_PORT: 8083 # ida密钥管理服务端口


java-backendservice:
  service:
    nodePort: 32008 # 服务暴露端口

# 任务管理服务
job-service:
    service:
        nodePort: 32108 # 服务暴露端口

# 密钥管理服务
mpc-kms:
    service:
        nodePort: 31028 # 服务暴露端口

# 网络资源管理服务
port-server:
    service:
        nodePort: 31208 # 服务暴露端口

# 调度服务
mpc-scheduler:
  env:
    NAMESPACE: "mira" # 调度服务namespace, 跟mpc-scheduler保持一致
...
# 2. 修改mysql初始化脚本配置  ~ cd mira-deployment/mira/mira/templates
  • 修改init-mysql.yaml, 主要包括mysql服务地址和密码

  restartPolicy: Never
  containers:
    - name: init-mysql
      image: mysql:8.0
      env:
        - name: MYSQL_ROOT_PASSWORD
          value: "root123456" # 修改mysql密码
          # 修改mysql服务地址
            until mysql -h mysql.public.svc.cluster.local -P 3306 -u root -p$MYSQL_ROOT_PASSWORD -e "source /init.sql"; do
            echo "waiting for mysql"
            sleep 2
            done
  initContainers:
    - name: wait-for-mysql-service
      image: busybox:1.28
      command:
          # 修改mysql服务地址
          until nslookup mysql.public.svc.cluster.local; do
            echo "waiting for mysql-service"
            sleep 2
          done
# 4. 执行安装脚本

#配置脚本中的chart仓库推送地址
vi mira-deployment/mira/push_charts.sh
# 修改192.168.40.243:30000中的ip为common-values.yaml中配置过的MASTERIP,port和mira-deployment/mira/minio/values.yaml中chartmuseum部分的port一致
# charts仓库地址 需要根据实际配置, 端口是chartmuseum的暴露端口
helm repo add charts http://192.168.40.243:30000/charts
# mira-deployment/mira/minio/values.yaml中chartmuseum部分的port为30000
vi mira-deployment/mira/minio/values.yaml
chartmuseum:
  deployment:
    name: chartmuseum-chartmuseum
  service:
    servicename: chartmuseum-chartmuseum
    type: NodePort
    nodePort: 30000
# 修改完成后执行如下脚本    ~ cd mira-deployment/mira
➜  ~ sh install.sh

# 5 替换pk模式证书以及sdk config
# 5.1 进入certs目录替换长安链证书
cd mira-deployment/mira/mira-pk-config/prepare/chainmaker-config/certs

# 替换后目录结构
tree -L 3 ../certs
../certs
├── node1
│   ├── admin
│      ├── admin1
│      ├── admin2
│      ├── admin3
│      ├── admin4
│      └── admin5
│   ├── chainconfig
│      └── bc1.yml
│   ├── chainmaker.yml
│   ├── log.yml
│   ├── node1.key
│   ├── node1.nodeid
│   ├── node1.pem
│   └── user
│       └── client1


# 5.2修改配置文件,匹配上面对应的节点证书以及地址
vi mira-pk-config/values.yaml
nodename配置节点名称,CHAINNODE配置节点地址

nodename: "node1"
CHAINNODE: "127.0.0.1:12301"


# 5.3执行替换刷新,执行完成后即成功替换pk模式的证书
sh replace_certs_and_configmap.sh

6.8. 服务列表

微服务 说明 命名空间 部署类型 Docker镜像名称 K8S Service名称 dataPath / logPath
mysql 存储 public Deployment mysql mysql /mnt/data/public/mysql (mysql存储目录)
redis 缓存 public Deployment redis redis /mnt/data/public/redis (redis存储目录)
key 链密钥管理 public Deployment public-key key /mnt/data/public/key/logs
chain 链身份管理 public Deployment public-chain chain /mnt/data/public/chain/logs
chartmuseum chart仓库 public Deployment public-chartmuseum chartmuseum-chartmuseum -
minio 对象存储 public Deployment public-minio minio -
certification 数据产品认证服务 ida Deployment ida-certification certification /mnt/data/ida/certification/logs
registration 数据产品登记服务 ida Deployment ida-registration registration /mnt/data/ida/registration/logs
gateway 网关 ida Deployment ida-gateway gateway /mnt/data/ida/gateway/logs
circulation 数据要素流通平台前端 ida Deployment ida-circulation circulation /mnt/data/ida/circulation/logs
mira-kms 可信计算-加解密服务 mira Deployment mira-kms mpc-kms /mnt/data/mira
mira-network-manager 可信计算-端口管理服务 mira Deployment mira-network-manager port-server /mnt/data/mira
mira-job-service 可信计算-PQL解析服务 mira Deployment mira-job-service job-service /mnt/data/mira
mira-backend-service 可信计算-后端web服务 mira Deployment mira-backend-service java-backendservice /mnt/data/mira
mira-scheduler 可信计算-调度服务 mira Deployment mira-scheduler mpc-scheduler /mnt/data/mira
mira-mpc-engine 可信计算-mpc执行引擎 mira Job mira-mpc-engine /mnt/data/mira
mira-pir 可信计算-pir执行引擎 mira Job mira-scheduler /mnt/data/mira

6.9. 可信计算平台初始化

在创建和执行任务前,可信计算平台需要进行地址初始化。流程如下:

  1. 管理员登录

  2. 配置链账户

  3. 地址初始化

  • 地址初始化 在部署机上执行以下curl命令,进行可信计算平台地址初始化。如果要支持跨公网下载计算任务结果,以下IP地址需要为公网可访问地址。(注涉及的端口号表示:31008-可信计算平台web后端服务端口;31016-可信计算平台结果下载服务端口)

# 以下命令中的地址为可信计算平台地址,需要根据实际部署情况进行替换,如:192.168.40.243  ~ curl --location 'http://192.168.40.243:31008/v1/mira/login/register' \
--header 'Content-Type: application/json' \
--data '{"address":"192.168.40.243:31016"}'

注:在计算任务结果下载时,需要使用预先注册的平台地址。平台地址注册依赖于链账户的配置,因此需要在链账户配置完成后进行平台地址注册。

6.10. 服务验证

  • 服务测试

通过查看可信计算平台的版本信息进行验证,返回success表示服务部署成功。

  ~ curl --location '192.168.40.243:31008/v1/mira/configuration/GetVersionInfo' \
--header 'Content-Type: application/json' \
--data '{}'

得到以下返回结果,则表示平台部署成功。

{
    "status": "success",
    "code": 200,
    "message": null,
    "data": {
        "name": "Mira",
        "version": "0.1.0",
        "releaseDate": "2024-04-10",
        "description": "Mira is a secure multi-party computation platform that leverages blockchain and privacy computing technologies to achieve data availability while preserving data invisibility, unlocking the value of data elements.",
        "license": "Apache License 2.0",
        "licenseUrl": "http://www.apache.org/licenses/LICENSE-2.0",
        "support": "ChainWeaver"
    }
}