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),需要先部署长安链。如果已经部署长安链,可以跳过该步骤。
长安链提供了多种部署方式, 可以参考官方部署文档,如: 通过Docker部署链
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. 可信计算平台初始化
在创建和执行任务前,可信计算平台需要进行地址初始化。流程如下:
地址初始化 在部署机上执行以下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"
}
}