Skip to content

apaas官方改造说明

最新官方改造文档:https://kdocs.cn/l/cuaZ2k2X9RFz

视频资料: https://cloud.189.cn/web/share?code=auqAbq3YFRvq(访问码:91nt)

添加apaas二方库

编辑项目虚拟制品库,勾选apaas二方库ctsi_ctdi-ssdc-oshare-maven-mc。如果有release和snapshot两个制品库,两个都需要添加。

认证改造

项目pom.xml文件修改 项目父pom文件及对应子模块的pom文件中,需要去掉auth相关的依赖,如下所示,

xml
<!--<dependency>
    <groupId>cn.zjtele.pubinfo.sys.auth</groupId>
    <artifactId>auth-api</artifactId>
    <version>${sys-auth.version}</version>
</dependency>-->

项目api模块的pom文件需要引入apaas插件

  • 单体项目,需要引入apaas-api
xml
<dependency>
   <groupId>cn.zjtele.pubinfo.sys.plugins.apaas</groupId>
   <artifactId>apaas-api</artifactId>
   <version>1.0.6</version>
</dependency>
  • 微服务项目,业务微服务需要引入apaas-auth,基础系统管理服务(xxx-sys)需要引入apaas-api
xml
<dependency>
    <groupId>cn.zjtele.pubinfo.sys.plugins.apaas</groupId>
    <artifactId>apaas-auth</artifactId>
    <version>1.0.6</version>
</dependency>

application.yml配置文件修改 老版配置:

yml
lowcode:
  oauth2:
    clientId: yuncheng-client
    clientSecret: yuncheng-client
    providerUri: https://tfeuurvo-lowcode-oauth.entry.ctapaas.cn
  api:
    powerApiUri: https://tfeuurvo-lowcode-magic.entry.ctapaas.cn
    lowcodeApiUri: https://tfeuurvo-lowcode-boot.entry.ctapaas.cn

新版配置:

yml
lowcode:
  oauth2:
    clientId: yuncheng-client
    clientSecret: yuncheng-client
    providerUri: https://********-zero-code.entry.ctapaas.cn
  api:
    powerApiUri: https://********-zero-code.entry.ctapaas.cn
    lowcodeApiUri: https://********-zero-code.entry.ctapaas.cn

本地调试时,需要先进入开发者工作台,创建测试项目,然后更换配置中的命名空间,其中tfeuurvo为命名空间。

用户组织同步

项目引入了apaas-api依赖后,默认第一次启动会对apaas平台的用户、组织进行全量同步,之后每隔一段时间会对用户、组织进行增量同步。增量同步控制开关和同步时间可在配置文件中进行定义, application.yml配置文件:

yml
pubinfo:
  apaas:
    task:
    enable: true
    updateIncrementUser:
      cron: 0 0 22 * * ?
    updateIncrementOrg:
      cron: 0 0 22 * * ?

liquibase整合

xml文件修改 项目api模块,resource/db/目录下增加init-schema.xml文件,存放项目所需业务表的初始化sql语句,文件内容样例如下,

xml
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd
    http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet id="cadre-20240716-001" author="cadre">
<sql dbms="mysql" >
CREATE TABLE `test_demo` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键'
....
</sql>
</changeSet>
</databaseChangeLog>

resource/db/目录changelog-master文件中需要引入新增加的init-data.xml文件,

xml
<includeAll path="classpath:/db/changelog/init-*"/>

application.yml配置文件修改 开启liquibase配置:

yml
spring:
  liquibase:
    change-log: classpath:/db/changelog-master.xml
    enabled: true

swagger文档

获取swagger.json文件 本地启动项目,访问项目的swagger docs地址,如http://localhost:9000/demo-app/doc.html,选择业务的一个分组,进入文档管理-离线文档,下载OpenAPI文档。

环境变量配置文件

注意

项目代码中的数据库、redis等中间件可以使用本地的调试,组件上架调试及在apaas运行时,会使用环境变量配置文件中的内容其他代码中的配置项。上架时,正确勾选所依赖的中间件,然后环境变量配置文件会通过占位符的方式,进行配置。运行时,占位符会替换为真实的环境配置。占位符参考下面说明。

创建env-variable.json文件,文件内容样例如下: 其他中间件配置按照下面的配置示例,自行补充.

