融合supOS

近期做了蓝卓supOS平台的融合工作,简单记录一下

准备工作

创建APP

  1. 打开蓝卓云开发商工作台并登录
  2. 进入【APP集成】 - 【Hosted-APP】页面,创建APPHosted-APP
  3. 填写必填项创建Hosted-APP

基础配置

点击APP卡片下方配置按钮进入配置页配置

APP信息——APP.yaml

填写必填信息(【开发者名称】和【APP英文名称】会组成应用在supOS访问路径中的前缀)
app.yaml

开发者信息——vendor.yaml

非必填(暂时未发现用途)

APP运行配置——config.ini

非必填
SDK_ADDRESS配置必须要有,否则无法在线上环境调用supOS的SDK
config.ini和application.yml的对应关系

config.ini application.yml
[SDK]ADDRESS=xxx ${SDK_ADDRESS}
[NACOS]HOST=127.0.0.1 ${NACOS_HOST}
1
[SDK]
2
# 线上环境调用SDK必须要有
3
ADDRESS = http://192.168.0.212:8080
4
[SUPOS]
5
IP = 192.168.0.212
6
ADDRESS = http://192.168.0.212:8080
7
WEBHOOK_URL = http://192.168.0.212:8080/apps/a-d/ucs/supos/webhook
8
SUPOS_LOGOUT_URL = http://192.168.0.212:8080/apps/a-d/ucs/supos/auth/logout/%s
9
[NACOS]
10
HOST = 127.0.0.1
11
[REDIS]
12
HOST = 127.0.0.1

数据源配置——requirement.yaml

非必填

菜单配置

  1. 点击【excel模板下载】下载模板
  2. url字段需要加上supOS前缀,就是上文提到的前端访问的【开发者名称】和【APP英文名称】
    规则:/apps/{开发者名称}-{APP英文名称}/{地址/路由}
    🌰:/apps/blackteachan-demo/index.htmlmenu.xlsx
  3. 填写完菜单excel后,在工作台中点击【excel导入】,就可以一键生成菜单配置

容器配置——compose.yaml

按照右侧规范进行填写,示例如下

1
# -------------------------------------------- 
2
# add by blackteachan 24-01-16
3
# --------------------------------------------  
4
apiVersion: v3alpha1
5
service:
6
  replicas: 1
7
  proxy:
8
    paths:
9
      - path: /
10
        servicePort: 8080
11
  ports:
12
    - port: 8080
13
      targetPort: 8080
14
      protocol: TCP
15
      name: xxx
16
  containers:
17
    # --------- redis ---------
18
    - name: redis
19
      image: eco-registry.supos.com/dev/supoXxx/redis:6.2.6
20
      volumeMounts:
21
        - name: redis-data
22
          mountPath: /data
23
      ports:
24
        - containerPort: 6379
25
      # --------- nacos ---------
26
    - name: nacos
27
      image: eco-registry.supos.com/dev/supoXxx/nacos/nacos-server:2.0.3
28
      ports:
29
        - containerPort: 8848
30
      # --------- nginx ---------
31
    - name: nginx
32
      image: eco-registry.supos.com/dev/supoXxx/nginx:x.x.x
33
      ports:
34
        - containerPort: 8080
35
      # --------- jar ---------
36
    - name: java-app
37
      image: eco-registry.supos.com/dev/supoXxx/xxx:x.x.x
38
      ports:
39
        - containerPort: 9090
40
      resources:
41
        requests:
42
          cpu: 1000m
43
          memory: 1024Mi
44
        limits:
45
          cpu: 8000m
46
          memory: 8192Mi
47
      volumeMounts:
48
        - name: u-storage
49
          mountPath: /home/u-storage
50
      logDirectory: /logs

生成安装包

前面全部完成之后,会自动生成并下载安装包,点击最外面卡片可以把全部配置打包zip下载(留着后面上传用)
img.png

requirement.yaml

控制台上没有对requirement.yaml文件进行配置,在这里简单贴一下🌰
requirements.databases.name字段在application.yml文件中用${SUPOS_DB-XXX-A_DBNAM:xxx}进行注入
requirements.volumes.nameu-storage对应上文compose.yaml文件里的service.containers.volumeMounts.name
requirements.volumes.localPath是服务器的物理路径,的u-storage对应上文compose.yaml文件里的

1
# 安装包版本。必填。固定值
2
apiVersion: v3alpha4
3
# 资源申请列表
4
requirements:
5
  # 申请天湖数据库资源。非必填。
6
  databases:
7
    - name: db-xxx-a
8
      resourceType: mariadb
9
      apply: reject
10
    - name: db-xxx-b
11
      # 资源类型。必填。当前支持:mariadb,tsdb,postgres
