林昶
林昶
Published on 2025-04-21 / 33 Visits
0
0

iDME私有化部署流程

iDME私有化部署首次部署流程

1. 创建应用

  1. 查看华为官方文档 (opens new window)根据提示创建应用

  2. 进入应用中心查看应用ID

2. 下载SDK包

  1. 进入应用发布页面

  2. 在指定版本下生成及下载XDM-F SDK包

  3. 解压下载的SDK包

tar -xvf {SDK包所在路径} -C {解压的路径}

3. 编辑配置文件

  1. 需保证有RDS库(MySQL数据库)及Redis库

  2. 阅读华为官方文档

  3. 可参考该配置进行调整

    # 数据库配置
    RDS_IP=192.168.168.207  # 数据库地址,需修改
    RDS_PORT=31446  # 数据库端口,需修改
    RDS_NAME=root  # 数据库用户名,需修改
    RDS_PASSWORD=test  # 数据库密码,需修改
    RDS_TYPE=mysql
    RDS_DATABASE=xdm-test # 数据库名,需修改
    
    # Redis配置
    REDIS_HOST=192.168.168.54 # Redis地址,需修改
    REDIS_PASSWORD=123456 # Redis密码,需修改
    REDIS_PORT=6379 # Redis端口,需修改
    REDIS_TYPE=SINGLE
    
    # 公共信息配置
    TENANT_ID=e3231ab62e9d4771bd0df793f62d2282 # 应用ID,需修改
    APP_NAME=SieProMom # 应用名称,需修改
    APP_IDENTIFIER=e3231ab62e9d4771bd0df793f62d2282 # 应用ID,需修改
    PAAS_APP_NAME=siepromom # 应用名称的小写,需修改
    server.ssl.enabled=false
    olc.config.path=/opt/deploytest/olc
    xdm.delegate.bean.inject=false
    server.servlet.context-path=/rdm_e3231ab62e9d4771bd0df793f62d2282_app/services/ # 格式:/rdm_{应用ID}_app/services/,需修改
    java.compile.lib.path=/opt/xdm/lib
    
    # MongoDB配置
    mongodb.init=false
    
    # Kafka配置
    kafka.init=false
    
    # IAM配置
    XDM_LOGIN_TYPE=LOCAL
    ssf.sysmgr.sessionfilter.loginUrl=LOCAL
    ssf.sysmgr.sessionfilter.ignorePattern=/getIndexUrl;/v1/health;/v1/login/login;/v1/login/logout;/v1/login/verifycode;/v1/firstlogin/users;/v1/firstlogin/userpasswords:PUT;/static/**;/index.html;/HuaweiLog.ico;/HuaweiLog.png
    ssf.login.logoutUri=https://192.168.168.54:8003//authui/logout # 登出地址,格式为:https://{站点地址}/authui/logout,需修改
    OPEN_IAM_TOKEN_VALIDATION=false
    RUNTIME_ENV_TYPE=IES
    XDM_SDK_DEPLOY_ENABLE=true
    
    # 禁用二级缓存
    OPEN_SECOND_LEVEL_CACHE=false
    
    # 日志过滤
    DEVSPORE_LOG_DESENSITIZATION_CONFIG=OFF
    xdm.log.filter=false
    
    # 关闭验证码
    ssf.login.local.verifycode.verify-code=false
    
    # 许可路径
    xdm.license.licenseFile=/opt/xdm/license.dat # 许可文件路径,如无此配置则为试用状态,根据情况修改
    
    # 高代码相关
    CUSTOM_SERVICE_GLOBAL_SWITCH=true
    CUSTOM_SERVICE_MANAGEABLE=true
    CUSTOM_SERVICE_MODIFIABLE=true
    CUSTOM_SERVICE_EXECUTABLE=true
    CUSTOM_CODE_WHITELIST=
    
    
    # tenant.info配置
    tenant.info=

4. 生成镜像

  1. 根据启动脚本创建startxdm.bash文件,放到与配置文件同一个文件夹

    cd /opt/xdm/
    # 指定启动类
    START_CLASS=com.huawei.microservice.rdm.RdmApplication
    
    # 指定启动类所在路径,为lib目录下
    LOAD_CLASSPATH=./lib/*:./
    BIND_ADDRESS=`hostname -i`
    
    # 从部署包中解压出olc配置文件
    jar xvf ./lib/microserviceTemplate.app-1.0.0-SNAPSHOT-shaded-small.jar olc
    
    # 执行java命令,以配置文件application.properties启动服务,并把日志输入到当前目录下的xdm.log中
    sh -c "java -Xms8g -Xmx8g -Dconfig.file=/opt/xdm/application.properties -classpath $LOAD_CLASSPATH $START_CLASS --server.address=${BIND_ADDRESS} -Diit.test=true"
    
  2. 创建Dockerfile文件,放到与配置文件同一个文件夹

    # 使用官方的 openeuler 作为基础镜像
    FROM openeuler/bisheng-jdk:1.8.0-oe2203lts
    
    # 验证 JDK 安装
    RUN java -version
    
    # 设置工作目录
    WORKDIR /opt/xdm
    
    # 将应用所需的 JAR 文件和脚本复制到容器中
    COPY lib /opt/xdm/lib
    COPY startxdm.bash /opt/xdm/startxdm.bash
    COPY application.properties /opt/xdm/application.properties
    COPY license.dat /opt/xdm/license.dat
    
    # 确保脚本有执行权限
    RUN chmod +x /opt/xdm/startxdm.bash
    
    # 暴露应用运行时需要的端口 (如果你知道具体端口,可以在此处设置)
    EXPOSE 8003
    
    # 设置容器启动时执行的命令
    CMD ["/bin/sh", "/opt/xdm/startxdm.bash"]
    
  3. 进入Dockerfile文件所属文件夹,文件夹下结构如下图

  4. 执行命令,生成镜像,镜像名及版本号可以自定义

    docker build --no-cache -t xdm:1 .

5. 运行镜像

  1. 将镜像上传到客户方私有镜像仓库或公有云仓库

    • 如果网络不通可以通过本地文件发送

  2. 本地打包镜像文件可参考下面命令

    docker save xdm:1 -o D:\xdm1.tar
    docker load -i /tmp/xdm1.tar
    
  3. 启动容器

    • 可参考以下K8s yaml文件

      kind: Deployment
      apiVersion: apps/v1
      metadata:
        name: xdm-runtime
        namespace: pre-product
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: xdm-runtime
        template:
          metadata:
            labels:
              app: xdm-runtime
          spec:
            containers:
              - name: xdm-runtime
                image: 'xdm:1'
                resources:
                  limits:
                    cpu: '4'
                    memory: 8000Mi
                terminationMessagePath: /dev/termination-log
                terminationMessagePolicy: File
                imagePullPolicy: Always
                securityContext:
                  privileged: true
            restartPolicy: Always
            terminationGracePeriodSeconds: 30
            dnsPolicy: ClusterFirst
            securityContext: {}
            schedulerName: default-scheduler
        strategy:
          type: RollingUpdate
          rollingUpdate:
            maxUnavailable: 25%
            maxSurge: 25%
        revisionHistoryLimit: 10
        progressDeadlineSeconds: 600

6. 验证系统

  1. 进入系统,系统地址为 http://{部署服务器的IP地址}:{部署服务器的端口号}/rdm_{应用的唯一标识}_app/services/index.html

  2. 首次进入需设置管理员密码

  3. 设置完进入系统,能正常访问说明部署成功

获取License流程

  1. 修改License相关配置

    xdm.license.deployType=CONTAINER #表示部署模式为容器
    xdm.license.runtime.valid-type=TRIAL #表示试用模式
  2. 确保iDME正常启动

  3. 通过PostMan或者其他调用工具调用接口http://{服务的IP地址}:{服务的端口号}/rdm_{应用的唯一标识}_app/services/v1/license/collect-esn调用接口,http头添加x-auth-token值为1,获取到的一个唯一编码

  4. 把获取到的唯一编码发送邮件到华为iDME负责人chenyutao6@huawei.com邮箱上,邮件内容可参考

  5. 等待License申请下来后把License文件通过K8s密钥映射到工作负载中,路径为xdm.license.licenseFile配置指定的路径。

  6. 修改xdm.license.runtime.valid-typeLICENSE,重启工作负载。

  7. 确认应用有效期生效。

iDME私有化部署升级流程说明

1. 下载新版本SDK包

下载新版本SDK包,解压后,将解压后的文件放入Dockerfile所在目录,解压前最好把原目录下的lib文件夹删除,避免有文件遗留,参考命令

rm -rf {Dockerfile所在目录}/lib
tar -xvf {SDK包所在路径} -C {Dockerfile所在目录}

2. 打包升级镜像

进入Dockerfile所在目录,打包新版本镜像,记得镜像版本需比原版本号大

docker build --no-cache -t xdm:2 .

3. 更新镜像

在K8s管理工具中修改pod镜像版本,重启pod


Comment