json
{
  "lowcode.oauth2.clientId": "yuncheng-client",
  "lowcode.oauth2.clientSecret": "yuncheng-client",
  "lowcode.oauth2.providerUri": "${oauth2.url}",
  "lowcode.api.powerApiUri": "${powerApi.apiUrl}",
  "lowcode.api.lowcodeApiUri": "${lowcodeBoot.userServiceUrl}",
  "server.port": "9000",
  "server.servlet.context-path": "",
  "spring.liquibase.enabled": "true",
  "spring.datasource.url": "${thisAbility.[后端服务名].mysql.url}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai",
  "spring.datasource.username": "${mysql.username}",
  "spring.datasource.password": "${mysql.password}",
  "spring.redis.host": "${redis.host}",
  "spring.redis.port": "${redis.port}",
  "spring.redis.password": "${redis.password}",
  "pubinfo.apaas.task.enable": "true",
  "pubinfo.apaas.task.updateIncrementUser.cron": "0 0 22 * * ?",
  "pubinfo.apaas.task.updateIncrementOrg.cron": "0 0 22 * * ?",
  "pubinfo.log.enable": "true"
}

apaas中间件占位符配置:

组件自身服务的数据库(mysql): ${thisAbility.notice_board_backx.mysql.url}
组件自身服务的数据库(pgsql): ${thisAbility.notice_board_backy.pgsql.url}
组件自身服务的数据库(mariadb): ${thisAbility.notice_board_backy.mariadb.url}
依赖组件的服务的数据库(mysql): ${N1100000188.dep_common_backx.mysql.url}
依赖组件的服务的数据库(pgsql): ${N1100000188.dep_common_backy.pgsql.url}
依赖组件的服务的数据库(mariadb): ${N1100000188.dep_common_backy.mariadb.url}
依赖组件的数据库用户名(mysql): ${mysql.username}
依赖组件的数据库用户名(pgsql): ${pgsql.username}
依赖组件的数据库用户名(mariadb): ${mariadb.username}
依赖组件的数据库密码(mysql): ${mysql.password}
依赖组件的数据库密码(pgsql): ${pgsql.password}
依赖组件的数据库密码(mariadb): ${mariadb.password}
组件自身的服务地址(后端1): ${thisAbility.notice_board_backx.externalAddress.default}
组件自身的服务地址(后端2): ${thisAbility.notice_board_backy.externalAddress.default}
组件自身的服务的websocket地址(后端1): ${thisAbility.notice_board_backx.externalAddress.webSocket}
组件自身的服务的websocket地址(后端2): ${thisAbility.notice_board_backy.externalAddress.webSocket}
组件自身的服务的内部地址(后端1): ${thisAbility.notice_board_backx.inCluster.service}
组件自身的服务的内部地址(后端2): ${thisAbility.notice_board_backy.inCluster.service}
依赖组件的服务地址(后端1): ${N1100000188.dep_common_backx.externalAddress.default}
依赖组件的服务地址(后端2): ${N1100000188.dep_common_backy.externalAddress.default}
依赖组件的服务的websocket地址(后端1): ${N1100000188.dep_common_backx.externalAddress.webSocket}
依赖组件的服务的websocket地址(后端2): ${N1100000188.dep_common_backy.externalAddress.webSocket}
依赖组件的服务的内部地址(后端1): ${N1100000188.dep_common_backx.inCluster.service}
依赖组件的服务的内部地址(后端2): ${N1100000188.dep_common_backy.inCluster.service}
BASE_ROUTE: ${thisAbility.frontend.baseRoute}
MYSQL_USERNAME: ${mysql.username}
MYSQL_PASSWORD: ${mysql.password}
MYSQL_HOST: ${mysql.host}
MYSQL_PORT: ${mysql.port}
REDIS_HOST: ${redis.host}
REDIS_PORT: ${redis.port}
REDIS_PASSWORD: ${redis.password}
MINIO_ADDRESS: ${minio.address}
MINIO_SECRETKEY: ${minio.secretKey}
MINIO_ACCESSKEY: ${minio.accessKey}
NACOS_SERVERADDR: ${nacos.serverAddr}
NACOS_USERNAME: ${nacos.username}
NACOS_PASSWORD: ${nacos.password}
NACOS_NAMESPACE: ${nacos.namespace}
NACOS_GROUP: ${thisAbility.nacos.group}
USER_SERVICE_URL: ${lowcodeBoot.userServiceUrl}
POWER_API_URL: ${powerApi.apiUrl}
OAUTH2_URL: ${oauth2.url}
ROCKETMQ_NAME_SERVER: ${rocketmq.nameServer}
ROCKETMQ_CONSOLE_ADDRESS: ${rocketmq.console.address}
ROCKETMQ_CONSOLE_USER_USERNAME: ${rocketmq.console.user.username}
ROCKETMQ_CONSOLE_USER_PASSWORD: ${rocketmq.console.user.password}
ROCKETMQ_CONSOLE_ADMIN_PASSWORD: ${rocketmq.console.admin.password}
ROCKETMQ_BROKER_ADMIN_ACCESSKEY: ${rocketmq.broker.admin.accessKey}
ROCKETMQ_BROKER_ADMIN_SECRETKEY: ${rocketmq.broker.admin.secretKey}
PGSQL_USERNAME: ${pgsql.username}
PGSQL_PASSWORD: ${pgsql.password}
PGSQL_HOST: ${pgsql.host}
PGSQL_PORT: ${pgsql.port}
MARIADB_USERNAME: ${mariadb.username}
MARIADB_PASSWORD: ${mariadb.password}
MARIADB_HOST: ${mariadb.host}
MARIADB_PORT: ${mariadb.port}
KAFKA_BOOTSTRAP_SERVERS: ${kafka.bootstrapServers}
RABBITMQ_HOST: ${rabbitmq.host}
RABBITMQ_PORT: ${rabbitmq.port}
RABBITMQ_USERNAME: ${rabbitmq.username}
RABBITMQ_PASSWORD: ${rabbitmq.password}
ZOOKEEPER_CONNECT: ${zookeeper.connect}
ELASTICSEARCH_CLUSTER_NODES: ${elasticsearch.clusterNodes}
ELASTICSEARCH_PORT: ${elasticsearch.port}
ELASTICSEARCH_USERNAME: ${elasticsearch.username}
ELASTICSEARCH_PASSWORD: ${elasticsearch.password}
GRAFANA_HOST_URL: ${grafana.hostUrl}
GRAFANA_SVC_URL: ${grafana.svcUrl}
GRAFANA_USERNAME: ${grafana.username}
GRAFANA_PASSWORD: ${grafana.password}
GRAFANA_PROXY_SVC_URL: ${grafana_with_proxy.proxySvcUrl}
PROMETHEUS_HOST_URL: ${prometheus.hostUrl}
PROMETHEUS_SVC_URL: ${prometheus.svcUrl}
KIBANA_HOST_URL: ${kibana.hostUrl}
KIBANA_SVC_URL: ${kibana.svcUrl}
XXLJOB_ADMIN_ADDRESSES: ${xxljob.admin.address}
XXLJOB_ADDRESS: ${xxljob.address}
XXLJOB_ADMIN_USERNAME: ${xxljob.admin.username}
XXLJOB_ADMIN_PASSWORD: ${xxljob.admin.password}

nacos压缩包准备

上架需要上传nacos压缩包,压缩包内包含前端的apaas上架产物micro-service-config.js;除此之外,如果项目自身使用nacos作为配置中心,可以导出自己原nacos服务中的配置文件,一并放入压缩包中上传。

后端服务上架日志查看

后端服务上架过程中或调试过程中有异常,可以通过查看容器日志定位。

首先,为了保证容器日志正确打印到控制台,请确认docker制品构建时,日志输出已正确修改。docker制品日志输出修改

日志下载步骤如下:

  • 1、在在线调试页面中,找到对应后端服务,点击查看服务详情
  • 2、在查看服务详情页面,找到容器日志,点击日志
  • 3、在日志页面,点击下载日志

生成docker镜像

docker镜像构建参考:docker镜像构建 最终通过docker save命令导出tar包

文档准备

服务名问题

注意

服务名称需与Nacos 配置文件或者启动参数配置文件中的服务名称保持一致,服务名仅支持小写英文,如果在配置文件服务名称中存在_,在此输入时转换为-即可。例如在配置文件中服务名称为 demo_test,则在这里需要要入demo-test

应用上架

后端上架需要的产物为:env-variable.json,swagger.json,docker镜像tar包, 上架步骤,略。