12
      resourceType: mariadb
13
      # 使用平台库。必填。值为:allow和reject。默认值为reject。
14
      apply: reject
15
  # 申请持久卷资源。非必填。
16
  volumes:
17
    # 持久卷名称。必填项。注意:此名称将会在compose.yaml文件中使用。
18
    - name: redis-data
19
      # 持久卷类型。必填项。取值:pvc=网络盘,local=本地盘(即当前机器的硬盘)。
20
      resourceType: pvc
21
      # 空间大小。非必填。当resourceType=pvc时必填。格式为:100Mi、1Gi
22
      size: 1Gi
23
    - name: u-storage
24
      resourceType: local
25
      # 服务器的路径
26
      localPath: /home/u-storage

接入SDK

申请AKSK

  1. 访问supOS本地地址并登录
  2. 进入【普通视图】普通视图
  3. 点击右上角的设计图标设计图标
  4. 进入【系统管理】-【系统配置】-【系统设置】页面的【AK/SK凭证管理】功能AKSK凭证管理
  5. 新增一个AKSK(APP ID暂时没发现有什么用途)

组织架构&用户

文档

官方文档比较乱七八糟模糊,接口调用的时候尽量按照实际来,文档地址可以在supOS里找到接口文档.png

SDK

  1. 进入官网开发者中心可以找到JAVA-SDK源码,官方迭代比较迅速,写这篇文章的时候已经从刚下载的3.2.4升级到了3.2.6
  2. 对bluetron-java-sdk这个模块进行打包,供后续开发使用
    ⭐️也可以为了开发方便,对SDK进行二次封装,并上传到二方库SDK项目工程

示例代码

🚧以后有时间封装一下

Java示例

  1. application.yml配置里需要用到初始化数据库
    1
    spring:
    2
      sql:
    3
        init:
    4
          mode: always
    5
          schema-locations: classpath*:db/schema.sql
    6
      jpa:
    7
        hibernate:
    8
          ddl-auto: update
    9
        show-sql: true
  2. 创建sql文件,放在src/main/resources/db/schema.sql这个位置(spring.sql.init.schema-locations)
    如果是用Navicat导出结构,需要把所有创建表的语句调整一下,否则每次启动都会重新删表建表
    1
    -- Navicat导出
    2
    DROP TABLE IF EXISTS `xxx`;
    3
    CREATE TABLE `xxx` (
    4
        ......
    5
    );
    1
    -- 修改后
    2
    CREATE TABLE IF NOT EXISTS `xxx` (
    3
        ......
    4
    );

打包上传

准备工作

安装Docker

一键安装脚本

IDEA插件

确保IDEA安装了Docker插件,构建镜像的时候简单方便些

添加私有注册表

在IDEA的服务中加入Docker注册表Docker注册表

前端打包

  1. 把前端文件夹和Dockerfile放在一个目录下前端目录
  2. 编写Dockerfile
    1
    FROM eco-registry.supos.com/eco/nginx:latest
    2
    3
    # 设置工作目录
    4
    # 拷贝nginx配置文件到镜像
    5
    COPY default.conf /etc/nginx/conf.d/
    6
    # 拷贝应用文件到镜像
    7
    COPY dist /usr/share/nginx/html
    8
    9
    # 设置容器的默认端口
    10
    EXPOSE 8080
  3. 用IDEA构建镜像构建镜像
  4. 构建完成后推送镜像推送镜像
  5. 【仓库】和【标签】对应上文compose.yaml文件中的镜像地址最后那一坨,比如仓库是redis,标签是6.2.6,镜像就是redis:6.2.6

后端打包

  1. 编写Dockerfile
    1
    # 基础镜像地址
    2
    FROM eco-registry.supos.com/eco/openjdk:8-jdk-alpine
    3
    # 设置时区
    4
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    5
    RUN echo 'Asia/Shanghai' >/etc/timezone
    6
    7
    WORKDIR /apps
    8
    # 添加程序jar文件
    9
    COPY ./target/xxx-*.jar ./xxx.jar
    10
    # 设置应用的jvm参数
    11
    ENV jvm_opts="-server -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=256m -Xms512m -Xmx1024m -Xmn512m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dtask=true"
    12
    EXPOSE 8082
    13
    ENTRYPOINT exec java -jar $jvm_opts xxx.jar
  2. 把下载下来的配置文件解压,修改容器里的镜像再打包后端目录

上传APP

  1. 进入supOS设计模式的【APP管理】-【APP运行管理】页面
  2. 选择本地安装,上传刚刚的压缩包本地安装
  3. 安装完成之后就可以运行了
坚持原创技术分享,您的支持将鼓励我继续创作!