# 安装部署 ## 概述 数据要素流通平台基于k3s环境部署,提供了一键部署脚本和yaml文件,用户可以根据自己的需求,选择部署对应的服务, 可根据实际情况调整适配yaml文件。 ## 环境依赖 ### 硬件要求 | 配置 | 最低配置 | 推荐配置 | | ---- | -------- | -------- | | CPU | 1.5GHz | 2.4GHz | | 内存 | 16GB | 64GB | | 核心 | 8核 | 16核 | | 带宽 | 20Mb | 40Mb | ### 软件依赖 | 名称 | 版本 | 描述 | 是否必须 | | -------------- | -------- | ---------------------------------------------------- | -------- | | docker | 24+ | 运行核心组件及服务 | 是 | | docker-compose | v2.24.6+ | 本地部署长安链服务 | 否 | | k3s | v1.28.2+ | 与 Kubernetes 集群进行交互和管理,管理核心组件及服务 | 是 | | helm | v3.14.0+ | 管理 Kubernetes 应用部署的包,管理服务任务 | 是 | #### Docker安装 参考官网:https://docs.docker.com/engine/install/ 安装完成后,执行以下命令进行验证: ```shell ➜ ~ 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 ``` #### Docker-compose安装 使用脚本进行安装 ```shell # 脚本安装 ➜ ~ 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 ``` 安装完成后,执行以下命令进行验证: ```shell ➜ ~ docker-compose --version Docker Compose version v2.22.0 ``` #### K3S安装 > 注:安装K3S前需要先完成Docker安装 ##### 使用脚本安装 下面以 `Linux`为例进行安装, 使用K3S安装脚本进行安装,具体步骤如下: ```shell #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 ``` 安装完成后,执行以下命令进行验证: ```shell ➜ ~ 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 ... ``` ##### 使用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 ```shell # 更改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 ``` #### helm安装 使用脚本安装: ```shell ➜ ~ 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 ``` 安装完成后,使用以下命令进行验证: ```shell ➜ ~ helm version version.BuildInfo{Version:"v3.13.1", GitCommit:"3547a4b5bf5edb5478ce352e18858d8a552a4110", GitTreeState:"clean", GoVersion:"go1.20.8"} ``` ## 数据要素流通平台部署 ### 获取部署包 数据要素流通平台部署包主要包括 [数据要素登记服务部署脚本][数据要素登记服务部署脚本] 和 [可信计算服务部署脚本][可信计算服务部署脚本] ```shell # 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 ``` ### 部署长安链 数据要素流通平台依赖长安链(需要启用docker go VM),需要先部署长安链。如果已经部署长安链,可以跳过该步骤。 - 长安链提供了多种部署方式, 可以参考官方部署文档,如: [通过Docker部署链][通过Docker部署链] ### 部署智能合约 智能合约包括数据产品登记合约与隐私计算合约两部分,具体列表如下: - 数据产品登记合约: IDA合约 - 隐私计算合约: 计算资源管理合约、任务管理合约 部署智能合约需要长安链用户证书,不同的长安链部署方式,生成用户证书的目录也会不同 - 本机部署: [用户证书][用户证书]在chainmaker-go/build/crypto-config目录 - 其他方式部署: 需要根据部署方式获取用户链证书,或者从链管理员处获得 > 注:多个参与方分别部署数据要素流通平台时,合约也仅需部署一次,无需每个参与方分别部署。 以本机部署长安链为例,安装智能合约流程如下 * 长安链CERT模式 ```shell # 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模式 ```shell # 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 } # 出现以上输出代表合约安装成功 ``` ## 基础服务部署 ```shell # 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 ``` ## 数据要素登记服务平台部署 ```shell # 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 ``` ## 可信计算平台部署(CERT模式) ```shell # 1.进入如下目录 ➜ ~ cd mira-deployment/mira/mira ``` * 修改common-values.yaml, 主要包括ip, port, 镜像版本和数据库密码, 其中ip地址设置为集群对外地址, 数据库密码参考mysql和redis部署,k3s配置项需要从~/.kube/config获取 ```yaml 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通信端口, 服务暴露端口 ```yaml ... 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保持一致 ... ``` ```shell # 2. 修改mysql初始化脚本配置 ➜ ~ cd mira-deployment/mira/mira/templates ``` * 修改init-mysql.yaml, 主要包括mysql服务地址和密码 ```yaml 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 ``` ```shell # 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 ``` ## 可信计算平台部署(PK模式) ```shell # 1.进入如下目录 ➜ ~ cd mira-deployment/mira/mira ``` * 修改common-values.yaml, 主要包括ip, port, 镜像版本和数据库密码, 其中ip地址设置为集群对外地址, 数据库密码参考mysql和redis部署,k3s配置项需要从~/.kube/config获取 ```yaml 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通信端口, 服务暴露端口 ```yaml ... 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保持一致 ... ``` ```shell # 2. 修改mysql初始化脚本配置 ➜ ~ cd mira-deployment/mira/mira/templates ``` * 修改init-mysql.yaml, 主要包括mysql服务地址和密码 ```yaml 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 ``` ```shell # 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 ``` ## 服务列表 | 微服务 | 说明 | 命名空间 | 部署类型 | 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 | ## 可信计算平台初始化 在创建和执行任务前,可信计算平台需要进行地址初始化。流程如下: 1. [管理员登录][用户登录] 2. [配置链账户][配置链账户] 3. 地址初始化 - 地址初始化 在部署机上执行以下curl命令,进行可信计算平台地址初始化。如果要支持跨公网下载计算任务结果,以下IP地址需要为公网可访问地址。(注涉及的端口号表示:31008-可信计算平台web后端服务端口;31016-可信计算平台结果下载服务端口) ```shell # 以下命令中的地址为可信计算平台地址,需要根据实际部署情况进行替换,如: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"}' ``` 注:在计算任务结果下载时,需要使用预先注册的平台地址。平台地址注册依赖于链账户的配置,因此需要在链账户配置完成后进行平台地址注册。 ## 服务验证 - 服务测试 通过查看可信计算平台的版本信息进行验证,返回`success`表示服务部署成功。 ```shell ➜ ~ curl --location '192.168.40.243:31008/v1/mira/configuration/GetVersionInfo' \ --header 'Content-Type: application/json' \ --data '{}' ``` 得到以下返回结果,则表示平台部署成功。 ```json { "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" } } ``` - [通过前端页面验证](./02_用户使用说明.md) [通过Docker部署链]: https://docs.chainmaker.org.cn/v3.0.0/html/instructions/%E5%90%AF%E5%8A%A8%E6%94%AF%E6%8C%81Docker_VM%E7%9A%84%E9%93%BE.html [数据要素登记服务部署脚本]: https://git.chainweaver.org.cn/ChainWeaver/ida/gateway [可信计算服务部署脚本]: https://git.chainweaver.org.cn/ChainWeaver/mira/mira-deployment [用户证书]: https://docs.chainmaker.org.cn/v3.0.0/html/instructions/%E5%90%AF%E5%8A%A8%E6%94%AF%E6%8C%81Docker_VM%E7%9A%84%E9%93%BE.html#id11 [用户登录]: https://chainweaver.org.cn/dataCirculation/02_%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.html#id11 [配置链账户]: https://chainweaver.org.cn/dataCirculation/02_%E7%94%A8%E6%88%B7%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E.html#id28