8. DID-APP部署文档

8.1. k8s部署方式

8.1.1. 软件环境准备

软件 版本 描述
docker 18+ docker容器服务
docker-compose v1.26+
redis集群 7.2+
mysql V8+ mysql数据库
可访问的Docker镜像服务 - 存储镜像

8.1.1.1. Kubernetes集群

  • 确保已有一个运行中的Kubernetes集群,版本建议为v1.18或更高。

  • 已安装并配置kubectl命令行工具,用于与Kubernetes集群交互

8.1.1.2. Docker镜像仓库

  • 项目方准备一个公网可访问的Docker镜像仓库,用于存储“DID APP后台”微服务的镜像。在后续运行部署流程时会自动拉取,如果Kubernetes所在环境无法访问互联网,需要手动载入Docker镜像到Kubernetes的Worker节点。载入命令在物料包中,执行:

  • 手动载入Docker镜像,找个能连hub-dev.cnbn.org.cn的服务器

  docker pull hub-dev.cnbn.org.cn/opennet/did-app-backend:v1.1.0
  docker save did-app-backend-v1.1.0.tar hub-dev.cnbn.org.cn/opennet/did-app-backend:v1.1.0
  • 上传文件 did-app-backend-v1.1.0.tar 到服务器

  docker load -i did-app-backend-v1.1.0.tar

8.1.2. 部署流程

  • 下载部署仓库: https://git.code.tencent.com/ChainWeaver/did/did-app-backend

  • 在下载的仓库的k8s目录下,既是k8s的部署did-app-backend-deployment.yaml

8.1.2.1. 根据实际需要修改ConfigMap

在实际项目使用中可能会存在测试环境、预生产环境、生产环境等多套环境,请根据实际环境的需求调整ConfigMap中的参数。如复制份数、日志输出等。

8.1.2.2. 修改did-app-backend-configmap

修改did-app-backend-deployment.yaml中的ConfigMap配置(以下是一些关键的配置描述):

  • mysql:改为实际的数据库的服务

  • email_auth_code:改为实际发邮件的服务

  • auth_code:改为实际下发短信的服务

  • RedisConf:改为实际缓存数据库的服务

  • did:改为实际DID gateway服务地址

  • auth_service:改为实际电子营业执照小程序服务地址

8.1.2.3. 部署到Kubernetes集群

  • 使用kubectl apply命令部署资源定义文件到Kubernetes集群:

  kubectl apply -f did-app-backend-deployment.yaml

8.1.2.4. 验证部署检查Pod状态,确保DID APP后台”微服务已成功启动并运行

  • 利用kubectl get 命令查看服务是否启动

  kubectl get pod -n did| grep did-app

返回结果如下,1/1则表示微服务有一个实例,启动成功1个pod实例,如果是2/2则表示有两个实例,启动成功了2个pod实例:

  did-app-XXXXX-XXX      1/1     Running   0               1d

检查Service和Ingress资源配置,保外部访问路径和端口正确:

kubectl get svc,ing -n did| grep did-app
  • 利用health接口验证是否部署成功(ip为k8s work的地址,host为端口号)

curl -X GET https://ip:host/api/v1/did-app/health

返回结果如下,表示部署成功:

{"code":200000,"msg":"操作成功","data":{"version":"v1.0.0","app_chinese_name":"航运贸易app","didIssuer":"did:cndid:cndid","personAuthEnable":false,"downloadLink":"https://zxchain-wallet-1258344699.cos.ap11.apk"}}