外部微服务导入
1、基础服务搭建
1.1、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是提供给开发状态的应用使用的;@符号后面则是绑定的租户名称。
1.2、nacos
系统支持一个租户部署一套nacos,通过租户管理员登录到控制平台,选择应用/服务管理,从应用市场中选择nacos进行部署即可完成nacos的部署。
部署的时候需要注意,部署的集群请选择该租户下的kube集群。
由于平台目前内置的nacos是采用helm包的方式部署的,如果需要对外提供域名访问,有两种方案。一是需要用平台默认的域名访问,则要在平台的redis中增加相应的配置才能够将域名解析到nacos服务上。二是可以在k8s中定义ingress指向nacos服务来实现外部域名的访问。
1.2.1、平台默认域名访问
使用系统管理员登录到管理控制台,选择运维管理 --> redis管理
在redis管理界面中找到GLOBAL_DOMAIN_UPSTREAM,为其增加配置项
在其中增加域名及需要映射的service地址。域名为应用管理中提供的默认域名,service地址格式为:service名称.service所在名空间:端口号。例如:nacos-cs.newdao-tenant-edgedemo:8848。配置好后即可通过域名访问至nacos中
1.2.2、ingress配置访问
参考ingress的标准用法即可,此处不再举例。
1.3、sentinel
与nacos一样,通过租户管理员登录控制台后在应用服务管理中添加sentinel服务即可。如果需要访问的话也和nacos一样增加redis配置即可
1.4、seata
与nacos一样,通过租户管理员登录控制台后在应用服务管理中添加seata服务即可。如果需要访问的话也和nacos一样增加redis配置即可
2、微服务导入
2.1、前端导入
2.1.1、创建前端服务
在我的开发下选择企业应用,添加创建企业应用,搜索外部应用导入模板,选择该模板来创建应用。
创建好应用后,为保证相关组件为最新的组件,可以现在架构中更新相应的组件。
2.1.2、新增模块
进入IDE后,选择模块设置
在弹出的模块设置对话框中,默认会有一个main模块,如果不需要则可以删除。之后可以点击添加新建前端服务模块。
参数说明:
名称:模块的名称,建议采用英文
显示名:模块的显示名称,可以使用中文也可以使用英文
运行环境:选择应用所需的运行环境,目前有tomcat、java、nginx、nginx-前端构建、自动等类型。如果是上传前端编译后的源码选择nginx,如果是通过git/svn等方式获取前端的源码后编译发布,则选择nginx-前端构建。
导入方式:目前支持上传和源码两种,选择上传时,可上传编译后的文件,选择源码时则可以配置git/svn选项下载源码后由平台进行编译。
2.1.3、设置导入参数
模块创建好后即可设置相应的参数完成应用的导入。首先在右上角选择对应的模块,之后输入相应的配置参数。这里以源码的导入举例
仓库类型:目前支持svn和git两种方式
代码分支:代码在git中的分支名称
代码分支:代码在git中的分支名称
仓库用户:代码仓库中的用户名
仓库Token:代码仓库中的token,支持使用用户名密码的模式,也支持使用token的模式。
仓库密码:代码仓库中的密码
源目录:代码在仓库中的目录位置
目标目录:需要下载至本项目下的目录位置,例如/uisource
文件列表:相当于文件的白名单,在此列表的目录都会导入。目录采用通配符进行标识,结尾为/时表示文件夹,没有/时表示文件。多个文件用回车进行隔开。例如:
/test/**/ui/
/aa/**/bb/
/cc/d.html
文件过滤:相当于文件列表的黑名单,在此列表中的目录均不会导入。配置方法同文件列表
配置完成后点击导入源码按钮和确认按钮。
如果采用平台内置的kong网关则需要在配置中对网关进行设置,本此示例中采用根目录直接访问,配置如下
如果需要从平台内置的门户进行访问,则需要对服务网关进行配置
如果需要对nginx的配置进行修改,则可以在代码选项卡中,修改相应的配置文件。路径如下:/model/service/模块名称/deploy/模块名称.module.conf
2.1.4、发布前端服务
完成配置后点击右上角的发布按钮,即可将应用发布至生产环境或者发布至应用市场中。
发布成功后与nacos一样,可以有两种选择将前端服务的访问地址暴露出去。一是使用平台默认的网关进行访问,二是手动配置ingress指向部署后的前端应用pod,配置可参考前面的nacos配置。
2.2、后端导入
2.2.1、创建微服务
在我的开发下选择企业应用,添加创建企业应用,搜索外部应用导入模板,选择该模板来创建应用。
创建好应用后,为保证相关组件为最新的组件,可以现在架构中更新相应的组件。
2.2.2、新增模块
进入IDE后,选择模块设置
在弹出的模块设置对话框中,默认会有一个main模块,如果不需要则可以删除。之后可以点击添加新建前端服务模块。
参数说明:
名称:模块的名称,建议采用英文
显示名:模块的显示名称,可以使用中文也可以使用英文
运行环境:选择应用所需的运行环境,目前有tomcat、java、nginx、nginx-前端构建、自动等类型。如果是上传前端编译后的源码选择nginx,如果是通过git/svn等方式获取前端的源码后编译发布,则选择nginx-前端构建。
导入方式:目前支持上传和源码两种,选择上传时,可上传编译后的文件,选择源码时则可以配置git/svn选项下载源码后由平台进行编译。
2.2.3、设置导入参数
模块创建好后即可设置相应的参数完成应用的导入。首先在右上角选择对应的模块,之后输入相应的配置参数。这里以源码的导入举例
仓库类型:目前支持svn和git两种方式
代码分支:代码在git中的分支名称
代码分支:代码在git中的分支名称
仓库用户:代码仓库中的用户名
仓库Token:代码仓库中的token,支持使用用户名密码的模式,也支持使用token的模式。
仓库密码:代码仓库中的密码
源目录:代码在仓库中的目录位置
目标目录:需要下载至本项目下的目录位置,例如/uisource
文件列表:相当于文件的白名单,在此列表的目录都会导入。目录采用通配符进行标识,结尾为/时表示文件夹,没有/时表示文件。多个文件用回车进行隔开。例如:
/test/**/ui/
/aa/**/bb/
/cc/d.html
文件过滤:相当于文件列表的黑名单,在此列表中的目录均不会导入。配置方法同文件列表
配置完成后点击导入源码按钮和确认按钮。
2.2.4、微服务相关设置
导入的微服务需要重点注意四个地方的配置
①、服务依赖配置
如果一个微服务中有其他的服务依赖,例如这样。我们提供两种解决方案。一的话是通过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中的配置文件也是同理
2.1.5、发布微服务
点击右上角的发布按钮,即可将微服务发布至生产环境或者发布至应用市场中。
发布成功后就可以在nacos中的服务列表中看到注册成功的服务。