外部微服务导入
基础服务搭建
redis
系统自带有 redis 管理功能,可通过系统管理员为租户添加 redis 实例,来方便租户内的应用使用 redis。
系统管理员登录控制台,选择“中间件管理 --> 中间件系统管理 --> Redis 实例管理 -->明细”
在明细窗口中选择“使用模板新建”按钮
参数说明:
- 数量:本次需要新增的 redis 实例数量,一般可选择1
- 应用模板:选择 redis 服务模板
- 租户:可以选择某一个租户,系统将会在租户下部署 redis 服务,也可以统一将 redis 服务部署到平台自带的 redis 租户下,方便统一管理和追踪问题。建议采用第二种方式。
- 部署集群:选择该租户下的 kube 部署集群。这样 redis 服务才会一直运行,不会被池模式回收实例。
点击确定后,系统后台会在对应的租户下面创建 redis 服务,并将此 redis 纳入到 redis 池中进行管理。当某一个租户下有 redis 服务组件的应用部署或者启动时,会到池中抢占这个创建好的 redis 实例,并进行绑定。这个 redis 实例就会分配给这个租户,方便租户内的应用进行使用。
其中分配 key 的含义,@符号前面标识是给生产还是开发时使用,每个租户会最多被分配两个 redis 实例,production-session 是提供给生产应用使用的,dev-session 是提供给开发状态的应用使用的;@符号后面则是绑定的租户名称。
nacos
系统支持一个租户部署一套 nacos,通过租户管理员登录到控制平台,选择应用/服务管理,从应用市场中选择 nacos 进行部署即可完成 nacos 的部署。
部署的时候需要注意,部署的集群请选择该租户下的 kube 集群。
由于平台目前内置的 nacos 是采用 helm 包的方式部署的,如果需要对外提供域名访问,有两种方案。一是需要用平台默认的域名访问,则要在平台的 redis 中增加相应的配置才能够将域名解析到 nacos 服务上。二是可以在 k8s 中定义 ingress 指向 nacos 服务来实现外部域名的访问。
平台默认域名访问
使用系统管理员登录到管理控制台,选择运维管理 --> Redis管理
在 Redis 管理界面中找到 GLOBAL_DOMAIN_UPSTREAM,为其增加配置项
在其中增加域名及需要映射的 service 地址。域名为应用管理中提供的默认域名,service 地址格式为:service 名称.service 所在名空间:端口号。例如:nacos-cs.newdao-tenant-edgedemo:8848。配置好后即可通过域名访问至 nacos 中
ingress 配置访问
参考 ingress 的标准用法即可,此处不再举例。
sentinel
与 nacos 一样,通过租户管理员登录控制台后,在应用服务管理中添加 sentinel 服务即可。如果需要访问的话也和 nacos 一样增加 redis 配置即可
seata
与 nacos 一样,通过租户管理员登录控制台后,在应用服务管理中添加 seata 服务即可。如果需要访问的话也和 nacos 一样增加 redis 配置即可
微服务导入
前端导入
创建前端服务
在我的开发下选择企业应用,添加创建企业应用,搜索外部应用导入模板,选择该模板来创建应用。
创建好应用后,为保证相关组件为最新的组件,可以在架构中更新相应的组件。
新增模块
进入 IDE 后,选择模块设置
在弹出的模块设置对话框中,默认会有一个 main 模块,如果不需要则可以删除。之后可以点击添加新建前端服务模块。
参数说明:
- 名称:模块的名称,建议采用英文
- 显示名:模块的显示名称,可以使用中文也可以使用英文
- 运行环境:选择应用所需的运行环境,目前有 tomcat、java、nginx、nginx-前端构建、自动等类型。如果是上传前端编译后的源码选择 nginx,如果是通过 git/svn 等方式获取前端的源码后编译发布,则选择 nginx-前端构建。
- 导入方式:目前支持上传和源码两种,选择上传时,可上传编译后的文件,选择源码时则可以配置 git/svn 选项下载源码后由平台进行编译。
设置导入参数
模块创建好后即可设置相应的参数完成应用的导入。首先在右上角选择对应的模块,之后输入相应的配置参数。这里以源码的导入举例
- 仓库类型:目前支持 svn 和 git 两种方式
- 代码分支:代码在 git 中的分支名称
- 仓库用户:代码仓库中的用户名
- 仓库 Token:代码仓库中的 token,支持使用用户名密码的模式,也支持使用 token 的模式。
- 仓库密码:代码仓库中的密码
- 源目录:代码在仓库中的目录位置
- 目标目录:需要下载至本项目下的目录位置,例如 /uisource
- 文件列表:相当于文件的白名单,在此列表的目录都会导入。目录采用通配符进行标识,结尾为 / 时表示文件夹,没有 / 时表示文件。多个文件用回车进行隔开。例如:
/test/**/ui/
/aa/**/bb/
/cc/d.html
- 文件过滤:相当于文件列表的黑名单,在此列表中的目录均不会导入。配置方法同文件列表
配置完成后点击导入源码按钮和确认按钮。
如果采用平台内置的 kong 网关则需要在配置中对网关进行设置,本此示例中采用根目录直接访问,配置如下
如果需要从平台内置的门户进行访问,则需要对服务网关进行配置
如果需要对 nginx 的配置进行修改,则可以在代码选项卡中,修改相应的配置文件。路径如下:/model/service/模块名称/deploy/模块名称.module.conf
发布前端服务
完成配置后点击右上角的发布按钮,即可将应用发布至生产环境或者发布至应用市场中。
发布成功后与 nacos 一样,可以有两种选择将前端服务的访问地址暴露出去。一是使用平台默认的网关进行访问,二是手动配置 ingress 指向部署后的前端应用 pod,配置可参考前面的 nacos 配置。
后端导入
创建微服务
在我的开发下选择企业应用,添加创建企业应用,搜索外部应用导入模板,选择该模板来创建应用。
创建好应用后,为保证相关组件为最新的组件,可以在架构中更新相应的组件。
新增模块
进入 IDE 后,选择模块设置
在弹出的模块设置对话框中,默认会有一个 main 模块,如果不需要则可以删除。之后可以点击添加新建前端服务模块。
参数说明:
- 名称:模块的名称,建议采用英文
- 显示名:模块的显示名称,可以使用中文也可以使用英文
- 运行环境:选择应用所需的运行环境,目前有 tomcat、java、nginx、nginx-前端构建、自动等类型。如果是上传前端编译后的源码选择 nginx,如果是通过 git/svn 等方式获取前端的源码后编译发布,则选择 nginx-前端构建。
- 导入方式:目前支持上传和源码两种,选择上传时,可上传编译后的文件,选择源码时则可以配置 git/svn 选项下载源码后由平台进行编译。
设置导入参数
模块创建好后即可设置相应的参数完成应用的导入。首先在右上角选择对应的模块,之后输入相应的配置参数。这里以源码的导入举例
- 仓库类型:目前支持 svn 和 git 两种方式
- 代码分支:代码在 git 中的分支名称
- 仓库用户:代码仓库中的用户名
- 仓库 Token:代码仓库中的 token,支持使用用户名密码的模式,也支持使用 token 的模式。
- 仓库密码:代码仓库中的密码
- 源目录:代码在仓库中的目录位置
- 目标目录:需要下载至本项目下的目录位置,例如 /uisource
- 文件列表:相当于文件的白名单,在此列表的目录都会导入。目录采用通配符进行标识,结尾为 / 时表示文件夹,没有 / 时表示文件。多个文件用回车进行隔开。例如:
/test/**/ui/
/aa/**/bb/
/cc/d.html
- 文件过滤:相当于文件列表的黑名单,在此列表中的目录均不会导入。配置方法同文件列表
配置完成后点击导入源码按钮和确认按钮。
微服务相关设置
导入的微服务需要重点注意四个地方的配置
①、服务依赖配置
如果一个微服务中有其他的服务依赖,提供两种解决方案。一是通过 maven 的私有化仓库,二是将所依赖的服务源码一起导入后共同进行编译,源码按照相应的层级关系放置即可。
②、多层级代码时 pom 文件修改
如果代码存在多层级的目录,或者父子工程,则需要对 pom 文件中编译后的 target 目录进行修改,将目录指向模块根目录下的 target 目录,这样平台才能够识别到需要发布的 jar 包是哪一个。
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<addResources>true</addResources>
<outputDirectory>../../../target</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
③、微服务注册地址配置
代码中的微服务注册地址、端口号等设置主要提供有两种方式。
- 一是手动编写,即手动编写可以访问到的地址及端口号。
- 二是组件进行补充,通过引入 cloud link 组件,会默认指向该租户下的 nacos、redis 等服务。cloudLink 里面维护了 nacos 服务、sentinel 服务的连接信息。cloudLink 组件可以生成如下环境变量,在应用开发过程中,开发者可在代码里面引用这些变量
//目前已有的参数
// sentinel地址全路径
COMP_CLOUDLINK_SENTINEL_ADDRESS
// nacos IP地址
COMP_CLOUDLINK_NACOS_IP
// nacos 端口
COMP_CLOUDLINK_NACOS_PORT
// redis 地址
COMP_REDIS_REDISHOST
// redis 端口号
COMP_REDIS_REDISPORT
// redis 密码
COMP_REDIS_REDISPASSWORD
在 nacos 中的配置文件也是同理
发布微服务
点击右上角的发布按钮,即可将微服务发布至生产环境或者发布至应用市场中。
发布成功后就可以在 nacos 中的服务列表中看到注册成功的服务。